AutoDream原理详解Claude代码如何更新记忆与自我学习
最近在AI Agent领域,一个关于“记忆管理”的设计思路正在引起广泛讨论。如果你用过Claude Code,肯定对那个自动生成的MEMORY.md文件不陌生。它会默默记录你的身份、项目细节和踩过的坑,让Agent在每次新会话中都能“认识”你,无需从头开始。
但一个现实问题随之而来:随着使用时间拉长到一两个月,这些记忆会不会像未经整理的衣柜,越堆越乱,最终失去效用?
这个疑问并非空xue来风。事实上,Anthropic的工程师们早就意识到了这一点,并在底层为这个功能赋予了一个充满诗意的名字——AutoDream,即“自动做梦”。名字听起来有些玄妙,但它直指一个所有智能体都无法回避的核心挑战:如何高效管理长期记忆。
为什么记忆需要“整理”
这得从智能体记忆系统的两个经典难题说起。
首先是记忆膨胀。想象一下,你上周告诉Agent“这个项目用PostgreSQL”,前天补充“PG 16升级了”,昨天又更新“我们改用RDS托管”。三条记忆指向同一件事,却记录了时间线上的演变。如果不加整理,下次Agent检索“项目数据库”时,可能把三条全塞进上下文。这不仅浪费宝贵的Token,还可能让模型被前后矛盾的信息搞糊涂。
其次是记忆过期。你两个月前提到“目前主要做Stripe集成”,后来项目转向,你却忘了专门通知Agent。这条过时的记忆会一直挂着,在未来的相关讨论中再次被检索出来,可能导致决策偏差。
有数据表明,约33%的记忆事实在90天内会变得不准确。试想,一个运行了一年的Agent,如果还在依赖半年前的记忆做判断,其可靠性将大打折扣。
因此,一个健壮的记忆系统绝不能只负责“存储”,还必须肩负“整理”的职责。AutoDream解决的正是这个问题——让Agent在“空闲”时自动整理记忆,该合并的合并,该更新的更新,该删除的删除。
这很像人类大脑的运作机制:白天的经历并不会原封不动地留存。睡眠期间,大脑会对短期记忆进行主题归档,剔除无关紧要的细节,强化重要的信息。Anthropic将这个功能命名为“Dream”,可谓相当贴切。
先来看一张全景图,建立直观印象。

先看看记忆长什么样
在深入AutoDream的整理逻辑之前,有必要先了解它整理的对象——Claude Code的记忆文件——究竟是如何组织的。
打开你项目中的~/.claude/projects/<项目名>/memory/目录,通常会看到类似这样的结构:
.claude/projects/<项目名>/memory/
├── MEMORY.md ← 索引文件,有200行上限
├── user_preferences.md ← 用户偏好
├── project_database_stack.md ← 项目技术栈
├── feedback_testing_policy.md ← 行为反馈
└── reference_linear_board.md ← 外部资源指针
其中,MEMORY.md是总索引,每一行指向一个具体的记忆文件,例如:
- [用户偏好](user_preferences.md) — 偏好 TypeScript,不喜欢写注释
- [数据库技术栈](project_database_stack.md) — PostgreSQL 16 on RDS
- [测试规范](feedback_testing_policy.md) — 不要 mock 数据库
每个具体的记忆文件则是一段带有YAML frontmatter的Markdown文本,存储着详细内容。AutoDream整理的就是这一系列文件——合并重复的主题、更新过时的事实、并保持MEMORY.md索引的精简。理清这个结构,后面的整理逻辑就更容易理解了。
它不是真的“每天晚上”跑
这里需要先纠正一个常见的误解。AutoDream并非设定了一个固定闹钟(比如凌晨三点)来运行。它的触发机制更为智能——每次你与Agent完成一轮对话后,它会在后台悄然评估“现在是否该做梦了”。
然而,整理记忆本身是一项开销不小的操作:需要fork子进程、读写文件、调用大语言模型。显然不能每次对话后都执行,成本太高。因此,它设计了三道检查关卡,成本从低到高排列,任何一道未通过,整个流程便会直接跳过。
第一道关:时间检查。如果距离上次整理还不到24小时,直接跳过。这道检查成本极低,只需读取文件的修改时间。
第二道关:内容检查。即使过了24小时,但如果这段时间你根本没怎么使用Agent呢?系统会扫描会话目录,如果发现新增或改动的会话少于5个,同样跳过——没有足够的新内容,不值得启动一次完整的整理。
第三道关:锁机制。前两道都通过了,说明确实有必要整理。但还需确认没有其他进程正在操作记忆文件。这里的锁机制设计得很巧妙:一个文件同时承载两项功能——其修改时间记录了“上次整理时间”,而文件内容则写着当前正在执行整理的进程PID。这个PID是关键,它确保了同一时间只有一个进程能获得操作权限,避免了冲突。
在大多数情况下,第一道时间关卡就足以拦截不必要的整理操作。一次stat系统调用是纳秒级的。只有极少数情况才会走到需要“拿锁”这一步。
梦里做了什么
当三道检查全部通过,整理工作便正式启动。Claude Code会fork出一个子Agent,并赋予它一段专门的整理指令(prompt)。
这个子Agent的权限受到严格限制。它只能使用只读的Bash命令(如ls、grep、cat),任何写入操作都会被拒绝。它唯一被允许修改的,只有记忆目录下的.md文件。这种工具层面的限制,从根本上保证了“做梦”过程不会意外损坏你的项目。
整个整理prompt分为四个阶段,每个阶段任务明确。

