子 agent 并行调研

子 agent 在隔离上下文中并行执行只读工具,然后向主对话返回摘要。


为什么需要子 agent?

重型调研任务(多文件分析、多轮推理)会快速消耗上下文 token。子 agent 将这些工作隔离:

主上下文:已用 50k tokens
  → 派生子 agent 进行调研
  → 子 agent:30k tokens 的探索(隔离)
  → 返回:500 token 摘要
  → 主上下文:仍为 50k tokens(无污染)

工作原理

派生子 agent

当 LLM 判断调研任务足够重时,会自动派生子 agent:

LLM:"我需要在做修改前分析完整的 auth 模块"
  → 派生子 agent,任务:"分析 auth 模块结构"
  → 子 agent 在隔离上下文中运行
  → 返回摘要:"auth.py 有 3 个类,login 使用 JWT..."

只读执行

子 agent 只能使用只读工具:

允许 禁止
read_file write_file
glob_files edit_file
grep_content execute_bash
locate_symbol
find_references

这确保子 agent 不能修改你的代码。

一次性使用

每个子 agent 是用完即焚的:

  1. 为特定任务创建
  2. 运行工具直到完成
  3. 返回简要摘要(to_brief)
  4. 上下文被丢弃——永不复用

与主对话的集成

子 agent 属于 harness(自主对话)范式:

主 harness 循环:
  → LLM 识别出重型调研任务
  → 调用 spawn_subagent 工具
  → 同时继续其他工作
  → 接收摘要
  → 用摘要指导下一步操作

子 agent 的摘要作为工具结果进入主上下文——与其他工具输出无异。


示例:多文件分析

用户:"重构 auth 模块前,先分析所有相关文件"

LLM 决定派生子 agent:
  任务:"分析所有与认证相关的文件:
         - 找出所有从 auth/ 导入的文件
         - 检查每个文件的依赖关系
         - 报告结构和耦合度"

子 agent 运行:
  1. grep_content("from.*auth") → 12 个文件
  2. 逐个 read_file → 检查导入
  3. locate_symbol("AuthService") → 3 个定义
  4. find_references("login") → 15 个引用

子 agent 返回摘要(500 tokens):
  "Auth 模块:auth/ 下 5 个文件,被 12 个文件导入。
   AuthService 类在 3 处定义。
   login 函数有 15 个调用点。
   耦合最紧:routes/auth.py → services/auth.py"

主上下文收到摘要,无需子 agent 的中间探索过程。


并发执行

多个子 agent 可以并行运行:

LLM 同时派生 3 个子 agent:
  Agent 1:分析 auth 模块
  Agent 2:分析 user 模块
  Agent 3:分析数据库 schema

3 个并行运行 → 摘要到达 → LLM 综合分析

这大幅减少多区域调研的墙钟时间。


Effort 和 Client 共享

方面 行为
推理级别 跟随主对话(共享 effort_ref)
API client 与主对话共享连接池
Token 预算 独立——不消耗主上下文 token
上下文 完全隔离——绝不接触主消息历史

何时触发子 agent

LLM 自主决定何时派生子 agent。通常在以下场景:

触发条件 示例
大型代码库扫描 "分析 src/ 中所有文件"
深度依赖分析 "从入口点追踪完整调用链"
多文件对比 "比较 3 个模块的认证实现"
修改前调研 "重构前理解架构"

监控子 agent 活动

派生时状态栏显示:

🧠 medium  📊 12.4k tokens  🔍 [子agent] 分析 auth 模块...

完成后:

🔍 [子agent success] tokens=2.1k

总结

子 agent 是一种 token 效率机制。它让 LLM 进行重型调研而不污染你的主对话上下文。调研保持隔离,只有结论进入主流程。