CLAUDE.md 是什么?——AI 协作的“项目手册“

CLAUDE.md 是什么?------AI 协作的"项目手册"

你有没有遇到过这种情况------ 当用 Claude Code 接手一个新项目,你说"帮我启动这个项目",它可能会回答:"你可以运行 npm start 或者 yarn dev,具体要看项目的配置。"

它说的没错,但等于没说。因为它不知道这个项目用什么包管理器、项目有没有特殊的启动方式、测试用什么框架。它只能给一个"通用答案"。

那问题出在哪?

Claude 不知道你的项目是什么样的。

它很聪明,但它不了解你的项目背景。它不知道你的技术栈、不知道你的目录结构、不知道你的编码规范。它就像一个第一天入职的工程师------有能力,但什么都不知道。

CLAUDE.md 就是用来解决这个问题的。

1.1 CLAUDE.md 到底是什么?

一句话说清楚:

CLAUDE.md 是放在项目根目录的"给 AI 看的 README"。

它告诉 Claude 你的项目是什么、怎么跑、有什么约定。

文件名固定为 CLAUDE.md(大写),放在项目根目录。Claude Code 启动时会自动读取这个文件,把里面的内容作为"项目背景"加载到上下文中。

一个最简单的 CLAUDE.md 长这样:

markdown 复制代码
# My Project

## 技术栈
- 前端:React 18 + TypeScript
- 后端:Node.js + Express
- 数据库:PostgreSQL

## 开发命令
- 安装依赖:npm install
- 启动开发服务器:npm run dev
- 运行测试:npm test
- 构建:npm run build

## 编码规范
- 使用 TypeScript 严格模式
- 组件文件使用 PascalCase
- 样式使用 CSS Modules

有了这个文件之后,你再问 Claude "帮我启动这个项目",它会直接说"运行 npm run dev",而不是给你一堆猜测。

1.2 CLAUDE.md 可以放在哪些地方?

CLAUDE.md 不是只能放在项目根目录。实际上,它可以在三个层级存在,每个层级管不同的范围。

用户级:~/.claude/CLAUDE.md

放在你的 home 目录下,对你所有项目生效。适合写个人偏好:

markdown 复制代码
# 我的个人偏好

- 代码使用双引号而不是单引号
- 注释用中文写
- 优先推荐 React 方案
- 回答问题时用中文

这里的配置对所有项目都生效。你不必在每个项目的 CLAUDE.md 里都重复写这些。

项目级:<项目根目录>/CLAUDE.md

放在项目根目录,对当前项目生效。适合写项目特有信息(技术栈、命令、规范)。

这是最常用的层级,也是前两篇重点讲的。

另外,项目级也可以放到: <项目根目录>/.claude/CLAUDE.md 下。

子目录级:<项目>/<子目录>/CLAUDE.md

放在项目内的子目录中,对特定目录生效。适合 monorepo 中的子包或大型项目中的模块。

复制代码
my-monorepo/
├── CLAUDE.md              # 全局规范(根目录)
├── apps/
│   ├── web/
│   │   └── CLAUDE.md      # 前端应用特有规范
│   └── admin/
│       └── CLAUDE.md      # 后台应用特有规范
└── packages/
    └── shared/
        └── CLAUDE.md      # 共享库规范

优先级规则

当多个层级的 CLAUDE.md 同时存在时,优先级是:

复制代码
子目录级 > 项目级 > 用户级

越具体的优先级越高。

具体规则:

  1. Claude Code 启动时会读取所有层级CLAUDE.md
  2. 如果同一个信息在不同层级出现,就近原则------离当前工作目录最近的优先
  3. 不会互相覆盖,而是合并------不同层级的内容都会加载到上下文中

举个例子:

复制代码
用户级(~/.claude/CLAUDE.md):
  "代码使用双引号"

项目级(/project/CLAUDE.md):
  "技术栈:React + TypeScript"
  "代码使用单引号"           ← 覆盖用户级的双引号

