AREX Feed Article
Anthropic 发文拆解 Claude 记忆机制:会话之间的 dreaming 整理所学、纠正错误
美国时间 2026 年 11 月 6 日(北京时间 11 月 7 日凌晨),Anthropic 在上宣布发布 Engineering Blog 新文章。推文说,记忆(Memory)是让 Claude 从经验中学习的能力,而这篇文章分享的是一个被称作 dreaming(做梦)的离线过程,如何帮助 Claude「整理它学到的东西、纠正自己的错误,并在下一次更轻松地找到它所需要的信息」。
文章用《宝可梦 红》的一次运行演示了这种纠错:一条把 PokéCenter 方位写反的记忆笔记,让 Claude 反复从同一处悬崖跌回走过的路线,始终没能翻过 Mt. Moon,最后干脆宣布停工;改用 dreaming 对照会话转录重写笔记之后,Claude 在累计第 1,935 个动作抵达了此前从未走到的 Cerulean City。文章的进度曲线还显示了另外两组对照:在同一条以 3,000 个累计动作为窗口的进度线上,带着原始错误笔记的运行一路退回山前的 Pewter City,完全不给记忆的运行则全程没有抵达目的地。
记忆分四层,dreaming 在层与层之间搬运
文章把「agent memory」定义为:Claude 从经验中获得、并在会话之间保存下来供日后读取的知识,经验包括它与用户的交互和被指派的任务。这个定义排除了另外三种「学习」:改写模型权重(weights,训练时设定的内部参数)、单次对话内的 in-context learning,以及 compaction——Claude 把旧对话轮次压缩成摘要,以便在新的上下文窗口里继续干活。
结构上,文章把记忆画成一个四层体系:最底层是 transcripts,即可检索的会话事件日志;第二层是 memory notes,Claude 在会话进行中写下的显著观察;第三层是 wiki 这类由 Claude 自己编写和维护的知识表示,把零散笔记连成一张可导航的网;最顶层是 injected context,由代理运行框架(harness)在每次会话开始前预先载入的上下文。dreaming 的工作箭头从最底层的转录出发,指向上面各层,也在相邻上层之间双向流动。
这套设计参照的是人脑。文章引用神经科学研究说,海马体负责即时编码经历,但大部分固化发生在离线时段——睡眠和静息时,海马体重放近期经历,把它们蒸馏并整合进储存知识的新皮层。Agent 记忆套用同样的分工,其近亲是 Letta 与 UC Berkeley 研究者在 2025 年 4 月提出的 :让模型用交互间隙的空闲算力重组已有上下文。Anthropic 已经把这一步做进 Managed Agents(研究预览版):把它叫作 dreams,一次 dream 读入现有记忆存储和最多 100 段历史会话转录,产出一个重新整理过的新副本——合并重复、替换过时条目、浮现新洞见——原始存储保持不动,不满意可以整份丢弃。 和 里已有可运行的最小实现。
文章还提醒,记忆本质上是一种预测:写下一条规则,等于判断它描述的模式还会被用到——而 Claude 在会话当下并不知道未来会需要什么。
一条写反的笔记,让 Claude 在 Mt. Moon 前折返三次
出错的任务是《宝可梦 红》里的 Mt. Moon:一座西边进、东边出的山洞,入口附近有一段单行台阶(ledge),踩上去会把玩家直接丢回走过的路线,没有明显的路爬回来。Claude 把山洞入口处的 PokéCenter 当作导航地标——它会不会踩上台阶,取决于它认为 PokéCenter 在山的哪一侧。
某一刻,Claude 把 PokéCenter 的位置写反了:记成了东侧。走出 PokéCenter 时,它宣布「Mt. Moon 在我身后了」,并把笔记更新成「Mt Moon DONE」。Mt. Moon 并不在它身后。几步之后,它踩上台阶、跌回来路;导航工具不显示落差,它又推断是「我向西冲过头了」,以为自己一直站在正确的一侧。
在这局带着未修正笔记的运行里,Claude 一共三次跌回原路。第三次之后,它写下「我打算停下来,而不是继续打转」,直到系统的自动回复要求它继续,它才动身退回山前的 Pewter City 打算疗伤、补给。这一局到结束也没能到达 Cerulean City。
Anthropic 随后把包含错误地标的记忆文件夹交给 dreaming 处理:Claude 把笔记逐条对照会话转录——转录是它当时言行的原始记录,等于一份 ground truth——发现了错误,重写了笔记。换成修正后的记忆,Claude 直接回到 Mt. Moon 洞口重新进洞,这一次走到了 Cerulean City。文章用这组对照演示了 dreaming 的第一种用途:把写错的记忆纠回来。
什么值得记:两代模型的宝可梦记忆目录
dreaming 修正的是已经写下的记忆,而决定记忆质量的另一半,是 Claude 当场记什么。Anthropic 用《宝可梦 红》考察这种判断力:每局开始时给模型一个可读写的记忆文件夹,看它往里放什么。
对比的是 Claude Sonnet 3.7 和 Claude Fable 5 各自打到约 10,000 步时的记忆目录。Sonnet 3.7 假定一切都可能有用:每场战斗、每件道具、每个 NPC(非玩家角色)都常常单独占一个文件,最终写下 413 个记忆文件、分散在 225 个文件夹里,总计约 97.8 万字符——换来 1 枚徽章。麻烦在于《宝可梦》的游戏状态每回合都在变,事无巨细的记录持续过时,Claude 不得不花越来越多的时间翻自己的记忆而不是玩游戏:约第 10,000 步时,它开始建第四套「master」记忆文件,接下来 17 步里创建了 6 个文件、删掉 9 个,游戏本身一步没走。
Fable 5 只在两个文件夹里写了 9 个文件,外加一个顶层的 global.md,合计 10 个文件、约 4.3 万字符,拿到 4 枚徽章。它的取舍标准是:屏幕上每回合都能读到的信息——钱数、地图位置——不值得存;值得存的只有游戏不会主动告诉它的东西:策略、计划、验证过的规则。global.md 充当仪表盘,放着当前目标、打道馆的预案和它自己定下的记忆使用规则;locations 文件夹存特定路线的走法,gameplay 文件夹存它摸索出的游戏规律。在连续 7 颗精灵球抓不到 Magikarp——游戏里最容易抓的宝可梦之一——之后,它在笔记里写下的规则是:「如果连续 3 颗以上精灵球失败,就改变按键时序(在菜单步骤之间多插几次 wait)——这么做完下一次就抓到了。」
文章还提到 Opus 5.5 用同样的路数通关:保持一个追踪当前目标和下一步的小文件夹,边玩边重写。Sonnet 3.7 的大档案袋真正拖住它的,是那些不断过时的细节。
在 CL-Bench 上量一量记忆值多少分
判断力之外,文章还测了记忆对任务成绩的贡献,用的是 ——一个 2026 年 5 月发布、专门衡量 agent 利用记忆完成长程任务能力的基准。其中的数据库任务让 Claude 查数据库回答一连串问题:每答完一题,它会被告知正确答案,并可以写记忆帮未来的自己。测试跑在 Claude Managed Agents 上,每道题都从全新会话开始,唯一的例外是一个跨会话持久的记忆目录。
文章报告的得分(出自 Anthropic 自己的评测)是:给一个记忆目录后,Claude Opus 5 的平均得分从 0.564 升到 0.828,Opus 5.5 从 0.655 升到 0.838,Sonnet 5.5 从 0.644 升到 0.833,Opus 4.7 从 0.383 升到 0.700,Sonnet 5 从 0.306 升到 0.610;Sonnet 4.6 只从 0.330 微涨到 0.364。
差距出在怎么用记忆。Sonnet 4.6 的记忆目录里是一堆散落文件,每份列着几条没验证过的猜测;Opus 4.7 把笔记汇总成一份参考文档,并开始标注哪些事实核实过、哪些还没有;Sonnet 5 会在评分器确认答案后把它标记为已确认,答错了就写更正。Opus 5 是这些模型里第一个把学习环闭合的:它的条目大多包含一条规则、它是怎么知道这条规则为真、此前问题的答案,以及沿途发现的陷阱警告。Opus 5.5 和 Sonnet 5.5 也做到了闭环。
引导方式也影响成绩,文章的结论是:告诉 Claude 记忆是干什么的,但别规定怎么用。只说「有一个记忆文件夹可用」,就足以让 Opus 4.7 和 Opus 5 有效使用记忆;反之,设定「只记录失败」这条规则后,Opus 5 的记忆增益损失 0.234,Opus 4.7 损失 0.150——对更强的模型,把判断显著性的自由留给它反而更有效。引导对旧模型帮助最大:Sonnet 4.6 常常不读记忆文件、也不验证自己的猜想,被明确要求「答题前先读记忆、然后显式测试猜想」后,得分从 0.364 提高到 0.641,接近翻倍;而 Sonnet 5 不需要提示,10 次里有 9 次会主动先读记忆。对前沿的 Claude 模型,Anthropic 通常只给一句简单指引——用户要求记、或者明显值得记的时候,写一条记忆笔记——剩下的判断交给 Claude。
128 轮 dreaming,把 35 万份文档织成 wiki
dreaming 的另一种产出是知识表示:文章拿 wiki 做了主要演示。Wiki 是由 Claude 编写和维护的一组页面,汇总它对某个主题知道的东西,并链接到其他笔记——这些链接相当于地图,让 Claude 在越来越大的记忆库里高效定位。
文章用 Stainless——Anthropic 今年 5 月收购的一家软件公司——的内部文档语料测试 wiki 的价值:约 35 万个文件、约 4.2 亿 token,围绕语料出 25 道评测题,给 Claude 一个搜索工具,外加指令「用 dreaming 建一个 wiki」。Opus 5 代理在 128 个会话里探索文件、写或修正带链接的 wiki 页、合并重复条目、对照源文件核验说法,每个会话通过共享日志接着上一个会话的进度做。结果:dreaming 从 2 个会话扩到 128 个,25 道题的得分从 13% 涨到 48%;对应的 wiki 从 103 页、766 条链接,长到 222 页、12,893 条链接。
Wiki 不是搜索的替代品。只给搜索工具,得分停在 53%;只靠 wiki,最好成绩是 48%;两者都给,得分随 wiki 长大从 54% 升到 61%,而且每道题比单用搜索省下约 20,000 token。
边界同样清晰。文章用 Harvey LAB 基准和一组并购文档做了对比:一道 24 问的并购题里,超过一半的问题要把信息横跨多份文档拼起来、不少还要做判断或算术,Claude 参考 wiki 时在这类问题上得分 87%,只用搜索是 73%;但在另一道 LAB 任务里,评分标准几乎都能靠文本检索单份文档命中,wiki 没有带来可见增益。还有更尴尬的情况:某次任务里 wiki 长得比源文档还大——10 份文档共 115 KB,建出的 wiki 有 68 页、255 条链接、203 KB,是语料的 1.77 倍。文章借博尔赫斯《论科学的精确性》里那张与帝国等大的地图自嘲:这张地图什么都没抽象掉。
Dreaming 也负责事后修补。LAB 的 wiki 里有时会出现指向不存在页面的链接,第二遍 dreaming 在一个任务里找到 9 条指向缺失页面的链接、把它们改指向已有页面,并新增 3 个页面(含一个索引);这一遍下来,wiki 从 38 个条目、225 条链接变成 41 个条目、278 条链接。
指令怎么写也会决定 wiki 里能留下什么。在一道模拟公司收购、以合同条款为评分核心的 LAB 任务里,最初的指令没说清合同条款是重点,多个代理同时往一个共享的 provisions.md 表格里写条款,互相覆盖,依据这份 wiki 生成的法律简报只覆盖了 57 项评分事实中的 41 项(72%)。文章随后让 Claude 自己反思失败、提出修改指令、重建 wiki:新指令把每份合同分给单独的页面、由单个代理撰写、条款逐字引用而不是摘要进共享表。重建之后,简报达成了全部评分标准。
还没解决的事:什么时候做梦,算力花在哪
文章结尾留下的问题比答案更具体。第一个是时机:Claude 可以在会话当场就写记忆,好处是在源头抓住重要细节、下一回合就能用,坏处是分心;dreaming 可以把记忆整理挪到后台,但它的产出未必赶得上下一次会话立刻用上。第二个是保鲜:记忆会从一开始就写错,也会随着环境变化过时,dreaming 能修,但要花算力——让 Claude 持续核对全部记忆并不现实,可行的方向是把 dreaming 聚焦在容易变化的信息上,或按记忆被访问的频率调整做梦的节奏。
注入最顶层的上下文更须克制:注入的内容占用宝贵的 token,一条错误笔记会被带进每一个会话,而且载入不等于执行——文章提到,Claude Code 的文档提醒,越长的指令文件遵循度越低。Claude Code 的 auto memory 因此只把 MEMORY.md 的前 200 行或 25 KB 载入每个会话,让这个开头充当索引,标明 Claude 知道什么、去哪找。
文章以克尔凯郭尔的话起头——生活只能倒着被理解,必须正着去经历——并承认设计 agent 记忆正卡在同一个两难里:没有哪个模型能真正预知未来轮次会需要什么,dreaming 给 Claude 的只是一个回看过去、用算力整理记忆的机会。至于这套机制最终走向哪里,文章没有给结论:「记忆系统会随着 Claude 能力的增强而演化,关于如何设计 Claude 的记忆系统,我们要学的还有很多。」