3.4 自定义指令设置
CLAUDE.md 的作用
CLAUDE.md 是 Claude Code 最强大的配置工具。它在每次会话开始时自动加载,向 Claude 传达项目的规范、约定和工作流程,让 Claude 真正"懂"你的项目。
文件位置与加载优先级
CLAUDE.md 可以在多个位置存在,Claude 会按以下优先级选择(最具体的优先):
| 优先级 | 位置 | 类型 | 说明 |
|---|---|---|---|
| 1(最高) | /etc/claude-code/CLAUDE.md | 托管配置 | 组织级策略,不可覆盖 |
| 2 | ./CLAUDE.local.md | 本地配置 | 不提交到 Git,仅本地生效 |
| 3 | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 项目配置 | 提交到 Git,团队共享 |
| 4 | ~/.claude/CLAUDE.md | 用户配置 | 全局个人偏好 |
CLAUDE.md 编写原则
保持简洁
目标控制在 200 行以内。文件越长,Claude 的遵从度越低。如果项目规范很多,使用路径级规则(.claude/rules/)按目录拆分。
使用结构化格式
Claude 会扫描文件的 Markdown 结构。使用清晰的标题和列表,帮助 Claude 快速定位相关内容:
# 项目规范
## 构建
- 使用 pnpm build
## 代码风格
- 2 空格缩进
## 目录结构
- API 路由在 src/api/
# 特别指令
- 永远不要删除 .git 目录
在正确时机添加内容
两个最佳添加时机:
- 当 Claude 犯同一个错误两次时,将纠正规则写入 CLAUDE.md
- 当你需要重复给出相同指示两次时,将其固化到 CLAUDE.md
CLAUDE.md 示例
完整的项目 CLAUDE.md 示例
# 项目规范
## 构建与测试
- 使用 `pnpm`(不是 npm)
- 运行 `pnpm build` 构建项目
- 提交前必须运行 `pnpm test`
## 代码风格
- 2 空格缩进
- 所有新文件使用 TypeScript
- 组件使用函数式风格,不使用 class
## 项目结构
- API 路由:`src/api/`
- 业务组件:`src/components/`
- 工具函数:`src/utils/`
- 样式文件:`src/styles/`
- 禁止直接修改 `vendor/` 目录
## Git 规范
- commit 信息遵循 Conventional Commits 格式
- PR 需要至少一个 review
## 特别规则
- 压缩上下文时,优先保留测试输出和代码变更
- 对数据库操作使用事务
- 所有用户输入必须验证
个人用户级 CLAUDE.md
放在 ~/.claude/CLAUDE.md,应用于你所有项目:
# 个人偏好
## 通用规范
- 总是使用中文回复
- 代码修改前先展示 diff
- 大改动先问我确认
## 快捷操作
- `/test` 运行当前文件的测试
- `/lint` 运行代码风格检查
- `/git` 显示 git 状态
自动记忆(Auto Memory)
Claude Code 会在 ~/.claude/projects/<project-id>/memory/ 下自动记录会话学习到的内容:
- MEMORY.md 的前 200 行或 25KB 在每次会话开始时加载
- Claude 会自动将每次会话学到的重要信息写入其中
- 可通过
autoMemory设置项开启/关闭
路径级规则
如果项目包含多种技术栈,可以按路径设置不同规则,Claude 会根据当前工作路径自动加载对应的规则文件:
.claude/rules/
├── python.md # Python 代码目录激活
├── frontend.md # React/前端目录激活
└── api.md # API 目录激活
路径规则文件示例(api.md)
# API 层规范
## REST 风格
- 使用 RESTful 命名
- 响应格式统一:`{ code, data, message }`
## 错误处理
- 所有 API 错误抛出统一异常
- 错误码使用 4 位数字(1001-9999)
本地覆盖文件
使用 CLAUDE.local.md(gitignored)设置本地私有指令,不影响团队:
- .gitignore 加上:CLAUDE.local.md
# CLAUDE.local.md 示例
# 我的本地调试快捷键
- `/debug` 启用 verbose 日志
- `/db` 显示数据库连接状态