CLAUDE.md 你写,MEMORY.md 它记:自动记忆怎么用
两份「记忆」别混。CLAUDE.md 是你(或团队)手写的说明;自动记忆是 Claude 自己跨会话往磁盘记的笔记。两者都会进上下文,都不是硬开关。一次都不能破的规矩,仍然要 Hooks 和权限,见 CLAUDE.md 管倾向,Hooks 才是铁律。
各管什么
| 东西 | 谁写 | 典型内容 |
|---|---|---|
CLAUDE.md / CLAUDE.local.md | 你 | 包管理器、目录约定、评审偏好 |
自动记忆(MEMORY.md + 主题文件) | Claude | 你纠正过的做法、项目里摸到的坑、外部资料摘要 |
| Hooks / permissions | 你配置 | 提交前测试、deny .env、沙箱 |
自动记忆适合「上次说过、下次还可能用」的软事实。代码里已经写清楚的 API、README 里的安装步骤,不必再抄一份进记忆——重复只会占额度,还可能过期。
文件放哪,怎么加载
路径在机器本地:
~/.claude/projects/<project>/memory/同一 git 仓库的多个 worktree 共用这一份记忆目录。换机器不会自动同步到云端;别当团队知识库用。
会话开始时,会读 MEMORY.md 索引:前 200 行,或大约 25KB,先到先停。细项落在同目录下的主题文件里,需要时再展开。所以索引要短:条目指向主题文件,别把长文全塞进 MEMORY.md。
记忆类型(frontmatter)
主题笔记可用 frontmatter 标类型,方便以后检索和整理:
user:关于你本人的偏好与习惯feedback:你明确纠正过的反馈(「别再这样」)project:这个仓库特有的结构、流程、雷区reference:外部文档、链接级摘要(仍建议短,细节进主题文件)
类型是分类标签,不是权限。标了 feedback 也不会变成 Hooks。
开关与排查
- 会话命令:
/memory—— 查看、管理自动记忆是否启用 - 设置项:
autoMemoryEnabled - 环境变量强制关:
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
CI 或不想带上本机笔记的脚本环境,用环境变量或 --bare 一类干净启动更稳。非交互与 bare 的加载边界非交互加载边界另见权限相关讨论 权限怎么配。
机器本地意味着:笔记本上记的坑,台式机默认看不到。团队规范仍应写进仓库里的 CLAUDE.md,而不是指望每人各自的 MEMORY.md。
怎么写才不浪费额度
索引 MEMORY.md 保持目录式:一行一个主题 + 指向文件。长对话纪要、大段粘贴日志,拆到主题文件。
少记这些:
- 源码里一眼能搜到的符号含义
- 已经写在
CLAUDE.md里的团队约定 - 会随分支剧烈变化、且没有「纠正价值」的临时假设
多记这些:
- 你骂过两次的同一类错误(反馈型)
- 「这个服务的发布入口其实在别的 repo」这类摸索成本高的事实
- 个人快捷习惯:默认语言、测试命令偏好(若不想写进全局
CLAUDE.md)
Skills 负责「任务触发再加载」的流程说明;自动记忆负责跨会话的碎片事实。Skills 怎么选,见 Skills 指南。多 worktree 并行开发时,记住记忆目录是按 git 项目共享的,见 Worktree。
和铁律的分界(再强调一次)
自动记忆、CLAUDE.md 都是上下文。模型「尽量」遵守。
- 不许读密钥、不许
rm -rf、提交前必须测:Hooks + deny - 「我们偏爱 pnpm」「注释用中文」:
CLAUDE.md - 「上周发现 staging 的 feature flag 在 Consul 某路径」:自动记忆或项目文档
Auto mode 的分类器环境描述也别指望记忆文件自动补全;信任边界仍要写进配置,见 Auto mode 配置。
实操清单
- 团队惯例写
CLAUDE.md,个人临时纠正让自动记忆记 - 保持
MEMORY.md短索引;细节进主题文件,标好类型 - 用
/memory确认是否启用;CI 用CLAUDE_CODE_DISABLE_AUTO_MEMORY=1或 bare - 不重复代码与文档里已有的内容
- 铁律走 Hooks,不走记忆
你写说明书,它记笔记。说明书进仓库,笔记留在本机。分清这两层,上下文才干净,铁律也才靠得住。