Claude Code 的记忆系统采用双层架构:CLAUDE.md(手动指令层)+ Auto Memory(自动学习层)。所有记忆以 Markdown 文件形式存储在文件系统中,透明可审查、可用 Git 管理。2026年3月新引入的 Auto Dream 功能可在后台自动去重、合并、修剪记忆,防止记忆膨胀。这套设计在 AI 编码助手中独树一帜:它不是云端黑盒,也不是 IDE 内嵌特性,而是普通文件系统上的普通文件。 一、Claude Code 的记忆系统到底是什么
Claude Code 的记忆系统由两层组成——CLAUDE.md 是开发者手动编写的持久指令文件,Auto Memory 是 Claude 在对话中自动积累的笔记。两者都以 Markdown 文件形式存储在本地 .claude/ 目录中。 大多数编程 AI 助手都有"金鱼记忆"——每次新会话都从零开始,你需要反复解释项目背景、编码偏好、调试历史。Claude Code 的记忆系统设计目的就是解决这个问题。
1.1 CLAUDE.md:手动指令层
CLAUDE.md 是 Claude Code 最早的记忆机制。开发者在项目目录下创建一个 CLAUDE.md 文件,里面写上项目说明、编码约定、构建命令等信息。每次新会话启动时,Claude 会自动读取这个文件,获得项目的初始上下文。
Anthropic 设计了 5 层 CLAUDE.md 机制,从全局到局部,越具体的优先级越高:
Anthropic 设计了 5 层 CLAUDE.md 机制,从全局到局部,越具体的优先级越高:
| | | |
|---|
| /Library/Application Support/Claude/CLAUDE.md(macOS) | | |
| ./CLAUDE.md 或 ./.claude/CLAUDE.md | | |
| | | |
| | | |
| | | |
这意味着 Claude Code 的记忆系统天然支持团队协作——项目级的 CLAUDE.md 通过 Git 版本控制共享给所有团队成员,而个人的 CLAUDE.local.md 不会被提交。
1.2 Auto Memory:自动学习层
Auto Memory 是 Claude Code 更强大的第二层。它不是手动编写的,而是 Claude 在与你协作编程的过程中,自主判断哪些信息对未来有用,然后自动写入 ~/.claude/projects/<项目>/memory/MEMORY.md 文件。
Claude 会自动记录:
- 构建命令和部署流程("这个项目用 npm run build:prod 构建")
- 调试过程中发现的陷阱("测试失败是因为 mock 数据库版本不匹配")
- 架构笔记和代码风格偏好("用户喜欢用函数式组件而不是 class")
需要注意的是,Claude 会在你纠正它时特别认真地记录。你说了"不对,应该用 X 而不是 Y",这个纠正本身就会成为一条长期记忆——下次它不会再犯同样的错。
1.3 记忆的文件系统透明性
这是 Claude Code 记忆系统最独特的设计:所有记忆都是普通 Markdown 文件。
- 你可以直接编辑 MEMORY.md——删除过时条目、修正错误记忆
相比之下:
- Cursor 的记忆集成在 IDE 内部,部分透明
- Claude Code 的记忆就是文件系统中的文件,完全透明
二、记忆提取机制:Claude 如何自主积累知识
Claude Code 在每个 query 结束时运行一个独立的 forked agent(分支代理),专门分析对话内容并提取值得保存的记忆。它拥有只读权限,最多 5 轮,写入记忆目录内的文件。
Claude Code 的记忆不是"想到才记",而是一套独立的提取服务。
2.1 自动记忆提取服务
根据源码分析(extractMemories.ts,615 行),Claude Code 的记忆提取是这样工作的:
1. 触发时机:每个 query 结束时(Claude 完成响应但未调用工具时)自动触发
2. forked agent 模式:复制主对话状态运行一个独立的子代理
3. 共享 prompt cache:不浪费额外的 token 来复制上下文
4. 只读权限限制:提取代理只能读文件、grep、glob、执行只读 shell 命令,只能在记忆目录内写入
5. 互斥机制:如果主 agent 已经自己写了记忆,提取代理跳过(避免重复)
6. 最多 5 轮:通常 2-4 轮即可完成
这意味着 Claude Code 的记忆系统是主动式的——不需要用户提醒,也不需要手动指令,Claude 自己在后台做记忆提取。
2.2 记忆的渐进式加载
Claude Code 不会把所有记忆一次性塞进上下文窗口。它的设计是:
- MEMORY.md 每次会话自动加载前 200 行或 25KB
- 详细信息拆分到独立的主题文件中(如 debugging.md、patterns.md)
- 当对话涉及某个主题时,Claude 通过搜索机制按需加载对应的主题文件
这种设计解决了 AI 编码助手的共同难题:记忆膨胀。如果每次会话都要加载所有历史记忆,上下文窗口很快就会被撑满。
2.3 Auto Dream:自动梦境整理
2026年3月26日,Anthropic 推出了实验性的 Auto Dream 功能。它类似于人类的 REM 睡眠——在后台运行一个子代理来整理记忆文件:
Auto Dream 的触发条件是:至少 24 小时距上次整理,且至少有 5 个新会话产生了新记忆。
这解决了记忆系统的另一个核心问题:随着时间推移,记忆会越来越大、越来越矛盾。Auto Dream 就像定期打扫房间——不清理的话,有用的信息会被淹没在过时的垃圾中。
三、4 种记忆分类:Claude Code 的记忆类型学
Claude Code 将记忆严格分为 4 种类型——user(用户偏好)、feedback(工作方法指导)、project(系统/环境状态)、reference(外部系统位置)。它有一个关键约束:能从代码/git/文件推导的信息不应保存为记忆。
根据源码分析(memoryTypes.ts,271 行),Claude Code 的记忆有一个严格的分类体系:
| | | |
|---|
| | | |
| | | "集成测试必须真实数据库,原因是之前的 mock 与生产偏差导致迁移失败" |
| | 事实/决策 + Why + How to apply | "2026-03-05 开始合并冻结,因为移动团队要切发布分支" |
| | | "Pipeline bug 追踪在 Linear 项目 'INGEST' 中" |
最关键的限制:什么不应该存
Claude Code 在系统提示里明确写入了一条规则:
代码模式、约定、架构、文件路径、项目结构不应该存为记忆——因为这些可以从当前项目状态推导出来(通过 grep/git/CLAUDE.md)。同样,git log、git blame 是权威的来源。调试解决方案或修复方案也不应该存——修复已经在代码里了。
这条规则非常重要。它意味着 Claude Code 的记忆系统只存不可推导的知识——那些无法从当前文件、git 历史或代码本身推断出来的信息。
记忆漂移检测
Claude Code 在系统提示中还有一条记忆漂移检测规则:
记忆记录可能随时间变得过时。记忆是时间点的观测,不是实时状态。在基于记忆回答用户或建立假设之前,先验证记忆是否仍然正确且最新。如果回忆的记忆与当前信息冲突,信任你当前观察到的——并更新或删除过时的记忆。
这意味着 Claude 被训练在使用记忆前先验证当前的实际情况,防止过时记忆导致错误推理。
四、Claude Code vs Cursor vs Copilot:记忆系统对比
Claude Code 采用文件系统式透明记忆,所有记忆是可编辑的 Markdown 文件;Cursor 采用 IDE 集成的 Memory Banks,自动管理但部分黑盒;Copilot 采用云端记忆,通过 UI 管理,跨 Agent 共享。三条路线,各有取舍。
理解 Claude Code 的记忆设计,最好的方式是对比同类工具。
4.1 功能对比
| | | |
|---|
| | Memory Banks + Cursor Rules | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
4.2 三种哲学路线
文件系统型(Claude Code):
- 核心理念:记忆应该像代码一样——可见、可编辑、可版本控制
IDE 集成型(Cursor):
产品化云端型(Copilot):
4.3 上下文管理的共同挑战
三个工具都面临同一个核心问题:记忆膨胀。随着使用时间的增加,积累的记忆会占满上下文窗口,导致 Claude/Cursor/Copilot 忘记最近的对话。
各自的解决方案:
- Claude Code:渐进式披露 + Auto Dream + 按需加载
五、用户反馈:Claude Code 的记忆功能好用吗
用户普遍认为 Claude Code 的记忆功能解决了"每次新会话重新解释项目"的痛点,Auto Dream 去重整理获好评。主要槽点是上下文窗口仍然有限、代码质量中等水平、使用频率限制严格。
5.1 正面反馈
Reddit 社区和各类评测中用户对 Claude Code 记忆功能的典型好评:
- "像有了资深工程师搭档"——长期使用后 Claude 对项目的理解深度持续增长
- 解决了"金鱼记忆"痛点——不再需要每次新会话重新解释项目背景
- 一致性高——生成的代码风格随记忆积累越来越符合用户偏好
- Auto Dream 获好评——Reddit 用户社区对自动去重整理功能表示认可
5.2 槽点和改进建议
用户也指出了几个实际问题:
- 上下文窗口仍然有限——大项目中记忆 + 代码 + 对话容易撑满窗口
- 代码质量中等水平——"solid junior to mid-level"——无法完全替代资深工程师
- 撤销能力不足——Claude 生成的错误变更回退困难,依赖 Git
- 压缩偶尔丢失关键信息——compaction 过程中可能损失重要上下文
六、Claude Code 记忆功能版本演进
从 2025年5月 的 CLAUDE.md 文件到 2026 年3月的 Auto Dream,Claude Code 的记忆系统在不到一年里完成了从"静态文件"到"自动学习+自动整理"的完整进化。
| | |
|---|
| | |
| Anthropic 推出 Claude 通用记忆功能 | |
| | |
| | Claude Code v2.1.59+ 要求 MEMORY.md 自动生成 |
| | |
| | |
七、如何高效管理 Claude Code 的记忆
定期审查 MEMORY.md 删除过时条目、善用 .claude/CLAUDE.local.md 隔离个人偏好、用 Git 追踪记忆变化、遇到冲突时优先信任当前文件内容而非记忆。
7.1 日常维护建议
1. 定期审查 MEMORY.md——建议每周一次,删除过时的调试笔记和已完成的任务记录
2. 善用 `.gitignore`——CLAUDE.local.md 不应提交到 Git,避免泄露个人偏好
3. 用 Git 追踪——将 .claude/ 目录纳入版本控制,这样可以看到记忆的变化历史
4. 冲突时信任当前文件——如果记忆说的和当前代码不一致,相信代码——然后更新记忆
5. 利用 `/memory` 命令——查看、编辑、开启或关闭自动记忆
7.2 团队协最佳实践
1. 项目级 CLAUDE.md——在项目中放 CLAUDE.md 或 .claude/CLAUDE.md,团队共享
2. `.claude/rules/` 目录——按文件类型或子目录组织规则,便于按需加载
3. 个人覆盖用 `CLAUDE.local.md`——确保 .gitignore,不提交
常见问题(FAQ)
Q: Claude Code 的记忆存储在里?
A: 存储在本地文件系统中。CLAUDE.md 在项目目录或 ~/.claude/ 目录下,Auto Memory 在 ~/.claude/projects/<项目>/memory/MEMORY.md。
Q: Claude Code 的记忆功能免费吗?
A: 是的。2026年3月15日起对所有用户(含免费版)开放。
Q: 如何关闭 Claude Code 的自动记忆?
A: 使用 /memory 命令开启或关闭自动记忆功能。
Q: Auto Dream 是什么?
A: Auto Dream 是 Anthropic 于 2026年3月26日推出的实验性功能,在后台自动整理记忆文件——去重、合并、修剪过时条目,防止记忆膨胀。
Q: Claude Code 记忆数据安全吗?
A: 记忆存储在本地文件系统中,不上传 Anthropic 服务器。你可以完全控制记忆文件的内容和可见性。
Q: Claude Code 的记忆和 ChatGPT 的 Memory 有什么区别?
A: Claude Code 的记忆是文件系统上的普通文件,完全透明、可编辑、可版本控制。ChatGPT 的记忆存在 Anthropic/ OpenAI 的云端,通过 UI 管理。