引言:为什么需要 Claude.md?
在使用 Claude 或其他 AI 助手时,你是否经常遇到这些问题:
- 每次都要重复说明你的项目背景和技术栈
- AI 给出的代码风格与你的团队规范不一致
- AI 不理解你的特定工作流程和偏好
- 同样的错误提示需要反复解释
Claude.md 就是为了解决这些问题而设计的。它是一个简单的配置文件,让你能够预先告诉 AI 助手关于你、你的项目、你的工作方式的所有重要信息。
本文将详细介绍如何创建和优化 Claude.md 文件,让 AI 真正成为懂你的高效助手。
什么是 Claude.md?
Claude.md 是一个纯文本配置文件,通常放置在项目根目录或用户主目录下。当 Claude 读取到这个文件时,会自动加载其中的配置信息,并根据你的偏好调整其行为和输出。
Claude.md 的核心作用
- 上下文预加载:让 AI 了解你的项目背景、技术栈、团队规范
- 行为定制:定义 AI 的响应风格、代码格式、沟通方式
- 规则约束:设置 AI 应该遵循的最佳实践和禁忌
- 效率提升:减少重复说明,让每次对话都从正确的起点开始
Claude.md vs 其他配置文件
| 特性 | Claude.md | .env | .gitignore |
|---|---|---|---|
| 用途 | AI 行为配置 | 环境变量 | Git 忽略规则 |
| 格式 | Markdown | Key-Value | 路径模式 |
| 读者 | AI 助手 | 应用程序 | Git |
| 位置 | 项目根目录/用户目录 | 项目根目录 | 项目根目录 |
Claude.md 文件位置和加载顺序
推荐位置
1. 用户级配置(全局生效)
Windows: C:\Users\你的用户名\Claude.md macOS/Linux: ~/Claude.md
2. 项目级配置(仅在当前项目生效)
项目根目录/Claude.md
加载优先级
当同时存在多个 Claude.md 文件时,Claude 会按照以下优先级加载:
项目级 Claude.md > 用户级 Claude.md > 默认配置
这意味着你可以在项目级别覆盖全局配置,为不同项目设置不同的 AI 行为。
Claude.md 核心配置项详解
1. 项目信息(Project Info)
让 AI 了解你的项目背景和架构:
## 项目信息 **项目名称**: MyWebApp **项目类型**: 全栈 Web 应用 **技术栈**: - 前端:React 18 + TypeScript + TailwindCSS - 后端:Node.js + Express + PostgreSQL - 部署:Docker + AWS **项目结构**: my-web-app/ ├── src/ │ ├── components/ # React 组件 │ ├── hooks/ # 自定义 Hooks │ ├── utils/ # 工具函数 │ └── types/ # TypeScript 类型定义 ├── server/ │ ├── routes/ # API 路由 │ ├── models/ # 数据模型 │ └── middleware/ # 中间件 └── tests/ # 测试文件 **当前阶段**: 开发中期,核心功能已完成,正在优化性能
2. 编码规范(Coding Standards)
定义代码风格和最佳实践:
## 编码规范 ### TypeScript 规范 - 使用严格模式:`"strict": true` - 优先使用 interface 而非 type - 所有函数参数和返回值必须有类型注解 - 避免使用 `any`,必要时使用 `unknown` ### 代码风格 - 缩进:2 个空格 - 字符串:优先使用单引号 - 分号:必须使用 - 最大行宽:100 字符 ### 命名约定 - 组件:PascalCase (如 `UserProfile`) - 函数/变量:camelCase (如 `getUserData`) - 常量:UPPER_SNAKE_CASE (如 `MAX_RETRY_COUNT`) - 文件:与导出组件同名 ### 注释规范 - 公共 API 必须有 JSDoc 注释 - 复杂逻辑需要行内注释 - 使用中文注释(团队要求)
3. AI 行为偏好(AI Preferences)
告诉 AI 如何与你互动:
## AI 行为偏好 ### 响应风格 - **详细程度**: 中等 - 提供必要解释,但不过于冗长 - **代码示例**: 总是提供完整可运行的代码 - **语言**: 中文回复,技术术语保留英文 ### 代码输出 - 总是包含错误处理 - 添加必要的类型定义 - 提供使用示例 - 标注潜在的边界情况 ### 问题解答 - 先给出直接答案,再提供详细解释 - 提供多种解决方案时,标注推荐方案 - 指出潜在的性能和安全问题 ### 避免的行为 - ❌ 不要使用过时的 API - ❌ 不要建议引入新的依赖(除非必要) - ❌ 不要生成未经验证的代码 - ❌ 不要忽略错误处理
4. 常用命令和工作流(Common Workflows)
记录你的日常操作流程:
## 常用命令 ### 开发环境 ```bash # 安装依赖 npm install # 启动开发服务器 npm run dev # 运行测试 npm test # 类型检查 npm run type-check # 代码格式化 npm run format
构建和部署
# 生产构建 npm run build # Docker 构建 docker-compose build # 部署到生产环境 npm run deploy
Git 工作流
# 创建新功能分支 git checkout -b feature/feature-name # 提交规范 git commit -m "type: description" # type: feat|fix|docs|style|refactor|test|chore
### 5. 项目特定规则(Project-Specific Rules)
针对特定项目的特殊要求:
```markdown
## 项目特定规则
### API 设计规范
- 所有 API 端点必须以 `/api/v1/` 开头
- 使用 RESTful 风格
- 响应格式统一:
```json
{
"success": true,
"data": {},
"message": "操作成功"
}
数据库规范
- 所有表必须有
created_at和updated_at字段 - 使用 UUID 作为主键
- 敏感数据必须加密存储
安全要求
- 所有用户输入必须验证
- 密码必须使用 bcrypt 加密
- API 必须实现速率限制
- 禁止在日志中记录敏感信息
性能要求
- 页面加载时间 < 2s
- API 响应时间 < 500ms
- 数据库查询必须使用索引
### 6. 常见问题和解决方案(FAQ)
记录项目中常见的问题和解决方法:
```markdown
## 常见问题
### Q1: 如何处理跨域问题?
**A**: 在开发环境使用 Vite 代理,生产环境使用 CORS 中间件
```typescript
// vite.config.ts
export default defineConfig({
server: {
proxy: {
'/api': 'http://localhost:3000'
}
}
})
Q2: 数据库连接池如何配置?
A: 使用 pg 库的连接池,配置如下:
const pool = new Pool({
max: 20,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 2000
})
Q3: 如何处理文件上传?
A: 使用 multer 中间件,限制文件大小为 5MB
const upload = multer({
limits: { fileSize: 5 * 1024 * 1024 },
fileFilter: (req, file, cb) => {
// 只允许图片格式
if (file.mimetype.startsWith('image/')) {
cb(null, true)
} else {
cb(new Error('只允许上传图片'))
}
}
})
## 完整的 Claude.md 示例 以下是一个可以直接使用的完整示例: ```markdown ## Claude 配置指南 ### 关于我 **角色**: 全栈开发工程师 **经验**: 5 年 **技术栈**: React, TypeScript, Node.js, PostgreSQL **工作模式**: 远程工作,UTC+8 时区 **沟通偏好**: - 直接给出解决方案,少说废话 - 代码要完整可运行 - 中文回复,技术术语用英文 - 提供多种方案时标注推荐 ### 当前项目 **名称**: ECommerce Platform **类型**: 电商平台 **阶段**: 开发中 **技术栈**: - 前端:Next.js 14 + TypeScript + TailwindCSS + shadcn/ui - 后端:Node.js + Express + PostgreSQL + Prisma - 缓存:Redis - 部署:Docker + AWS **项目结构**: ecommerce/ ├── apps/ │ ├── web/ # Next.js 前端 │ └── api/ # Express 后端 ├── packages/ │ ├── database/ # Prisma schema │ ├── types/ # 共享类型定义 │ └── utils/ # 共享工具函数 └── docker/ ### 编码规范 #### TypeScript - 严格模式开启 - 优先使用 interface - 禁止使用 any - 所有导出必须有类型 #### React - 使用函数组件 + Hooks - 组件文件使用 PascalCase - 使用 TypeScript 的 JSX 模式 - 优先使用 shadcn/ui 组件 #### 代码风格 - 缩进:2 空格 - 字符串:单引号 - 分号:必须 - 行宽:100 字符 ### AI 行为指南 #### 应该做的 ✅ 提供完整可运行的代码 ✅ 包含错误处理 ✅ 添加类型定义 ✅ 提供使用示例 ✅ 标注潜在问题 #### 不应该做的 ❌ 使用过时的 API ❌ 引入不必要的依赖 ❌ 忽略边界情况 ❌ 生成未测试的代码 ❌ 使用英文回复(除非技术术语) ### 常用命令 ```bash ## 开发 npm run dev # 启动所有服务 npm run dev:web # 只启动前端 npm run dev:api # 只启动后端 ## 测试 npm test # 运行测试 npm run test:watch # 监听模式 ## 数据库 npm run db:migrate # 运行迁移 npm run db:seed # 填充数据 npm run db:studio # Prisma Studio ## 代码质量 npm run lint # ESLint npm run format # Prettier npm run type-check # TypeScript 检查
项目规则
API 规范
- 路径:
/api/v1/{resource} - 方法:RESTful
- 认证:JWT
- 响应格式:
{
"success": true,
"data": {},
"error": null,
"message": ""
}
数据库
- 使用 Prisma ORM
- 所有表必须有时间戳
- 使用 UUID 主键
- 外键必须有索引
安全
- 输入必须验证(使用 Zod)
- 密码用 bcrypt 加密
- 实现速率限制
- 敏感信息不记录日志
测试要求
- 单元测试覆盖率 > 80%
- 关键路径必须有集成测试
- 使用 Vitest + React Testing Library
- Mock 外部依赖
部署流程
- 代码审查通过
- 所有测试通过
- 构建 Docker 镜像
- 部署到 staging 环境
- 手动测试
- 部署到生产环境
## Claude.md 最佳实践 ### 1. 保持简洁 不要过度配置。只包含真正重要的信息,避免冗长。 **❌ 不好的做法**: ```markdown ## 关于变量命名 变量命名很重要,我们应该使用有意义的名称。比如不要用 x、y、z 这样的名称,而应该用 userName、userAge 等。这样可以提高代码的可读性...(继续写了 500 字)
✅ 好的做法:
## 命名规范 - 变量:描述性名称,camelCase - 常量:UPPER_SNAKE_CASE - 组件:PascalCase
2. 定期更新
项目变化时,及时更新 Claude.md:
- 技术栈升级后
- 团队规范变化后
- 发现重复问题时
- 项目阶段变化时
3. 版本控制
将 Claude.md 纳入版本控制:
git add Claude.md git commit -m "docs: 更新 AI 配置,添加新的编码规范"
4. 团队共享
如果是团队项目,确保所有成员都了解 Claude.md 的内容:
- 在 README 中说明
- 新成员入职时介绍
- 定期审查和更新
5. 分层配置
使用分层配置策略:
~/Claude.md # 个人通用配置 project/Claude.md # 项目特定配置 project/src/Claude.md # 模块特定配置(可选)
常见问题解答
Q1: Claude.md 文件名必须大写吗?
A: 建议使用 Claude.md(首字母大写),但 claude.md 也可以。关键是保持一致性。
Q2: Claude.md 可以包含敏感信息吗?
A: 绝对不可以!不要包含:
- API 密钥
- 数据库密码
- 个人身份信息
- 任何应该放在
.env中的内容
Q3: 多个开发者如何协作?
A:
- 将 Claude.md 纳入版本控制
- 修改时创建 PR 让团队审查
- 在 CHANGELOG 中记录重大变更
- 定期同步更新
Q4: Claude.md 太大会影响性能吗?
A: 建议控制在 5000 字符以内。如果内容太多,考虑:
- 拆分到多个文件(如
CODING_STANDARDS.md) - 只保留最关键的信息
- 使用引用链接到其他文档
Q5: 可以在 Claude.md 中使用代码块吗?
A: 可以且推荐!代码块能清晰展示:
- 配置示例
- 代码模板
- 命令示例
- 数据结构
Q6: Claude.md 对其他 AI 工具有效吗?
A: Claude.md 最初是为 Claude 设计的,但类似的配置理念也适用于:
- GitHub Copilot(使用
.github/copilot-instructions.md) - Cursor(使用
.cursor/rules) - 其他支持上下文配置的 AI 工具
高级技巧
1. 使用条件配置
根据场景提供不同配置:
## 场景特定配置 ### 代码审查时 - 重点关注安全性 - 检查性能问题 - 验证类型正确性 ### 编写新功能时 - 先设计 API 接口 - 编写类型定义 - 实现核心逻辑 - 添加测试 ### 调试问题时 - 先复现问题 - 查看错误日志 - 定位问题范围 - 提供修复方案
2. 提供代码模板
## 常用代码模板
### API 端点模板
```typescript
export async function handler(req: Request) {
try {
// 1. 验证输入
// 2. 业务逻辑
// 3. 返回结果
} catch (error) {
// 错误处理
}
}
React 组件模板
interface Props {
// 定义属性
}
export function Component({ }: Props) {
// 组件逻辑
return <div></div>
}
### 3. 定义决策树 ```markdown ## 技术选型决策 ### 选择 UI 组件库 1. 需要高度定制 → shadcn/ui 2. 需要快速开发 → Ant Design 3. 需要 Material Design → MUI ### 选择状态管理 1. 简单应用 → React Context 2. 中等复杂度 → Zustand 3. 复杂应用 → Redux Toolkit
结论
Claude.md 不仅仅是一个配置文件,它是你与 AI 助手之间的契约。
通过精心设计和维护 Claude.md,你可以:
✅ 提高效率:减少重复说明,让 AI 更快理解需求 ✅ 保证质量:确保 AI 输出符合你的标准和规范 ✅ 降低沟通成本:让 AI 真正成为懂你的合作伙伴 ✅ 知识沉淀:记录项目规范和最佳实践
记住,最好的 Claude.md 是:
- 简洁:只包含必要信息
- 准确:反映真实的项目状态
- 实用:能真正指导 AI 行为
- 进化:随项目发展而更新
现在就开始创建或优化你的 Claude.md 吧!这是提升 AI 协作效率最简单、最有效的方法。
相关资源:
