第 12 章 自动记忆——让 Claude 自我进化
...
❓ 引导问题:Claude Code 如何跨会话积累知识?自动记忆和 CLAUDE.md 的区别是什么?记忆文件该怎么管理?
📖 12.1 记忆系统的两种机制
Claude Code 每个新会话都从全新的上下文窗口开始,没有跨会话的自动记忆。记忆系统通过两种互补机制,让知识跨会话持久保存:
| 机制 | 谁来写 | 适合什么 | 比喻 |
|---|---|---|---|
| CLAUDE.md 文件 | 你(开发者)手动编写 | 项目规范、团队约定、构建命令 | 你写的「说明书」 |
| Auto Memory(自动记忆) | Claude 自动写入 | 从纠正和偏好中积累的经验 | Claude 自己写的「学习笔记」 |
两者在每次会话开始时都会被加载到上下文中。前者是规范,后者是经验,互补而非替代。
📖 12.2 四层记忆层级
优先级从高到低:
1. 企业级配置(Enterprise policy) ← 最高优先级,只读
2. 用户级 CLAUDE.md ← ~/.claude/CLAUDE.md,对所有项目生效
3. 项目级 CLAUDE.md ← 项目根目录,随 Git 提交共享
4. 子目录级 CLAUDE.md ← 按上下文按需加载
最具体的规则优先:子目录的 CLAUDE.md 会覆盖上层的同类规则。
📖 12.3 Auto Memory 工作原理
Claude 会在工作过程中自动保存笔记,但它不会每次都保存——它会判断哪些信息在未来会话中有用才写入。常见保存内容:
- 构建命令和调试技巧
- 架构决策笔记
- 代码风格偏好
- 工作流习惯
文件结构
~/.claude/projects/<project>/memory/
├── MEMORY.md # 索引文件,每次会话开始时加载(前 200 行)
├── debugging.md # 调试模式的详细笔记
├── api-conventions.md # API 设计决策
└── ... # Claude 创建的其他主题文件
MEMORY.md 是整个记忆目录的索引,Claude 通过它追踪各文件中存储的内容。
⚠️ Auto Memory 是本地机器级别的,同一 Git 仓库的所有 worktree 和子目录共享一个记忆目录,但不会跨机器或云环境同步。
触发方式
直接告诉 Claude 某些事情,它会自动保存:
你:始终使用 pnpm,不要用 npm
你:记住 API 测试需要本地运行 Redis 实例
你:我们的日期格式统一用 ISO 8601
想保存到 CLAUDE.md 而不是 Auto Memory? 明确说明:
你:把这条加到 CLAUDE.md
📖 12.4 /memory 命令与 # 快捷键
/memory 命令
输入 /memory 可以:
- 查看当前会话加载的所有 CLAUDE.md 和规则文件列表
- 切换 Auto Memory 的开启/关闭状态
- 打开 Auto Memory 文件夹链接
- 选择任意文件在编辑器中打开编辑
# 快捷键——快速记忆注入
# 始终在函数参数中使用具名参数(named parameters)
按下 # 键,输入想记住的内容,按回车——Claude 会自动将其写入对应的 CLAUDE.md 文件。适合记录项目约定、常用命令、代码风格细节。
📖 12.5 开关配置
方式一:通过 /memory 命令交互式切换
方式二:项目设置
// .claude/settings.json
{
"autoMemoryEnabled": false
}
方式三:环境变量
export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
📖 12.6 管理记忆
记忆不是越多越好——过多的记忆会占用上下文窗口,降低回答质量。
好的记忆应该是「非显而易见的项目特定知识」:
- ✅ "数据库迁移必须先备份生产数据"
- ✅ "部署脚本在 scripts/deploy.sh 而非 package.json 中"
- ❌ "项目使用 React"(代码本身已经说明)
定期审查 .claude/memory/ 目录,删除过时或冗余的记忆。
📖 12.7 常见问题
| 问题 | 答案 |
|---|---|
| Claude 忽略了 CLAUDE.md 的指令? | 运行 /memory 确认文件已被加载;检查文件是否在正确目录;检查指令是否足够具体("遵循最佳实践"太模糊);检查文件是否超过 200 行(超出部分不加载) |
| CLAUDE.md 是强制规则吗? | 不是。Claude 读取并尽力遵循,但没有严格合规保证,尤其是指令模糊或冲突时。理解它为「工作指南」而非「不可违反的规则」 |
| 如何进行团队共享? | 将项目根目录的 CLAUDE.md 提交到 Git,团队成员都读取相同规范 |
| Auto Memory 何时清理? | 手动删除 .claude/projects/<project>/memory/ 下的文件;关闭 Auto Memory 不会删除已有记忆文件 |






