Update avaliable. Click RELOAD to update.
📱 安装应用到主屏幕,获得更好体验
目录

Claude Code CLAUDE.md 完全指南:加载机制、编写技巧与最佳实践

CLAUDE.md 完全指南

如果给 AI 编程工具的发展画一条时间线,Claude Code 无疑是值得单独标记的节点之一。Anthropic 在 2025 年 2 月首次将它带给开发者(当时还是早期公开预览版),到 2025 年 5 月,它已经开始触及更广泛的开发者群体。让它与众不同的,不是它增加了又一个模型交互界面,而是它首次让 AI Agent 真正走进了终端——读取仓库、编辑文件、运行命令、修复问题、推动任务前进。

从那一刻起,软件开发的中心已经在悄然转移。过去很长时间里,开发者的主要工作是手动实现,IDE 则提供代码补全、搜索和分析的辅助。Claude Code 把这个边界推远了很多。越来越多的时候,我们不再从”下一行代码应该写什么”开始思考,而是从”目标是什么、约束是什么、哪些文件可以改、什么结果算完成”开始。

这一切的基础,就是 CLAUDE.md

1. CLAUDE.md 是什么

CLAUDE.md 是 Claude Code 理解项目上下文的核心文件。它相当于 AI 的”项目入职指南”——当 Claude 在项目中编写或修改代码时,第一件事就是读取 CLAUDE.md 文件。

Anthropic 官方将其定义为”项目记忆文件”(Project Memory File),它会告诉 Claude:

与其他工具配置文件的对比

工具配置文件定位加载机制
Claude CodeCLAUDE.md项目级上下文提示每次对话开始时加载
Cursor.cursorrules项目级规则文件每次对话注入到系统提示
GitHub Copilot无标准文件依赖代码分析和注释实时分析当前文件上下文
Cline/Roo CodeCLINE.md / .clinerules类似 CLAUDE.md类似加载方式
Windsurf.windsurfrules项目规则全局+项目级级联
Aider.aider.conf.yml / CONVENTIONS.md约定文件明确约定

Claude Code 的设计理念是:CLAUDE.md 不是硬性规则,而是上下文信息。它通过提供高质量的项目上下文,让 AI 做出更好的判断,而不是强制 AI 遵守某套规则。

2. CLAUDE.md 的加载机制

了解 CLAUDE.md 如何被加载,是写好它的前提。

加载流程

当你在终端运行 claude 命令时,Claude Code 按照以下顺序加载上下文:

  1. 系统提示 — Anthropic 内置的基础行为定义
  2. CLAUDE.md — 项目根目录下的项目记忆文件
  3. 对话历史 — 当前会话的上下文
  4. 用户输入 — 你输入的最新指令

CLAUDE.md 的关键特性:

加载顺序和优先级

系统级 (~/.claude/CLAUDE.md)
    ↓ 叠加
项目级 (./CLAUDE.md)
    ↓ 叠加
对话上下文

这种设计允许你在全局配置中设置跨项目的通用偏好(比如”始终使用 TypeScript”、”运行测试前先检查类型”),然后在每个项目的 CLAUDE.md 中覆盖具体的项目细节。

Claude Code 如何解析 CLAUDE.md

Claude Code 读取 CLAUDE.md 后,将其作为对话开始时的上下文窗口的一部分。它不是被”编译”成指令或规则,而是作为自然语言描述被 Claude 理解。

这意味着:

3. 如何编写高质量的 CLAUDE.md

以下是我认为一份好的 CLAUDE.md 应该包含的核心内容。

3.1 项目概述(高优先级)

这是最有价值的部分。用三四句话告诉 Claude:

## Project Overview
这是一个给独立开发者用的定时任务管理 SaaS。
核心用户是自由职业者和远程工作者。
优先保证:任务可靠性 > UI 美观度 > 功能数量。

为什么这段重要?因为 Claude 没有项目的”直觉”。你告诉它这是给独立开发者的工具,它就不会给你写企业级审批流。

关键点:回答”这是什么样的产品,应该优化什么?”

3.2 技术栈(中等优先级)

## Tech Stack
- TypeScript (strict mode)
- Next.js 15 (App Router)
- Prisma + PostgreSQL
- Tailwind CSS
- vitest (测试)
- pnpm (包管理)

禁止引入:
- Redux (无状态管理必要)
- styled-components (已用 Tailwind)
- any 类型

没有技术栈说明,Claude 可能会引入技术上正确但与项目不兼容的库。示例:在一个纯 Next.js 项目中,Claude 曾自行安装 Express 用于 API 路由,如果有技术栈说明就能避免。

3.3 架构和目录结构(中等优先级)

## Architecture
- `src/app/` — 路由和页面组件(RSC 优先)
- `src/components/` — 可复用 UI 组件
- `src/lib/` — 工具函数和共享逻辑
- `src/features/` — 业务逻辑模块
- `prisma/` — 数据库 schema 和迁移

