Agent Memory
Agent Memory 是 Agent 工程的第五层,业界热议的记忆工程。核心认知:记忆不是把见过的一切倒进数据库。什么都存的 Agent 不会变聪明,只会变慢,还开始捞回过期的垃圾污染推理。真正管用的记忆会遗忘、会压缩、会把事件变成教训。
记忆的四种机制
沿用认知科学分类,Agent 记忆是四种不同机制的组合,不是一层存储:
| 类型 | 装什么 | 存活时长 | 典型存储 |
|---|---|---|---|
| 工作记忆 | 上下文窗口,模型唯一能直接推理的地方 | 一次推理 | 上下文窗口 |
| 情景记忆 | 过去的交互事件 | 中 | 向量库加图 |
| 语义记忆 | 事实、偏好、用户画像 | 长 | 图或键值存储 |
| 程序性记忆 | 技能、SOP、验证过的动作序列 | 长 | CLAUDE.md / AGENTS.md 文件 |
分类型是架构决策不是细节:事件和教训混在一起,检索时互相污染。
巩固:把情景变成语义
巩固是把情景记忆变成语义记忆的机制:把相似的事件聚成簇,从簇里提炼一条一般化的教训。形式上是两步:分组,然后每组概括成一条带适用条件的规则。
天真的系统存一千条情景然后一条条捞。会巩固的系统把一千条折成十几条规则,只留规则,情景送进冷存档。巩固不跑在热路径上,空闲时段让独立子 Agent 在后台做,类比睡眠中固化记忆。
遗忘是功能不是缺陷
一个什么都永久存着的系统会线性膨胀、检索变慢、不断攒下过期材料。遗忘不该靠定时删除,而该靠受控的可及性衰减:把记录移出热检索挪进冷存档,不是销毁。万一真需要还能捞回来。
冲突消解
事实变化时(用户换工作、公司改战略),天真的记忆把新旧记录一起存、一起返回,没有裁决机制,这叫冲突盲区。解法:新记忆 active、旧记忆 superseded,保留版本链和来源;低置信的新事实不覆盖高置信的旧事实;敏感字段变化要二次确认加审计。
程序性记忆:自我改进的回路
程序性记忆是 Agent 表现真正复利的地方:Agent 执行任务后提炼“下次怎么做得更好”的教训,写进程序性记忆,下次取出来用。generator 产出结果,reflector 找出错误,curator 提炼教训更新 playbook。这个回路(REFLEXION 实验里验证过的思路)能在基准上带来可观提升,不需要微调。
两个细节决定回路是变好还是退化:去重防止 playbook 被几乎一样的教训撑爆;只追加一行带适用条件的教训,而不是重写整份 playbook,防止压缩把条件和例外洗掉。
记忆的写入治理
模型只负责提出候选记忆,代码层的策略门决定是否写入、写到哪、有效期、是否覆盖、是否要用户确认。每条记忆带治理字段:namespace(防串号)、source(可回放)、confidence、expires_at、status、supersedes。
面试追问
- 记忆的四种机制? 工作记忆(上下文窗口)、情景记忆(事件)、语义记忆(事实)、程序性记忆(技能)。分类是架构决策,混在一起系统会坏
- 巩固是什么? 把相似情景聚簇并概括成带适用条件的规则,把体量变成知识。跑在后台不占热路径
- 为什么遗忘是功能? 永久存储会线性膨胀、检索变慢、过期材料污染推理。遗忘是可及性衰减不是销毁,记录进冷存档
- 冲突盲区怎么解? 新旧记忆并存无裁决机制。新 active 旧 superseded,保留版本链,低置信不覆盖高置信
- 程序性记忆的价值? 闭合自我改进回路:执行、反思、提炼教训、下次复用。纯粹靠记忆积累提升表现,不需要微调