子目录级(/project/apps/admin/CLAUDE.md):
  "启动命令:pnpm admin dev"  ← 子目录特有的命令
  "代码使用单引号"           ← 跟项目级一致,不冲突

最终加载到 AI 上下文中的是:

复制代码
代码使用单引号              (来自项目级,覆盖用户级)
技术栈:React + TypeScript  (来自项目级)
启动命令:pnpm admin dev     (来自子目录级)

这个优先级设计的意义在于:个人偏好不干扰项目规范,项目规范不被个人偏好覆盖。

1.3 为什么需要 CLAUDE.md

你可能觉得:这些信息不是我能自己告诉 AI 的吗?

你当然可以每次手动告诉它。但CLAUDE.md 的价值在于三点:

第一,自动化。

你不说,AI 也知道。CLAUDE.md 在 Claude Code 启动时自动加载,不需要你每次手动交代"我们项目用 React 啊"。

第二,精确化。

手动交代往往丢三落四。你会说"我们项目用 React",但可能忘了说"我们用 pnpm 而不是 npm""我们不用 class component""我们的测试必须覆盖 80%"。

CLAUDE.md 写清楚之后,AI 不会忘记。

第三,标准化。

团队里每个人跟 AI 协作的方式可能不一样。张三告诉 AI"用 double quotes",李四告诉 AI"用 single quotes"。有了 CLAUDE.md,所有人都用同一份规范。

1.4 CLAUDE.md vs README.md

很多人第一次接触 CLAUDE.md 会问:这不就是 README.md 吗?

不是。虽然都是 Markdown 文件,但服务对象完全不同。

对比项 README.md CLAUDE.md
服务对象 人类开发者 AI 助手
阅读方式 跳读、扫读 全部读取
内容风格 吸引人、展示项目价值 精确、结构化、可执行
关注点 项目是什么、为什么用 项目怎么跑、有什么约定
更新频率 低频(大版本更新才改) 高频(项目变化随时更新)

一个典型的 README 会花大量篇幅介绍"这个项目是干什么的""解决了什么问题""有什么特色功能"。这些对人类很重要,但对 AI 来说------它不在乎。

AI 在乎的是:

  • 这个项目用什么技术栈?
  • 怎么安装和启动?
  • 代码有什么规范?
  • 目录结构是怎么组织的?
  • 有哪些不能碰的东西?

CLAUDE.md 就是把这些信息用 AI 最容易理解的方式写下来。

另一个关键区别:README 写了不一定会有人读,但 CLAUDE.md 写了 AI 一定会读。

因为 Claude Code 的机制就是每次启动时自动加载 CLAUDE.md。你写了,它就看到了。不写,它就不知道。

1.5 CLAUDE.md 能写什么?

CLAUDE.md 的内容没有严格限制,你的项目需要什么就写什么。但根据经验,这几个方向是最有价值的:

项目概览

告诉 AI 这个项目是什么,有什么特殊背景:

markdown 复制代码
# 电商后台管理系统

这是一个面向公司内部运营团队的后台系统,不是对外产品。
主要功能包括订单管理、商品管理、用户管理和数据报表。

技术栈

明确告诉 AI 用什么技术,避免它给出不相关的建议:

markdown 复制代码
## 技术栈
- 框架:React 18 + Next.js 14 (App Router)
- 语言:TypeScript (strict mode)
- 样式:Tailwind CSS
- 状态管理:Zustand
- 测试:Vitest + Testing Library
- 包管理:pnpm

开发命令

把常用命令写清楚,AI 就不需要猜了:

markdown 复制代码
## 开发命令
- pnpm install --- 安装依赖
- pnpm dev --- 启动开发环境(端口 3000)
- pnpm build --- 生产构建
- pnpm test --- 运行所有测试
- pnpm lint --- 代码检查
- pnpm type-check --- TypeScript 类型检查

编码规范

这是最有价值的部分------让 AI 生成的代码符合你的标准:

