前三篇我们聊了 Claude Code 的安装配置、快捷键和命令。这篇来说说真正让 Claude “懂你”的配置——CLAUDE.md 和上下文管理。

说实话,刚用 Claude Code 的时候,我只把它当成一个”通用的 AI 助手”。直到我学会了配置 CLAUDE.md,才明白为什么有人说它是”程序员的终极武器”——因为它真的能记住你的习惯和规范。

CLAUDE.md 是什么

CLAUDE.md 是 Claude Code 的”记忆”文件。每次启动时,它会自动读取这个文件,了解你的项目、规范和习惯。

一句话理解:如果说 Claude 是一个新来的程序员,那 CLAUDE.md 就是给他的”入职指南”。

三层配置结构

Claude Code 支持三层 CLAUDE.md 配置,所有层级是叠加的,不会互相覆盖:

1. 全局配置:~/.claude/CLAUDE.md

位置~/.claude/CLAUDE.md

作用:所有项目通用的配置

适合放

  • 语言偏好(中文/英文)
  • 代码风格(缩进、引号等)
  • Git 规范(commit message 格式)
  • 个人习惯

我的全局配置示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 飞鲤的开发规范

## 语言偏好
- 代码注释使用英文
- 交互对话使用中文

## 代码风格
- 使用 2 空格缩进
- 使用单引号
- 所有函数必须有 JSDoc 注释

## Git 规范
- Commit message 使用 conventional commits 格式
- 提交前必须运行测试

2. 项目配置:~/project/CLAUDE.md

位置:项目根目录下的 CLAUDE.md

作用:当前项目专用的配置

适合放

  • 技术栈信息
  • 常用命令
  • 项目结构说明
  • 注意事项

我的项目配置示例(博客项目):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 博客项目

## 技术栈
- Hexo 7.3.0 + Butterfly 主题
- 中文站点,部署地址:https://6mal.com

## 常用命令
- `npm run server` - 本地开发
- `npm run build` - 生成静态文件
- `./gitpush.sh "提交信息"` - 部署

## 注意事项
- Butterfly 主题配置在 `_config.butterfly.yml`,不要改主题目录
- `public/``node_modules/` 被 gitignore 忽略

3. 子目录配置:~/project/src/CLAUDE.md

位置:子目录下的 CLAUDE.md

作用:进入该目录时加载的配置

适合放

  • 子目录特有的规范
  • 特定模块的注意事项
  • 子项目的配置

实际案例

我的博客项目有一个 source/_posts/ 目录,里面放文章。我在里面加了一个 CLAUDE.md:

1
2
3
4
5
6
7
8
9
10
11
# 文章目录

## 文章格式
- 使用 YAML front matter
- 必须包含 title、categories、tags、date、id
- id 使用四位数字,如 0110

## 写作风格
- 第一人称叙事
- 口语化、有个人态度
- 多用代码示例

CLAUDE.md 编写规范

最佳实践

1. 控制在 200 行以内

太长会导致指令被忽略。Claude Code 对 CLAUDE.md 的长度有限制,超过 200 行可能会被截断。

2. 重要规则放顶部

Claude 会优先读取顶部的内容。把最重要的规则放在最前面。

3. 使用强调词

使用 “MUST”、”IMPORTANT”、”NEVER” 等强调词提高遵守率:

1
2
3
4
## 重要规则
- MUST: 所有函数必须有 JSDoc 注释
- IMPORTANT: 提交前必须运行测试
- NEVER: 不要直接修改 node_modules

4. 用 Markdown 格式

使用标题、列表、代码块等格式,让内容更清晰:

1
2
3
4
5
6
7
8
# 项目规范

## 代码风格
- 使用 2 空格缩进
- 使用单引号

## Git 规范
- Commit message 使用 conventional commits 格式

5. 把 CLAUDE.md 加入 Git

让团队共同维护:

1
2
git add CLAUDE.md
git commit -m "docs: add CLAUDE.md for project configuration"

编写模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 项目名称

## 技术栈
- 框架:xxx
- 语言:xxx
- 包管理器:xxx

## 常用命令
- `npm run dev` - 本地开发
- `npm run build` - 构建
- `npm test` - 测试

## 代码风格
- 缩进:2 空格
- 引号:单引号
- 注释:英文

## 注意事项
- 重要规则 1
- 重要规则 2
- 重要规则 3

## 项目结构

