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 直接做”和“可委派子任务”两栏,并为子任务指定最小 toolset:
读取 package.json 的 scripts
分别研究两个独立模块并比较设计
运行一次 npm run build
审查三个互不依赖的目录并汇总结论
再到 /usr/local/lib/hermes-agent 中搜索 delegate_task 的注册位置,确认它作为工具进入父 Agent,而不是一个 Cron job。
完成标准
- 简单读取和单次 build 没有被委派;
- 两个可并行研究任务被拆成独立子任务;
- 每个子任务只分配了完成目标所需的 toolset;
- 为子 Agent 的至少一项结论写出了父 Agent 的复核动作。
多走一步
为“审查三个目录”写一个不超过五行的委派输入,明确 goal、范围、禁止修改和期望 summary,不实际启动子 Agent。
下一篇看什么
下一篇看安全边界。
当 Agent 能跑命令、读文件、接外部工具、拉子 Agent 时,安全边界就不能靠“模型自觉”。