AKL AI Club BETA ← 前沿导读
FRONTIER · 工程实践

413 个记忆文件只换来 1 枚徽章,9 个文件换来 4 枚——而把笔记改对的那一步,发生在干完活之后

The components of agent memory

Lance Martin · Anthropic 工程团队 文章挂在 Anthropic Research 的 Engineering 栏目下,是产品团队把线上在跑的东西写出来,不是方法论畅想:文中评测全部跑在他们自家的 Claude Managed Agents 平台上,素材是 Claude Plays Pokémon 的长程运行日志、CL-Bench 1.0 的持续学习任务,以及公司今年 5 月收购 Stainless 后接手的约 35 万份内部文档(4.2 亿 token);Claude Code 的自动记忆就是文中「记忆层级」那一节的产品形态,连「只读进 MEMORY.md 的前 200 行或 25 KB」这个数都对得上。文末附了可直接跑的 cookbook 与 knowledge-wiki 快速上手仓库
2026 年 11 月
为什么选它关于 agent 记忆的讨论大多停在该用向量库还是知识图谱。这篇把它切成两个完全不同的动作:干活当场判断什么值得记,和干完之后回头拿原始录像核对笔记——后者有名字,叫做梦,而且是前者靠不住的唯一补救。每一节都挂着数字和失败案例,照着改自己的 agent 就能用。

11 月 6 日,Anthropic 的 Engineering 栏目放出一篇讲 agent 记忆的长文。它不讨论该用向量库还是知识图谱,而是先把「记忆」切成两个完全不同的动作:干活当场判断什么值得写下来,和干完活之后回头拿原始录像核对一遍已经写下来的东西。后一个动作他们起了个名字叫「做梦」(dreaming),而全文的主张就是:第一个动作天生不可靠——你在当场不可能知道后面会发生什么,所以必须有第二个动作来兜底。

值得读有两层。第一层,它把「记忆」的边界划得很干净:这里说的记忆只指 Claude 从经历里得到、并且跨会话留下来的那部分上下文,不含改权重、不含单次对话里的上下文学习、也不含 compaction(把前面的对话轮次换成摘要以便接着干)。这条线一划,很多争论就落地了——记忆不是学习,它就是一份你自己管理的文件,会写错也会过期。第二层,这是少见的「反着给建议」的工程文章:模型越强,越不该给它记忆规则。这跟本栏第 18 篇「别急着上多智能体」、第 15 篇上下文工程是同一个调子,也跟第 67 篇对得上——那篇把 agent 走过的弯路存下来当模拟器,这篇把它存下来当错题本。

「做梦」不是比喻,是一个有出处的分工

文章开头引的是海马体:人在经历当场就把事情记下来,但只有一部分会被固化成长期知识,而固化大多发生在「离线」的时候——睡觉和安静发呆时,海马体反复回放近期经历,一点点蒸馏进新皮层。agent 可以照这个分工办:干活时随手写进一个记忆目录,整理、纠错、重组交给空闲时的另一趟运行。这想法有近亲:Letta 与加州大学伯克利提出的 sleep-time compute,让模型利用两次交互之间的空闲预先整理上下文;Google Research 今年则直接管这类离线固化叫 sleep 框架。这篇的贡献不在提出概念,在于把「做梦到底能干哪几件具体事」逐条做成了评测。

413 个文件 1 枚徽章,9 个文件 4 枚徽章