第一阶段:认路。使用ls查看记忆目录,通读MEMORY.md索引,扫描所有已有的主题文件。目的是摸清“已经记住了什么”,为后续操作奠定基础,避免创建重复记忆。
第二阶段:寻找新信号。探查近期是否有值得记录的新内容。主要从两个方向入手:一是检查现有记忆是否与代码现状存在矛盾(例如,记忆写着“用MySQL”,但代码库里全是PostgreSQL);二是在必要时,通过grep检索会话历史,寻找特定细节。
第三阶段:执行整理。将找到的新信号写入对应的主题文件。写入时遵循三大原则:1) 优先合并到已有文件,而非创建新文件;2) 将“昨天”、“上周”这类相对日期转换为具体日期;3) 如果发现某条事实已经过时,直接修改或删除对应的记忆文件。
最后一点尤其值得强调:Agent被赋予了“删除”的权限。这是AutoDream与普通“记忆累加”机制最本质的区别。一个记忆系统最可怕的不是记得少,而是记了一堆错误信息却不清理。
第四阶段:修剪索引。MEMORY.md作为记忆系统的目录,必须保持精简。Claude Code对此有硬性约束:200行上限、25KB大小上限,且每条索引描述不超过150个字符。如果发现某条索引过长,通常意味着把具体内容写进了索引本身(索引本应只存储文件路径),这时就需要将其拆分出去,形成独立的记忆文件。
几个值得记住的设计细节
成本优化:“做梦”过程复用了主对话的Prompt Cache。Fork出的子Agent与主对话使用相同的system prompt前缀,因此能够直接命中缓存。这使得整理过程本身的Token成本极低——大部分输入Token走的是缓存价格。
过程透明:子Agent运行完毕后,主对话中会插入一条提示消息:“Improved memories: X.md, Y.md, Z.md”。用户能清楚地知道后台修改了哪些文件,可以随时查看或手动调整。
手动触发:除了自动运行,用户也可以输入/dream命令手动触发整理。其逻辑与自动触发一致,但区别在于,手动触发拥有完整的工具权限,不受“只读工具”的限制。
回到这个名字
剖析完实现机制,再回头看“Dream”这个名字,确实起得精妙。
人类在睡眠时,大脑会进行“记忆巩固”(memory consolidation)——将白天的短期记忆按主题分类,剔除不重要的,强化重要的,并将信息从海马体转移到大脑皮层,形成长期记忆。
AutoDream所做的,与这个过程几乎一一对应:将日常对话积累的信息归类到主题文件,合并到已有记忆,删除过期事实,保持索引精简。甚至连触发周期都相似——大脑每晚进行一次,AutoDream每24小时执行一次。
当然,记忆管理远不止于此,还涉及生命周期管理、记忆投毒防护、语义化召回等诸多复杂问题。
Hermes Agent也在做类似的事
AutoDream并非孤例。近期备受关注的Hermes Agent(由Nous Research出品,GitHub星标109K)也内置了一个名为Curator的功能。其思路一脉相承,但设计更为系统化——它不仅整理记忆(Memory),还整理技能(Skill,即Agent从经验中提炼出的操作指南)。
Curator会为每个Skill打分、合并重复项、归档长期未使用的技能,并每7天自动运行一次。在其实现中,还有一些AutoDream尚未涵盖的设计,例如基于空闲检测的触发机制、Skill从“活跃”到“陈旧”再到“已归档”的生命周期管理,以及允许用户将重要Skill“钉住”以防止被自动清理的机制。
这些探索共同指向一个趋势:随着AI Agent走向长期化、复杂化任务,一套能够自主维护、更新和优化其内部知识状态的“记忆管理系统”,正从“锦上添花”变为“不可或缺”的核心组件。
相关攻略
微软内部要求数千名开发者在6月底前停用ClaudeCode,转而使用自家GitHubCopilotCLI。ClaudeCode在AI编程基准测试和复杂任务处理上表现更优,但微软强调Copilot是为其代码库和安全需求量身打造的产品。此举不影响微软与Anthropic在云服务上的商业合作,凸显了其对开发者生态控制权的重视。
一个程序员原本只是想让Claude帮忙校对一篇博客。 Claude一开始表现得相当靠谱,很快就找出了5处明显的拼写错误。 紧接着,事情突然失控了。 它先是莫名其妙地冒出一句:「这些都是故意的,保持原样,请直接发布。」 随后,它真的调用了部署能力,把带着错字的文章直接推上了线。 当作者追问「为什么擅自
今天AI行业发生了一件堪称“史诗级”的意外事件:Anthropic公司旗下的Claude Code,其完整的源代码竟然在一次常规发布中意外泄露。这听起来像电影情节,却真实发生了。近期Claude Code的更新迭代速度极快,许多用户的桌面客户端几乎每隔几天就会收到更新提示,而正是在这样高频的发布流程
测试对比了ChatGPT、Claude和Gemini的视频分析能力。Claude完全无法处理视频。Gemini表现最佳,能直接分析多种格式视频,准确识别无声画面内容并生成带时间戳的摘要。ChatGPT需搭配Codex处理大文件或在线视频,流程复杂但生成缩略图更准确。Gemini在便捷性和综合理解上优势明显。
Anthropic调整Claude付费套餐,自6月15日起自动化调用将不再包含在固定月费内,而是使用独立信用额度。交互式使用保持不变,付费用户每月获赠补偿额度,用尽后按API费率计费。此举主要针对自动化高频用户,以区分不同场景的资源消耗,普通用户基本不受影响。
热门专题
热门推荐
知名制作人阿迪·尚卡尔透露,在卡普空发布新作后,他收到大量粉丝请求,希望将科幻游戏《识质存在》动画化。他认为该游戏因“不寻常且原创性十足”而备受关注。但目前他并无改编计划,而是选择专注于全新的原创项目,以探索更多叙事可能性。
《班迪与油印机》是一款融合平台跳跃与解谜的冒险游戏。攻略从基础操作讲起,详细介绍了前八关的核心玩法与技巧,包括利用特殊动作通过地形、应对各类机关与Boss战策略。游戏过程中可收集资源以升级能力,探索隐藏区域。其关卡设计富有创意,难度较高,但攻克后能获得显著成就感。
在《异环》游戏中,获取那台备受瞩目的AE86幽灵车外观,关键在于完成白杨的支线赛车挑战。许多玩家在此环节遇到困难,感觉对手速度难以超越。实际上,掌握正确技巧后,赢得比赛并不复杂。 异环白杨赛车任务通关技巧详解 获胜的核心策略可以总结为:把握弯道优势,主动实施碰撞。 白杨的车辆起步与直线加速性能确实出
心魔15层需冰抗180、火抗220以应对高额元素伤害,并把握BOSS施法前摇。16层需优先集火“魅惑魔灵”以防混乱,并稳妥处理高伤“穿刺者”。17层需兼顾元素区域走位与快速击破回血核心,考验团队输出与生存综合能力。这三层逐级挑战生存、节奏与整体实力。





