侧边栏壁纸
博主头像
川科智源

行动起来,活在当下

  • 累计撰写 8 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

CLAUDE.md:让 Claude 懂你的项目

一份好的配置文件,胜过十次重复解释

写在前面

说实话,你有没有遇到过这样的情况:

你:帮我重构一下登录模块

Claude:好的,我创建了新的登录组件...

你:等等,我们项目用的是 Vue,不是 React

Claude:哦,我重新写...

你:还有,我们组件命名用 PascalCase

Claude:我改一下...

你:对了,测试文件要放在 __tests__ 目录

一次又一次地解释项目规范,烦不烦?

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

它是项目的"说明书",告诉 Claude 你的项目是什么、用什么规范、有什么禁忌。配置好之后,Claude 就能"按规矩办事"。


一、五层记忆体系:Claude 怎么记住你的偏好

1.1 内存层级架构

Claude Code 有一个五层记忆体系,从组织到个人,层层递进:

┌─────────────────────────────────────────────────────────────────┐
│                    Claude Code 五层记忆体系                       │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  优先级    类型          位置                     共享范围       │
│  ───────────────────────────────────────────────────────────    │
│                                                                  │
│   高      企业策略      /etc/claude-code/         全公司        │
│                        CLAUDE.md                                │
│                                                                  │
│           项目内存      ./CLAUDE.md               项目团队      │
│                        或 ./.claude/CLAUDE.md                    │
│                                                                  │
│           项目规则      ./.claude/rules/*.md      项目团队      │
│                        (模块化、可按路径匹配)                    │
│                                                                  │
│           用户内存      ~/.claude/CLAUDE.md       仅你自己      │
│                        (所有项目通用)                            │
│                                                                  │
│   低      项目内存(本地) ./CLAUDE.local.md        仅你自己      │
│                        (当前项目专用)                            │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

1.2 各层级的用途

层级 适合放什么内容 例子
企业策略 组织级别的规范、安全要求 禁止将密钥提交到代码、必须使用指定框架
项目内存 项目架构、团队约定 技术栈、目录结构、常用命令
项目规则 模块化规则、特定文件约定 API 开发规范、测试规范、安全要求
用户内存 个人编码偏好 缩进风格、个人工具配置
项目内存(本地) 个人对当前项目的偏好 沙箱地址、测试数据

1.3 加载顺序和优先级

┌────────────────────────────────────────────────────────────┐
│                    内存加载流程                             │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  1. 企业策略(最先加载,作为基础)                         │
│     ↓                                                      │
│  2. 用户内存(个人偏好覆盖企业策略)                       │
│     ↓                                                      │
│  3. 项目内存(项目规则覆盖用户偏好)                       │
│     ↓                                                      │
│  4. 项目规则(与项目内存同级,模块化组织)                 │
│     ↓                                                      │
│  5. 项目内存-本地(最具体,最高优先级)                    │
│                                                            │
│  原则:越具体的规则,优先级越高                            │
│                                                            │
└────────────────────────────────────────────────────────────┘

二、从零开始:创建你的第一个 CLAUDE.md

2.1 最简配置

在项目根目录创建 CLAUDE.md

# 项目说明

## 技术栈
- React 18 + TypeScript
- TailwindCSS
- Vite

## 常用命令
- npm run dev - 启动开发服务器
- npm run build - 构建
- npm test - 运行测试

就这么简单。Claude 每次启动都会读取这个文件。

2.2 一个完整的示例

# 电商平台项目说明

## 技术栈
- 前端:Next.js 14 + TypeScript + TailwindCSS
- 后端:Node.js + Express + PostgreSQL
- ORM:Prisma

## 目录结构

src/
├── components/ # React 组件
├── pages/ # Next.js 页面
├── lib/ # 工具函数
├── hooks/ # 自定义 Hooks
└── types/ # TypeScript 类型定义


## 代码规范
- 使用 2 空格缩进
- 组件文件用 PascalCase 命名(如 `UserProfile.tsx`)
- 工具函数用 camelCase 命名(如 `formatDate.ts`)
- 每个组件都要有对应的测试文件

## 禁止事项
- 不要直接修改 `src/generated` 目录
- 所有 API 调用必须经过 `src/lib/api-client.ts`
- 不要在组件中直接使用 `fetch`,使用封装好的 API 客户端

## 常用命令
- `npm run dev` - 启动开发服务器
- `npm run build` - 构建生产版本
- `npm test` - 运行测试
- `npm run lint` - 代码检查
- `npx prisma studio` - 打开数据库管理界面

## Git 工作流
- 功能分支命名:`feature/功能名`
- 修复分支命名:`fix/问题描述`
- 提交信息格式:`type(scope): 描述`
  - type: feat|fix|docs|style|refactor|test|chore

2.3 效果验证

配置完成后,启动 Claude Code:

claude

然后问:

> 帮我创建一个商品列表组件

Claude 会自动:

  • 使用 TypeScript
  • 遵循 PascalCase 命名
  • 放在 src/components/ 目录
  • 遵循你的代码风格

三、高级技巧:用 @import 引入外部文件

3.1 为什么需要 import?

有时候项目信息分散在多个文件里:

  • README.md 有项目概述
  • package.json 有依赖和脚本
  • docs/ 有详细文档

全部复制到 CLAUDE.md 会导致:

  1. 信息冗余
  2. 容易忘记同步更新

3.2 使用 @import 语法

CLAUDE.md 支持 @path/to/import 语法:

# 项目说明

## 项目概述
参见 @README.md

## 可用命令
参见 @package.json

## Git 工作流
参见 @docs/git-workflow.md

## 补充说明
- 所有 API 必须有错误处理
- 测试覆盖率要求 80% 以上

3.3 导入个人配置

你可以导入用户目录下的文件,实现"个人偏好不提交到仓库":

# 项目说明

## 团队规范
(这里写团队共同遵守的规则)

## 个人偏好
@~/.claude/my-project-preferences.md

这样每个团队成员可以有自己的个人偏好文件,而不会产生冲突。

3.4 import 的限制

┌────────────────────────────────────────────────────────────┐
│                    @import 注意事项                         │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  ✅ 支持:                                                 │
│     • 相对路径:@./README.md                               │
│     • 绝对路径:@/path/to/file.md                          │
│     • 用户目录:@~/.claude/config.md                       │
│     • 递归导入:最多 5 层                                   │
│                                                            │
│  ❌ 不支持:                                               │
│     • 代码块内的导入:`@anthropic-ai/claude-code`         │
│     • 代码跨度内的导入                                     │
│                                                            │
│  💡 提示:使用 /memory 命令查看实际加载了哪些文件          │
│                                                            │
└────────────────────────────────────────────────────────────┘

四、模块化规则:用 .claude/rules/ 组织复杂项目

4.1 为什么需要模块化?

对于大型项目,单个 CLAUDE.md 会变得庞大而难以维护:

❌ 一个大文件的问题:
- 难以找到特定规则
- 团队协作容易冲突
- 规则职责不清晰

解决方案:用 .claude/rules/ 目录拆分规则。

4.2 基本结构

your-project/
├── .claude/
│   ├── CLAUDE.md           # 主配置文件
│   └── rules/
│       ├── code-style.md   # 代码风格
│       ├── testing.md      # 测试规范
│       ├── api.md          # API 开发规范
│       └── security.md     # 安全要求

4.3 规则文件示例

code-style.md

# 代码风格规范

## 命名约定
- 组件:PascalCase(如 `UserProfile.tsx`)
- 函数:camelCase(如 `getUserById`)
- 常量:UPPER_SNAKE_CASE(如 `MAX_RETRY_COUNT`)
- 文件:与导出的主要名称一致

## 格式化
- 使用 2 空格缩进
- 语句末尾不加分号
- 字符串优先使用单引号
- 最大行宽 100 字符

## 注释
- 公共函数必须有 JSDoc 注释
- 复杂逻辑必须有行内注释说明
- TODO 注释格式:`// TODO(username): 描述`

testing.md

# 测试规范

## 测试文件位置
- 单元测试:与源文件同目录,`.test.ts` 后缀
- 集成测试:`tests/integration/` 目录
- E2E 测试:`tests/e2e/` 目录

## 测试覆盖率要求
- 整体覆盖率:≥ 80%
- 核心业务逻辑:≥ 90%
- 工具函数:≥ 70%

## 测试命名
- describe 块:描述被测试的模块/函数
- it 块:描述测试场景,使用"应该..."句式

4.4 路径特定规则

最强大的功能:规则可以限定到特定文件路径

使用 YAML 前置事项(frontmatter):

---
paths: src/api/**/*.ts
---

