Claude 做梦机制详解

作者:AGI Hunt 发布:2026-11-07 13:35 收录:2026-11-10 11:43 2 次阅读 约 5345 字
摘要:错一个方向,Claude 会连跳三次崖;而做一次梦,就走出了绝境
推荐理由:本文涵盖「Claude」、「Anthropic」、「ROP」等多个主题,重点关注 Claude。
干活时刚刚,Anthropic 发了一篇博客,讲 Claude 的记忆是怎么设计的,其中讲得最多的一环,叫做「做梦」。Claude 每开一个新会话,都像金鱼一样什么都不记得,只能靠自己写下的笔记。而笔记是在干活的当下写的,那时它并不知道后面会发生什么,所以难免会写错、写偏。做梦,就是趁着空闲把之前的会话记录翻出来,回头核对,把记错的东西改掉。在《宝可梦 红》里,Claude 记错了一个方向,在月见山门口连跳三次崖,最后一路退回了上一座城市。而做过一次梦、改过笔记的Claude,第 1935 步就走到了下一座城。这篇博客的开头引了克尔凯郭尔的话:人生只有往回看才能理解,却必须向前过。Agent 的记忆也卡在同一个地方,该记什么,得在知道后面发生什么之前就决定好。空闲时
海马体人每天都在不停地记。海马体负责当场把经历存下来,所以记忆形成得很快,迅速就能用上。但只有一部分经历会沉淀成长期知识,而这一步似乎有很大一部分发生在大脑离线的时候。睡觉或者静息时,海马体会回放最近的经历,一般认为,这些经历就是这样被慢慢提炼、整合进新皮层的。Agent 也可以这样分工。它干过的活大多已经存在日志和会话记录里,Letta 和 UC Berkeley的研究者提出过 sleep-time compute,让模型利用两次交互之间的空闲时间整理已有的上下文。同样的思路也能用到记忆上,让模型回看日志、修正错误、写出新的笔记,这个过程就叫做梦(dreaming)。当场记下离线回放长期保留人脑海马体睡觉时新皮层Agent会话记录做梦记忆名字听着有点玄,其实就是让一个 Agent 在后台读日志、改笔记,模型本身并没有变。
四层Anthropic 说的记忆,是 Claude 从经验里学到、下一次会话还能读到的东西。模型权重的变化、单次对话内学到的内容、compaction,都不算在内。Anthropic 把它分成了四层,从下往上依次是会话记录、记忆笔记、记忆结构和注入上下文。下一次会话注入上下文每次会话都加载的记忆记忆结构从记录和笔记整理出来,比如 wiki记忆笔记Claude 写下的要点会话记录可搜索的事件日志做梦这一次会话做梦可以从会话记录出发,往上面任何一层写东西。
记忆是一种预测写笔记这一层由 Claude 干活时直接写下人脑里,经历前后释放的化学信号会给记忆打上标记,被标记过的记忆,离线时回放得更多。Claude 也可以在会话日志里标记重点,或者直接写进记忆文件夹。但问题在于,当下的它怎么知道什么才重要呢?写下一条规则,其实是在预测这个规律以后还用得上。写下一个核实过的事实,则是在预测以后的 Agent 可以不再查一遍,直接相信它。而 Claude 做这种预测的水平,这几代提升得很快。CL-Bench 1.0 这个基准,测的是 Agent 能不能靠记忆完成长期任务,其中一项任务是查数据库回答问题。Claude 答完一题就会被告知正确答案,然后可以写一条记忆。每一题都是全新的会话,只有一个记忆目录能带到下一题。理想的情况是形成一个学习循环,答错了,记下失败,提出猜想,验证猜想,再把结果写成规则。答错记下失败提出猜想验证写成规则接回下一题,才算闭环各代模型走到的地方并不一样。????Sonnet 4.6 只走到了提出猜想这一步,目录里散落着一堆文件,每个文件都列着几条没有验证过的猜测。?Opus 4.7 把笔记合并成了一份参考文档,开始标注哪些事实核实过、哪些还没确认。Sonnet 5 会在评分后把答案标成已确认,答错了就写一条更正。而在这几个模型里,第一个把循环走完的是 Opus 5,它的大部分条目都写着一条规则、这条规则是怎么验证的,还有早期问题的答案和踩过的坑。Opus 5.5 和 Sonnet 5.5 也走完了这个循环。有记忆时,这两个模型和 Opus 5 的分数差不多,只是它们不带记忆时的分数本来就略高一点。CL-Bench 数据库任务得分没有记忆有记忆时多出来的Opus 5.50.6550.838Sonnet 5.50.6440.833Opus 50.5640.828Opus 4.70.3830.700Sonnet 50.3060.610Sonnet 4.60.3300.36430 道题的累计平均得分有记忆没有记忆0.00.20.40.60.81.01102030Opus 5.5Sonnet 5.5Opus 5Opus 4.7Sonnet 5Sonnet 4.6有了记忆,Sonnet 5 从 0.306 涨到了0.610,差不多翻了一倍,而 Sonnet 4.6 只从 0.330 涨到 0.364。
413 个文件Anthropic 的另一个测试,还是《宝可梦红》。每次运行开始时,模型会拿到一个记忆文件夹,可以边玩边读写。他们对比了 Sonnet 3.7 和Fable 5 各一次运行,都是走到大约一万步时的样子。Sonnet 3.7 像是有囤积癖,觉得什么都可能有用,见什么记什么。每打一场、每捡一件东西、每遇到一个 NPC,经常都单独开一个文件。最后它写了 413 个文件,分在 225 个文件夹里,拿到 1 枚徽章。locations/main/battles/Claude Sonnet 3.7413 个文件,977,930 字符,1 枚徽章目录名包括 consolidated_essential/、kb_consolidated/、master/、core_files/,还有emergency/……名字像重新开始、权威版的目录报警式的名字,比如 emergency普通的主题目录面积代表记忆的字符数,都是第 9,989 步时的样子。Fable 5 则写了 9 个文件,分在2 个文件夹里,外加一个顶层的global.md,拿到 4 枚徽章。左边的小方块是 Fable 5 的全部记忆,比例和上图一样:10 个文件,43,406 字符,locations/、gameplay/、global.md。(差生文具多……)问题在于宝可梦的游戏状态一直在变,Sonnet3.7 记得这么细,内容也就一直在过期。它只好花越来越多的时间翻自己的记忆,而不是玩游戏。大约在第一万步,它新建了第四个「master」记忆文件夹。接下来的 17 步里,它新建了6 个文件,删掉了另外 9 个,游戏一步都没动……(最终版、最终版 2、打死不改版、这次真的是最终版……)Fable 5 只记游戏不会告诉它的东西。钱有多少、人在地图上哪里,屏幕上每回合都看得到,记下来就是多余。而策略、计划、验证过的规则,只有 Claude 自己想出来才存在,不写下来就没了。它的 global.md 相当于一块仪表盘,放着当前目标、打道馆的预案,以及它给自己定的记忆使用规则。locations 文件夹放特定路线的走法,gameplay 文件夹放它摸清游戏机制之后总结的策略。比如连续七个精灵球都没抓住一条鲤鱼王(全游戏最好抓的宝可梦之一)之后,Claude 给自己记下了一条规则:Claude · 写进记忆如果连续 3 个球以上失败,就改变时机(在菜单步骤之间多插几次「等待」),这次就是这样抓到的。(这大概就是 AI 版的「按住下键和 B 键抓得更准」……)Opus 5.5 的做法也类似,只留一个很小的笔记文件夹,记当前目标和下一步,边玩边重写,最后通关了。
别教它怎么记Anthropic 发现,告诉 Claude 记忆是用来干什么的就够了,不用教它怎么用。CL-Bench 上他们只说了一句有个记忆文件夹可用,Opus 4.7 和 Opus 5 就都用得很好。他们还试过给具体的规则,比如「只记录失败」。结果这两个模型都丢掉了记忆带来的一大部分提升,Opus 5 从记忆里得到的提升少了 0.234,Opus 4.7 少了 0.150,Sonnet4.6 只少了 0.020(它本来也没涨多少……)记忆带来的提升,被「」切掉了多少Opus 5−0.234(3 次)Opus 4.7−0.150(3 次)Sonnet 4.6−0.020(1 次)整根是有记忆时多出来的分数,灰色是加上这条规则后少掉的。旧模型则正好相反。Sonnet 4.6 经常不读记忆目录,也不验证自己的猜想。提示它答题前先读记忆,并且明确验证猜想之后,分数从0.364 涨到了 0.641,接近翻倍。Sonnet 4.6 的数据库任务得分Opus 5 有记忆 0.828(16 次)Opus 4.7 有记忆 0.700(3 次)基础分(3 次)0.330有记忆(3 次)0.364有记忆,且提示它先读、再验证(3 次)0.641Sonnet 5 不用提示,10 次里有 9 次会主动先读记忆,Sonnet 4.6 连一半都不到。所以对前沿模型,Anthropic 一般只给一条简单的指引:用户要求时,或者明显值得记的时候就写笔记,其余的交给 Claude 自己判断。
跳崖做梦拿会话记录核对笔记,改掉错的笔记是在会话当下写的。写错了,或者环境变了,之后的 Claude 读到还是会相信。而做梦,可以拿原始的会话记录来核对笔记。Anthropic 举的例子,来自 Claude 在Managed Agents 上玩宝可梦的一次运行。月见山是个洞穴,入口在地图西边,出口在东边。入口附近有个单向的断崖,跳下去就回到了来时的路,没有明显的办法爬回去。Claude 拿山口的宝可梦中心当地标,而它在笔记里写错了,以为中心在东边。它走出宝可梦中心,宣布了一句「月见山在我身后」,还更新了笔记:「Mt Moon DONE」。但月见山并不在它身后。几步之后,Claude 就跳下了断崖,回到了来时的路。它的导航工具显示不出这个落差,于是它得出的结论是「我往西走过头了」,并且认为自己一直走在对的一边……Anthropic 对这个写着错误位置的记忆文件夹跑了一次做梦,Claude 拿笔记和会话记录一对,发现了错误,把这条笔记改了。Claude 的记忆笔记(示意)宝可梦中心在东边Mt Moon DONE没改笔记:走向下一座城改过笔记:回到洞口西边白圈处是单向断崖笔记改过之后,Claude 说的是「现在我得找到月见山的洞口重新进去」,直接回到洞里,最后走到了华蓝市。没改的那一次,它从断崖上摔下去了三次。第三次失败后,Claude 似乎放弃了,它写道:Claude · 第三次失败后我不打算再这样绕圈了,到此为止。然而实验设置里的自动回复,让它继续……于是它就继续了,一路退回月见山之前的深灰市,想回个血、补个给,直到运行结束也没到华蓝市。(想下班,被自动回复驳回了……)走向华蓝市的进度记忆 + 做梦笔记没改没有记忆华蓝市洞穴出口起点入口梯子洞口断崖下深灰市0100020003000前 1500 步后 1500 步第 1935 步到达华蓝市摔下断崖,退回深灰市没有记忆的那一次,同样没有走出去。
老员工做梦从记录和笔记里造出新的结构做梦还能造出新的记忆结构,比如 wiki。这是一组由 Claude 自己写、自己维护的页面,把它对一个主题的了解集中起来,再链接到其他笔记,相当于一张翻找记忆用的地图。Anthropic 拿 5 月收购的软件公司Stainless 的内部文档做了测试,大约 35 万个文件、4.2 亿 token,一共出了 25 个问题。然后他们让 Opus 5 的 Agent 跑了 128 个会话的做梦:探索文件、编写和修改带链接的 wiki页面、合并重复内容、对照原文核实。每个会话都接着上一次的进度干,靠一份共享日志协调。从 2 个会话到 128 个会话,只靠 wiki 回答的得分从13%涨到了。一开始的 Claude 像个刚入职的新人,梦做得越多,就越像一个。2 个会话后103 页,766 条链接128 个会话后222 页,12,893 条链接2 个会话时就有的页面之后做梦新增的页面25 个问题的得分(达到的评分项比例)只用搜索 53%54%13%wiki + 搜索只靠 wiki2 个会话(200 万 token)128 个会话(1.28 亿 token)48%13%19%25%31%36%42%45%48%61%48%token 是每个会话 100 万的预算,不是实际花费。横轴取对数。不过只靠 wiki 最高也就 48%,比只用搜索的53% 还低。wiki 和搜索一起用才最好,从 54%涨到了 61%,每个问题还能省下大约 2 万token。而建这个 wiki,预算就要 1.28 亿 token。
帝国那么大的地图那什么任务才用得上 wiki 呢?Anthropic 又拿 Harvey LAB 基准和一组并购文件做了测试。LAB 是根据给定的文件写法律备忘录,再按评分项打分(原文也承认,这个没有宝可梦好看)。其中一个测试问了 24 个关于这桩并购的问题,一半以上都要跨多份文件找信息,不少还要判断或者计算。在这些跨文件的题上,用 wiki 的得分是 87%,只用搜索是 73%。wiki 帮助更大的任务:24 个评分项上面每个点是一个评分项,下面每个点是一份文件54614164411并购委托书9 项需要判断或计算7 项跨文件能搜到8 项在一份文件里能搜到而在一个 LAB 任务里,评分项大多在一份文件里搜一下就能找到,wiki 没有带来明显的提升。wiki 帮助不大的任务:57 个评分项上面每个点是一个评分项,下面每个点是一份文件3764443321交易概览备忘录,光这一份就能满足 31 项4 项需要判断或计算2 项跨文件能搜到其余大多在一份文件里能搜到下方数字是每份文件连到的评分项数。分类是模型标的,看整体形状就好。另一个 LAB 任务则更离谱,wiki 写得比原文10 份文件 115 KB,做出来的 wiki 有 68 页、203 KB,是原文的 1.77 倍。10 份文件115 KB68 页,255 条链接203 KB,1.77 倍博尔赫斯有篇只有一段的小说《论科学的精确性》,里面的制图师画了一张和帝国一样大的地图。Claude 这次也差不多,写得极其详细,却没有提炼出任何东西。
互相覆盖做梦还可以围绕具体的目标来做。比如 ClaudeDuet 这样的助手,记忆最好围绕它在帮助的那个人来组织。LAB 里有个模拟公司收购的任务,给了一批合同,备忘录的评分看的是合同条款写得对不对。第一版指令很基础,建 wiki 的时候,几个Agent 同时往一张共享的合同条款表里写。结果57 条事实里只留下了,也就是72%。这张共享表本来就概括得不好,而且Agent 们还互相覆盖了对方写的内容(和同事同时改过一份 Excel 的,大概都有过这种经历)Agent 1Agent 2Agent 3Agent 4provisions.md一张共享表 / 57一个 Agent 保存时,抹掉了另一个写的内容415753494541合同条款明明是这个 wiki 最重要的部分,可指令里并没有说。于是 Anthropic 跑了一个循环,让 Claude 反思失败、提议修改指令、重建 wiki。Claude就这样自己摸清了合同条款才是重点,并重写了指令:每份合同一个页面,由一个 Agent 负责,逐字引用原文,不再总结进共享表。这一次,100% 的评分项都能满足。Agent 1apex-distribution-agreement.mdAgent 2apex-msa.mdAgent 3meridian-dpa.mdAgent 4great-lakes-credit-agreement.md / 57每页一个作者,条款逐字引用574145495357
断链Claude 写笔记时只看得到当前这个会话,做梦则能跨会话去找共同的规律和错误。在给 LAB 建 wiki 时,Claude 有时会链接到还没创建的页面。第二轮做梦补上了不少这样的缺口。在一个任务里,它发现 6 个页面的 9 条链接都指向一个不存在的escrow-agreement,于是把这些链接都改到了这份文件现有的页面上,还新增了 3 个页面,其中包括一份索引。第二轮之前:38 个条目,225 条链接第二轮之后:41 个条目,278 条链接escrow-agreement这个页面不存在indexinstructions emailescalations9 条断链全部改到了现有的页面上,粉色是第二轮写的
小抄做梦把重要的提到最上面,每次都加载做梦还能把笔记提到最上面一层,相当于给自己打了一份小抄,由 harness 在每次会话开始时直接加载。这样 Claude 不用搜,甚至不用知道有东西可搜。但这一层必须小心。注入的记忆要占 token,一条错误的笔记会被带进每一次会话,而加载了也不代表 Claude 会照做。Claude Code 的文档就提醒过,指令文件越长,遵守的程度越低。所以这一层要保持得比较小,做梦在这里的主要工作,就是把细节往下挪,在原地留一个链接。Claude Code 的 auto memory 也是这么控制大小的,只不过是由 Claude 在会话中自己维护,每次会话只加载 MEMORY.md 的前 200 行或 25 KB。这部分相当于一份索引,告诉Claude 它知道什么、去哪里找。MEMORY.md前 200 行或 25 KB每次会话都加载(如果这句话写在第 201 行,Claude 是看不到的……)
怎么用做梦目前是 Managed Agents 的研究预览功能,要申请才能用。给它一个记忆库和 1 到 100 个历史会话,它会输出一个新的记忆库。原来的记忆库不会被改动,不满意可以直接丢掉。想自己控制的话,官方 cookbook 里有一份用动态工作流搭的做法,读哪些会话、怎么整理都可以自己定,也能每晚定时跑。官方测算下来,50 个长会话(约 12 MB 文本)跑一次大约8 美元、10 分钟。
还没解决的博客最后,还留下了几个问题。什么时候更新记忆?边干边写能抓住当下的重点,马上就能用,但会分走 Claude 对主任务的注意力。放到做梦时写不打扰干活,写出来的东西却不能马上用上。记忆如何才能不过期?做梦时修,但很费 token。让 Claude 不停地检查所有记忆不太现实,更可行的也许是只盯容易变的信息,或者根据记忆被读取的频率,决定多久做一次梦。还有一个思路是,干脆把会话记录搜索当作记忆的基础。wiki 这类结构配上搜索有时很好用,但维护它们也要花算力,还得防止错误和幻觉在里面累积。模型对重点的判断越来越好,但没有哪个模型真能知道后面会发生什么。所以,如果你在用 Claude Code,快去看看你的MEMORY.md,很可能已经远超 200 行了。
Anthropic 博客:https://www.anthropic.com/research/components-of-agent-memory
做梦文档:https://platform.claude.com/docs/en/managed-agents/dreams
做梦 cookbook:https://platform.claude.com/cookbook/managed-agents-cma-dreaming-with-a-dynamic-workflow
知识 wiki 示例:https://github.com/anthropics/claude-quickstarts/tree/main/managed-agents/knowledge-wiki
Claude Code 记忆文档:https://code.claude.com/docs/en/memory
Sleep-time compute 论文:https://arxiv.org/abs/2504.13171

转载声明:本文转载自原发布平台 (作者:AGI Hunt), 原文标题《Claude 做梦机制详解》, 查看原文。 版权归原作者及原发布平台所有,本站仅作收录与展示,未对正文内容作实质性修改; 若涉及侵权请联系本站处理。