把研究类任务外包给子 Agent,主上下文只收到”浓缩摘要”,是 Claude Code 控制 token 用量最有效的一种手段。子 Agent 在独立 context window 里读 50 个文件,调度者只承担百字级摘要的体积——主会话的上下文预算就被空出来留给真正的实现与决策。
一、为什么”上下文窗口”是核心瓶颈
Claude Code 的主会话每翻一轮都要把整段历史喂回 LLM。一段会话走到中段,输入侧的 token 量往往以几万计;任何”在主上下文里跑研究”的行为都会让后续每轮持续承重。研究结论:典型场景下主会话在未做任何优化时,输入 token 平均已逼近窗口上限。
按社区整理的实践,一个 200K token 的窗口真正可用于推理的余量常常只剩 50K 左右;剩余预算被 always-on 的 CLAUDE.md、skill 描述、系统提示里的工具 schema 占走。这种结构下,”让主会话直接读 15 个文件”是典型的把可避免的硬开销压到每轮。
二、子 Agent 隔离的 token 量化模型
子 Agent 跑在独立 context,主 Agent 只回填”摘要”——这是降低主上下文输入 token 的最直接路径。给一个常见研究场景做对照:
| 场景 | 主上下文直接研究 | 委托给子 Agent |
|---|---|---|
| 读文件数 | 15 个 | 15 个(隔离在子窗口) |
| 内部消耗 token | 0 | 约 10,000 |
| 摘要回填到主上下文 | — | 约 500 |
| 净占用主窗口 | 约 15 万 token | 约 500 token |
数字背后的逻辑是清楚的:主 Agent 每轮都把这 15 万 token 当输入重读,子 Agent 只把 500 字的最终摘要交给主 Agent。N 轮会话的累计差 = (150,000 − 500) × N,N 越大节省越显著。
第二个维度是”研究 / 实现”分离带来的复合收益。假设一段会话包含三次研究 + 一段 5 轮实现:未隔离时主窗口从 80K 涨到 200K 之后,每轮实现平均输入按 140K 计,5 轮合计 700K。隔离后三次子 Agent 各 30K 内部 token(共 90K)外加每轮主上下文只多出几百字的研究摘要,5 轮实现的主上下文稳定在 30K–40K 量级,合计远低于 700K。
三、context budget 四种杠杆的对比
子 Agent 只是 Claude Code context budget 的一个杠杆,社区里通常把它和另外三种并列:
- Write(精简 CLAUDE.md / skill 描述):削减 always-on 层 token;
- Select(
.claudeignore、限定目录读取):按需加载,避免无意义读入; - Compress(
/compact命令):把已累积的对话历史压成摘要; - Isolate(子 Agent):把研究类工作推到独立 context。
| 杠杆 | 作用层 | 典型节省幅度 | 适合的瓶颈类型 |
|---|---|---|---|
| Write | always-on | 30%–50% 探索成本 | 启动成本高 |
| Select | 加载策略 | 20%–40% 输入 token | 大目录、依赖目录 |
| Compress | 已积累历史 | 60%–80% 中段上下文 | 长会话 |
| Isolate | 任务边界 | 40%–60% 多任务会话 | 研究 + 实现混合 |
四种杠杆可以叠加:精简 CLAUDE.md 让每次启动的 always-on 层更薄;.claudeignore 屏蔽掉无意义读入;/compact 在中段兜底;子 Agent 隔离掉最占预算的研究任务。一名重度使用者的月账单因此能从 50 美元量级压到 15–30 美元区间。
四、落地子 Agent 的两个易错点
第一,输出别写长。子 Agent 把”几万字调研记录”回传给主 Agent,前面所有 token 节省就全废了。system prompt 里必须显式约束格式,例如”最多 10 条 bullet,每条带严重级别、文件引用、一句话说明”。300 token 报告 + 一次澄清往返,比 3,000 token 的”全量甩回”更划算。
第二,描述要可路由。子 Agent 描述字段是主 Agent 判断”要不要委派”的唯一信号,写成标题(如”代码审查器”)会让路由命中率下降;写成”完成 Write 后调用,检查命名与安全规范”这种触发条件句才容易命中。路由失败会让本该被隔离的研究任务回流到主上下文,token 节省归零。
# .claude/agents/code-reviewer.md
---
name: code-reviewer
description: Use after writing code in this project. Reviews diffs for naming, security, and style.
tools:
- Read
- Grep
- Glob
---
Review the most recent diff. Return up to 10 bullet points, each with severity, file:line, and one sentence.
第三,模型选择要分档。纯只读探索用 Haiku,成本最低;分析与综合用 Sonnet,能力与价格平衡;只有需要多步推理的复杂任务才用 Opus。子 Agent 内部用的模型越重,节省幅度越被稀释。
五、何时不该用子 Agent
研究量小(只读 1–2 个文件)、或者结果必须原样进主上下文(例如要让模型基于完整文件做 diff)时,强行委派反而多了 5,000 token 的子 Agent 启动开销,划不来。判断标准很简单:结果能用几百字总结吗?能,就委派;不能,直接在主上下文做。
到这里,”用子 Agent 隔离研究类任务”就构成一段完整链路:识别研究类工作 → 描述清晰的子 Agent 路由信号 → 子 Agent 内部独立 context → 几百字摘要回填主 Agent → 主 Agent 用省下的预算做实现与决策。
常见问题(FAQ)
Q1:子 Agent 启动本身有没有固定 token 成本?
有,单次启动约 5,000 token 起。研究类任务一般远超这个量级,固定开销可忽略。
Q2:子 Agent 能不能用 Haiku 跑研究?
只读探索可以,分析综合建议 Sonnet,规划类不要降级,避免下游连锁错误。
Q3:/compact 和子 Agent 隔离能互相替代吗?
不能。/compact 压缩历史,子 Agent 隔离当下;中长会话里两者都要用。