Claude Code 每次启动都是一个新的会话,什么都不记得。CLAUDE.md 就是解决这个问题的关键:它让你的编码规范、架构约定和工作流程永久生效,Claude 每次都会自动读取。
什么是 CLAUDE.md?
CLAUDE.md 是放在项目里的 Markdown 文件,Claude Code 在每个会话开始时都会读取它。相当于给 Claude 写的"项目说明书"——你的规范、约定、不想每次都解释的事情,全部写进去。
两种记忆机制对比
| 机制 | 谁来写 | 写什么 | 范围 |
|---|---|---|---|
| CLAUDE.md | 你 | 编码规范、工作流、架构约定 | 项目 / 用户 / 组织 |
| 自动记忆(Auto Memory) | Claude 自动 | 构建命令、调试经验、你的偏好 | 每个工作区 |
两者每次会话都加载,互为补充。
CLAUDE.md 放哪里?
| 作用范围 | 位置 | 用途 |
|---|---|---|
| 项目(团队共享) | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 代码规范、架构、流程 |
| 个人(所有项目) | ~/.claude/CLAUDE.md | 个人偏好、快捷方式 |
| 组织级(IT 管理) | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md | 公司安全策略、合规要求 |
项目 CLAUDE.md 通过版本控制共享给团队,个人 CLAUDE.md 只在自己机器上生效。
快速生成 CLAUDE.md
claude /initClaude 会分析你的项目(构建系统、测试框架、代码风格),自动生成基础 CLAUDE.md。已有文件时会提出改进建议,不会覆盖。
写好 CLAUDE.md 的原则
1. 保持简洁(目标 200 行以内)
CLAUDE.md 占用上下文窗口,太长反而降低遵从度。每条规则问自己:"删掉这条,Claude 会出错吗?" 不会就删。
2. 具体可验证
❌ 模糊:
保持代码整洁
好好测试
✅ 具体:
使用 2 空格缩进
提交前运行 npm test
API 处理函数放在 src/api/handlers/
3. 用 Markdown 结构化
# 代码规范
- 使用 ES modules (import/export),不用 CommonJS
- 解构导入:import { foo } from 'bar'
- TypeScript strict mode 开启
# 工作流
- 改完代码要运行 tsc --noEmit 检查类型
- 优先跑单个测试文件,不跑全套
- 提交前运行 npm run lint
# 架构约定
- API 调用统一放在 src/services/
- 组件不直接调用 API,通过 Zustand store
- 数据库操作只在 src/db/ 目录
# 禁止事项
- 不引入新的全局 CSS,用 CSS Modules
- 不用 any 类型,实在要用加注释说明原因文件引用(Import 语法)
用 @ 引入其他文件内容,不用复制粘贴:
项目概览见 @README.md,可用命令见 @package.json
# 工作流
- Git 规范 @docs/git-workflow.md
- 部署流程 @docs/deploy.md引入深度最多 5 层。第一次加载外部文件时 Claude 会弹出确认对话框。
个人偏好放在家目录,不提交到 Git:
# 个人偏好(不提交)
@~/.claude/my-preferences.md按路径作用域的规则(.claude/rules/)
大型项目可以把规则按模块分组:
your-project/
├── CLAUDE.md # 全局规则
└── .claude/
└── rules/
├── frontend.md # 只在 src/frontend/ 下生效
├── backend.md # 只在 src/backend/ 下生效
└── testing.md # 只在 **/*.test.* 匹配时生效
frontend.md 示例(在文件头声明作用路径):
---
paths:
- src/frontend/**
---
- 使用 React 18 功能性组件
- 状态管理用 Zustand,不用 Redux
- 样式用 Tailwind CSS这样前端规则只在处理前端文件时加载,节省上下文。
自动记忆(Auto Memory)
Claude 在工作中会自动记录有用的发现:
- 你如何构建项目
- 遇到的 Bug 和解法
- 你的偏好和习惯
存储位置:~/.claude/memory/<项目路径>.md(每个工作区独立)
查看和编辑:
/memory # 在当前会话中查看和编辑记忆
启用/禁用自动记忆:
# 在 settings.json 中
{
"autoMemory": true # 默认开启
}团队管理大型 CLAUDE.md
多团队 monorepo 时,其他团队的 CLAUDE.md 可能干扰:
// .claude/settings.json
{
"claudeMdExcludes": [
"packages/other-team/**"
]
}常见问题排查
Claude 不遵守 CLAUDE.md 规则?
- 规则太长了吗?超过 200 行考虑拆分
- 规则是否模糊?改为具体可验证的表述
/compact后是否失效?正常现象,规则会在下次加载时恢复
不知道 Auto Memory 记了什么?
/memory
CLAUDE.md 太大?
- 用
.claude/rules/按路径作用域分割 - 常规知识移到按需加载的 Skills
来源:Claude Code Memory Docs | Anthropic 官方文档