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

@zodchiii
АНГЛІЙСЬКА2 місяці тому · 06 черв. 2026 р.
104K
202
20
15
443

Коротко

学习如何通过分层 CLAUDE.md 文件、精准的文件引用以及子智能体隔离来优化 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- 提交:遵循 Conventional Commits,无 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,并与根目录的 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/CLAUDE.md 中的个人 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 保留:... 然后以下方式开始下一个会话:

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:子代理上下文隔离(步骤 11-13)

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

步骤 11:设计具有最小工具面的子代理

将工具限制在任务所需的范围内。

一个 代码审查员 不需要写入或编辑工具。

一个 文档更新员 不需要 Bash。工具面越少,浪费在无关文档和工具描述上的上下文就越少。

yaml
1---
2name: 代码审查员
3description: 检查代码变更是否存在 bug 和安全问题
4tools: Read, Grep, Glob
5model: sonnet
6---

步骤 12:只传递子代理需要的文件引用

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

子代理只读取这些文件,而不是它自己猜测"最近"是什么意思。

步骤 13:为子代理使用更便宜的模型

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

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

如果需要,可以全局设置:

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

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

30 分钟上下文工程入门

10 分钟: 编写一个紧凑的根 CLAUDE.md,包含技术栈、规范、禁止修改列表和默认操作。

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

5 分钟: 在 ~/.claude/CLAUDE.md 中放入一个包含你偏好的个人 CLAUDE.md。

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

5 分钟: 绑定 Shift+Tab 肌肉记忆,并且每个多文件任务都从规划模式开始。

完成!

你的下一次会话将使用比之前少 50-70% 的上下文来完成相同的工作量。到第 5 次会话时,这些模式会成为条件反射,你将完全不再受限制的困扰。

上下文不是 Claude 替你管理的。是你自己需要去工程的。

现在你拥有这个系统了。

感谢阅读!

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

darkzodchi - inline image
Збереження в один клік

Використовуйте YouMind для AI-глибокого читання віральних статей

Зберігайте джерела, ставте цілеспрямовані запитання, підсумовуйте аргументи та перетворюйте віральні статті на корисні нотатки в одному AI-робочому просторі.

Дослідити YouMind
Для авторів

Перетворіть свій Markdown на охайну статтю для 𝕏

Коли ви публікуєте власні лонгріди, зображення, таблиці та блоки коду роблять форматування в 𝕏 складним. YouMind перетворює повну чернетку в Markdown на чисту статтю для 𝕏, готову до публікації.

Спробувати Markdown для 𝕏

Більше патернів для аналізу

Останні віральні статті

Переглянути більше віральних статей