每次 Claude Code 长会话都以同样的方式结束:你丢失了数小时的进度,不得不从头开始。
解决办法不是更智能的模型,而是 Claude Code 团队内部使用、却从未写过指南的系统。
大多数开发者没有它,甚至不知道它的存在。
下面是完整系统 👇
🧠 在深入之前,我每天在 Telegram 频道分享关于 AI 和氛围编程的笔记:https://t.me/zodchixquant

上下文工程到底意味着什么
Claude 每次会话会读取数千行代码。其中大部分是噪音,而那 5% 的关键内容在两小时后就被淹没了。
这时 Claude 开始凭空发明函数、修复你从未写过的 bug。解决办法不是更大的模型,而是控制进入会话的内容。
以下是 Claude Code 团队在自己的单仓库中运行的 6 个模式。

模式 1:分层 CLAUDE.md(第 1-3 步)
一份 CLAUDE.md 是不够的。Claude Code 团队运行三层,每一层针对不同的关注点。
第 1 步:根目录 CLAUDE.md,包含项目级规则
在项目根目录放置一个 CLAUDE.md,保持不超过 100 行。它应该回答 Claude 在每次提示时都会问的四个问题:
1# 项目:[名称]23## 技术栈4- 运行时:Node 22、TypeScript 5.55- 框架:Next.js 15、React 196- 数据库:Postgres 16、Drizzle ORM7- 测试:Vitest、Playwright89## 约定10- 导入:仅使用绝对路径 `@/`11- 组件:kebab-case 文件名、PascalCase 导出12- 测试:与文件同目录,命名为 `[file].test.ts`13- 提交:约定式提交,不要使用 co-author 脚注1415## 不要动16- `infra/terraform/`(由运维团队管理)17- `migrations/`(生成文件,切勿手动编辑)18- `vendor/`(已提交的依赖)1920## 默认操作21- 声明任务完成前运行 `npm test`22- 每次编辑后使用 `tsc --noEmit` 进行类型检查23- 保存时使用 Prettier 格式化
第 2 步:子目录 CLAUDE.md,提供模块特定上下文
在任何规则发生变化的文件夹中添加 CLAUDE.md。当 Claude 在该文件夹中工作时,它会读取最近的 CLAUDE.md(叠加根目录的那份)。
例如,src/auth/CLAUDE.md:
1# 认证模块23此模块负责会话管理和 OAuth 流程。45## 规则6- 切勿记录令牌,即使是截断后的7- 所有会话读取必须通过 `getSession()`,不要直接操作 cookie8- 新增提供商需要先进行安全审查才能合并910## 优先阅读的文件11- `session.ts` 了解契约12- `providers/index.ts` 了解注册模式
第 3 步:个人 CLAUDE.md 位于 ~/.claude/CLAUDE.md
这是你的全局偏好层。位于任何仓库之外,适用于所有地方。
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 的整个会话范围限定到特定文件夹:
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 要逐字保留哪些内容:
1/compact 保留:当前任务计划、所有关于认证重构的决策、第 3 步中失败的测试输出
第 8 步:/resume 用于跨天会话
如果任务跨越数天,在每次会话结束时运行 /compact preserve: ...,然后在下一次会话开始时运行:
1claude --resume [会话ID]
或者直接用 claude --continue 打开最近一次会话。它会从你离开的地方继续,压缩后的状态保持不变。
模式 4:先计划再阅读(第 9-10 步)
最大的上下文泄漏是 Claude 在理解文件之前就开始编辑。计划模式强制它先阅读,再写入。
第 9 步:对每个有风险的任务切换计划模式
在涉及多个文件的任务之前,按 Shift+Tab 进入计划模式。
在计划模式下,Claude 只能读取。它会解释自己要做什么,列出计划接触的每个文件,并展示提议的更改。在你批准之前,什么都不会执行。
节省是实实在在的:一次读取、一次编辑,而不是读 8 次、编辑 3 次错误、撤销、再读、再编辑。
第 10 步:通过钩子为敏感路径锁定计划模式
让计划模式对高风险区域成为强制要求。在 .claude/settings.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。工具越少,浪费在无关文档和工具描述上的上下文就越少。
1---2name: code-reviewer3description: 审查代码更改,检查 bug 和安全问题4tools: Read、Grep、Glob5model: sonnet6---
第 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。
如果需要全局设置:
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






