Technical Guide

16. Delegation:子 Agent 和并行任务怎么跑

理解 Hermes 如何把复杂任务拆给子 Agent,并在隔离上下文里执行。

这篇解决什么问题

有些任务不适合一个 Agent 从头做到尾。

比如:一边查资料,一边读源码,一边做代码审查;或者让多个 Agent 并行比较不同方案。

Hermes 的 Delegation 解决的是:把一个任务拆给子 Agent。

Delegation 和 Tool 的区别

Tool 是一次函数调用。

Delegation 是启动另一个 Agent 执行一段任务。

可以理解成:

Tool:帮我读这个文件
Delegation:你单独研究这个模块,最后给我结论

子 Agent 有自己的上下文、终端会话和工具集。它最后只把总结返回给父 Agent。

为什么要隔离上下文

如果父 Agent 把所有细节都放进当前上下文,很快会爆。

Delegation 的好处是:

  • 子任务细节不污染主上下文;
  • 多个子任务可以并行;
  • 每个子 Agent 可以只拿必要工具;
  • 父 Agent 只接收最终摘要。

这适合研究、审查、比较、调试这类任务。

什么时候不要用 Delegation

不要把简单工具调用也丢给子 Agent。

比如:

读一个文件
查一个命令输出
跑一次 npm build

这些直接用工具更快。

Delegation 更适合:

有独立上下文
需要多步推理
会产生大量中间信息
可以并行完成

典型链路

简化看:

父 Agent 调用 delegate_task
→ 创建子 Agent 会话
→ 传入 goal / context / toolsets
→ 子 Agent 独立执行
→ 返回 summary
→ 父 Agent 根据 summary 继续决策

如果是 batch 模式,就会创建多个子任务并行跑。

工具集限制很关键

Delegation 最好给明确工具集。

比如研究任务只给:

web
file

代码任务给:

terminal
file

不要默认给太多工具。工具越多,子 Agent 的行为边界越宽,也越容易偏。

子 Agent 不是事实担保

子 Agent 的最终总结是“自报告”。

如果它说“我写好了文件”或“我上传成功了”,父 Agent 不能直接相信。对有副作用的任务,要验证:

文件是否存在
内容是否正确
URL 是否能访问
命令是否真的通过
git diff 是否符合预期

这点在多 Agent 工作流里很重要。

和 Cron 的区别

Delegation 不是长期后台系统。

它适合当前任务里的并行子工作。

Cron 适合定时、持久、无人值守任务。

如果任务需要明天继续跑,不要用 Delegation,应该用 Cron 或后台进程。

下一篇看什么

下一篇看安全边界。

当 Agent 能跑命令、读文件、接外部工具、拉子 Agent 时,安全边界就不能靠“模型自觉”。