第 12 章 自动记忆——让 Claude 自我进化

Mr.Tong...
  • AI
  • Claude Code
大约 4 分钟

❓ 引导问题:Claude Code 如何跨会话积累知识?自动记忆和 CLAUDE.mdopen in new window 的区别是什么?记忆文件该怎么管理?

📖 12.1 记忆系统的两种机制

Claude Code 每个新会话都从全新的上下文窗口开始,没有跨会话的自动记忆。记忆系统通过两种互补机制,让知识跨会话持久保存:

机制谁来写适合什么比喻
CLAUDE.mdopen in new window 文件你(开发者)手动编写项目规范、团队约定、构建命令你写的「说明书」
Auto Memory(自动记忆)Claude 自动写入从纠正和偏好中积累的经验Claude 自己写的「学习笔记」

两者在每次会话开始时都会被加载到上下文中。前者是规范,后者是经验,互补而非替代。

📖 12.2 四层记忆层级

优先级从高到低:

1. 企业级配置(Enterprise policy)    ← 最高优先级,只读
2. 用户级 CLAUDE.md                   ← ~/.claude/CLAUDE.md,对所有项目生效
3. 项目级 CLAUDE.md                   ← 项目根目录,随 Git 提交共享
4. 子目录级 CLAUDE.md                 ← 按上下文按需加载

最具体的规则优先:子目录的 CLAUDE.mdopen in new window 会覆盖上层的同类规则。

📖 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.mdopen in new window 而不是 Auto Memory? 明确说明:

你:把这条加到 CLAUDE.md

📖 12.4 /memory 命令与 # 快捷键

/memory 命令

输入 /memory 可以:

  • 查看当前会话加载的所有 CLAUDE.mdopen in new window 和规则文件列表
  • 切换 Auto Memory 的开启/关闭状态
  • 打开 Auto Memory 文件夹链接
  • 选择任意文件在编辑器中打开编辑

# 快捷键——快速记忆注入

# 始终在函数参数中使用具名参数(named parameters)

按下 # 键,输入想记住的内容,按回车——Claude 会自动将其写入对应的 CLAUDE.mdopen in new window 文件。适合记录项目约定、常用命令、代码风格细节。

📖 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.mdopen in new window 的指令?运行 /memory 确认文件已被加载;检查文件是否在正确目录;检查指令是否足够具体("遵循最佳实践"太模糊);检查文件是否超过 200 行(超出部分不加载)
CLAUDE.mdopen in new window 是强制规则吗?不是。Claude 读取并尽力遵循,但没有严格合规保证,尤其是指令模糊或冲突时。理解它为「工作指南」而非「不可违反的规则」
如何进行团队共享?将项目根目录的 CLAUDE.md 提交到 Git,团队成员都读取相同规范
Auto Memory 何时清理?手动删除 .claude/projects/<project>/memory/ 下的文件;关闭 Auto Memory 不会删除已有记忆文件

📖 12.XX 要点总结

  1. 两种互补机制CLAUDE.mdopen in new window(你写的规范)+ Auto Memory(Claude 自学的经验),每次会话启动时自动加载
  2. Auto Memory 自动判断:不每次都写入,只在信息对将来有用时才保存
  3. /memory 命令是管理记忆的核心入口;# 快捷键是快速注入记忆的效率神器
  4. 保持精简:记忆占用上下文窗口,定期删除过时或低价值内容
  5. 非强制执行CLAUDE.mdopen in new window 是工作指南而非硬规则,越具体越有效,模糊描述不被遵守是预期行为

你认为这篇文章怎么样?

  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.14.1