# API 开发规范

这些规则只在处理 `src/api/` 目录下的 TypeScript 文件时生效。

## 通用要求
- 所有 API 端点必须包含输入验证
- 使用标准错误响应格式
- 必须包含 OpenAPI 文档注释

## 错误处理
```typescript
// 标准错误响应格式
{
  "error": {
    "code": "ERROR_CODE",
    "message": "Human readable message",
    "details": {}
  }
}

### 4.5 Glob 模式语法

┌────────────────────────────────────────────────────────────┐
│ paths 字段 Glob 模式 │
├────────────────────────────────────────────────────────────┤
│ │
│ 模式 匹配 │
│ ───────────────────────────────────────────── │
/*.ts 任何目录的 TypeScript 文件 │
│ src/
/ src 目录下的所有文件 │
.md 项目根目录的 Markdown 文件 │
│ src/components/.tsx 特定目录的 React 组件 │
│ │
│ 组合模式: │
│ src/**/
.{ts,tsx} TypeScript 和 TSX 文件 │
│ {src,lib}/*/.ts src 或 lib 下的 TS 文件 │
│ │
└────────────────────────────────────────────────────────────┘


### 4.6 规则组织最佳实践

.claude/rules/
├── frontend/ # 前端规则
│ ├── react.md # React 组件规范
│ └── styles.md # CSS/Tailwind 规范
├── backend/ # 后端规则
│ ├── api.md # API 开发规范
│ └── database.md # 数据库操作规范
├── testing/ # 测试规则
│ ├── unit.md # 单元测试
│ └── e2e.md # E2E 测试
└── general.md # 通用规则


---

## 五、用户级配置:个人偏好跨项目共享

### 5.1 创建用户级配置

在 `~/.claude/CLAUDE.md` 创建你的个人偏好:

```markdown
# 个人编码偏好

