如何精通 Claude Code 中的上下文工程:Anthropic 工程师使用的 5 种模式与 13 个步骤

@zodchiii
英语1个月前 · 2026年6月06日
104K
202
20
15
443

TL;DR

学习如何通过分层 CLAUDE.md 文件、精准文件引用以及 Agent 隔离来优化 Claude Code 会话,从而将上下文占用率降低高达 70%。

每次 Claude Code 长会话都以同样的方式结束:你丢失了数小时的进度,不得不从头开始。

解决办法不是更智能的模型,而是 Claude Code 团队内部使用、却从未写过指南的系统。

大多数开发者没有它,甚至不知道它的存在。

下面是完整系统 👇

🧠 在深入之前,我每天在 Telegram 频道分享关于 AI 和氛围编程的笔记:https://t.me/zodchixquant

darkzodchi - inline image

上下文工程到底意味着什么

Claude 每次会话会读取数千行代码。其中大部分是噪音,而那 5% 的关键内容在两小时后就被淹没了。

这时 Claude 开始凭空发明函数、修复你从未写过的 bug。解决办法不是更大的模型,而是控制进入会话的内容。

以下是 Claude Code 团队在自己的单仓库中运行的 6 个模式。

darkzodchi - inline image

模式 1:分层 CLAUDE.md(第 1-3 步)

一份 CLAUDE.md 是不够的。Claude Code 团队运行三层,每一层针对不同的关注点。

第 1 步:根目录 CLAUDE.md,包含项目级规则

在项目根目录放置一个 CLAUDE.md,保持不超过 100 行。它应该回答 Claude 在每次提示时都会问的四个问题:

markdown
1# 项目:[名称]
2
3## 技术栈
4- 运行时:Node 22、TypeScript 5.5
5- 框架:Next.js 15、React 19
6- 数据库:Postgres 16、Drizzle ORM
7- 测试:Vitest、Playwright
8
9## 约定
10- 导入:仅使用绝对路径 `@/`
11- 组件:kebab-case 文件名、PascalCase 导出
12- 测试:与文件同目录,命名为 `[file].test.ts`
13- 提交:约定式提交,不要使用 co-author 脚注
14
15## 不要动
16- `infra/terraform/`(由运维团队管理)
17- `migrations/`(生成文件,切勿手动编辑)
18- `vendor/`(已提交的依赖)
19
20## 默认操作
21- 声明任务完成前运行 `npm test`
22- 每次编辑后使用 `tsc --noEmit` 进行类型检查
23- 保存时使用 Prettier 格式化

第 2 步:子目录 CLAUDE.md,提供模块特定上下文

在任何规则发生变化的文件夹中添加 CLAUDE.md。当 Claude 在该文件夹中工作时,它会读取最近的 CLAUDE.md(叠加根目录的那份)。

例如,src/auth/CLAUDE.md:

markdown
1# 认证模块
2
3此模块负责会话管理和 OAuth 流程。
4
5## 规则
6- 切勿记录令牌,即使是截断后的
7- 所有会话读取必须通过 `getSession()`,不要直接操作 cookie
8- 新增提供商需要先进行安全审查才能合并
9
10## 优先阅读的文件
11- `session.ts` 了解契约
12- `providers/index.ts` 了解注册模式

第 3 步:个人 CLAUDE.md 位于 ~/.claude/CLAUDE.md

这是你的全局偏好层。位于任何仓库之外,适用于所有地方。

markdown
1## 我的偏好 - 在多文件编辑之前,先解释你打算做什么再执行 - 如果我的请求看起来可能破坏某些东西,请提出反对 - 优先组合而非继承 - 我在 macOS 上使用 zsh

这三层叠加:全局偏好 + 项目规则 + 模块规则。Claude 在每次提示时都会读取所有三层,而无需通过你的上下文重新上传它们。

模式 2:精准文件引用(第 4-5 步)

默认的“让 Claude 自己决定哪些文件重要”是使用上下文最慢、最笨的方式。

第 4 步:@file 引用与自动补全

当你在提示中输入 @ 时,Claude 会打开一个模糊文件选择器。用它来替代用文字描述文件。

糟糕:“看看用户认证代码和会话辅助函数”

良好:“看看

@src/auth /session.ts 和

@src/auth /providers/google.ts,修复令牌刷新”

精准引用只加载那些文件。文字描述则迫使 Claude 搜索、读取 4-5 个候选文件,并且一半情况下会选错。

第 5 步:/focus 限定整个工作流范围

对于较长的任务,将 Claude 的整个会话范围限定到特定文件夹:

text
1/focus src/auth src/api/auth-routes

现在,每次搜索、grep 和读取操作只会在那两个文件夹内进行。

对于聚焦任务,可将上下文使用量减少 60-80%,并且 Claude 不会再“好心”地读取它不需要的无关文件。

运行 /focus clear 即可重置。

模式 3:压缩并继续(第 6-8 步)

长会话会触及上下文限制并崩溃。诀窍不是避免长会话,而是通过受控压缩来管理它们。

