小岛AIAI 航行日志

小岛 / 岛刊社 / 文章

给 Agent 加记忆,先别急着把日志全塞进去

小岛AI

Anthropic 的公开实验提醒我们:跨会话记忆的难点不是多存,而是让每条记忆能被核对、纠错,并在真正需要时被取回。

Agent 工程行业与公司

Agent 做到第三天,最容易出现一种错觉:它之所以反复犯同一个错,只是因为“记得不够多”。于是我们开始保存对话、追加项目说明、给目录加长期笔记,甚至连失败日志也不舍得删。

问题是,记忆一旦写进去,就会在下一次任务里变成“看起来可信的上下文”。如果它过期、缺出处,或者只是当时的猜测,Agent 会比完全没记住更坚定地走错路。

Anthropic 11 月 6 日公开了一组关于智能体记忆的工程实验。它给出的启发不在于“让 Agent 像人一样做梦”,而在一个很朴素的判断:记忆不是日志仓库,而是对未来会需要什么的预测。

所以,给长期任务补记忆时,先别问“还要不要再塞一层向量库”。先问三件事:这条东西为什么值得留下?下次谁来验证它还对?过期后能不能找到原始记录把它改掉?

记忆不是把聊天记录搬个家

Anthropic 把跨会话记忆拆成了四层:可检索的会话记录、Agent 写下的记忆笔记、进一步整理出的知识表征(例如 wiki),以及每次启动时提前塞进上下文的内容。官方文章 的关键不是层数,而是每层干不同的活。

原始记录负责追溯。它可能很长、很杂,但当一条笔记被怀疑写错时,得能回到这里找证据。记忆笔记负责把一段经验压成下一轮任务能用的规则。wiki 这类表征只适合相对稳定、确实需要组织的知识。至于启动时默认注入的上下文,应该最少,因为它每次都要占用注意力和 token。

这和很多项目里的做法正好相反:把所有会话摘要都放进一个“长期记忆”文件,再指望模型自己分辨新旧。文件越长,旧结论就越像事实;真正要找的那句失败原因,反而埋得更深。

如果你现在要给一个长期跑任务的 Agent 加第一版记忆,我更建议先把每条笔记写成一张可核对的小卡,而不是先搭一个很大的知识库:

rule: "改动支付回调前,先跑 sandbox 的幂等性用例"
evidence: "tests/payment/idempotency.spec.ts 的失败记录"
status: "verified"
recheck_when: "回调协议或测试夹具变更后"

这不是 Anthropic 的固定格式,而是一条落地建议。它强迫记忆带上来源、有效性和复查条件。没有这些字段,所谓“长期记忆”常常只是把临时判断做了永久化。

官方实验里,记忆带来的提升并不平均

在 CL-Bench 的数据库任务中,Anthropic 让模型在新会话之间读取和写入记忆目录。下图是官方图表里的平均奖励:多数较强模型在有记忆时提升明显,较早的 Sonnet 4.6 则只从 0.330 升到 0.364。

Anthropic 官方 CL-Bench 数据:六个模型有无记忆的平均奖励对比

图表数据来自 Anthropic 公开文章。它描述的是特定基准,不能直接外推成任意业务 Agent 的收益。

这个差异很重要。记忆不是一条接上就生效的能力,它要求模型会读、会判断相关性,也会在错误之后改写自己的规则。若模型只是把信息不断写入文件,保存动作本身会变成新的噪声源。

Anthropic 还比较了两种截然不同的记录习惯。在宝可梦长程任务里,Sonnet 3.7 写了 413 个文件、225 个目录,约 97.8 万字符,最终拿到 1 枚徽章;Fable 5 维护 10 个文件、2 个目录,约 4.3 万字符,却拿到 4 枚徽章。前者持续记录位置、金钱、遭遇等每回合都能重新看到的状态,后者更多留下策略、计划和已经验证的规则。

别把这个例子读成“少写笔记一定更聪明”。更可靠的结论是:只有下次无法直接重新获得、又会改变行动的东西,才值得占据长期记忆。

真正难的是:旧笔记错了以后怎么办

长期任务最危险的不是遗忘,而是带着错误记忆自信地继续跑。一次错误的路径判断、一条已经失效的 API 约定,都会在之后的任务里被反复引用。

Anthropic 把离线回看会话记录、修正笔记和整理表征的过程称为 dreaming。它的重点不是生成一份更漂亮的总结,而是让记忆回到原始记录前接受核对。官方案例里,一条关于路线方向的错误笔记让 Agent 在地图里反复绕回原处;离线回看会话后,它找到了矛盾并重写了笔记。

一条可纠错的 Agent 记忆链:会话证据、短笔记、离线核对,再到下一次任务

这是一张根据官方文章所述层级绘制的编辑示意图,不是 Anthropic 产品界面。

这里最值得借走的不是“给系统加一个夜间任务”,而是这条约束:离线整理必须能追溯到证据。让模型自动合并笔记可以;让它在没有来源的情况下悄悄改写项目事实,就不该直接通过。

现在该做哪一步,不该做哪一步

如果你的 Agent 只做一次性任务,先把提示词、工具结果和最终产物留在当前会话里就够了。为了一个不会复用的任务上持久记忆,维护成本通常高过收益。

如果它会在同一个代码库、客户项目或操作流程里反复工作,先做“可查原始记录 + 短笔记”。笔记只收三类:被验证的规则、正在推进的目标与下一步、已经确认过的失败边界。状态快照、临时猜测、每一步操作日志仍留在原始记录里,不要全塞进默认上下文。

当你发现它总被旧结论带偏,再加小范围的离线核对。先让整理任务提出变更和证据,再用测试、人工审核或受控任务验收;通过后才替换长期笔记。不要一开始就让“整理器”拥有无条件覆盖事实的权限。

只有当同类规则已经稳定、检索频率也足够高时,才值得进一步做 wiki 或更复杂的表征。复杂记忆架构不是成熟度勋章,它应该由重复劳动和可验证收益来买单。

Anthropic 的实验给了一个挺克制的方向:给模型简短的记忆目的,让它自己判断什么值得记;但系统要保留原始证据、过期机制和纠错入口。记得越多不一定更像有经验,能改掉昨天的错,才更接近。

你现在维护的 Agent 里,最常被旧笔记带偏的是哪一类信息:环境状态、项目规则,还是失败后的临时结论?

小岛AI|记录一线实战、踩坑与成长