用 CLAUDE.md 把你的规矩固化下来

不用每次开头重申一遍术语表、口径和禁忌。写一次,之后每个会话自动加载。附路径限定规则和自动记忆两个进阶机制。

2026/08/04约 8 分钟HiBridge 原创
方法来源本文由 HiBridge 撰写,方法来自下面的出处。
出处
How Claude remembers your project
来自
Anthropic 官方文档
查证日期
2026/08/04

每次开新会话,都要重新交代一遍:「术语用客户那套,不要用行业通称」「数字一律保留一位小数」「不确定的地方标出来不要圆过去」。

这些话说第三遍的时候,就该写进文件了。

CLAUDE.md 是什么

每次会话开始时自动加载的一份说明。 你写在里面的内容,Claude 每次都会读。

判断某件事该不该写进去,有个很好用的标准(官方给的):

  • Claude 第二次犯同一个错
  • 你把上次打过的那句纠正又打了一遍
  • 一个新同事需要同样的背景才能上手

任何一条成立,就该写进去。

放在哪里

按加载顺序,从范围最广到最具体:

范围 位置 用来放什么
组织统一 macOS /Library/Application Support/ClaudeCode/CLAUDE.md
Windows C:\Program Files\ClaudeCode\CLAUDE.md
公司层面的规范(由 IT 部署)
个人偏好 ~/.claude/CLAUDE.md 你在所有项目里的习惯
项目共享 ./CLAUDE.md./.claude/CLAUDE.md 团队共用,随版本库分发
项目私有 ./CLAUDE.local.md 只属于你的,记得加进 .gitignore

一个常见的误解

很多人以为是「子目录覆盖上级」。不是。 官方的机制是:

All discovered files are concatenated into context rather than overriding each other.

所有找到的文件拼接进上下文,不是互相覆盖。顺序是从文件系统根部往下到你的工作目录,越靠近工作目录的越后被读到

这个区别很重要:它意味着上下级的规则会同时生效。如果两处说法冲突,Claude 可能任选一个——所以定期清理矛盾的旧规则是必要的,而不是指望后面的自动覆盖前面的。

该怎么写

尺寸:控制在 200 行以内

官方明确说:超过 200 行会消耗更多上下文,并且降低遵循度。 写得越长,它照做的概率反而越低。

内容多了怎么办?往下看路径限定规则。

具体到可以验证

官方给的对照很说明问题:

❌ 模糊 ✅ 具体
「格式规范一点」 「数字保留一位小数,百分比带 % 号」
「注意术语」 「用客户的品类名,不用行业通称;对照表见 @docs/术语表.md
「文件放整齐」 「访谈稿放 interviews/,产出放 output/

能不能被检查,是唯一的标准。

一个研究咨询场景的例子

Markdown
# 项目背景
某快消客户的 2026 品类研究。样本 40 份深访,已完成转录。

# 术语与口径
- 品类名用客户内部叫法,对照表见 @docs/术语表.md
- 数字保留一位小数
- 引用受访者原话时保留原始措辞,不要润色

# 分析规范
- 每个结论必须能追溯到具体的访谈编号
- 材料里没有依据的,写「材料未涉及」,不要推断
- 不确定的地方明确标出,不要用确定的语气写

# 禁止
- 不要删除 interviews/ 下的任何原始文件
- 不要修改 术语表.md

注意最后那节。「禁止」写清楚,比「请注意」有用得多。

@ 引入其他文件

Markdown
术语表见 @docs/术语表.md,分析框架见 @docs/framework.md

被引用的文件会在启动时一起加载。注意:这只是组织方式,不省上下文——引入的文件同样占空间。

想在文中提到路径但不引入,用反引号包起来:`@README` 是文字,@README 是引入。

进阶一:路径限定规则

CLAUDE.md 写不下的时候,把规则拆进 .claude/rules/

你的项目/
├── .claude/
│   ├── CLAUDE.md          # 主要说明
│   └── rules/
│       ├── 访谈编码.md
│       ├── 数据处理.md
│       └── 报告格式.md

真正值钱的是 paths 限定。 加上 frontmatter,这条规则只在 Claude 碰到匹配的文件时才加载:

Markdown
---
paths:
  - "interviews/**/*.md"
---

# 访谈稿处理规则

- 受访者身份一律用编号,不出现真实姓名
- 保留原始措辞,不做语言润色
- 每段标注时间戳

这样处理访谈稿时这条规则生效,写报告时它不占上下文。

没有 paths 字段的规则无条件加载,优先级和 .claude/CLAUDE.md 相同。

个人级规则

~/.claude/rules/ 下的规则对你机器上所有项目生效。适合放跟项目无关的个人偏好。

用户级规则先于项目规则加载,所以项目规则优先级更高。

进阶二:自动记忆

除了你手写的 CLAUDE.md,Claude 还会自己记笔记——这是另一套机制。

CLAUDE.md 自动记忆
谁写的 Claude
内容 指令和规则 它学到的模式和经验
什么时候写 你想到就写 它觉得以后用得上时

自动记忆默认开着。它会根据你的纠正和偏好自己攒笔记,存在 ~/.claude/projects/<项目>/memory/

看它记了什么/memory,选自动记忆文件夹。全是纯 markdown,你可以随时改或删。

关掉它/memory 里有开关,或在项目设置里 "autoMemoryEnabled": false

主动让它记:直接说「记住:数字一律保留一位小数」,它会存进自动记忆。想进 CLAUDE.md 的话,明确说「把这条加到 CLAUDE.md」。

它没照做怎么办

官方给的排查顺序:

一、先确认文件真的加载了。/context,看 Memory files 那一栏。不在里面 = 它根本没看见。

二、检查位置对不对。 参照上面的位置表。

三、把指令写具体。 「用两空格缩进」比「格式规范一点」有效得多。

四、找矛盾。 多个 CLAUDE.md 之间说法冲突时,Claude 可能任选一个。

还有一条很重要的认知:

CLAUDE.md content is delivered as a user message after the system prompt, not as part of the system prompt itself.

CLAUDE.md 是作为一条用户消息送进去的,不是强制配置。 它会读、会尽量照做,但不保证严格遵守

如果某件事必须在特定时刻发生(比如每次改完文件都要做某个检查),那该用 hook,不是 CLAUDE.md。hook 是在固定的生命周期节点执行的 shell 命令,跟 Claude 怎么想无关。

压缩之后规则会丢吗

项目根目录的 CLAUDE.md 不会丢——/compact 之后 Claude 会从磁盘重新读一遍再注入。

子目录里的嵌套 CLAUDE.md 不会自动重注入,要等下次读到那个目录的文件时才重新加载。

所以:只在对话里口头说过的要求,压缩之后就没了。 想让它活过压缩,就得写进文件——这也是「说第三遍就该写下来」这条规则的另一个理由。

从哪开始

别一上来就写一个大文件。

从你这周重复说过的那一句话开始。 写进 ~/.claude/CLAUDE.md,一行就行。下次再遇到第二句,再加一行。

三个月之后回头看,那个文件就是你的工作方式本身。