online branch: main

2026-08-01

RSS llms.txt GitHub

【Hermes】子Agent不是分身:隔离才是价值

$
Hermes Agent 子Agent委派与隔离示意图

“调研新特性并更新 README”听起来只有一句话,执行时却可能产生十几次搜索、文件读取和测试。所有过程塞进同一个 messages,父 Agent 很快被局部噪声淹没。

Hermes 的子 Agent 首先是一种上下文隔离机制,其次才是并行和模型降本手段。

这篇只回答一个问题:为什么复杂任务需要子 Agent,以及委派为什么不能等同于无限并行?

Hermes 给出的答案是:父 Agent 把局部任务交给独立上下文执行,只接收最终结果;同时限制子 Agent 的工具、委派深度和预算,避免上下文污染与成本失控。

委派真正解决的是上下文污染

搜索资料、检查测试和修改文件可能属于同一个目标,却不必共享全部中间过程。子 Agent 在独立 messages 中完成局部任务,结束后只把必要结果交回父 Agent。

如果把完整轨迹重新塞回父上下文,隔离价值就消失了。父 Agent 仍然要从大量网页片段和工具输出中找结论,成本与干扰都没有减少。

一次性执行者必须限制副作用

Hermes 不允许子 Agent 再委派,也不允许它修改记忆、直接联系用户或停下来澄清。原因不是子模型能力不足,而是这些动作会改变任务边界或产生持久副作用。

澄清和记忆由父 Agent 统一处理,才能维持一个对外负责人和一个持久状态写入者。并行子任务因此不容易互相覆盖记忆,也不会绕开父 Agent 给出冲突回复。

共享预算比并行数量更重要

如果父 Agent 有 90 次迭代,每个子 Agent 又各拿 90 次,三个并行任务会把上限扩大为数倍。Hermes 让父子共享同一预算,子任务消耗会直接减少父任务剩余额度。

子 Agent 还可以使用更便宜的模型和限额凭据。模型路由能降本,但不能替代预算约束;便宜模型同样可能在错误方向上持续消耗。

等待期间也要保持可见和可控

子 Agent 执行工具时,通过回调把进度推给父 Agent 的显示层。父 Agent 不需要轮询,用户也不必面对长时间沉默。

Gateway 可能把长期无活动的父 Agent 判断为卡死,因此等待子任务时需要心跳更新活动时间。进度用于人类感知,心跳用于系统存活,两者解决的是不同问题。

一次委派任务如何完成

父 Agent 首先调用 delegate_task,把目标和必要上下文交给子 Agent。系统创建一份独立 messages,并移除继续委派、澄清、记忆和直接发消息等工具,避免子任务扩大边界。

子 Agent 可以使用单独配置的模型与凭据,但迭代消耗仍从父 Agent 的共享 budget 扣除。批量委派最多并行三个任务,也不会因此获得三份完整预算。

执行过程中,每次工具调用通过 progress callback 推送到父界面;父 Agent 等待时由心跳维持 Gateway 活跃状态。任务完成后,只把最终回复文本交回父 Agent,中间搜索结果和工具记录留在子上下文。

这条链路说明,委派成功至少需要四个条件:任务可独立验收、上下文真正隔离、副作用受到限制、成本仍有总上限。只实现“并行调用多个模型”,还不能算完整的子 Agent 机制。

三个容易走偏的地方

  • 允许子 Agent 递归委派,任务树和成本迅速失控。
  • 把子 Agent 全部 messages 带回父 Agent,重新制造上下文污染。
  • 给每个子 Agent 独立满额预算,使表面并发变成不可控扩容。

产品经理可以怎样评审

评审这项能力,可以先检查三条:

  1. 判断是否委派,先看子任务能否独立验收,而不是看它是否耗时。
  2. 多 Agent 产品必须有一个统一的对外负责人和持久状态写入者。
  3. 并行收益要与共享预算、结果合并成本和失败处理一起评估。

原材料把批量线程池、心跳细节和凭据路由视为生产优化,本文仅解释其产品意义。