9
记忆:从这一轮到跨会话的积累
参考:来源 F · Gulli 第 8 章
学完你能做到
- 分清对话记忆、Agent 记忆、领域知识三个经常被混为一谈的概念
- 判断什么值得长期存,什么应该用完就丢
- 知道存错的记忆比不存更危险
f3 讲了装不下长任务的问题,m7 讲了是"活在窗口外的事件日志"。这一节讲第三个概念——记忆。三个词很容易被当成同一件事,但它们完全不同。
| 概念 | 管的是什么 | 生命周期 |
|---|---|---|
| 模型这一次能看到多少字 | 这一次调用结束就没了 | |
| 这一个任务里发生的每一件事,按顺序记下来 | 这个任务结束了,日志还在,但不会自动带到下一个任务 | |
| 从很多次任务里提炼出来、专门留给"下一次"用的东西 | 跨任务持久,直到被更新或过期 |
打比方:上下文窗口是你脑子里正想着的那几句话,session 是这次谈话的完整录音,记忆是你谈完之后写进笔记本、以后还会翻的那几行。
短期记忆和长期记忆
先建立直觉
你在便签纸上记"等下要买牛奶",买完就撕掉——这是短期的。
你在笔记本上记"这家超市周三牛奶打折",这条信息你打算留很久,每次去超市前都会翻一下——这是长期的。
什么值得存,什么该过期
个性化不是模型“更懂你”,而是系统给了它正确的数据
| 个性化所需信息 | 例子 | 必须同时设计的边界 |
|---|---|---|
| 身份与当前状态 | 当前订单、课程进度、正在处理的任务 | 只能读取当前用户的数据 |
| 稳定偏好 | 回答长度、语言、过敏信息、常用格式 | 用户可查看、修改和删除 |
| 历史行为 | 过去的选择、人工纠正、未完成事项 | 过期时间和用途限制 |
| 企业上下文 | 公司政策、客户合同、产品库存 | 岗位权限、来源和新鲜度 |
普通聊天机器人与个性化 Agent 的差异经常不在模型,而在身份、实时状态、记忆和权限隔离。数据越丰富,越需要说明为什么保存、保存多久、谁能使用。
- 值得存:关于用户的稳定偏好("喜欢简短回答")、反复出现的模式("这类问题总是要先查库存")、被人工纠正过的结论(连纠正本身也要存,不能只存纠正后的结果)
- 不值得存:一次性的、只对当前任务有意义的中间结果、已知会变化的事实(比如"现在几点")、未经确认的猜测
- 要主动过期:和当前情况矛盾的旧记忆——用户搬家了,"默认查北京天气"这条记忆就该被替换,而不是让新旧两条同时存在打架
常见误解
记忆就是保存聊天记录,存得越完整越好。
实际上
聊天记录是原始日志(管的事),记忆是从原始日志里提炼出来的结论。
直接把整个聊天记录当记忆用,会有两个问题:一是很快超出,二是有用的信息淹没在大量无关细节里。
好的做法是定期从日志里提炼:哪些是稳定的、值得跨任务保留的,写成结构化的几条,而不是整段搬运。
课堂练习
15 分钟- 给学生五条信息,让他们判断哪些该存进长期记忆、哪些不该:
(a) 用户说"我对花生过敏"
(b) 用户问"现在几点了"
(c) agent 上次推荐的一家餐厅,用户说"不喜欢,太吵了"
(d) 今天的股票价格
(e) 用户说"帮我订明天的会议室"
查看参考答案
(a) 存 —— 稳定的、安全相关的偏好,长期有效。
(b) 不存 —— 一次性、马上过期的信息。
(c) 存 —— 反馈是有价值的偏好信号,以后推荐要避开"吵"这个特征。
(d) 不存 —— 已知会变化的事实,存了也是错的。
(e) 不存 —— 一次性任务的中间指令,做完就没用了(除非用户反复这样要求,那就变成"值得存的模式"了)。
案例推演:记住用户偏好,为什么可能变成错误和冒犯
助手记下“用户不吃海鲜”,半年后仍拒绝所有海鲜餐厅;但这可能只是一次临时过敏或同行者偏好。记忆写入、来源、时效和删除都需要规则。
本节追问:哪些信息值得跨会话保存,谁有权修正它? 先不要急着看结论。沿着下面四步,逐项区分输入、决策、证据和失败信号。
| 阶段 | 本步要做的决定 | 什么算证据 | 最常见的失败 |
|---|---|---|---|
| 选择写入 | 只保存未来有用且允许持久化的信息 | 有明确用途、来源与同意 | 把每句聊天都存成长期人格 |
| 结构化记录 | 保存内容、时间、来源、置信度和适用范围 | 可区分事实、偏好与暂时状态 | 一句摘要覆盖复杂条件 |
| 按需检索 | 仅在相关任务中加载最小必要记忆 | 能解释为何这条记忆影响本轮 | 每次把全部记忆塞进上下文 |
| 允许治理 | 用户可查看、更正、过期和删除 | 删除后索引与派生摘要同步清理 | 系统悄悄保存且不可撤销 |
阅读方式:先遮住后两列自己回答,再用“证据”和“失败”两列检查理解。
常见误解
“记得越多,体验越个性化”
实际上
可观察症状:过期、越界和错误记忆持续影响决策。
更可靠的修复:把记忆视为有生命周期与权限的数据产品,而不是无限聊天仓库。
案例工作坊 · 建议真正动手完成
25 分钟- 将十条用户信息分为不存、短期存、长期存。
- 为一条偏好设计来源、时效和撤销字段。
- 写出记忆冲突时的澄清对话。
查看参考答案
记忆是经过选择和治理的外部状态。价值来自相关、准确、可控,不来自数量;用户应能知道系统记住了什么并修改或删除。
迁移检查:换一个场景还会不会
“用户上次出差住在北京”最合理的默认处理是?
检查一下
"这次对话里用户提到的城市"和"这个用户一直住在哪个城市",哪个该进长期记忆?
agent 的一个判断被人工纠正了,应该往记忆里存什么?