Appearance
Claude Code记忆机制深度剖析
每个Claude Code会话以全新上下文窗口开始。两种记忆机制负责跨会话传递知识:CLAUDE.md文件(手写的持久化指令)和Auto Memory(Claude自动记录的笔记)。
第一层:CLAUDE.md层级体系
Claude Code不依赖单一全局记忆文件,而是采用分层体系:
| 层级 | 作用域 | 说明 |
|---|---|---|
| 企业级 | enterprise managed | 通过settings下发,不可被排除 |
| 项目级 | 项目根目录 | 团队共享 |
| 本地级 | 本地个人偏好 | 通常加入.gitignore |
| 用户级 | ~/.claude/CLAUDE.md | 跨所有项目生效 |
各层文件位置
bash
~/.claude/CLAUDE.md # 用户全局,跨所有项目生效
./CLAUDE.md 或 ./.claude/CLAUDE.md # 项目根目录,团队共享
.CLAUDE.local.md # 本地个人偏好,通常加入.gitignore
企业 managed policy # 通过settings下发,不可被排除层级覆盖规则
Claude Code会话开始时会加载这些记忆文件。更具体的层级在冲突时会覆盖更宽泛的层级。
正是这种层级结构而非文件的冗长程度,赋予了记忆真正的力量。
第二层:Auto Memory
Claude自动在工作积累笔记,记录在MEMORY.md中。
记录内容
| 内容类型 | 说明 |
|---|---|
| 用户偏好 | 何时被纠正、何时改了方案 |
| 项目知识 | 架构决策、技术选型原因 |
| 工作进展 | 任务完成情况、待办事项 |
触发方式
- Claude从纠正与偏好中自动积累
- 不是用户主动输入,而是Claude观察学习
第三层:Auto Dream(后台整理)
Auto Memory在积累笔记后,久而久之会出现问题:
- "昨天的部署bug"在一周后已毫无意义
- PostgreSQL和MySQL的条目相互矛盾
- MEMORY.md逐渐充斥着过时引用
Auto Dream功能
后台清理进程会自动:
- 将模糊的时间引用替换为确切日期
- 解决矛盾条目
- 删除引用已删文件的陈旧记录
- 将MEMORY.md保持在200行以内
触发条件
| 条件 | 说明 |
|---|---|
| 时间要求 | 距上次清理超过24小时 |
| 积累要求 | 至少积累5个新会话 |
也可以手动输入 "dream" 触发。
第四层:KAIROS(未发布)
源码中还包含尚未发布的KAIROS——以希腊语"恰当时机"命名,在源码中出现超过150次。
设计目标
将Claude Code从主动使用的工具变成持续监视项目的后台助手:
| 功能 | 说明 |
|---|---|
| 持续观察 | 保持全天的观察/决策/行动日志 |
| 主动介入 | 定时检查是否需要介入 |
| 智能延迟 | 任何会阻塞用户超过15秒的操作都推迟执行 |
设计哲学与局限
核心区分
| 组件 | 性质 | 来源 |
|---|---|---|
| CLAUDE.md | 用户有意写下的指令 | 用户主动编写 |
| Auto Memory | Claude从纠正与偏好中积累的学习成果 | Claude观察学习 |
两者都被当作"上下文"而非"强制配置"——它们强烈影响行为,但不作为硬编码的策略规则运行。
已知局限
| 局限 | 影响 |
|---|---|
| 200行索引上限 | 长期项目的早期条目会被新条目挤出 |
| 仅支持关键词检索 | 语义相近但措辞不同的记忆无法被找到 |
| 仅本地存储 | 切换到其他AI agent后记忆归零,不支持团队共享 |
| 越短越有效 | 超过200行的文件消耗更多上下文,遵从率下降 |
总结
| 记忆层 | 机制 | 特点 |
|---|---|---|
| CLAUDE.md | 用户编写 | 分层体系,更具体覆盖更宽泛 |
| Auto Memory | 自动积累 | 从纠正和偏好中学习 |
| Auto Dream | 后台清理 | 200行上限,定期整理 |
| KAIROS | 未发布 | 持续监视,主动介入 |
好的记忆系统不是"记住一切",而是记住有用的、忘记无用的。
关键词:Claude Code, 记忆机制, CLAUDE.md, Auto Memory, Auto Dream, KAIROS, 上下文管理
