Agent 记忆的分工架构:Anthropic 拆解在线捕获与离线「做梦」的实验细节
Søren Kierkegaard 说过一句被引用了无数次的话:生活只能向后理解,却必须向前过。Anthropic 在其研究文章《The components of agent memory》中把这句话搬到了 AI Agent 的语境里,指出他们在为 Agent 设计记忆系统时遭遇了完全相同的困境——信息在产生的瞬间,其未来价值是未知的;但记忆写入必须在当下完成。这个矛盾决定了 Agent 记忆的设计不能是简单的日志归档,而必须是一种面向未来的预测行为。
这篇文章发表的时间节点,正处于 Anthropic 和 OpenAI 在「dreaming」功能上短兵相接的阶段。据 Arize 的技术分析,Anthropic 于 2026 年 5 月 6 日在 Code with Claude 开发者大会上发布了 Dreams 功能的研究预览版,27 天后 OpenAI 发布了 Dreaming V3。两家公司用同一个词命名了各自的离线记忆整理机制,但底层架构截然不同。Anthropic 的这篇研究文章,实际上是对其 dreaming 设计哲学的系统性阐释——它回答的核心问题是:Agent 记忆到底由哪些组件构成,每个组件解决什么问题。
记忆写入是一次预测,而非一次存储
Anthropic 在原文中给出了一个精确的定义框架。所谓「Agent 记忆」(agent memory),是指 Claude 从经验中获得的知识——包括与用户的交互和被分配的任务——并在会话之间保留下来,以上下文的形式供后续读取。这个定义同时排除了 3 种容易混淆的机制:权重变更(训练期间设定的内部参数变化)、上下文内学习(单次对话中获得的知识)、以及压缩(Claude 写摘要替换旧轮次以继续在新上下文窗口中工作)。
这个排除清单本身就是一个设计声明。Anthropic 把记忆严格限定在「跨会话持久化的经验知识」这个范畴内,意味着他们关注的是 Agent 在长时间跨度、多次会话中积累和运用知识的能力。
在这个框架下,记忆写入的核心难题浮出水面:Claude 如何在信息产生的当下,判断这条信息是否值得写入持久记忆?Anthropic 在原文中直接回答了这个问题——「Memory is, occasionally, a prediction.」记忆写入偶尔就是一次预测。当 Agent 写下一条规则时,它实际上是在预测自己描述的这个模式将在未来再次出现。写下一个已验证的事实,是在预测未来某个会话中的 Agent 会需要依赖这个事实,而不必重新验证它。
需要注意的是,Anthropic 原文对此使用了「occasionally」这个限定词——记忆「偶尔」是预测,并非所有记忆写入都可以归结为预测行为。但这个预测框架仍然具有重要的设计含义:它把 Agent 记忆系统的评估标准从「记住了多少」转移到了「预测准了多少」。一条被写入但永远不会被用到的记忆,不仅浪费存储,还会在未来的上下文窗口中占据宝贵的 token 位置,稀释真正有用的信息。
显著性判断:Claude 怎么决定什么值得记住
人类大脑有一套化学信号机制来标记重要记忆。Anthropic 在原文中描述了这一神经科学类比:在经验发生之前、期间或之后释放的化学信号可以将某段记忆标记为重要;被标记的记忆在离线期间(睡眠和安静休息时)倾向于被更频繁地回放(replay),这个过程帮助稳定并整合它们进入长期记忆。
类似地,Claude 可以在会话日志中即时标记显著事件(salient events),使其更容易在后续被检索到,或者将它们直接写入记忆存储——例如一个记忆笔记文件夹。但原文随即提出了关键问题:Claude 怎么在当下就判断什么是显著的,在它还不知道接下来会发生什么的时候?
这就是预测框架发挥作用的地方。显著性判断是一个概率估计:这条信息在未来被需要的可能性有多大?Anthropic 在原文中展示了不同模型在这项能力上的差异,使用的测试场景来自 Continual Learning Bench(CL-Bench)1.0——一个衡量 Agent 利用记忆处理长周期任务能力的基准测试。
CL-Bench 1.0 中有一个特定任务要求 Claude 通过查询数据库来回答一系列问题。每次 Claude 给出答案后,系统会告知正确答案,Claude 可以写一条记忆来帮助回答未来的问题。这个设计构成了一个学习循环:如果 Claude 答错了,它可以记录失败、提出关于错误原因的理论、测试这些理论、并将发现转化为未来回答问题的规则。
Anthropic 使用 Claude Managed Agents 运行了这个任务。Claude 每次回答新问题时都在一个全新的会话中启动,唯一的例外是它可以从一个跨会话持久化的记忆目录中检索文件。
不同模型在创建自己的学习循环方面表现出了明显的能力差异。Claude Sonnet 4.6 只做到为错误答案生成原因猜测,记忆目录里是零散文件,每个列出若干未经测试的猜测。Claude Opus 4.7 把笔记整合为单一参考文档,并开始标记哪些事实已核实、哪些未确认。Claude Sonnet 5 在评分器检查后把答案标为已确认,答错时写修正。Claude Opus 5 是其中第一个「close the loop」的模型——多数条目包含一条规则(以及它如何知道规则成立)、早先问题的答案、对陷阱的明确警告。Claude Opus 5.5 与 Claude Sonnet 5.5 也闭合了循环,有记忆时得分与 Opus 5 相当,但无记忆的基线略高。
Pokémon Red 实验:记什么比记多少更重要
Anthropic 在原文中用 Pokémon Red 游戏进一步展示了显著性判断的差异。约 1 万步时比较 Claude Sonnet 3.7 与 Claude Fable 5 的记忆文件夹:Sonnet 3.7 什么都记,写了 413 个记忆文件、225 个文件夹,拿到 1 枚徽章;第 1 万步左右又开了第 4 个「master」文件夹,接下来 17 步新建 6 个文件、删除 9 个,游戏里一步没走。Fable 5 写了 2 个文件夹里的 9 个文件加一个顶层 global.md,拿到 4 枚徽章;它只记屏幕上读不到的东西(策略、计划、验证过的规则),global.md 当仪表盘(当前目标、打道馆的预案、自己的记忆使用规则)。Opus 5.5 做法类似,打通了游戏。
413 个文件对 9 个文件,1 枚徽章对 4 枚徽章——这组对比直接说明了显著性判断能力对 Agent 实际表现的影响:记得多不等于记得好,选择性地记录高价值信息远胜于无差别地记录一切。
引导写记忆:告诉 Claude 记忆是做什么用的,而不是怎么用
Anthropic 在原文中得出的结论是「告诉 Claude 记忆是做什么用的,而不是怎么用」。在 CL-Bench 上只说有一个记忆文件夹可用,Opus 4.7 和 Opus 5 就能有效使用并明显提分;但设定「只记录失败」规则后,Opus 5 和 Opus 4.7 失去了记忆带来的大部分提升。
引导对旧模型最有用:提示 Sonnet 4.6 先读记忆、再明确检验自己的猜测,基准分数几乎翻倍;Sonnet 5 不经提示在 10 次中有 9 次先读记忆,Sonnet 4.6 不到一半。这意味着更强的模型已经内化了「先读记忆再行动」的策略,而较弱的模型需要显式引导才能做到。
在线捕获与离线整理:Agent 记忆的双阶段架构
Anthropic 在原文中明确提出了 Agent 记忆的分工架构,直接类比人类大脑的海马体-新皮层分工。人类的海马体在经验发生时即时捕获,使记忆快速形成并立即可用。但只有部分经验会被巩固为长期知识。大部分巩固过程发生在大脑「离线」时——睡眠期间和安静休息时,海马体回放近期经验,逐步将其蒸馏并整合到新皮层中。
Agent 记忆可以采用类似的分工。Agent 在工作过程中将大量信息捕获到日志或转录记录中——这是「在线」阶段,对应海马体的即时编码功能。然后,在交互间隙的空闲时间里,Agent 可以反思这些日志,修正错误或生成新的笔记和表示——这是「离线」阶段,即 dreaming。
Anthropic 在原文中引用了 Letta 和 UC Berkeley 研究者提出的 sleep-time compute 概念:让模型利用交互之间的空闲时间来重组已有上下文。Anthropic 将同样的思路应用于 Agent 记忆的离线整理。
这个分工架构的设计逻辑很清晰:在线阶段追求速度和覆盖面——尽可能多地捕获可能有用的信息,因为遗漏的代价高于冗余的代价;离线阶段追求深度和准确性——有充足的计算时间来审视、筛选、重组和提炼。两个阶段的优化目标不同,约束条件也不同。在线阶段受限于实时响应的延迟要求,离线阶段则可以消耗更多计算资源而不影响用户体验。
据 Anthropic 在 Claude Managed Agents 的产品文档中描述,dreaming 是一个调度过程,它审查 Agent 会话和记忆存储,提取模式,并整理记忆使 Agent 随时间改进。开发者可以选择让 dreaming 自动更新记忆,也可以在变更生效前进行人工审查。
Arize 的技术分析对 Anthropic 的 dreaming API 做了更详细的拆解。API 是显式的:异步调用,传入一个现有记忆存储和 1 到 100 条原始会话转录记录,选择一个模型,通过 beta API header 进行门控。dream 产生一个独立的、重组后的记忆存储,输入存储不会被修改。Anthropic 的文档对此承诺异常直接——dream 读取现有记忆存储和过去的会话转录记录,然后产生一个新的、重组后的记忆存储,输入存储永远不会被修改。
这个「不可变输入」的设计决策本身就是一个架构声明。Arize 的分析指出,Anthropic 的工程师预期 dream 有时会降低而非提升记忆质量,因此他们构建了一个可以进行对比的系统:你可以对 dream 前的记忆存储运行评估,对 dream 后的记忆存储运行同样的评估,然后决定是采纳新的记忆还是丢弃它。Dream 是一个实验,而非一个承诺。
据 Arize 的分析,OpenAI 的 Dreaming V3 采用了不同的路径。Arize 将 OpenAI 的系统描述为一个被持续重写的单一规范状态——「continually updated synthesis」意味着每次处理都建立在前一次的基础上,而非产生一个可以独立评估的并行产物。需要指出的是,关于 OpenAI Dreaming V3 架构的描述均来自 Arize 的二手分析,笔者未能获取 OpenAI 的一手技术文档进行交叉验证。但从 Arize 的对比来看,Anthropic 选择了更保守但更可控的架构。
Dreaming 的 5 种作用:原文里的实验
Anthropic 在原文中用具体实验展示了 dreaming 对 Agent 记忆整理的多重作用。以下 5 种作用对应着从原始会话日志到可用知识之间的不同转化路径。
纠错。 Anthropic 在 Pokémon Red 的 Mt. Moon 关卡中展示了这一功能。Claude 错误地记下 PokéCenter 在山的东侧,写了「Mt Moon DONE」,随后掉下单向台阶回到来路,还误判为「I overshot far west」。对含错误笔记的记忆文件夹运行 dreaming 后,Claude 用会话转录核对笔记、发现错误并改写,之后径直回到 Mt. Moon 并最终到达 Cerulean City。未修正的那次运行掉回来路 3 次,写下「I’m going to stop rather than keep looping」,最终没到 Cerulean City。Dreaming 在这里的作用是在拥有更完整信息的情况下重新评估早期记忆的准确性。
构建新表示(wiki)。 Anthropic 用 Stainless(Anthropic 于 2026 年 5 月收购的软件公司)约 35 万个内部文件、约 4.2 亿 token 构建了一个 wiki,配合 25 个问题的评测集。Opus 5 agent 跑了 128 个会话,dreaming 从 2 个会话扩到 128 个,得分从 13% 升到 48%。搜索 + wiki 时总分随 wiki 增长从 54% 升到 61%,只用搜索为 53%,只用 wiki 最好 48%;搜索 + wiki 每题约省 2 万 token。在 Harvey LAB 并购文档的 24 个问题中,需要跨文档、判断或计算的题目上,用 wiki 得 87%,只用搜索 73%。但 wiki 并非总是有用:在一个 LAB 任务上(答案多能从单一文档搜到),wiki 没有明显增益;另一个任务的 wiki 比原文档还大——原文引用了博尔赫斯《论科学的精确性》的比喻来形容这种情况。
提升层级。 Dreaming 可以把笔记提到记忆层级顶部,由 harness 在每个会话开始时预先载入。但注入的记忆占 token、错误笔记会被带进每个会话、文件越长遵循度越低,所以顶层必须保持小。Claude Code 的 auto memory 只载入 MEMORY.md 的前 200 行或 25 KB,作为索引。这个约束意味着提升层级的操作必须高度选择性——只有最具跨会话价值的模式和规则才值得被提升到顶层。
聚焦目标。 Anthropic 在 LAB 一个模拟收购的任务中展示了这一作用。起初的 wiki 指令没说明合同条款最重要,多个 agent 同时写一张共享合同条款表、互相覆盖,生成的 brief 只包含 57 个事实中的 41 个(72%)。让 Claude 反思失败、改写建 wiki 的指令后,每份合同一页、由单个 agent 写、逐字引用条款,brief 达到 100%。从 72% 到 100% 的跃升,来自记忆组织方式围绕任务目标的重新对齐。
补齐缺口。 第二轮 dreaming 在一个任务上发现 9 个指向不存在页面的链接,把它们改指到同一文档的已有页面,并新增 3 个页面(含一个索引)。在线阶段受限于上下文窗口大小和实时处理的时间压力,不可避免地会遗漏一些信息或产生断裂的引用关系。Dreaming 在离线阶段可以回顾完整的会话转录记录,填补这些缺口。
Anthropic 的保守架构与工程哲学
Anthropic 在 dreaming 功能上的架构选择,反映了一种特定的工程哲学。据 Arize 的分析,Anthropic 的系统「reads as if it were designed by people who had thought hard about what could go wrong」——看起来像是由深入思考过可能出错的人设计的。
核心设计原则是可回滚性。Dream 产生的新记忆存储与原始存储并行存在,开发者可以选择自动采纳或人工审核。据 Arize 引用 Ars Technica 的报道,用户可以在自动流程和直接审查记忆变更之间做选择。无论哪种方式,之前的状态都会被保留。
这种保守性有其技术根据。记忆整理不是一个单调递增的过程——每次 dreaming 都有可能引入新的错误、丢失有用的细节、或者产生过度泛化的模式。Anthropic 通过保留输入状态,使得 dreaming 的效果可以被量化评估:对 dream 前后的记忆存储分别运行相同的评估任务,比较结果,然后做出采纳或放弃的决策。
跨 Agent 记忆:从个体学习到组织知识
Anthropic 对 dreaming 价值的定位不仅限于单个 Agent 的自我改进。据 Arize 的分析,Anthropic 自己的表述是 dreaming「restructures memory so it stays high-signal」across team-shared workflows——跨团队共享工作流。
这个「跨 Agent」维度在 Anthropic 的多 Agent 编排(multiagent orchestration)功能中得到了具体体现。据 Anthropic 产品文档描述,当单个 Agent 无法胜任时,一个主 Agent 可以将任务分解为多个部分,委派给各自拥有独立模型、提示和工具的专家 Agent。这些专家 Agent 在共享文件系统上并行工作,并贡献到主 Agent 的整体上下文中。
在这种多 Agent 架构下,dreaming 的作用从个体记忆整理扩展到了组织知识管理。多个 Agent 在各自会话中积累的经验,通过 dreaming 可以被提炼为跨 Agent 共享的模式和规则。Anthropic 产品文档明确指出,dreaming 对长期运行的工作和多 Agent 编排尤其有用。
记忆系统决定 Agent 的长期表现上限
Anthropic 这篇研究文章的核心贡献,是将 Agent 记忆从一个功能特性提升为一个需要多组件协同的工程问题。记忆需要在线捕获、显著性判断、离线整理、质量评估等多个组件协同工作,构成一个完整系统。
原文开篇引用的 Kierkegaard 之困,在技术层面的翻译是:Agent 必须在信息价值尚未确定时做出记忆写入决策,然后在离线阶段利用更完整的信息来修正、重组和提炼这些决策。这个双阶段架构——在线预测 + 离线校正——与人类海马体-新皮层的记忆巩固机制形成了直接的结构类比。
从 Anthropic 展示的 wiki 构建实验来看,dreaming 从 2 个会话扩到 128 个会话时得分从 13% 升到 48%,搜索 + wiki 组合最终达到 61%——这些数字说明记忆整理的效果随会话积累而增长,但也有明确的边界(wiki 比原文档还大时反而无用)。Anthropic 在原文结尾也提出了一系列尚未解决的问题:何时写记忆——会话中记录会分散主任务注意力,交给 dreaming 在后台做,产出又不能立刻可用;如何保持记忆更新——dreaming 要耗算力,不一定能持续检查全部记忆,可能要聚焦易变信息或按访问频率调节 dreaming 频率;是否以转录搜索作为记忆基础——wiki 等表示与搜索结合有时有效,但维护表示也要算力。这些问题都还没有定论,Agent 记忆系统的设计仍处于早期探索阶段。
参考资料
- The components of agent memory — Anthropic, 2026-11-06
- Two Labs Built Agent Dreaming Two Different Ways — Arize, 2026-06-17
- New in Claude Managed Agents: dreaming, outcomes, and multiagent orchestration — Anthropic, 2026-05-19
主题分类:技术突破