文段解析

Claude Code 的记忆系统,比想象中初级

Claude Code 的记忆系统分为四层:CLAUDE.md 用户约束、Auto Memory 自动笔记、Auto Dream 梦整理、KAIROS 后台守护。核心局限:200行硬上限、纯grep检索、细节易丢失、跨工具不通用。

Claude Code 源码泄漏后,大家都知道了

npm 包里多了一个 .map 文件,512,000 行 TypeScript 就这么公开了。研究完它的源码后,我们的结论是:Claude Code 的记忆系统,比想象中初级。

它确实做了不少工作,分了好几层,甚至搞了一个让 agent 做梦的机制来整理记忆。听起来很高深。但摊开来看,本质上还是在一个 agent 的沙盒里打转,记忆出不去,也活不长。

第一层:CLAUDE.md,用户写给 agent 的规矩

CLAUDE.md 是一个 Markdown 文件,用户自己写,放在项目根目录下。内容可以是你想让 Claude 记住的任何规矩:代码风格约定、项目架构说明、测试命令、部署流程。

每次会话开始时,Claude Code 会把这个文件完整加载进 context。文件越短,Claude 遵写得越好。

它支持三个作用领域:项目级的 CLAUDE.md 放在项目根目录,个人级的放在 ~/.claude/CLAUDE.md,组织级的放在企业配置里。

第二层:Auto Memory,agent 自己记笔记

Auto Memory 就是干这个的:Claude 在工作中自己判断哪些信息值得记下来,写进一个独立的记忆目录里。

Claude 会把值得记住的东西分成四类:

这些记忆存在 ~/.claude/projects/<项目路径>/memory/ 目录下。每条记忆是一个独立的 Markdown 文件,带 frontmatter 标注类型和描述。

入口文件是 MEMORY.md,起索引作用,每行不超过 150 个字符,只存指针,不存内容。

第三层:Auto Dream,让 agent 做梦整理记忆

记忆写入的问题解决了,但跑了十几次会话之后,MEMORY.md 越来越乱。冗余的条目堆积起来就会出现相对时间(昨天、上周)不知道指哪一天。

Auto Dream 模拟的是人脑在睡眠中做的事:整理和巩固记忆。

它扫描现有记忆文件,翻阅历史会话记录,找到用户的反馈和反复提到的话题,然后做整合:把相对时间换成绝地日期,合并冗余条目,剔除超时内容,最终把 MEMORY.md 控制在 200 行以内。

触发条件两个同时满足:距离上次整合超过 24 小时,且积累了 5 次以上新会话。也可以手动输入"dream"触发。

第四层:KAIROS,泄露代码里还没上线的野心

KAIROS 在源码中出现了超过 150 次。这是一个后台守护进程模式,想把 Claude Code 从被动响应的工具变成主动观察的自治体。

KAIROS 维护 append-only 的日志文件,持续记录观察、决策和行动。它在固定间隔收到 <tick> 信号,自行决定是该主动做点什么,还是保持安静。

不过 KAIROS 目前被一个编译时 feature flag 控制,没有出现在任何公开版本里。

这套体系的天花板在哪?

用过一段时间就会发现几个绕不开的问题:

这不是 Claude Code 的设计失误。单 agent、会话粒度、本地存储,架构走到这里,天花板就在这里。