规则:
- 页面级组合放在路由文件
- 重复 UI 提取为组件
- 服务端组件优先
- 新功能先在 features/ 下创建模块

这段帮助 Claude 理解”新代码应该放在哪里”,避免目录混乱。

3.4 编码规范(高优先级)

这是最直接影响代码质量的部分。使用可执行的具体规则,而非模糊描述。

## Coding Conventions
- 严格 TypeScript,避免 any
- 函数式组件优先
- 具名导出(路由文件除外)
- async/await 替代链式 Promise
- 描述性变量名,避免缩写
- 不要遗留死代码和注释掉的代码
- 每个文件不超过 300 行
- 优先使用 for...of 而非 forEach
- 禁止使用 var

如何写出高质量的编码规则

太模糊:

- 写干净、可维护的代码
- 遵循最佳实践
- 性能优先

可执行:

- 函数不超过 50 行
- 组件不超过 150 行
- 每个文件只导出一个主要组件
- 条件分支使用早期返回
- 复杂度超过 3 层的嵌套必须提取函数

3.5 命令和脚本(中等优先级)

提供明确的命令,让 Claude 知道如何执行操作:

## Commands
- 安装依赖:pnpm install
- 开发:pnpm dev
- 构建:pnpm build
- 类型检查:pnpm typecheck
- Lint:pnpm lint
- 测试:pnpm test
- 数据库迁移:pnpm prisma:migrate

没有这些命令,Claude 可能会用 npm 或 yarn(如果项目用的是 pnpm),或者用错误的命令运行测试。

3.6 安全规则(低优先级但重要)

告诉 Claude 哪些内容不应随意修改:

## Safety Rules
- 不要修改数据库 schema,除非明确要求
- 不要重命名公开 API 路由
- 不要修改认证流程
- 保持公共 API 的向后兼容性
- 不要删除已存在的环境变量引用
- 重大架构变更前先征求确认

3.7 测试和质量门槛(中等优先级)

明确工作完成的验证标准:

## Testing & Quality
标记任务完成前必须:
1. 运行类型检查 (pnpm typecheck)
2. 运行 Lint (pnpm lint)
3. 运行相关测试 (pnpm test)
4. 确认无死代码

测试要求:
- 为业务逻辑添加单元测试
- 覆盖正常路径、边界条件、错误路径
- UI 变更检查响应式行为
- 空状态和错误状态必须有处理

4. CLAUDE.md 最佳实践

基于大量项目的使用经验,这里总结几条核心原则。

4.1 清晰优于全面

一份好的 CLAUDE.md 一般 300~800 字。太短不够用,太长了 Claude 的关注力会被稀释。

信号: 如果你发现 Claude 反复忽略 CLAUDE.md 中的某条规则,删除这条规则。要么它不需要,要么它在消耗注意力。

4.2 规则要可执行

Claude 处理具体指令远比抽象原则好。

❌ 抽象原则✅ 可执行规则
写可维护的代码每个函数不超过 50 行
使用现代 JavaScript使用 ES2022+,禁止 var
关注性能API 响应超过 500ms 需要缓存
安全优先所有用户输入必须经过 Zod 验证

4.3 禁止比允许更重要

明确告诉 Claude “不要做什么” 和 “用什么” 同样重要。

除非明确要求,否则不要:
- 引入新的第三方依赖
- 修改数据库 schema
- 重构超过 3 个文件
- 添加新的抽象层

4.4 分层配置(全局 + 项目级)

利用级联加载机制,在全局配置中放通用规则,在项目配置中放特定细节。

~/.claude/CLAUDE.md:

## Global Conventions
- 所有项目使用 TypeScript strict mode
- 使用 pnpm 作为包管理
- 提交前运行类型检查和 Lint
- 使用函数式编程风格

项目 CLAUDE.md:

## Project Overview
[项目特有描述]

## Commands
[项目特有命令]

4.5 保持更新

CLAUDE.md 是活文档。当项目演进时(更换框架、调整架构、增加新规则),同步更新 CLAUDE.md。

更新信号:

4.6 使用具体的代码示例

对于复杂的规则,配上代码示例会让效果翻倍:

## API Design Rules

