CLAUDE.md 是 Claude 每次开始工作前自动重读的入职说明书;Memory 泛指这一整套让 Claude”记住事情”的持久化机制。

一个具体例子

你第五次对 Claude 说:“这个项目用 pnpm,别用 npm。”

就是这个瞬间——凡是你发现自己在重复说的话,都该搬进 CLAUDE.md。 在项目根目录建一个 CLAUDE.md,写上:

## 项目规则
- 包管理用 pnpm,不用 npm
- 提交信息用中文

从此每次新会话,Claude 开工前自动读到这两条,你再也不用说第六次。

它是什么 / 不是什么

:一个普通的 markdown 文件,放在项目根目录(团队共享)或 ~/.claude/(你个人全局)。除此之外,Claude Code 还有 auto-memory——它自己把会话里学到的关键事实写进记忆文件夹,下次自动带上。

不是模型”学会了”。模型本身每次会话都是空白的,所谓记忆只是每次开工前自动塞给它的文件。所以 CLAUDE.md 不是越长越好——它占的是上下文窗口,写满废话等于让员工每天上班先读两小时手册,读完已经累了。社区经验:单个文件保持 200 行以内。

加载有方向性(这是它最反直觉的地方):从你启动 Claude 的目录向上到根目录,沿途所有 CLAUDE.md 立即加载;向下的子目录里的 CLAUDE.md 不会立即加载,只在 Claude 真正碰到那个目录的文件时才加载(懒加载)。大项目可以利用这一点:根目录放通用规则,各子模块放各自的规则,互不浪费。

为什么这个概念存在

因为没有它,每个新会话都是失忆的新员工,你要把项目背景、规矩、偏好从头交代一遍。CLAUDE.md 把”交代背景”从每次对话的成本,变成一次性投资。

没有它会怎样:你的时间花在重复自我介绍上,而且每次交代得不一样,Claude 的表现也跟着飘。

相关概念

写进 CLAUDE.md 的规矩依然靠 AI 自觉遵守,要”必然执行”得用 Hook;按需加载的领域知识该放 Skill 而不是塞进 CLAUDE.md;Subagent 可以有自己独立的记忆作用域(user / project / local)。