第 6 步:使用 /stats 监控上下文使用量

定期运行 /stats

当上下文使用量超过 70% 时,你就进入了危险区。超过 85% 时,Claude 会开始悄悄丢弃早期消息而不通知你。

第 7 步:/compact 附带保留指令

仅运行 /compact 会对对话进行摘要。添加指令时,你可以告诉 Claude 要逐字保留哪些内容:

text
1/compact 保留:当前任务计划、所有关于认证重构的决策、第 3 步中失败的测试输出

第 8 步:/resume 用于跨天会话

如果任务跨越数天,在每次会话结束时运行 /compact preserve: ...,然后在下一次会话开始时运行:

markdown
1claude --resume [会话ID]

或者直接用 claude --continue 打开最近一次会话。它会从你离开的地方继续,压缩后的状态保持不变。

模式 4:先计划再阅读(第 9-10 步)

最大的上下文泄漏是 Claude 在理解文件之前就开始编辑。计划模式强制它先阅读,再写入。

第 9 步:对每个有风险的任务切换计划模式

在涉及多个文件的任务之前,按 Shift+Tab 进入计划模式。

在计划模式下,Claude 只能读取。它会解释自己要做什么,列出计划接触的每个文件,并展示提议的更改。在你批准之前,什么都不会执行。

节省是实实在在的:一次读取、一次编辑,而不是读 8 次、编辑 3 次错误、撤销、再读、再编辑。

第 10 步:通过钩子为敏感路径锁定计划模式

让计划模式对高风险区域成为强制要求。在 .claude/settings.json 中:

json
1{
2 "hooks": {
3 "PreToolUse": [
4 {
5 "matcher": "Edit(src/auth/**)|Edit(migrations/**)",
6 "hooks": [
7 {
8 "type": "command",
9 "command": "claude-require-plan-mode"
10 }
11 ]
12 }
13 ]
14 }
15}

任何针对 src/auth/*\migrations/\\* 的编辑尝试都会触发计划模式要求。Claude 无法绕过它。

模式 5:子 Agent 上下文隔离(第 11-13 步)

子 Agent 是保持主上下文最小的最干净方式。每个子 Agent 在自己的窗口中运行,因此父会话永远不会看到噪音。

第 11 步:设计子 Agent,最小化工具暴露

将工具限定为任务所需。

code-reviewer 不需要 Write 或 Edit。

doc-updater 不需要 Bash。工具越少,浪费在无关文档和工具描述上的上下文就越少。

yaml
1---
2name: code-reviewer
3description: 审查代码更改,检查 bug 和安全问题
4tools: Read、Grep、Glob
5model: sonnet
6---

第 12 步:只传递子 Agent 需要的文件引用

不要说“审查最近的更改”。应该说“审查[@src/auth](https://x.com/@src/auth)/session.ts 和 [@src/auth](https://x.com/@src/auth)/providers/google.ts**”。

子 Agent 只读取这些文件,而不是它自己对“最近”的最佳猜测。

第 13 步:为子 Agent 使用更便宜的模型

根据任务为每个 Agent 设置模型。

审查和测试任务使用 Sonnet,文档更新和 lint 使用 Haiku,架构或安全审计等需要深度推理的任务才使用 Opus。

如果需要全局设置:

text
1export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-6"

更便宜的子 Agent = 每美元更多子 Agent 调用 = 更强的隔离 = 更小的主上下文。

30 分钟上下文工程入门

10 分钟:编写一份紧凑的根目录 CLAUDE.md,包含技术栈、约定、不要碰的列表以及默认操作。

5 分钟:在你最常编辑的 2-3 个模块中添加子目录 CLAUDE.md。

5 分钟:在 ~/.claude/CLAUDE.md 中放入一份个人 CLAUDE.md,记录你的偏好。

5 分钟:在 .claude/skills/ 中构建一个技能,用于你最常做的工作流。

5 分钟:将 Shift+Tab 变成肌肉记忆,并在每个多文件任务开始时使用计划模式。

完成!

你的下一次会话将为同样的工作量减少 50-70% 的上下文使用量。到第五次会话时,这些模式会成为本能反应,你再也不会触及限制。

上下文不是 Claude 为你管理的东西——而是你主动工程出来的。

现在你拥有了这个系统。

感谢阅读!

我每天在 Telegram 频道分享关于 AI、金融和氛围编程的笔记:https://t.me/zodchixquant

darkzodchi - inline image
一键保存

使用 YouMind AI 深度阅读爆款文章

保存原文、追问细节、总结观点,并在一个 AI 工作空间里把爆款文章沉淀成可复用笔记。

了解 YouMind
写给创作者

把你的 Markdown 变成干净的 𝕏 文章

图片上传、表格、代码块,往 𝕏 上手动重排太痛苦。YouMind 把整篇 Markdown 一键转成干净、可直接发布的 𝕏 文章草稿。

试试 Markdown 转 𝕏

更多可拆解样本

近期爆款文章

探索更多爆款文章