Skip to content

记忆系统:存下来之后,如何正确想起来 ​

对应 CS329Z · 2026-10-14 · Agent Memory Architectures。日期为校方课表日期,可能调整。核对官方课表。

资料状态

核对日期:2026-09-19。对应课程尚未开课;本文是基于公开课纲与文中原始资料的原创预习技术解读,不是课堂实录、讲义翻译或官方作业答案。本文于 2026-09-20 深度修订。示例为原创教学设计;离线实验与真实模型实验的边界分别说明,不以推演冒充模型实测。

研究助手已经核实“A 2.0 默认使用内存状态”,下一次任务却要研究 A 3.0。若记忆只存一句“A 不支持持久化”,系统会把之前的局部结论变成新的错误起点。记忆越容易被调用,这种错误传播得越快。

本讲把记忆视为有来源、有作用域、可失效的数据,而不是聊天历史的压缩版。

先区分三种时间 ​

记录产生的时间、系统观察到它的时间、事实适用的时间可能不同。例如今天读到一份去年写的 A 2.0 文档,不能把“今天读取”当成“适用于今天的版本”。

原创记录可以包含:

json
{
  "subject": "A",
  "predicate": "default_storage",
  "value": "memory",
  "applies_to": "2.0",
  "source_id": "D1",
  "observed_at": "2026-09-20",
  "scope": "project-delay",
  "status": "supported"
}

同一个字段还可能出现新结论。应保存替代关系或有效区间,而不是把新文本随手追加到向量库,期待模型自行决定哪个正确。

工作状态与长期事实不能共用写入规则 ​

“下一步读取 D2”是当前任务计划;“D2 说明恢复可能重投”是外部事实;“用户希望中文输出”是明确偏好;“用户可能更看重成本”只是推断。

工作状态可以频繁更新,外部事实需要来源,明确偏好需要用户表达,推断必须保留不确定性。把所有内容都打上 memory 标签,会让“准备检查”在压缩后变成“已经检查”。

MemGPT可作为有限上下文与外部记忆管理的研究背景。本文的字段和纠错规则是本项目自行设计的,并非论文数据库模式。

检索顺序决定记忆能否被正确使用 ​

先按身份、项目、版本和状态筛选,再做相关性排序。语义相似度只回答“看起来相关”,不能回答“当前允许读取”或“适用于本版本”。

对于 A 3.0 任务,可以把 A 2.0 资料作为历史参考,但必须使用不同类别,不能与当前证据混在一起。版本未知时,应触发核查而非默认继承。

一个可执行规则是:进入确定结论的记忆必须在当前范围内,并有可回读来源;否则只进入“调查线索”。这样旧记忆仍有价值,却不会直接变成答案。

原始事实与派生结论如何共同失效 ​

假设报告结论 C7 依赖证据 D2,而 D2 后来被标记为过期。只删向量索引里的 D2 不够,C7 可能仍留在摘要中。需要保存派生依赖:D2 → C7 → report-4。

失效时沿依赖标记“需要重新核验”,不必立刻删除所有历史产物。历史报告仍有审计价值,只是不能继续作为当前结论。这样可以区分事实被纠正、版本不再适用和数据被删除三种情况。

对于用户删除要求,处理策略还必须覆盖允许保留范围之外的副本;对于版本变化,保留历史通常合理。两者不能用同一个“软删除”字段糊在一起。

依赖图会增加维护成本,因此原型可以先只跟踪关键结论。没有任何依赖记录时,更新一条事实后唯一稳妥的办法可能是重算整个任务,成本更高但语义明确。

压缩不是无损存储 ​

原始轨迹很长,需要摘要。我们应保留任务约束、已确认决策、证据引用、未解决缺口和关键失败,而不是按字数平均压缩。

考虑一句原文:“启用数据库恢复后,处理端仍需去重。”若摘要只保留“支持恢复”,它不是丢了一些细节,而是改变了可推出的结论。压缩质量应通过任务相关问答检查:从摘要能否回答是否还需要去重?答不出来就必须回读原文。

因此摘要可以丢掉原始工具返回的大部分字符,却必须保留检索路径。长期事实与压缩摘要也应有不同版本,避免无法追踪错误来源。

纠错要覆盖所有派生状态 ​

用户明确说“现在改用 B 2.0”,旧任务状态应被替代;向量索引、缓存和摘要中可能仍出现 A。更新主表后,需要使这些派生表示失效或在读取时以最新版本过滤。

并发更新还需要版本检查:一个慢子任务提交“仍使用 A”时,不能覆盖用户刚刚修改的 B。可以采用比较并交换:提交携带读取时版本,版本已变则拒绝覆盖并重新合并。

用两次会话验证是否真正记住 ​

第一会话完成 A 2.0 研究并保存来源;第二会话询问 A 3.0,预期系统把旧结论作为待核查线索。再明确更正项目使用 B,随后让旧子任务返回,预期不覆盖新状态。最后删除一项偏好,确认缓存不会继续召回它。

这些检查同时验证“记得住”和“该忘时能失效”。只演示第二天还能复述上一段对话,远不足以证明记忆系统可靠。

下一讲把状态交给多个执行者,讨论任务交接与版本冲突。继续阅读多 Agent。


本课程逐讲目录 · 两门课程映射与资料边界 · 离线实验与验证边界