## 代码风格
- 偏好函数式编程风格
- 优先使用 const,避免 let
- 喜欢提前 return,减少嵌套

## 注释风格
- 喜欢"为什么"而不是"是什么"的注释
- 复杂逻辑必须有注释

## 常用工具
- 使用 pnpm 而不是 npm
- 使用 vitest 而不是 jest

5.2 用户级规则

你也可以在 ~/.claude/rules/ 创建个人规则:

~/.claude/rules/
├── preferences.md    # 个人偏好
└── workflows.md      # 常用工作流

5.3 优先级规则

项目规则 > 用户规则 > 企业策略

这意味着:
- 项目的特定规范会覆盖你的个人偏好
- 你的个人偏好会覆盖企业通用规范
- 企业策略是最基础的约束

六、实战案例:不同类型项目的 CLAUDE.md 模板

6.1 前端项目

# 前端项目配置

## 技术栈
- React 18 + TypeScript
- Vite
- TailwindCSS
- React Query

## 组件规范
- 组件放在 `src/components/`
- 页面组件放在 `src/pages/`
- 每个组件一个文件夹,包含:
  - `index.tsx` - 组件实现
  - `styles.ts` - 样式(如需要)
  - `types.ts` - 类型定义
  - `index.test.tsx` - 测试

## 状态管理
- 服务端状态:React Query
- 客户端状态:Zustand
- 表单状态:React Hook Form

## 禁止
- 不要在组件中直接调用 fetch
- 不要使用 inline styles
- 不要在渲染中定义函数

6.2 后端 API 项目

# 后端 API 配置

## 技术栈
- Node.js + Express
- TypeScript
- Prisma ORM
- PostgreSQL

## API 规范
- RESTful 风格
- 使用 `/api/v1/` 前缀
- 统一错误响应格式
- JWT 认证

## 目录结构

src/
├── controllers/ # 控制器
├── services/ # 业务逻辑
├── repositories/ # 数据访问
├── middleware/ # 中间件
├── utils/ # 工具函数
└── types/ # 类型定义


## 禁止
- 不要在控制器中直接写业务逻辑
- 不要在代码中硬编码配置
- 不要跳过输入验证

6.3 全栈项目

# 全栈项目配置

## 架构
- 前端:Next.js 14 App Router
- 后端:Next.js API Routes
- 数据库:PostgreSQL + Prisma
- 部署:Vercel

## 目录结构

app/
├── (auth)/ # 认证相关页面
├── (dashboard)/ # 仪表盘页面
├── api/ # API 路由
└── layout.tsx # 根布局
components/
├── ui/ # 基础 UI 组件
└── features/ # 业务组件
lib/
├── api/ # API 客户端
├── db/ # 数据库
└── utils/ # 工具函数


## 规范
- Server Component 优先
- 客户端交互用 Client Component
- 数据获取用 Server Actions

七、常见问题与解决方案

Q1:Claude 还是不按我的规范来,怎么办?

可能原因

  1. CLAUDE.md 位置不对
  2. 规则写得太笼统
  3. 规则之间有冲突

解决方案

# ❌ 太笼统
- 代码要写得好

# ✅ 具体明确
- 函数名要有动词前缀:getXxx, setXxx, handleXxx
- 函数长度不超过 50 行
- 嵌套深度不超过 3 层

