让 AI 助手真正理解项目上下文,提升开发效率的完整手册
claude.md(或 CLAUDE.md)是 Claude Code 特有的项目上下文文件。将它放在项目根目录,Claude 会在每次对话时自动读取,从而获得关于你项目的持久化记忆。
claude.md 相当于项目的"AI 使用说明书",告诉 Claude 项目的架构、规范、约定和背景知识,避免每次都要重复交代上下文。
与通用 AI 助手不同,有了 claude.md 后:
省去重复交代项目背景的对话,直接切入正题。研究表明可以减少 30% 到 50% 的沟通成本。
确保 AI 生成的代码始终符合项目规范,不会出现今天这样写、明天那样写的情况。
将项目中的隐性知识显性化,新人加入时也能快速上手。
提前告知常见陷阱和注意事项,避免 AI 踩坑。
你:帮我写个登录功能
Claude:好的,我用 Express +
Session 来实现...
你:等等,我们项目用 Fastify +
JWT,不是 Express
Claude:抱歉,我重写...
(反复调整)
你:帮我写个登录功能
Claude:好的,根据项目规范,
使用 Fastify + JWT + Prisma,
按 src/modules/ 目录结构,
包含单元测试...
(一次到位)
一个完整的 claude.md 通常包含以下几个部分:
| 章节 | 内容 | 重要性 |
|---|---|---|
| 项目概述 | 项目用途、目标用户、核心价值 | 高 |
| 技术栈 | 语言、框架、数据库、工具链 | 高 |
| 项目结构 | 目录组织方式、关键文件位置 | 高 |
| 开发规范 | 代码风格、命名约定、提交规范 | 高 |
| 架构决策 | 为什么选择某技术或模式 | 中 |
| 常用命令 | 构建、测试、部署命令 | 高 |
| 注意事项 | 常见陷阱、特殊要求 | 中 |
控制在 200-500 行以内。优先放不常变动的信息,避免信息过载。
不要只列文件名(Claude 能看到文件树),要解释:
| 不要写 | 替代方案 |
|---|---|
| 敏感信息(密钥、密码) | 使用 .env.example 模板 |
| 频繁变动的信息 | 放在代码注释或专门文档中 |
| 冗长的代码示例 | 引用现有文件路径 |
| 与 README 重复的内容 | README 放对外信息,claude.md 放开发规范 |
以下是通用模板,可根据项目类型选择:
# 项目概述
[项目名称] 是一个 [类型,如:电商平台/SaaS 工具],
面向 [目标用户],核心功能是 [一句话描述]。
## 技术栈
- **前端**: Next.js 14 + TypeScript + Tailwind CSS
- **后端**: Node.js + Express + tRPC
- **数据库**: PostgreSQL + Prisma ORM
- **部署**: Vercel (前端) + Railway (后端)
## 项目结构
```
src/
components/ # React 组件(按功能模块分)
hooks/ # 自定义 Hooks
lib/ # 工具函数、配置
pages/ # Next.js 页面路由
server/ # tRPC 路由和逻辑
styles/ # 全局样式
types/ # TypeScript 类型定义
```
## 开发规范
### 代码风格
- 使用 TypeScript,严格模式开启
- 组件使用函数式 + Hooks
- 异步操作使用 async/await,不用回调
- 错误处理:使用自定义 Error 类,统一在 API 层处理
### 命名规范
- 组件:PascalCase(如:UserProfile.tsx)
- 函数/变量:camelCase(如:fetchUserData)
- 常量:UPPER_SNAKE_CASE
- 文件:与默认导出同名
### Git 规范
- 分支:feature/xxx, bugfix/xxx, hotfix/xxx
- 提交格式:`type: description`(如:feat: add login)
- 类型:feat, fix, docs, style, refactor, test, chore
## 常用命令
```bash
# 开发
npm run dev # 启动开发服务器
# 构建
npm run build # 生产构建
# 测试
npm run test # 运行测试
npm run test:watch # 监听模式
# 数据库
npx prisma migrate dev # 运行迁移
npx prisma generate # 生成客户端
```
## 重要约定
- 所有 API 调用必须通过 tRPC,不直接 fetch
- 表单验证使用 Zod,前后端共用 schema
- 图片必须使用 Next.js Image 组件
- 颜色值必须使用 Tailwind 预设,不手写 CSS
# 项目概述
[项目名称] 是一个 Python [类型,如:数据分析工具/CLI 应用]
## 技术栈
- **语言**: Python 3.11+
- **框架**: FastAPI / Django / Flask
- **数据库**: PostgreSQL / MongoDB
- **测试**: pytest
- **依赖**: Poetry / pipenv
## 项目结构
```
project/
src/ # 源代码
tests/ # 测试文件
docs/ # 文档
scripts/ # 脚本工具
pyproject.toml # 项目配置
```
## 开发规范
### 代码风格
- 遵循 PEP 8
- 使用 Black 格式化(行宽 88)
- 使用 isort 排序导入
- 类型注解:全部函数必须加类型提示
### 命名规范
- 类:PascalCase
- 函数/变量:snake_case
- 常量:UPPER_SNAKE_CASE
- 私有:_leading_underscore
## 常用命令
```bash
# 环境
poetry install # 安装依赖
poetry shell # 进入虚拟环境
# 开发
python -m src.main # 运行应用
# 代码质量
black src tests # 格式化
isort src tests # 排序导入
mypy src # 类型检查
# 测试
pytest # 运行测试
pytest --cov=src # 带覆盖率
```
## 架构说明
- 使用 Repository 模式处理数据访问
- 业务逻辑放在 Service 层
- API 层只处理请求/响应转换
## 服务边界
项目包含以下微服务,每个服务独立仓库:
- `api-gateway`: 统一入口,路由分发,认证
- `user-service`: 用户管理,JWT 签发
- `order-service`: 订单处理,状态机管理
- `payment-service`: 支付对接,幂等性处理
## 服务间通信
- 同步:gRPC(内部服务调用)
- 异步:RabbitMQ(事件驱动)
- 避免循环依赖,使用事件解耦
## 共享规范
- 所有服务统一使用 protobuf 定义 API
- 错误码统一格式:{code, message, details}
- 日志格式统一,包含 trace_id
## 项目定位
这是一个 [功能描述] 的 TypeScript 库,
追求零依赖、轻量级、TypeScript 原生支持。
## 兼容性要求
- Node.js >= 16
- 浏览器:ES2018+
- 包体积:< 5KB gzipped
## API 设计原则
- 链式调用优先
- 支持 tree-shaking
- 提供 ESM 和 CJS 两种格式
- 零运行时依赖
## 发布流程
1. 更新 CHANGELOG.md
2. 版本号遵循 SemVer
3. npm run build 生成产物
4. npm publish --access public
## AI 集成规范
- 使用 OpenAI API,gpt-4o 模型
- 所有 Prompt 放在 prompts/ 目录,按功能分文件
- 必须实现流式响应(SSE)
- 实现 token 使用量追踪和限制
## Prompt 管理
- 使用 LangChain / 自研模板系统
- Prompt 版本化,A/B 测试时切换
- 敏感内容过滤:调用内容审核 API
## 数据处理
- 用户数据脱敏存储
- 对话历史保存最近 10 轮
- 长文本分块处理,避免超限
README 面向项目的使用者(如何安装、如何使用);claude.md 面向 AI 助手和开发者(如何开发、代码规范)。两者可以互补,不要完全重复。
可以用中文或英文,取决于你的项目语言。如果团队主要用中文,用中文写 claude.md 完全没问题,Claude 都支持。
是的,Claude Code 会自动识别项目根目录下的 claude.md 或 CLAUDE.md。目前不支持自定义文件名。
目前 claude.md 只在项目根目录生效。建议:
会。如果 claude.md 超过约 500 行,可能会占用太多上下文窗口,反而影响 Claude 处理其他内容的能力。保持简洁是关键。
可以。一些团队会写脚本从 package.json、pyproject.toml 等配置自动生成部分 claude.md 内容。但建议保持可读性,不要完全自动化。
不确定 claude.md 是否生效?直接问 Claude:"你读过项目的 claude.md 吗?" 它会告诉你读取了哪些内容。
写好 claude.md 的关键在于:提供 Claude 无法从代码中直接推断出的上下文。
1. 复制上面的模板
2. 根据你的项目填写具体内容
3. 保存为 claude.md 放在项目根目录
4. 开始享受更智能的 AI 辅助开发