CLAUDE.md 的编写与加载规则
每次都要重说一遍的那些要求,写进这个文件就不用再说了。但它有一条容易被忽略的性质——写得越多,遵守得越差。
用了几天之后一定会遇到这件事:同样的要求,每开一个新会话都要重说一遍。
「原话摘录必须逐字」「输出用中文」「不要加原材料里没有的信息」——这些是你工作方式的一部分,不该每次重讲。
它们该写进 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.md 和 foo/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/ 目录下,一件事一个文件。
最有价值的用法是「路径限定」——在文件开头写:
---
paths:
- "interviews/**/*.txt"
---
这份规则只在它读到 interviews/ 下的 txt 文件时才加载。
好处是省上下文:一条只在处理访谈稿时才需要的规则,不该在你写报告的时候也占着地方。
代价是它活不过压缩——见上面那张表。要一直生效的,还是写根目录那份。
自动记忆
它自己也会攒东西。
你说「以后一律用中文回我」,它可能就把这条存进自动记忆里了。存在 ~/.claude/projects/<项目>/memory/,同一个仓库的所有工作副本共用一份。
默认开着。 在 /memory 里可以关掉。
值得偶尔翻一下。 它记下的东西是当时的情况,过了几个月可能已经不对了——比如某个文件已经不在了、某个做法已经改了。
一份最小起步
如果你只想现在就写点什么,从这四行开始:
# 关于我
我做市场研究,主要处理访谈记录和调研数据。不写代码。
# 通用要求
- 用中文回复
- 引用原始材料时逐字摘录,不要改写、不要合并相邻短句
- 不确定的地方标出来,不要猜
- 不要添加原材料里没有的信息
放在 ~/.claude/CLAUDE.md。 之后每遇到一次「怎么又要重说」,就往里加一条。
加到二十条左右就该回头看看——哪些已经不需要了,哪些其实该变成一个技能。见第 05 章的重复性工作的固化时机。
本节事实查证日期:2026-08-05。 依据:官方 How Claude remembers your project 与 Explore the context window。