CLAUDE.md 怎么写?Claude Code 项目记忆配置指南(附 CLAUDE.md 模板)
CLAUDE.md 怎么写才有效?本文讲清 CLAUDE.md 是什么、放在哪里、怎么加载,用 /init 生成初稿,给出可直接复制的 CLAUDE.md 模板和写法最佳实践,并介绍 .claude/rules 路径规则、@ 导入、AGENTS.md 兼容和自动记忆,帮你让 Claude Code 更懂你的项目、少走弯路。
SupaStore 开发者体验组 ·

CLAUDE.md 怎么写,直接决定了 Claude Code 在你的项目里是"熟练的老同事"还是"每次都要重新交代的新人"。CLAUDE.md 是一个放在项目里的 Markdown 文件,Claude Code 每次启动会话都会自动读取它,里面写着构建命令、代码规范和项目约定。
这篇文章讲清 CLAUDE.md 放在哪里、怎么加载,给出一份可以直接复制的 CLAUDE.md 模板,再介绍让 Claude 更稳定遵守规则的写法,以及 .claude/rules、@ 导入和自动记忆这些进阶用法。还没装好 Claude Code 的话,先看《Claude Code 教程:2026 Claude Code 安装与使用指南》。
CLAUDE.md 是什么,为什么要写
每个 Claude Code 会话都从一个空白的上下文开始,它不会记得你上次交代过"这个项目用 pnpm,不用 npm"。CLAUDE.md 就是用来写下这些"否则每次都要重复说一遍"的内容。
官方建议在这些时候往 CLAUDE.md 里加内容:
- Claude 第二次犯同一个错误;
- 代码审查发现了 Claude 本该知道的项目约定;
- 你在对话里输入了和上次一样的纠正或说明;
- 新同事入职时也需要知道的背景信息。
需要注意,Claude 把 CLAUDE.md 当作上下文而不是强制配置。写得越具体、越简洁,Claude 遵守得越稳定。真正必须拦截的操作(比如禁止删除某个目录),应该用 Hook 或权限规则来保证。
CLAUDE.md 放在哪里:4 种作用范围
| 范围 | 位置 | 用途 | 共享对象 |
|---|---|---|---|
| 组织策略 | macOS:/Library/Application Support/ClaudeCode/CLAUDE.md;Linux:/etc/claude-code/CLAUDE.md;Windows:C:\Program Files\ClaudeCode\CLAUDE.md |
公司统一的编码和安全规范 | 组织内所有人 |
| 用户级 | ~/.claude/CLAUDE.md |
个人在所有项目里的偏好 | 只有你 |
| 项目级 | ./CLAUDE.md 或 ./.claude/CLAUDE.md |
项目架构、编码规范、常用流程 | 通过 Git 共享给团队 |
| 本地级 | ./CLAUDE.local.md |
个人在本项目的偏好,加入 .gitignore |
只有你 |
CLAUDE.md 的加载顺序
Claude Code 会加载当前目录以及所有上级目录里的 CLAUDE.md 和 CLAUDE.local.md。这些文件是拼接在一起的,不会互相覆盖:越靠近当前目录的文件越晚被读到,同一目录里 CLAUDE.local.md 排在 CLAUDE.md 之后。子目录里的 CLAUDE.md 不会在启动时加载,Claude 读写该子目录的文件时才会加载。
想确认哪些文件生效了,在会话中运行 /context all,查看 Memory files 列表;用 /memory 可以直接打开和编辑这些文件。
用 /init 快速生成 CLAUDE.md
在项目里第一次启动 Claude Code 时,输入:
/init
Claude 会分析代码库,生成一份包含构建命令、测试方法和项目约定的 CLAUDE.md。如果文件已经存在,/init 会提出改进建议而不是直接覆盖。生成的只是初稿,接下来要补上 Claude 自己发现不了的内容:团队约定、踩过的坑、不能碰的目录。
CLAUDE.md 模板(可直接复制)
下面是一份通用的项目 CLAUDE.md 模板,按需删减:
# 项目说明
SupaStore 控制台前端:React 19 + TypeScript,包管理器用 bun。
## 常用命令
- 安装依赖:`bun install`
- 本地开发:`bun run dev`
- 类型检查:`bun run typecheck`(每次改完 TS 代码都要跑)
- 单元测试:`bun run test`
## 目录结构
- `src/features/`:按业务功能划分的页面和组件
- `src/components/ui/`:基础 UI 组件,新增前先查这里有没有
- `src/i18n/locales/`:多语言文案,键名用英文原文
## 编码规范
- 使用 2 空格缩进,禁止两层以上嵌套三元表达式
- 用户可见文案必须通过 `t('English key')` 输出
- 新组件优先复用 `src/components/` 中已有的封装
## 工作流程
- 分支命名:`feat/xxx`、`fix/xxx`
- 提交前必须通过类型检查和 lint
- 不要修改 `src/generated/` 下的自动生成文件
## 已知问题
- 本地开发需要先启动后端,否则登录接口返回 502
这份模板的每一行都满足一个标准:删掉它,Claude 就可能犯一个具体的错误。达不到这个标准的内容,就不用写进 CLAUDE.md。
CLAUDE.md 写法最佳实践
写可以验证的具体指令
官方文档给出的对比很直观:
| 模糊写法 | 具体写法 |
|---|---|
| 代码格式要规范 | 使用 2 空格缩进 |
| 改完要测试 | 提交前运行 npm test |
| 文件要组织好 | API 处理函数放在 src/api/handlers/ |
每个 CLAUDE.md 控制在 200 行以内
CLAUDE.md 每次会话都会完整加载,文件越长,占用的上下文越多,Claude 的遵守程度也会下降。官方建议每个文件控制在 200 行以内。这也是省 Token 的关键一步,CLAUDE.md 的每一行都会随每次请求发送,原理见《Claude Code Token 消耗太快?10 个 Claude Code 省 Token 技巧》。
用标题和列表组织内容
按"命令、结构、规范、流程"分组,用 Markdown 标题和列表,比大段文字更容易被准确遵守。
定期清理冲突和过期内容
两条规则互相矛盾时(比如根目录要求单引号、子目录要求双引号),Claude 可能随机选择其中一条。可以运行 /doctor prompt-audit,让 Claude 检查记忆文件里过期、冲突或引用了不存在文件的内容,它会给出修改建议,你确认后才会改动。
给维护者的备注用 HTML 注释
<!-- 这条规则来自 2026-10 的线上事故 --> 这类块级 HTML 注释在注入上下文前会被去掉,既能给同事留说明,又不消耗 Token。
CLAUDE.md 进阶用法
用 .claude/rules/ 拆分规则
项目大了以后,可以把规则拆到 .claude/rules/ 目录,每个文件一个主题:
your-project/
├── .claude/
│ ├── CLAUDE.md
│ └── rules/
│ ├── code-style.md
│ ├── testing.md
│ └── security.md
在规则文件开头加上 paths,它就只在 Claude 处理匹配的文件时加载:
---
paths:
- "src/api/**/*.ts"
---
# API 开发规则
- 所有接口必须做参数校验
- 错误响应统一使用 { code, message } 格式
只跟部分代码相关的规则放进路径规则,能让主 CLAUDE.md 保持精简。多步骤的操作流程(比如发版、数据库迁移)更适合写成 Skill,用到时才加载,写法见《Claude Code Skills 怎么用?SKILL.md 编写教程》。
用 @ 导入其他文件
CLAUDE.md 可以用 @路径 导入其他文件,例如:
项目概览见 @README.md,可用脚本见 @package.json。
- Git 工作流 @docs/git-instructions.md
导入最多支持嵌套 4 层。要注意,导入只是让文件更好组织,不会减少上下文占用,被导入的文件会和 CLAUDE.md 一起加载。
兼容 AGENTS.md
如果仓库已经为其他 AI 编程工具写了 AGENTS.md,而项目里没有 CLAUDE.md,新版 Claude Code 会直接读取 AGENTS.md。两者都有时,默认只读 CLAUDE.md;想让两个工具共用一份说明,在 CLAUDE.md 里写一行 @AGENTS.md 导入即可。
自动记忆:让 Claude 自己做笔记
除了你写的 CLAUDE.md,Claude Code 还有自动记忆:它会根据你的纠正和偏好,在 ~/.claude/projects/<项目>/memory/ 下记笔记,每次会话加载 MEMORY.md 的前 200 行或前 25KB。在 /memory 中可以开关这个功能。团队约定写进 CLAUDE.md,个人习惯交给自动记忆,两者配合效果最好。
CLAUDE.md 与 Claude Code 成本
CLAUDE.md 写得好,Claude 少走弯路、少读无关文件,Token 消耗自然下降;写得太长,则每次请求都要多付一段固定成本。通过 API 或中转站使用 Claude Code 时,这部分内容通常会命中 Prompt 缓存,按缓存价计费,具体价格见《Claude API 价格是多少?2026 Claude API 收费标准与省钱指南》;缓存计费是否到位,是挑选中转站时要验证的一项,见《API中转站是什么?AI中转站选型避坑指南》。
常见问题 (FAQ)
Q: CLAUDE.md 应该放在哪里?
答: 团队共享的项目说明放在项目根目录的 CLAUDE.md 或 .claude/CLAUDE.md,个人在所有项目通用的偏好放在 ~/.claude/CLAUDE.md,只属于自己的本项目设置放在 CLAUDE.local.md 并加入 .gitignore。
Q: CLAUDE.md 多长合适?
答: 官方建议每个 CLAUDE.md 文件控制在 200 行以内,只写 Claude 每次会话都需要的事实和规则,只跟部分目录相关的内容拆到 .claude/rules 的路径规则里。
Q: 怎么确认 CLAUDE.md 已经生效?
答: 在 Claude Code 会话中运行 /context all,在 Memory files 列表里能看到已加载的文件;运行 /memory 可以直接打开和编辑它们。
Q: CLAUDE.md 和 AGENTS.md 有什么区别?
答: 两者都是给 AI 编程工具的项目说明,新版 Claude Code 在没有 CLAUDE.md 时会直接读取 AGENTS.md,两个文件都存在时默认只读 CLAUDE.md,可以在 CLAUDE.md 中用 @AGENTS.md 导入来共用一份内容。
Q: 为什么 Claude 没有遵守 CLAUDE.md 里的规则?
答: 常见原因是指令太模糊、文件太长或规则互相冲突;把规则改成可验证的具体指令,控制在 200 行以内,并用 /doctor prompt-audit 检查冲突,必须强制执行的操作改用 Hook 或权限规则。