
智能体记忆的组成:Claude 如何用“梦境”整理经验、纠正错误
Anthropic 拆解四层记忆结构,展示 dreaming 如何筛选、纠正并注入 Claude 的经验。
记忆为什么成为智能体的下一层基础设施
来源:The components of agent memory,Anthropic,2026 年 11 月 6 日。
克尔凯郭尔说,生活只能向后理解,却必须向前生活。为 AI 智能体设计记忆时,我们遇到了相似的矛盾。
人类会在生活中持续编码记忆。海马体负责快速捕捉当下经历,使一些信息立刻可用,但只有部分经历会被巩固为长期知识。大量巩固似乎发生在大脑离线时:睡眠和安静休息期间,海马体会重放近期经历,再逐步提炼并整合到新皮层,也就是储存大部分长期知识的大脑区域。
智能体记忆可以采用类似的分工。智能体的工作过程本来就会留下日志或对话记录。Letta 与 UC Berkeley 的研究者提出“睡眠期计算”,让模型在两次交互之间的空闲时间整理已有上下文。同样的思路也可以用于智能体记忆:回看日志、修正错误,生成新笔记或新的知识表示。这个过程通常被称为“梦境”或 dreaming。
Anthropic 发现,dreaming 已经成为帮助 Claude 形成有效记忆的实用工具。这篇文章介绍他们对智能体记忆的整体理解,也展示多项用于研究记忆组织的评测,以及各个组件分别贡献了什么。
智能体记忆的四层结构
这里的“智能体记忆”指 Claude 从经历中获得、并保留到后续会话中的知识。经历包括与用户的互动,也包括它接到的任务;知识则以之后可以读取的上下文形式保存。
这个定义不包括另外三种学习或上下文管理方式:模型权重在训练时发生变化;上下文学习在一次对话内获得知识;压缩则让 Claude 写下摘要、替换较早的对话,以便在新的上下文窗口中继续工作。
最底层是对话记录。它保留会话中发生的事件,可以搜索,但不会自动把关键信息放到 Claude 眼前。
第二层是记忆笔记。Claude 把重要观察、规则、失败原因或下一步计划写成文件。笔记比原始记录更紧凑,但也更依赖 Claude 判断什么值得保存。
第三层是记忆表示,例如由多个互相链接的页面组成的 wiki。它不只是压缩信息,还为 Claude 提供一张可以导航的知识地图。
最上层是注入上下文。智能体 harness 会在每个新会话开始时主动加载一小部分内容,让 Claude 不必先搜索,甚至不必知道有东西需要搜索。代价是这部分内容会永久占用 token,因此必须保持小而可靠。
在经历发生的当下写下记忆
在人脑中,经历之前、期间或之后释放的化学信号会给某些记忆加上“重要”标记。被标记的记忆在离线阶段更常被重放,从而更容易稳定并整合到长期记忆中。
Claude 也可以在会话进行时标记重要事件,让以后更容易找到它们,或者把事件直接写进记忆存储,例如一个存放记忆笔记的文件夹。
真正困难的问题是:在还不知道后面会发生什么时,怎样判断此刻什么最重要?
记忆本质上是对未来需求的预测
写下一段记忆,偶尔就是在做预测。智能体记录一条规则,等于预测这个模式以后还会出现;记录一个已经验证的事实,等于预测未来的自己会直接依赖它,而不必重新检查。随着模型能力提高,Claude 在这类预测上的判断也明显变好。
持续学习基准 CL-Bench 1.0 提供了一个直接测试。其中一项数据库任务要求 Claude 查询信息并回答一连串问题。每次回答后,系统会告诉它正确答案,它也可以写下记忆,帮助后续问题。
这里存在一个完整学习循环:答错后记录失败,提出关于失败原因的理论,测试这些理论,再把验证结果转化为以后回答问题的规则。
Anthropic 使用 Claude Managed Agents 运行该任务。每道新问题都从全新会话开始,唯一延续下来的是一个跨会话保留的记忆目录。不同模型形成学习循环的能力差异很大。
| 模型 | 无记忆基线 | 使用记忆 | 提升 |
|---|---|---|---|
| Claude Opus 5.5 | 0.655 | 0.838 | +0.183 |
| Claude Sonnet 5.5 | 0.644 | 0.833 | +0.189 |
| Claude Opus 5 | 0.564 | 0.828 | +0.264 |
| Claude Opus 4.7 | 0.383 | 0.700 | +0.317 |
| Claude Sonnet 5 | 0.306 | 0.610 | +0.304 |
| Claude Sonnet 4.6 | 0.330 | 0.364 | +0.034 |
Sonnet 4.6 能提出“为什么答错”的理论,却只是把多个未经验证的猜测散落在记忆目录中。Opus 4.7 开始把笔记整理成单一参考文档,并标记哪些事实已经检查、哪些仍未确认。Sonnet 5 会在评分器确认后标记答案,并在答错时写一条修正。
Opus 5 是较早真正闭合学习循环的模型。它的多数条目同时包含规则、规则的验证依据、过去问题的答案,以及沿途发现的陷阱提醒。
Opus 5.5 和 Sonnet 5.5 也能闭合循环,用记忆保存经过验证的回答规则。开启记忆后,两者得分与 Opus 5 接近;它们的无记忆基线本来就更高。
Claude 学会了判断什么值得记住
另一个评测让 Claude 玩《宝可梦红》。这个游戏需要长程导航和持续试错,很适合测试模型是否知道该把什么写进记忆。每次运行开始时,模型都会得到一个可读写的记忆文件夹。
Anthropic 比较了 Sonnet 3.7 与 Fable 5 在大约 10,000 步时的记忆目录。两者最明显的差别,是它们认为什么信息值得保存。
Sonnet 3.7 假设一切都可能有用,因此不加区分地记录。它会为每次战斗、每个捡到的物品和遇到的每个非玩家角色建立文件。最终,它写了 413 个记忆文件,分布在 225 个文件夹中,只拿到一个徽章。
Fable 5 只在两个文件夹里写了 9 个文件,另外还有一个顶层 global.md,却拿到了四个徽章。
Sonnet 3.7 的做法之所以有害,主要是因为游戏状态一直在变化。它记录得越细,过时内容就越多,后续不得不花更多时间和 token 翻找记忆,而不是继续游戏。大约第 10,000 步时,它开始创建第四套“主记忆”文件夹;接下来 17 步里,它创建 6 个文件、删除 9 个文件,却没有在游戏中执行任何动作。
Fable 5 则把记忆留给那些游戏界面不会主动告诉它的信息。玩家有多少钱、当前在地图上的位置之类的内容,每一回合都能从屏幕读取,存下来只会制造冗余。策略、计划和经过验证的规则则不会自动出现,除非 Claude 主动推导并写下。
Fable 5 的 global.md 像一块仪表盘,保存当前目标、挑战道馆的预设计划,以及它给自己制定的记忆使用规则。locations 文件夹保存不同路线的导航方案,gameplay 文件夹保存它归纳出的游戏机制。
例如,连续七个精灵球都没抓住一条鲤鱼王之后,Claude 写下:“如果连续失败 3 个以上精灵球,就改变投掷时机,在菜单步骤之间插入额外的等待;这样调整后马上抓到了。”
用远小于 Sonnet 3.7 的记忆目录,Fable 5 在游戏中推进得更远。Opus 5.5 采用类似策略:只保留少量笔记,跟踪当前目标与下一步,在游戏过程中不断重写,最终通关。
应该告诉 Claude 记忆的用途,而不是规定它如何使用
实验显示,告诉 Claude 记忆是做什么用的很有帮助,但提前规定“怎么写、何时写”往往没有必要。在 CL-Bench 中,Anthropic 只告诉模型有一个可用的记忆文件夹。这项简单提示已足以让 Opus 4.7 和 Opus 5 有效使用记忆,并显著提高成绩。
他们也测试了固定规则,例如“只记录失败”。结果,Opus 5 和 Opus 4.7 从记忆中获得的性能提升都明显缩小。对较强模型而言,让它们自行判断重要性,比预设一套僵化规则更有效。
对旧模型来说,明确引导反而更重要。Sonnet 4.6 经常不读取记忆目录,也不会测试自己对失败原因的解释。当提示它先读记忆再回答,并明确测试自己的理论后,基准得分几乎翻倍,从 0.364 提升到 0.641。Sonnet 5 已经能自行形成这一习惯:在 10 次回答中有 9 次主动读取记忆,而 Sonnet 4.6 不到一半。
对于前沿 Claude 模型,Anthropic 通常只给出简单指导:当用户要求时,或者遇到明显值得记住的内容时,创建记忆笔记;具体判断交给 Claude。
Dreaming 可以纠正错误记忆
由于 Claude 在会话中依据即时判断写记忆,一条笔记可能一开始就是错的,也可能随着环境变化逐渐过时。更麻烦的是,后续会话会读到并信任它。
Dreaming 给 Claude 一个机会,把笔记与原始对话记录重新对照。在托管智能体运行《宝可梦红》时,研究团队观察到一个典型例子。
游戏中的月见山是一座洞穴系统,入口在地图西侧,出口在东侧。入口附近有一处单向台阶,玩家踩下去就会落回原来的道路,而且不能直接爬回去。Claude 把山洞入口处的宝可梦中心当作地标,因此它是否走错台阶,取决于它认为宝可梦中心位于山的哪一侧。
有一次,Claude 错误地写下宝可梦中心在东侧。走出中心后,它宣布“月见山已经在身后”,并更新笔记为“月见山完成”。实际上,山并没有在身后。几步之后,它踩下单向台阶,回到来时的道路。由于导航工具没有显示这次下落,Claude 又推断自己“向西走过头了”,并认为原先判断一直正确。
研究团队随后让 dreaming 处理这份包含错误位置的记忆。Claude 把笔记与会话记录对照,发现矛盾并重写。原始记录提供了可验证的事实基础。
修正后,Claude 直接返回月见山,并最终抵达华蓝市。未修正的运行则三次掉回原路。第三次失败后,它写到“我要停下来,不再兜圈子”;自动回复要求它继续后,它一路返回了山前的常磐市,试图治疗和补给,最终仍未到达华蓝市。
Dreaming 可以构建新的记忆表示
Dreaming 还能创建帮助导航记忆的知识表示。其中一种形式是 wiki:Claude 自己编写、维护一组页面,把某个主题的知识汇总起来,并链接到其他笔记。链接为 Claude 提供一张地图,让它能在不断扩张的记忆中快速定位所需内容。
为了评估 wiki 的价值,Anthropic 使用约 35 万个文件、约 4.2 亿 token 的内部文档语料。它们来自软件公司 Stainless,Anthropic 于当年 5 月完成收购。团队围绕语料设计了 25 个问题,并给 Claude 提供搜索工具。
与此同时,研究团队让 Claude 使用 dreaming 构建 wiki。在 128 个会话中,Opus 5 智能体探索文件、编写或修正带链接的页面、合并重复内容,并回到原始来源检查论断。每个会话都建立在前一会话的进度之上,通过共享日志协调工作。
当 dreaming 从 2 个会话扩展到 128 个会话时,25 个问题的评分标准达成率从 13% 提升到 48%。
Claude 会增量维护 wiki。建立初版后,它通过后续 dreaming 添加、修改和删减页面。早期阶段,Claude 像刚入职的新员工,仅凭 wiki 回答问题的能力有限;dreaming 越久,知识地图越丰富,逐渐接近熟手。
测试还发现,wiki 与搜索工具同时使用时收益最大。随着 wiki 增长,组合得分从 54% 升到 61%;单独使用搜索工具约为 53%,单独使用 wiki 的最好结果为 48%。搜索与 wiki 组合还让每个问题平均节省约 20,000 个 token。
研究团队进一步分析了哪些任务真正受益于 wiki。他们使用 Harvey LAB 基准和一组并购文档,要求 Claude 生成法律简报,并根据评分标准打分。
在包含 24 个问题的测试里,超过一半需要跨多份文档查找信息,其中许多还要求判断或算术。对于这类题目,Claude 查阅 wiki 时得分 87%,仅使用搜索时得分 73%。
并非所有任务都受益。有些 LAB 任务的评分项几乎都能从单一文档中直接搜索到,wiki 相对搜索没有清晰优势。另一个任务中,wiki 甚至比原始文档还大。Claude 像博尔赫斯短篇《论科学的精确性》里的地图绘制者,画出了一张与帝国同样大的地图,却没有完成任何抽象。
Dreaming 可以把笔记提升到记忆层级顶部
Dreaming 还能把某些笔记提升到记忆层级的顶部,让 harness 在新会话开始前主动加载。这样 Claude 不必搜索,甚至不必知道存在一项可以搜索的知识。
但这种“上下文注入”必须谨慎。注入内容会消耗宝贵 token,一条错误笔记还会被带入之后每一个会话。加载内容也不保证 Claude 真的会遵循它。Claude Code 的文档已经指出,指令文件越长,遵循程度往往会越低。因此最上层必须保持很小,dreaming 的重要工作之一反而是把细节下沉,只在上层留下链接。
Claude Code 的自动记忆也采用同样思路。Claude 不会把所有记忆一次加载进每个会话,而只加载 MEMORY.md 的前 200 行或 25KB。文件头部充当索引,告诉 Claude 它知道什么,以及该去哪里查找。
Dreaming 可以围绕特定目标塑造记忆
记忆应当怎样生长,取决于任务。像 Claude Duet 这样的助手通常更需要围绕它正在帮助的人来组织记忆,因此 dreaming 可以被调成服务于特定目标。
在 Harvey LAB 的一项模拟公司收购任务中,Claude 需要根据一组合同生成法律简报,评分重点是合同条款是否被正确描述。最初,生成 wiki 的指令没有说明应该如何利用合同内容。多个智能体同时写入一张共享条款表,结果互相覆盖。
最终生成的简报只包含 57 个评分事实中的 41 个,即 72%。原因是共享表格把条款总结得很糟,还因为智能体互相覆盖而直接丢失部分条款。
问题不在于合同条款不重要,而在于最初的指令没有明确表达这一点。研究团队让 Claude 反思失败、提出指令修改,再重建 wiki。多轮循环后,Claude 发现必须忠实保留合同文本,并据此改写建库流程。
改进后,每份合同都有单独页面,由单一智能体维护,并逐字引用条款,而不是汇总到共享表格。新 wiki 生成的简报满足了 100% 的评分标准。
Dreaming 可以补上单个会话留下的缺口
Claude 写记忆笔记时,只能看到当前会话的上下文。Dreaming 可以跨多个会话搜索共同模式,纠正反复出现的错误。
在 LAB 的 wiki 中,Claude 有时会链接到尚未创建的页面。第二次 dreaming 会扫描这些缺口。在一个案例里,它发现六个页面共有九条链接指向不存在的 escrow-agreement 页面,于是把这些链接全部改到同一份文档已有的 buyer-form-escrow-agreement 页面,并新增三个页面,其中包括索引页。
向后回看,向前工作
智能体记忆系统仍有许多开放问题。第一个问题是何时创建记忆。任务执行中直接写入文件夹、文件或数据库,可以在信息最鲜活的时刻捕捉重点,并让它立刻用于后续回合;但边做边记也会把注意力从主任务上拉走。Dreaming 可以把记忆创建移到后台,代价是整理结果不一定能立刻使用。
第二个问题是如何让记忆可靠地保持最新。Claude 可能写下错误预测,规则可能从一开始就不正确,环境变化也会让记忆逐渐失效。Dreaming 能修正这些错误,但需要计算资源。持续检查全部记忆并不现实,更合理的做法可能是优先整理容易变化的信息,或者根据访问频率调整 dreaming 节奏。
第三,把对话记录搜索作为记忆基础也很合理。将 wiki 等表示与搜索组合,在部分任务中效果最好;但 Claude 必须持续花算力维护表示,防止其中积累错误或幻觉。
即使 Claude 对重要性的判断已经显著提高,没有任何模型能真正预知未来回合。Dreaming 提供的是一种向后看的机会:利用离线算力组织记忆、修正错误,并维护便于未来会话读取的表示。记忆系统会随着模型能力继续演化,而如何设计它,仍有大量问题等待回答。
原文还提供了两个实践入口:Dreaming 工作流 cookbook 和 知识 wiki 示例。


