CLAUDE.md 的编写与加载规则

每次都要重说一遍的那些要求,写进这个文件就不用再说了。但它有一条容易被忽略的性质——写得越多,遵守得越差。

约 10 分钟

用了几天之后一定会遇到这件事:同样的要求,每开一个新会话都要重说一遍。

「原话摘录必须逐字」「输出用中文」「不要加原材料里没有的信息」——这些是你工作方式的一部分,不该每次重讲。

它们该写进 CLAUDE.md

两套记忆机制

CLAUDE.md 自动记忆
谁写 它自己
内容 指令和规则 它发现的模式和经验
范围 项目 / 用户 / 组织 每个代码仓库一份
加载 每次会话,全文 每次会话,索引的前 200 行

这一节主要讲第一套。

写在哪

四个位置,按从宽到窄的顺序加载:

范围 位置 谁看得到
组织统一下发 由 IT 部署 组织内所有人
你自己的偏好 ~/.claude/CLAUDE.md 只有你,所有项目
项目规则 ./CLAUDE.md./.claude/CLAUDE.md 团队(会进版本库)
项目里你的私人偏好 ./CLAUDE.local.md 只有你,记得加进 .gitignore

两个位置的分工

~/.claude/CLAUDE.md 写「我是谁、我要什么」——语言偏好、输出风格、你的职业背景、你反复纠正它的那些事。

项目里的 CLAUDE.md 写「这件事是什么」——这个项目的材料结构、术语约定、交付格式。

这个分工很重要:写错地方的后果是,你的个人偏好跟着项目进了版本库,或者项目规则跑到了所有项目里。

它是怎么加载的

几条规则,知道了能省很多困惑:

① 会往上找

它从你启动的那个目录开始,一层层往上找,每一层都看有没有 CLAUDE.md

foo/bar/ 里启动,foo/bar/CLAUDE.mdfoo/CLAUDE.md 都会加载

② 是叠加,不是覆盖

找到的所有文件会被拼在一起,不是后面的盖掉前面的。

顺序是从最外层往里——所以离你启动位置最近的那份排在最后

③ 子目录里的不会一开始就加载

子目录里的 CLAUDE.md 只有当它读到那个子目录里的文件时才会生效。

这一条容易踩坑:你把重要规则写在了 interviews/CLAUDE.md 里,然后奇怪它为什么不遵守——因为它还没读过那个目录里的任何文件。

④ 压缩之后,只有根目录那份会回来

这是最实际的一条影响:

写在哪 /compact 之后
项目根目录的 CLAUDE.md 重新读一遍,还在
子目录里的 丢了,直到又读到那个目录
带路径限定的规则文件 丢了,同上

所以:必须一直生效的规则,写在项目根目录那份里。

长度:这一条比想象中重要

官方的建议是每份控制在 200 行以内。

原话是:更长的文件消耗更多上下文,并且降低遵守度。

后半句才是关键。 很多人以为写得越细越好,实际上:

  • 每一轮都在读这份文件,越长越占地方
  • 规则越多,每一条的权重越低——三十条要求里有五条被忽略,是正常的

所以 CLAUDE.md 的正确写法是「只写它做不对的那些」,不是「把工作流程完整写一遍」。

什么该写,什么不该写

该写进 CLAUDE.md 该放别处
它犯过两次的同一个错 只在某一类文件上才需要的规则 → 路径限定规则
你反复输入的同一句纠正 多步骤的操作流程 → 技能
和工具默认行为不一样的约定 它自己能从文件里看出来的东西 → 不用写
那些「新同事需要被告知」的背景 硬性禁止 → 权限规则

最后一行值得重复

CLAUDE.md 是上下文,不是强制配置。 你在里面写「禁止删除文件」,它会尽量遵守,但这不构成阻拦。要真的挡住,用权限规则

怎么写得具体

官方给的对照很直白:

❌ 模糊 ✅ 具体
「格式规范一点」 「用两个空格缩进」
「记得测试」 「提交前跑 npm test
「文件放整齐」 「接口处理函数放在 src/api/handlers/

换成研究工作的版本:

❌ 模糊 ✅ 具体
「引用要准确」 「原话摘录必须逐字,不要为了通顺合并相邻短句」
「输出规范一点」 「编码表一行一条,格式是『编号 | 主题 | 原话』」
「注意保密」 「受访者姓名一律用编号代替,编号规则见 codes.md

一份起步模板

不知道从哪开始的话,先跑一次

/init

它会分析这个项目,生成一份起步的 CLAUDE.md。已经有一份的话,它会提改进建议而不是覆盖掉。

然后自己删。 生成的版本通常偏长,把它能自己看出来的部分删掉——目录结构、依赖列表这类东西不需要你写。

/doctor 也能帮你精简。 它会建议删掉那些可以从代码里直接看出来的内容,保留真正的坑、原因和约定。

编辑和查看

/memory

它会列出所有的记忆文件位置——包括还不存在的,选中就会帮你创建。

想确认某一份到底加载了没有:

/context

Memory files 那一栏里能看到实际加载的文件清单。

「它不听我 CLAUDE.md 里的话」这个问题,一半是文件根本没被加载。 先用 /context 确认,再去改内容。

更细的分法:.claude/rules/

CLAUDE.md 太长的时候,可以拆到 .claude/rules/ 目录下,一件事一个文件。

最有价值的用法是「路径限定」——在文件开头写:

YAML
---
paths:
  - "interviews/**/*.txt"
---

这份规则只在它读到 interviews/ 下的 txt 文件时才加载。

好处是省上下文:一条只在处理访谈稿时才需要的规则,不该在你写报告的时候也占着地方。

代价是它活不过压缩——见上面那张表。要一直生效的,还是写根目录那份。

自动记忆

它自己也会攒东西。

你说「以后一律用中文回我」,它可能就把这条存进自动记忆里了。存在 ~/.claude/projects/<项目>/memory/同一个仓库的所有工作副本共用一份。

默认开着。/memory 里可以关掉。

值得偶尔翻一下。 它记下的东西是当时的情况,过了几个月可能已经不对了——比如某个文件已经不在了、某个做法已经改了。

一份最小起步

如果你只想现在就写点什么,从这四行开始:

Markdown
# 关于我

我做市场研究,主要处理访谈记录和调研数据。不写代码。

# 通用要求

- 用中文回复
- 引用原始材料时逐字摘录,不要改写、不要合并相邻短句
- 不确定的地方标出来,不要猜
- 不要添加原材料里没有的信息

放在 ~/.claude/CLAUDE.md 之后每遇到一次「怎么又要重说」,就往里加一条。

加到二十条左右就该回头看看——哪些已经不需要了,哪些其实该变成一个技能。见第 05 章的重复性工作的固化时机

本节事实查证日期:2026-08-05。 依据:官方 How Claude remembers your projectExplore the context window

← 回到手册目录