Agent 能跨会话记住事情,不等于它真的拥有了可靠的长期记忆。真正困难的是:什么值得记住,错误记忆由谁修正,新会话应该优先看到什么,以及记忆维护本身要消耗多少上下文和算力。 Anthropic 最近公开了 Claude 内部记忆架构的设计思路。核心不是简单增加一个数据库,而是让在线记录和离线整理形成闭环:Agent 先记录经历,再由 Dreaming 过程回查原始记录、修正笔记、组织 Wiki,最后把最重要的索引注入下一次会话。 这套设计对开发者很有参考价值。记忆系统如果只会“越存越多”,最终会拖慢 Agent;如果只记失败,也会丢掉已经验证的成功经验。可靠记忆需要生命周期、证据链、分层访问和持续压缩。 Claude 的跨会话记忆可以拆成四层: Dreaming 不是第五层存储,而是贯穿四层的维护引擎。它从原始 Transcript 中寻找证据,修正已有 Note,组织 Wiki 页面,再把高频且重要的内容压缩成顶层索引。 四层之间不是一次性搬运。新经验可能先写入笔记,经过多次使用和验证后上升到 Wiki;失效、重复或被证据推翻的内容则被下沉或删除。记忆因此拥有了生命周期,而不是一张永久增长的事实表。 需要特别区分四类概念:模型训练产生的权重变化、单次会话内的学习、为延长当前任务而做的上下文压缩,以及真正跨会话保存的记忆。它们解决的问题、成本和安全边界都不一样。 在 CL-Bench 1.0 的数据库任务中,Claude 每次都从新会话开始,只能读取跨会话保留的记忆目录。答错后,它可以记录失败、提出解释、验证解释,再把已经确认的规则沉淀为下一次可用的经验。 Opus 5 的平均奖励从无记忆时的 0.564 提升到 0.828。真正带来跃迁的不是多存几条事实,而是保存了规则、验证依据和已知陷阱,形成了“执行、复盘、验证、沉淀”的学习循环。 宝可梦实验说明,记得多不等于记得好。约一万步运行后,Sonnet 3.7 写下 413 个文件,分布在 225 个文件夹中,却只拿到一枚徽章;Fable 5 只保留 10 个文件,却拿到四枚徽章。 位置、金钱这类每回合都能从屏幕读取的信息,不值得反复写入;策略、路线和验证过的规则,才是跨会话记忆的高价值内容。Sonnet 3.7 曾连续 17 步忙于增删记忆,完全没有推进游戏。 记忆目录会反过来影响 Agent:文件越多,检索和维护越耗步数,真正的任务空间越少。记忆不是免费资产,它需要预算,也需要垃圾回收策略。 一个直觉做法是规定“只记失败”。实验结果却显示,成功经验和已验证事实同样重要。只记录失败,会让 Opus 5 和 Opus 4.7 的记忆收益分别减少 0.234 和 0.150。 旧模型往往需要更多脚手架。Sonnet 4.6 加入记忆后平均奖励只有 0.364;明确要求它在答题前读取文件并验证猜想后,分数升至 0.641,接近无记忆基线的两倍。 因此,前沿模型更适合被告知“记忆为什么存在”,而不是被一套固定规则强行规定每次必须记什么。能力越强,越应该把显著性判断交给模型,同时让证据校验和权限边界留在系统层。 在线写入最危险的问题是:一次错误判断可能被后续会话反复继承。宝可梦月见山任务中,Claude 错把宝可梦中心记在山洞东侧,并据此写下“月见山已经完成”。错误笔记不断被后续会话信任,角色三次回到旧路线,最终没有抵达下一座城市。 Dreaming 会把笔记重新和原始 Transcript 对照,找到位置错误并改写记忆。使用修正笔记的运行在第 1935 个累计动作抵达 Cerulean City,而原始记忆和无记忆两组都没有到达。 这个案例说明,记忆不是事实本身,而是可被原始经验校验的缓存。原始记录是证据锚点,笔记是压缩后的工作材料;两者必须保留可追溯关系。 Anthropic 使用 Stainless 的约 35 万个文件、4.2 亿 Token 语料,让 Opus 5 在 128 个会话中持续撰写、合并、修剪并互链 Wiki 页面。 在 25 道评测题上,只使用 Wiki 的得分从 13% 提升到 48%;Wiki 加搜索达到 61%,高于单独搜索的 53%,同时每题少消耗约 2 万 Token。
我也说两句