src/
├── components/ # 组件
├── pages/ # 页面
├── utils/ # 工具函数
└── index.js # 入口文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
```

## 上下文管理:避免 Claude "变笨"

这是我踩坑最多的地方。

Claude Code 的 200K token 窗口看似很大,但复杂项目中很快会耗尽。当它开始"变笨"——忘记之前的讨论、重复提问、给出不相关的回答——通常是因为上下文快满了。

### 什么是上下文窗口

上下文窗口是 Claude 能"记住"的信息量。200K token 大约相当于:
- 50 万个英文单词
- 100 万个中文字
- 几百个代码文件

听起来很多,但实际上:
- 每次对话都会消耗上下文
- MCP 服务器会消耗上下文
- CLAUDE.md 会消耗上下文
- 工具调用会消耗上下文

### 如何查看上下文使用量

使用 `/context` 命令:

/context

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

会显示:
- 上下文使用量:65%
- 剩余空间:35%
- 优化建议

### 上下文满了会怎样

当上下文快满时,Claude 会开始"变笨":
- 忘记之前的讨论
- 重复提问
- 给出不相关的回答
- 无法理解复杂的指令

**实际案例**:

有一次我在分析一个复杂的代码库,让 Claude 读了 50 多个文件。聊了 20 分钟后,它开始忘记之前分析的内容,甚至重复问同样的问题。

我用 `/context` 一看,上下文已经用了 85%。执行 `/compact` 后,它又恢复正常了。

## 上下文优化策略

### 1. /compact:压缩上下文

**功能**:压缩当前对话,保留关键信息,释放上下文空间

**使用场景**:
- 上下文超过 50% 时
- 想保留对话历史,但释放空间
- 长时间对话后

**基本用法**:

/compact

1
2
3

**带焦点压缩**:

/compact focus on API changes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

这会告诉 Claude 重点保留与 API 变更相关的内容。

**我的使用习惯**:
- 每隔 30 分钟看一次 `/context`
- 超过 50% 就 `/compact`
- 重要任务用 `/compact focus on xxx`

### 2. /clear:清空重来

**功能**:清空当前对话上下文,开始新会话

**使用场景**:
- 上下文超过 80% 时
- 切换到完全不同的任务
- 想彻底重来

**基本用法**:

/clear

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

**我的使用习惯**:
- 上下文超过 80% 时用 `/clear`
- 切换任务时用 `/clear`
- 想彻底重来时用 `/clear`

### 3. 精简 CLAUDE.md

**功能**:控制 CLAUDE.md 的长度,避免消耗过多上下文

**最佳实践**:
- 控制在 200 行以内
- 只放最重要的规则
- 删除不常用的配置

**实际案例**:

我的 CLAUDE.md 原来有 300 行,结果 Claude 经常忽略后面的规则。精简到 150 行后,遵守率明显提高。

### 4. 减少 MCP 服务器

**功能**:关闭不需要的 MCP 服务器,减少上下文消耗

**使用场景**:
- MCP 服务器太多,上下文消耗过大
- 某些 MCP 服务器不常用

**基本用法**:

/mcp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

查看每个 MCP 服务器的上下文消耗,关闭不需要的。

**我的使用习惯**:
- 只保留常用的 MCP 服务器
- 定期检查 MCP 状态
- 上下文消耗过大时关闭不必要的 MCP

### 5. 使用 Subagents 隔离

**功能**:用子代理处理大量代码阅读任务,避免主对话上下文膨胀

**使用场景**:
- 需要分析大量代码
- 需要执行耗时任务
- 想并行处理多个任务

**基本用法**:

用 Explore 子代理分析 src/ 目录的架构


**实际案例**:

我让 Claude 分析一个 1000 个文件的代码库。如果在主对话里做,上下文很快就满了。

但用 Subagent 做,它会在一个独立的上下文里分析,分析完只返回摘要。主对话的上下文完全不受影响。

## 实战案例

### 案例1:分析大型代码库时的上下文管理

**任务**:分析一个有 500 个文件的代码库

**问题**:如果直接分析,上下文很快就满了

**解决方案**:

1. 用 `/context` 查看初始上下文
2. 用 Subagent 分析代码库
3. Subagent 返回摘要
4. 主对话继续讨论

**效果**:主对话的上下文始终保持在 30% 以下

### 案例2:长时间对话的上下文优化

**任务**:进行一个需要 2 小时的重构任务

**问题**:2 小时后,上下文会用完

**解决方案**:

1. 每 30 分钟看一次 `/context`
2. 超过 50% 就 `/compact`
3. 超过 80% 就 `/clear`
4. 用 `/compact focus on xxx` 保留关键信息

**效果**:2 小时后,上下文仍然健康

### 案例3:多任务切换的上下文管理

**任务**:同时处理 3 个不同的任务

**问题**:切换任务时,上下文会混乱

**解决方案**:

1. 每个任务用 `/clear` 开新会话
2. 用 `/resume` 恢复之前的会话
3. 用 `/compact` 保留关键信息

**效果**:每个任务都有清晰的上下文

## 我的配置习惯

经过一个月的使用,我形成了自己的配置习惯:

**1. CLAUDE.md 管理**

- 全局配置:放通用规范(50 行)
- 项目配置:放项目特定规范(100 行)
- 子目录配置:放模块特定规范(50 行)

**2. 上下文管理策略**

- 每 30 分钟:`/context` 查看用量
- 超过 50%:`/compact` 压缩
- 超过 80%:`/clear` 清空
- 切换任务:`/clear` 开新会话

**3. MCP 管理**

- 只保留常用的 MCP 服务器
- 定期检查 MCP 状态
- 上下文消耗过大时关闭不必要的 MCP

**4. Subagent 使用**

- 大量代码阅读:用 Subagent 隔离
- 耗时任务:用 Subagent 后台运行
- 并行任务:用多个 Subagent

## 下一篇预告

这篇讲了 CLAUDE.md 配置和上下文管理。下一篇文章,我会详细介绍 Claude Code 的 Skills 技能包——这些技能包能让 Claude 自动执行你的工作流程。

---

**相关推荐:**
- [Claude Code 入门:从安装到模型配置,以 DeepSeek 为例](/archives/0110/)
- [Claude Code 快捷键:这 15 个键让我效率翻倍](/archives/0111/)
- [Claude Code 命令大全:这 20 个命令你必须掌握](/archives/0112/)
- [Claude Code Skills:让 AI 记住你的工作流程](/archives/0114/)(即将发布)

**P.S.** CLAUDE.md 这个东西,一开始写不好没关系,先写一个简单的版本,然后慢慢完善。用多了自然就知道该放什么内容了!