每次新开对话,Claude 默认是"失忆"的。Memory 系统让它能记住关键信息,跨会话保持上下文,Claude的Memory包含三级体系,前面两级跟之前介绍过的Claude.md有关系,这两个需要用户自己手动设置,第三级是Auto Memory,一般由Claude Code自己管理,当然我们也可以自己给提示让它记录某个东西到Auto Memory中。这篇文章,将从三级Memory体系的角度来介绍整个Claude Code的内存体系。
Memory 三级体系
Claude Code 的 Memory 分三个层级,作用域不同:
| 层级 | 位置 | 谁写的 | 内容 |
|---|---|---|---|
| User Memory | ~/.claude/CLAUDE.md | 你 | 个人偏好,所有项目通用 |
| Project Memory | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 你 | 项目规范,团队共享 |
| Auto Memory | ~/.claude/projects/<project>/memory/ | Claude | 自动学习,自动积累 |
加载优先级:Project Memory > User Memory。Auto Memory 始终加载。
CLAUDE.md vs Auto Memory
两种记忆系统互补:
| CLAUDE.md | Auto Memory | |
|---|---|---|
| 谁来写 | 你手动写 | Claude 自动写 |
| 存什么 | 指令和规则 | 学习和偏好 |
| 作用域 | 项目/用户/组织 | 每个 git 仓库 |
| 加载量 | 全部加载 | 前 200 行或 25KB |
| 用途 | 编码规范、工作流、架构 | 构建命令、调试技巧、你纠正过的事 |
简单说:CLAUDE.md 是你给 Claude 立规矩,Auto Memory 是 Claude 自己做笔记。
User Memory:个人偏好
位置:~/.claude/CLAUDE.md
存你个人的编码偏好,对所有项目生效:
# 我的编码风格
• 缩进用 2 空格
• 优先用 const,不用 var
• 注释用中文
• React 组件用函数式写法
Project Memory:项目规范
位置:项目根目录的 ./CLAUDE.md 或 ./.claude/CLAUDE.md
存项目相关的指令,通过 git 分享给团队,在上一篇文章有做过详细的介绍,juejin.cn/post/763548…
这里介绍一个Claude协助帮助生成Project Memory的方法:
claude
> /init
这种使用方式比较适合已有的项目,Claude 会分析代码库,自动生成 CLAUDE.md。
Auto Memory:自动记忆
Auto Memory 让 Claude 自己做笔记。它会记录: • 你纠正过它的地方 • 踩过的坑 • 项目特有的构建命令 • 调试技巧
存储位置
~/.claude/projects/<project>/memory/
├── MEMORY.md # 索引文件,每次对话加载
├── debugging.md # 调试相关笔记
├── api-conventions.md # API 约定
└── ...
MEMORY.md 是入口文件,前 200 行(或 25KB)会在每次对话开始时加载。
如何产生 Auto Memory 记录
方式一:直接对话
告诉 Claude 记住某件事:
记住:这个项目用 pnpm,不用 npm
记住:API 测试需要先启动本地 Redis
Claude 会判断这个信息是否值得记录到 Auto Memory。
方式二:Claude 主动学习
当 Claude 犯错你纠正它时,它会自动记录:
你:这里应该用 useCallback 包一下,不然每次渲染都会重新创建
Claude:好的,我记住了。[Writing memory]
Claude 会自动把这类学习存到 Auto Memory。
查看 Auto Memory
claude
> /memory
会显示当前加载的所有 Memory 文件,包括 CLAUDE.md 和 Auto Memory。可以直接打开编辑。
或者直接看文件:
cat ~/.claude/projects/*/memory/MEMORY.md
关闭 Auto Memory
默认开启。想关掉的话:
# 方式一:环境变量
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
# 方式二:设置文件
# ~/.claude/settings.json
{
"autoMemoryEnabled": false
}
最佳实践
| 场景 | 用什么 |
|---|---|
| 编码规范、团队约定 | Project Memory (CLAUDE.md) |
| 个人偏好 | User Memory (~/.claude/CLAUDE.md) |
| Claude 犯错后纠正 | 自动产生 Auto Memory |
| 项目特定命令、技巧 | 让 Claude 自动记录 |
避坑提示
1. CLAUDE.md 别写太长
超过 200 行会消耗更多上下文,Claude 反而可能没法加载这么多信息,导致它不遵守。精简点。
2. 敏感信息别存 Memory
都是明文文件。API Key、密码这些千万别放进去。
3. 冲突的指令要清理
如果多个 CLAUDE.md 有矛盾,Claude 可能随机选一个遵守。定期清理过时的指令。