本文经原作者授权转载,版权归原作者所有。原作者:马东锡 NLP(@dongxi_nlp)。
Harness 系列文章之 7,关于 subagent。
Subagent 是一次 tool call,为 coding agent会打开一个新的 work context。

在启动一次 subagent 的过程中,发生了什么?
简要回答:Tool call outside, runtime inside.
先看 tool call
为什么说,subagent 的启动其实是一次 tool call。

比如,用户说:“Use a verifier subagent to audit webhook retries.”
如果 Harness 支持,可以直接使用 slash command /delegate 完成 spawn_agent 的 tool call。

tool 跑完以后,parent 会拿到 child handle。
再看 run time

在 harness 文章 3中,提到,每次 tool call,都改变了 coding agent 的世界状态。
那么 subagent 这次启动的 tool call 之后,发生了什么?来看 runtime inside。

Tool call 是入口 ,深入一层,Harness 会打开一个新的 work context。
subagent 的 context 与 coding agent 的 context 有什么关系?
Session, Context, Subagent
这三个词容易混在一起。
- session 是 runtime container:thread、transcript、tools、permissions、resources、status、artifacts。
- context 是某次 model call 能看到的 projection:instructions、skills、AGENTS.md、recent turns、summaries、tool results、file state。
- subagent 是 parent session 下面新开的 child session。它可以继承 resources,也会拿到一段被选择过的 context slice。

Tool Call Outside, Runtime Inside

- Subagent 这个词有点容易误导,它听起来像一个小一点的智能体。
- 在 harness 里,它更像一个 managed child runtime。subagent 可以使用很多 parent 也能使用的 Harness resources。例如 tools、skills、AGENTS.md,MCP servers、cwd、sandbox、permissions。
- 但 shared resources 不代表 shared transcript。child 有自己的 work context。parent 选择投影多少 context 给它。

Fresh Agent, Forked Agent or Partial Fork?

parent 选择投射多少 context 给 sub agent,由 subagent的类型决定, 常见的 subagent 有三种 pattern:
- fresh child 它需要收到 goal、relevant files、已尝试过什么、exact output,以及回答深度。
- forked child 已经继承了 surrounding context,prompt 应该直接给下一步 directive。
- partial fork 是最实用的中间方案。它给 child 足够的 local memory 去工作,同时避免 parent history 变成 inherited noise。
这里给出一些列子,我们可以想想,什么样的 subagent 适合对应的task?
- Parallelism Agent, 一个 subagent 查 database migration, 一个 subagent 看 frontend state, 一个 subagent 跑 verification
- Role Specialization: Explorer, Planner, Verifier, Worker, reviewer ...
- Background Work, 例如多个 subgent 完成大型重构,长测试
Subagent workflow
一个实用的 subagent workflow :

如何组织好多个 subagent 完成工作,其实非常具有挑战性,越清晰的地定义 subagent 的 role,context, tool 越好。
最后:
更多 agents 不保证更好的工作,更多 agents 会制造更多 runtime state。
Harness 必须知道谁在工作、它知道什么、改了什么、什么时候完成、结果如何变成 evidence。
subagent 会为 coding agent 拓展世界,而 harness 则关于新世界是否更好还是更混沌,