markdown 复制代码
## 编码规范
- 组件使用函数组件 + Hooks,不使用 class 组件
- 文件名使用 kebab-case(如 user-profile.tsx)
- CSS 类名使用 kebab-case
- Git commit 使用 conventional commits 格式
- 不允许使用 any 类型
- 所有 API 请求必须放在 services/ 目录下
- React Query 的 query key 统一管理在 src/lib/query-keys.ts

目录结构

让 AI 知道代码放在哪,生成的代码不会放错位置:

markdown 复制代码
## 目录结构
src/
├── app/          # Next.js App Router 页面
├── components/   # 共享组件
│   ├── ui/       # 基础 UI 组件
│   └── shared/   # 业务共享组件
├── services/     # API 请求
├── stores/       # Zustand stores
└── utils/        # 工具函数

边界与约束

告诉 AI 什么不能做,这比告诉它什么能做更重要:

markdown 复制代码
## 约束
- 不要修改 src/lib/ 下的文件,除非有明确要求
- 数据库 migration 必须经过 review
- 不要引入新的依赖,除非讨论过
- API 接口的修改需要同步更新类型定义

1.6 CLAUDE.md 会占用上下文吗?

会,但你不用担心。

CLAUDE.md 的内容会被加载到 system prompt 中,但它通常很短(几百字到一两千字),对一个 100K+ 的上下文窗口来说,占比很小。

而且它的价值远大于它占用的那点空间------没有这些背景信息,AI 需要多轮对话才能搞清楚你的项目,那消耗的 token 反而更多。

好的 CLAUDE.md 不是浪费上下文,而是节省上下文。

1.7 小结

  • CLAUDE.md给 AI 看的项目说明书,Claude Code 启动时自动加载。
  • 它的价值:自动化 (不需要每次手动交代)、精确化 (不会漏信息)、标准化(团队统一)。
  • CLAUDE.md 支持三个层级:用户级 (~/.claude/CLAUDE.md,所有项目生效)、项目级 (项目根目录,当前项目生效)、子目录级(子目录,特定模块生效)。
  • 优先级规则:子目录级 > 项目级 > 用户级,越具体优先级越高。
  • CLAUDE.md 不是 README.md------README 给人看,CLAUDE.md 给 AI 看。
  • 值得写的内容:项目概览、技术栈、开发命令、编码规范、目录结构、边界约束

看完你可能会觉得:这不就是一个配置文件吗,有什么好写的?

但下一篇我会让你看到,一个好的 CLAUDE.md 可以让 AI 从"通用助手"变成"你的项目的专属助手"------效果天差地别。


下一篇:手写一个 CLAUDE.md------从空白到最佳实践]()

相关推荐
月光船幽幽1 小时前
基于controller-runtime的零成本监控方案
人工智能
石逸凡1 小时前
从「1+1+N」到「N+N」---软件研发Harness代理工程的新跃迁
人工智能·软件工程
梦奇不是胖猫1 小时前
《从0到1带你掌握 Skill》
人工智能·powerpoint
步步为营DotNet1 小时前
深度剖析.NET 11:Microsoft.Extensions.AI 在智能后端决策系统的创新应用 前言
人工智能·microsoft·.net
暗夜猎手-大魔王1 小时前
转载--Hermes Agent 06 | 记忆系统(下):可插拔的 Memory Provider 与 Agent 主动策展
人工智能
暗夜猎手-大魔王1 小时前
转载--Hermes Agent 07 | 技能系统:Agent 如何从经验中创建可复用的技能
人工智能
AI2512241 小时前
AI视频生成工具怎么选,参考图与首尾帧控制能力
人工智能·机器学习·音视频
蓝速科技1 小时前
蓝速科技 AI 数字人全息舱商用落地实战指南
人工智能·科技
zhangfeng11331 小时前
超算/曙光DCU集群 昆山站 htc /public 目录全解
人工智能·python·机器学习