✅ 推荐:
```typescript
// GET /api/users — 获取用户列表
export async function GET(request: NextRequest) {
  const users = await db.user.findMany();
  return NextResponse.json(users);
}

❌ 不推荐:

export async function handler(req, res) {
  // 旧的 Pages Router 风格
  res.json(await getUsers());
}

## 5. CLAUDE.md vs 其他工具的规则文件

了解不同工具之间的差异,有助于你写出更好的 CLAUDE.md。

### CLAUDE.md vs .cursorrules

| 维度 | CLAUDE.md | .cursorrules |
|------|-----------|-------------|
| 格式 | 纯 Markdown | 纯文本/Markdown |
| 加载 | 对话开始时读取 | 注入到系统提示 |
| 级联 | 支持(全局+项目) | 不支持(只有项目级) |
| 语义 | 上下文信息 | 指令/规则 |
| 自动更新 | 只读,需手动 | 同左 |

关键区别:Cursor 的 `.cursorrules` 更接近"指令"——Claude Code 的 CLAUDE.md 更接近"上下文"。两者最终的代码质量效果相当,但实现哲学不同。

### CLAUDE.md vs OpenCode/Cline 的自定义配置

OpenCode 和 Cline 等工具支持更结构化的规则文件(如 YAML 格式),可以定义变量、环境要求、自动化脚本等。CLAUDE.md 则保持纯文本,依赖 Claude 的自然语言理解能力。这意味着 CLAUDE.md 可以表达更复杂的上下文关系,但无法做结构化的条件判断。

### CLAUDE.md vs Copilot Instructions

GitHub Copilot 的指令机制是基于 IDE 插件的,通过 `Settings > Copilot > Instructions` 配置全局指令。相比 CLAUDE.md,Copilot 的指令机制更基础,无法理解项目级上下文,主要影响行级补全和简单对话。

## 6. 实战:从零编写一份 CLAUDE.md

以下是一个实际示例的综合 CLAUDE.md:

```markdown
## Project Overview
一个面向设计师的 AI 落地页生成工具。
用户上传设计稿,AI 生成可直接部署的 Landing Page。
核心指标:从设计稿到上线 < 5 分钟。

## Tech Stack
- Next.js 15 (App Router)
- TypeScript (strict)
- Tailwind CSS + shadcn/ui
- Supabase (认证 + 数据库)
- Vercel AI SDK
- Vitest
- pnpm

禁止:Redux、styled-components、Material UI

## Architecture
- app/ — 路由和页面 (RSC 优先)
- components/ui/ — 设计系统组件
- components/landing/ — 落地页模板
- lib/ — 共享工具函数和 API 客户端
- features/ — 业务模块
- types/ — 共享类型定义

## Coding Conventions
- 函数式组件,避免类组件
- 具名导出(路由文件除外)
- async/await 风格
- 组件不超过 200 行
- 函数不超过 50 行
- 描述性命名,避免缩写
- 不要遗留 console.log
- 所有用户输入必须经过 Zod 验证

## Commands
- 开发:pnpm dev
- 构建:pnpm build
- 类型:pnpm typecheck
- 测试:pnpm test -- --run
- Lint:pnpm lint

## Safety Rules
- 不修改认证逻辑
- 不修改数据库 schema
- 不重命名已发布的 API 路由
- 保持组件 API 向后兼容

这份配置大约 400 字,覆盖了所有关键信息。实践表明,这样的配置可以让 Claude Code 在项目中一次性达到 80% 以上的代码质量匹配度。

7. 常见问题

CLAUDE.md 和 AGENTS.md 有什么区别?

两者格式和作用相似,Claude Code 首先会查找 CLAUDE.md,如果存在则使用它。AGENTS.md 是 Hermes Agent 等工具使用的类似文件。如果你的项目同时被多个 AI 工具使用,可以同时保留两者。

可以用中文写 CLAUDE.md 吗?

可以。Claude 支持多语言理解。但建议使用与项目代码相同的语言(通常是英文),因为代码本身是英文的,上下文更一致。

CLAUDE.md 太大怎么办?

文件大小效果建议
< 1KB太简略,遗漏关键信息补充核心内容
1~5KB理想范围保持
5~10KB良好,部分规则可能被稀释检查是否有冗余内容
> 10KBClaude 可能忽略部分规则精简到前 80% 的内容

多个项目共用规则怎么办?

使用全局配置 ~/.claude/CLAUDE.md 存放跨项目规则,每个项目的 CLAUDE.md 只放项目特有信息。

总结

CLAUDE.md 是 Claude Code 生态中最被低估的能力之一。它不是一个可有可无的补充文件——它是对话质量的基础设施。

写好 CLAUDE.md 的核心原则只有四条:

  1. 清晰优于全面 — 300~800 字的最佳区间,保持精炼
  2. 规则要可执行 — Claude 需要能自动遵循的具体规则,而非抽象原则
  3. 禁止比允许更重要 — 明确说什么不要做,和说什么要做同样重要
  4. 保持更新 — CLAUDE.md 随项目演进持续完善

如果你已经在使用 Claude Code,花 30 分钟写一份好的 CLAUDE.md,它会在之后的每一次对话中以更高质量的代码产出回馈你。从 AI 辅助编程到 AI 原生开发,CLAUDE.md 就是这个过渡中最重要的桥梁之一。

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2026/05/complete-guide-to-claude-code-claude-md/