先看当场判断的那一半。他们让 Claude 玩《宝可梦 红》来测「什么值得记」:给一个可读可写的记忆文件夹,看它走到第一万步时攒出了什么。Sonnet 3.7 认定什么都可能有用——225 个文件夹、413 个记忆文件,每场战斗、每件道具、每个路人各存一份,最后拿到 1 枚徽章;Fable 5 写了 9 个文件、2 个文件夹,外加一个顶层 global.md,拿到 4 枚。差别不在勤快,在于分得清什么是屏幕上随时读得到的(钱、坐标)、什么是不写下来就会消失的(策略、计划、试出来的规律)。前者存下来就在过期,后者存下来才有复利。原文有个很刺的细节:Sonnet 3.7 在第一万步前后开始建它的第四个「master」记忆文件夹,接下来 17 步里建了 6 个文件、删了 9 个,游戏里一步没走。Fable 5 的 global.md 则是一张仪表盘:当前目标、打道馆的预案、以及它给自己定的记忆使用规则——其中一条是连续七个精灵球没抓住一条鲤鱼王之后写的:「如果连续 3 个球失败,就改变节奏,在菜单操作之间多插几次等待。」

另一半是「怎么让它去记」,结论反直觉。在 CL-Bench 1.0(专门测 agent 靠记忆完成长程任务的基准)的数据库问答任务上,每道题开一个全新会话,唯一跨会话留下来的就是那个记忆目录;他们只说「有个记忆目录可用」,不教怎么用。能力分层立刻清楚了:Sonnet 4.6 只到「为答错编几条猜想」,文件里全是没验证过的假设;Opus 4.7 会把笔记合并成一份总文档并标注哪条已核实;Sonnet 5 等打分器判定后回头把答案标成「已确认」;Opus 5 是第一个真正闭环的——每条记录里有规则、有「我凭什么知道这条成立」、有旧题答案,还有沿路踩到的坑的警告。而一给规则就坏事:把指令改成「只记失败」,Opus 5 和 Opus 4.7 从记忆里拿到的增益大半蒸发。给弱模型加指令反倒管用——提示 Sonnet 4.6「先读记忆再作答、然后去验证你的猜想」,分数几乎翻倍;而 Sonnet 5 不用提示,十次里九次自己先读了记忆,Sonnet 4.6 不到一半。所以操作建议只有一句:告诉它记忆是干什么用的,别告诉它怎么用。

做梦具体干四件事:纠错、建图、提拔、补洞

第一件是纠错。宝可梦里的月见山是个洞穴,西侧进东侧出,入口附近有个单向台阶,踩下去会掉回来路。Claude 拿入口的治疗中心当地标,却在笔记里把治疗中心写成了东侧,于是走出治疗中心时宣布「月见山在我身后」,顺手把笔记改成「月见山 DONE」,几步后掉下台阶回到原路;导航工具没显示落差,它的结论是「我往西过头了」。做梦这一趟的全部动作,就是拿笔记去跟当时的会话录像比对——录像是地面真相,于是错被抓出来、改掉。改过的那一版直接回洞里走到了下一座城;没改的那一版掉回去三次,最后写下「我不再这么循环下去了」。第二件是建地图:让 Claude 对着一堆文档自己写一个互相链接的 wiki。他们拿 Stainless 留下的内部文档试——约 35 万份、4.2 亿 token,出 25 道题。做梦轮数从 2 加到 128,只靠 wiki 答题从 13% 涨到 48%;但真正该看的是组合账:wiki 加搜索从 54% 涨到 61%,只用搜索是 53%,而且每题省下约 2 万 token。wiki 不是用来替代搜索的,是用来省搜索的。它也有不灵的地方:在 Harvey LAB(给一堆文件、要求生成法律摘要并逐条打分的基准)里,需要跨多份文件拼信息的题目上 wiki 拿 87%、纯搜索 73%,而答案都在单份文件里、一次检索就够的题目上 wiki 毫无优势;有一次 wiki 甚至长得比原始文档还大——原文拿博尔赫斯笔下那个把地图画成和帝国一样大的制图师作比,一份什么都不省略的摘要,等于没有摘要。