Q2:规则文件太多,怎么知道加载了哪些?

使用 /memory 命令:

> /memory

Claude 会显示当前加载的所有内存文件。

Q3:团队成员对代码风格有分歧怎么办?

把争议放进 .claude/rules/ 进行讨论:

---
paths: **/*.{ts,tsx}
---

# 代码风格(团队共识)

以下规范经过团队讨论确定,请遵守:
- 分号:不加
- 引号:单引号
- 缩进:2 空格

讨论记录:#123

Q4:如何让规则只对特定目录生效?

使用 paths 前置事项:

---
paths: src/legacy/**
---

# 遗留代码处理规则

处理 src/legacy 目录时:
- 优先重构而不是修补
- 修改前先写测试
- 每次只改一个小模块

八、速查表:CLAUDE.md 配置要点

配置项 位置 用途
项目主配置 ./CLAUDE.md 项目整体说明
模块化规则 ./.claude/rules/*.md 分类规则文件
个人偏好 ~/.claude/CLAUDE.md 跨项目个人设置
本地偏好 ./CLAUDE.local.md 当前项目个人设置

写作原则

  1. 具体明确2 空格缩进 > 正确格式化代码
  2. 结构清晰:用标题分组,用项目符号列出
  3. 定期更新:项目演进时同步更新规则
  4. 避免冗余:用 @import 引用外部文件

九、效果验证

学完本篇,你应该能够完成以下任务:

验证清单

  • 在项目根目录创建 CLAUDE.md 文件
  • 编写项目技术栈说明
  • 编写代码规范(命名、格式、禁止事项)
  • 配置常用命令
  • 创建 .claude/rules/ 目录并添加分类规则
  • 使用 /memory 命令验证配置加载

动手练习(5分钟)

任务:为你的项目创建 CLAUDE.md

  1. 打开你的项目目录
  2. 创建 CLAUDE.md,填写以下内容:
# [项目名称]

## 一句话描述
[这个项目是做什么的]

## 技术栈
- [列出主要技术和版本]

## 代码规范
- 命名:[你的命名规范]
- 格式:[缩进、分号等]
- 测试:[测试要求]

## 常用命令
- `npm run dev` - 启动开发
- `npm test` - 运行测试

## 禁止
- [列出不能做的事]
  1. 验证效果
claude

> 这个项目用的是什么技术栈?

> 我们的代码规范是什么?

如果 Claude 能准确回答这些问题,说明 CLAUDE.md 配置生效了。

进阶验证

创建一个 .claude/rules/api.md 规则文件:

---
paths: src/api/**
---

# API 开发规范

所有 API 相关代码必须:
1. 包含错误处理
2. 添加请求验证
3. 编写单元测试

然后让 Claude 帮你写一个 API 函数,看它是否遵守了这些规范。


十、总结与下期预告

本文要点

  1. 五层记忆体系:从企业到个人,层层递进
  2. CLAUDE.md 是项目说明书:让 Claude 一次性了解项目
  3. 模块化规则:用 .claude/rules/ 组织复杂项目
  4. 路径特定规则:用 paths 限定规则生效范围
  5. 个人偏好:用 ~/.claude/ 跨项目共享

下期预告

基础篇到这里就结束了。接下来我们进入进阶篇

系列二第一篇:Skills 入门——封装你的第一个 AI 能力

  • 什么是 Skill:把常用操作封装成可复用的能力
  • SKILL.md 结构:从零创建一个 Skill
  • 实战案例:创建一个代码审查 Skill
  • 调试技巧:Skill 不工作怎么办?

敬请期待!


附录:完整配置模板

企业策略模板

# 企业开发规范

## 安全要求
- 禁止在代码中硬编码密钥
- 所有用户输入必须验证
- 使用参数化查询防止 SQL 注入

## 合规要求
- 代码变更必须经过 Code Review
- 敏感数据操作必须有审计日志
- 遵循 OWASP Top 10 安全指南

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

项目配置模板

# [项目名称] 配置

## 技术栈
- [框架] + [语言]
- [数据库]
- [其他工具]

## 目录结构

[项目目录结构]


## 代码规范
- [命名规范]
- [格式规范]
- [注释规范]

## 常用命令
- `[命令]` - [用途]

## 禁止事项
- [禁止1]
- [禁止2]

## 参考
- @README.md
- @package.json

本篇属于 Claude Code 提效系列第 3 篇
下期预告:Skills 入门——封装你的第一个 AI 能力


创建时间:2026-02-14
参考文档:Claude Code 中文文档 - 内存管理

0

评论区