Skip to content

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 里的安装步骤,不必再抄一份进记忆——重复只会占额度,还可能过期。

文件放哪,怎么加载

路径在机器本地:

text
~/.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 配置

实操清单

  1. 团队惯例写 CLAUDE.md,个人临时纠正让自动记忆记
  2. 保持 MEMORY.md 短索引;细节进主题文件,标好类型
  3. /memory 确认是否启用;CI 用 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 或 bare
  4. 不重复代码与文档里已有的内容
  5. 铁律走 Hooks,不走记忆

你写说明书,它记笔记。说明书进仓库,笔记留在本机。分清这两层,上下文才干净,铁律也才靠得住。

Claude-cn.org,专注于 Claude Code 中文教程