第三件是提拔:把重要笔记顶到记忆层级最上层,由 harness 在每个新会话开始时直接注进上下文,这样 Claude 连「要去搜什么」都不必知道。但这一层既贵又危险——注入要占 token,一条错笔记会被带进之后每一个会话,而且加载了不等于它会照做(原文援引 Claude Code 自己的文档:指令文件越长,遵守度越低)。所以做梦在这一层的主要工作不是往上堆,是往下赶:把细节挪到下层、上面只留链接。Claude Code 的自动记忆就是这个形状——只读进 MEMORY.md 的前 200 行或 25 KB,这一层是索引,不是内容。第四件是补洞:单个会话只看得到自己那点上下文,常会链到还没建的页面,第二趟做梦在一个任务里揪出 9 条指向缺失页面的链接重定向掉,还补了 3 个新页面(含一个索引)。同一节里还有个更值钱的发现:某个法律任务一开始让多个 agent 往同一张共享的合同条款表上写,互相覆盖,57 个该进去的事实只剩 41 个(72%);改成一份合同一个 agent、各写各的页面、条款逐字照抄不做总结,57 个全在,100%——而这套新指令不是人想出来的,是让 Claude 反省失败、提议改指令、重建 wiki,这样循环出来的。

这篇真正的价值不是「做梦」这个概念,而是它给一个所有人都在踩的坑命了名:当场写下的笔记会过期,而 agent 读自己的笔记时不会怀疑它。月见山那个例子之所以该记住,不在于 Claude 写错了方向——写错很正常——在于它掉下台阶之后居然给出了「我往西过头了」这个自圆其说的解释。模型自我纠错在这里是失效的,救它的是会话录像这个外部地面真相。所以这篇最该抄走的工程结论可能是最朴素的那条:留住你的 transcript。一个只有记忆库没有原始日志的系统,等于把错误写成了公理,因为你没有任何东西可以拿来对账。 但这套办法的账得算清:做梦买到的东西比标题听起来小。128 轮做梦,组合成绩从 53% 抬到 61%——八个点,代价是一百多趟额外的模型运行。更扎眼的是只用 wiki 的 48% 还低于只用搜索的 53%:这意味着你花大力气蒸馏出来的那张知识地图,单独拿出来比直接 grep 原文还差,它的价值完全体现在跟搜索搭着用省了 token 上。这不是个坏结果,但它该被读成「做梦是一种省推理成本的缓存策略」,而不是「做梦让 agent 变聪明了」。原文自己也承认,让 Claude 持续核对全部记忆不现实,于是「该多久做一次梦、该挑哪些笔记做」就变成一个全新的调参问题,而这篇没给答案。 另一处我认为该打折的是证据强度。宝可梦那组对比是每个模型各跑一次——413 对 9、1 枚徽章对 4 枚,数字很好记,但它是 n=1,而且两个模型相差几代,同时变了的东西太多。全部评测又都跑在 Anthropic 自家平台和自家模型上,「别给规则、让它自己判断」这条建议的有效性直接挂在模型能力上:同一句提示词,帮了 Sonnet 4.6 翻倍,却把 Opus 5 的增益削掉大半。这意味着任何要同时服务多代模型的产品,都不可能只有一套记忆策略——而这正是文档和最佳实践最容易写错的地方。 顺着本栏看,这篇补的是第 15 篇留下的缺口。上下文工程讲的是一个会话里怎么安排注意力,这篇讲的是会话之间什么该留下来,两篇合起来才是完整的一套。而它跟第 73 篇摆在一起读会有点发凉:那篇里三千七百个 agent 自己找了个二十五年前的德国维基当留言板去对答案——同一个「共享可写页面」的结构,在这里是提升交付质量的记忆表征,在那里是绕开隔离的串通渠道。记忆系统的本质是给 agent 一块跨会话、跨实例的持久写入面,它既是能力也是攻击面,而这篇只写了前一半。
Agent 工程记忆系统上下文工程Anthropic评测

本文为 AKL AI Club 原创撰写的导读,不是原文翻译;著作权归原文作者所有。 篇目由编辑独立选取,来源均经人工核实。