14 · 怎样把独立研究交给 Delegation 子代理
并行可以节省等待时间,但不会替你补上下文,也不会自动保证结论正确。
这是第一篇高级选修。你会让两个子代理分别研究 Hermes 的 Cron 与 Delegation 官方页面,再由父 Agent 比较两者的适用场景。练习只读公开资料,不写文件、不登录账号,并把并发限制在两个子任务。
看完会得到什么
- 一次包含两个独立子任务的 Delegation
- 两份只从指定官方页面提取的研究摘要
- 一份由父 Agent 复核并整理的 Cron / Delegation 选择表
- 一套控制上下文、并发、费用、停止和验收的方法
开始前
- 预计时间:20—35 分钟,取决于模型速度与网页访问
- 前置课程:建议完成 06 任务说明、08 工具与 toolsets、10 排错与恢复
- 已验证日期:2026-07-18
- 已实测环境:Hermes Agent 0.18.2,Linux x86_64;本地
hermes tools list可识别delegationtoolset - 官方事实范围:已对照当日 Subagent Delegation 官方文档;默认并发、深度、阻止工具和后台行为属于易变化事实,使用前应重新核对
- 输入位置:系统终端与 Hermes CLI / Desktop 对话框
- 本篇会修改:当前会话记录,并产生额外模型调用与子代理运行记录
- 本篇不会修改:项目文件、Memory、Skills、Cron job、配置文件、账号或外部系统
先认识本篇术语
| 术语 | 中文直觉 | 本篇用途 |
|---|---|---|
| Delegation | 把一个可独立完成的子问题交给另一个 Agent | 并行研究两个不同官方页面 |
| Parent agent | 接收用户目标、分派并最终验收的父 Agent | 负责写清上下文、比较结果和交付 |
| Subagent | 拥有独立上下文和工具会话的子代理 | 各自完成一项聚焦研究 |
| Isolated context | 子代理看不到父会话历史 | 所需背景必须放进 goal 与 context |
| Batch | 一次提交的多个并行子任务 | 本篇只提交两个,便于控制成本 |
| Concurrency | 同时运行的子代理数量上限 | 并发过高会放大费用、请求压力和副作用风险 |
| Final summary | 子代理返回父 Agent 的最终摘要 | 它是自述,不是自动验证过的事实 |
先看流程
子代理不共享父会话,也不互相共享过程。它们只根据分派时收到的目标和上下文工作;父 Agent 最后必须把两份结果放回同一标准下比较。
Delegation 适合什么,不适合什么
适合:
- 两个以上互不依赖、都需要阅读和判断的研究子题;
- 大型代码审查、资料梳理等会淹没父会话上下文的工作;
- 需要不同角度独立分析,最后再汇总的任务。
不适合:
- 一次简单查找或一个工具调用;
- 后一步必须等待前一步输出的严格串行任务;
- 机械、确定的数据处理,脚本或
execute_code更合适; - 子任务需要随时向用户追问;官方文档说明子代理不能使用
clarify; - 必须在父进程重启后继续的工作;运行中的 Delegation 不是持久任务。
“任务很大”不是唯一判断。关键是能否拆成上下文完整、彼此独立、结果可验收的判断任务。
第一步:确认父会话具备最小工具
在系统终端运行:
hermes tools list- 输入位置:系统终端
- 读取或修改:只读取当前平台的 toolsets 状态
- 成功判断:当前要使用的平台能提供
delegation;本篇研究公开网页还需要网页读取能力 - 失败先查:运行
hermes tools --help,再通过 Hermes 的工具配置入口为正确平台启用所需最小 toolsets
工具变更通常需要新会话或重启相应入口才能生效。不要在同一会话中看到旧工具列表后,假设刚改的配置已经注入模型。
本篇只需要:
- Delegation:创建子代理;
- Web:读取两个指定官方页面。
不需要文件写入、终端执行、消息发送、Memory 或 Cron 管理。子代理继承父 Agent 已启用的工具边界,模型不能通过 Delegation 自行扩大权限。
第二步:理解“子代理什么都不知道”
下面的分派不合格:
让两个子代理分别研究刚才说的两个功能。子代理看不到“刚才”。官方文档明确说明,它们从新会话开始,只收到 Delegation 调用中的 goal 和 context。因此每个子任务至少要有:
- 明确问题;
- 唯一或有限的来源;
- 截止日期;
- 输出结构;
- 禁止动作;
- 事实与推断的区分方式;
- 失败时如何报告。
如果这些信息只存在于父会话,子代理就会缺上下文,或者自行扩大研究范围。
第三步:在 Hermes 对话中提交有边界的并行研究
从 CLI 或 Desktop 开始一个新会话,复制下面的完整任务:
请使用 Delegation,并行创建且只创建 2 个 leaf 子代理,完成下面两个互不依赖的只读研究任务。不要创建 orchestrator,不要嵌套委派。
子任务 A:
- 只读取 Hermes 官方 Cron 页面:
https://hermes-agent.nousresearch.com/docs/user-guide/features/cron
- 截止事实日期:2026-07-18。
- 输出:3 个“适合 Cron”的条件、2 个不适合条件、停止或恢复方式、页面 URL。
- 把官方页面明确陈述标为“事实”;把你的归纳标为“推断”。
子任务 B:
- 只读取 Hermes 官方 Delegation 页面:
https://hermes-agent.nousresearch.com/docs/user-guide/features/delegation
- 截止事实日期:2026-07-18。
- 输出:3 个“适合 Delegation”的条件、2 个不适合条件、停止或恢复方式、页面 URL。
- 把官方页面明确陈述标为“事实”;把你的归纳标为“推断”。
共同限制:
- 不登录任何账号;
- 不读取其他网页或本地文件;
- 不写文件、不改配置、不创建 Cron job;
- 如果指定页面无法读取,报告失败,不用其他来源补齐;
- 每个子代理最多给出 250 字中文摘要。
两个子代理都返回后,由父 Agent 完成:
1. 逐项检查摘要是否包含指定页面 URL;
2. 对冲突或无法从来源确认的内容标记“不确定”;
3. 输出一个两列表格:“何时选 Cron / 何时选 Delegation”;
4. 最后给出本次实际创建的子代理数量、是否发生嵌套、是否修改文件。这段任务把“独立研究”和“父级验收”分开。两个子代理只负责各自来源,父 Agent 才负责比较。
第四步:观察后台运行,而不是反复催促
官方文档当前说明,顶层 delegate_task 会在支持后续交付的会话中自动后台运行:Hermes 先返回 handle,完成后把结果作为新消息带回。不同界面显示方式可能不同,不要把“先收到 handle”误判成任务已经完成。
在交互会话中可以输入:
/agents- 输入位置:Hermes 交互式对话,不是系统 shell
- 读取或修改:查看当前会话拥有的子代理状态;不创建新任务
- 成功判断:能看到两个子代理或它们的完成状态;不同 CLI / TUI 的展示形式可能不同
- 失败先查:输入
/help或查看官方斜杠命令页面,确认当前界面支持的命令
普通跟进消息不会必然取消后台子代理。等待结果时不要再次提交同一批任务,否则可能重复产生模型费用。
第五步:按四层验收,而不是相信“研究完成”
1. 数量与结构
- 实际只创建了两个子代理;
- 两个都是 leaf;
- 没有子代理继续委派;
- 每个摘要都在约定长度内。
官方文档当前说明,Delegation 默认是扁平结构;只有显式使用 orchestrator 且提高深度配置,子代理才可能继续委派。本篇没有这个必要。
2. 来源范围
两份摘要必须分别给出指定的官方 URL。若摘要出现第三方博客、代码仓库 Issue 或其他网页内容,说明超出本篇来源范围。
3. 事实准确
至少回到两个官方页面抽查:
- Cron 是持久调度,job 可暂停、恢复和删除;运行使用 fresh session;
- Delegation 子代理使用隔离上下文;只有最终摘要进入父上下文;运行中的 child 不会因为父进程重启而自动恢复;
/stop或关闭 / 重置拥有该任务的会话会取消其运行中的后台 children。
页面表述变化时,以当日官方文档为准,不以本教程句子为永久事实。
4. 选择结论
合格的父级比较应表达:
- 选 Cron: 重点是“未来某个时间或按周期再次运行”,任务需要脱离当前对话被调度,并且要有暂停、恢复和删除生命周期。
- 选 Delegation: 重点是“现在把可独立判断的子问题并行处理”,结果回到当前父任务中汇总。
- 都不选: 只有一个简单工具调用,或只是确定性脚本处理。
两者可以组合,但组合会增加成本和恢复复杂度,不是本篇练习范围。
权限检查
本篇会访问:
- 两个指定的 Hermes 官方公开页面;
- 当前父会话和两个子代理会话;
- 配置的模型服务,并产生父 Agent 与子代理模型调用。
可以批准:
- 两个只读、来源固定、输出有限的 leaf 子代理;
- 父 Agent 对摘要做来源复核与比较;
- 使用
/agents查看状态。
需要停下来确认:
- 子代理要写文件、改代码、发送消息或登录账号;
- 任务数量超过预期并发,或开始嵌套委派;
- 子任务要求读取主目录、凭据或与研究无关的数据;
- 子代理提出外部发布、删除、支付或生产修改;
- 费用已经超出预算,但仍不断增加子代理重试。
不应输入的信息:API key、密码、私钥、客户资料,以及子任务不需要的父会话隐私背景。
并发、成本与副作用
官方文档在 2026-07-18 说明默认并发上限为 3,可由配置调整。本篇只用 2,不是因为 3 不安全,而是两个来源已经能展示并行,且更容易验收。
并发会放大三类成本:
- 模型成本: 每个子代理都有独立推理循环;
- 请求压力: 多个子代理可能同时访问服务;
- 副作用风险: 如果允许写入或外发,多个独立 Agent 可能同时改变环境。
因此先用只读任务练习。将来需要写操作时,给每个子代理互不重叠的目录或对象,并由父 Agent 实际读取文件、运行测试或检查远端状态。子代理声称“已修改”只是自述,不能替代验证。
怎样停止
要取消当前会话拥有的后台子代理,在 Hermes 交互会话输入:
/stop也可以关闭或重置拥有该任务的会话。官方文档当前说明,这会取消该会话仍在运行的后台 children;已经发生的网页访问或外部副作用不会因此撤销。
如果界面提供 /agents 控制,可针对单个子代理操作;具体能力以当前界面帮助为准。不要为了停止一个研究任务直接结束不相关的 Gateway 或其他 profile。
怎样恢复
必须区分两种情况:
- 子代理已经完成,只是结果尚未交付: 官方文档说明,完成事件会记录到 profile 状态中,并尝试恢复交付。
- 子代理运行时 Hermes 进程消失: 运行本身不会从中断点继续,状态可能记为 unknown。由于无法证明外部副作用是否发生,先检查来源、文件或远端状态,再决定是否重跑。
本篇是只读研究,恢复相对简单:确认没有重复结果后,重新提交失败的单个子任务,而不是无条件重跑整个 batch。
必须跨进程、跨重启持续运行的任务,应考虑 Cron 或受管理的后台进程,而不是把 Delegation 当作持久队列。
出错时按这个顺序查
找不到 delegation toolset
- 运行
hermes tools list; - 确认你配置的是当前使用的平台,而不是另一个入口;
- 启用后开始新会话或重启对应服务;
- 再对照官方 Tools 与 Delegation 页面。
子代理说“不知道刚才的内容”
这是上下文缺失,不是记忆故障。把必要背景、路径、错误、来源、限制和输出格式写进该子任务的 goal/context,只重跑失败的任务。
子代理访问了其他来源
父 Agent 应标记越界,不把该摘要纳入结论。收紧“只读取”的来源列表,再单独重试。
两份摘要互相冲突
回到各自官方页面核对原句。检查是否把“事实”和“推断”混在一起,或比较的是不同生命周期。无法确认时写“不确定”,不要用多数投票决定产品事实。
子代理长时间没有进展
用 /agents 查看状态。确认成本与必要性后,取消无进展的 child。官方文档当前说明默认没有 Delegation 级墙钟超时,主要由迭代预算和进度监测约束;不要假设等待固定分钟后一定自动终止。
结果说已修改文件
本篇禁止写文件。立即检查工具记录与工作目录;如果确有越界写入,先停止,不让子代理“顺手修复”,再按版本控制或备份恢复。
为什么最后验收属于父 Agent
隔离上下文能减少无关信息,也意味着子代理不了解完整决策标准。把最终比较留给父 Agent,才能使用同一套条件处理两份摘要,并把冲突、缺失和来源问题暴露出来。
多代理系统的可靠性不来自“多几个模型互相同意”,而来自清楚分工、独立证据和最后一层真实验证。
本篇作品
保存父 Agent 的最终回复,其中应包含:
- 两份不超过 250 字的子代理摘要;
- 每份摘要对应的官方 URL;
- “事实 / 推断 / 不确定”标记;
- “何时选 Cron / 何时选 Delegation”两列表格;
- 实际子代理数量、是否嵌套、是否修改文件的运行说明。
若要截图,裁掉 session ID、模型凭据、个人路径和其他会话内容。
本篇验收
- [ ] 当前平台的
delegation与网页能力已确认 - [ ] 只创建了两个独立 leaf 子代理,没有嵌套委派
- [ ] 每个子任务都包含完整来源、日期、限制和输出结构
- [ ] 两份摘要都给出指定官方 URL,并区分事实与推断
- [ ] 父 Agent 对冲突或无法确认内容标记“不确定”
- [ ] 最终选择表正确区分“现在并行处理”和“未来持久调度”
- [ ] 能说明并发怎样放大模型成本、请求压力和副作用
- [ ] 知道
/stop取消运行,不会撤销已经发生的外部影响 - [ ] 知道运行中的子代理不会在进程重启后自动续跑
- [ ] 没有写文件、改配置、创建 Cron job 或登录账号
下一篇
下一篇会学习 Profiles:为工作、个人或不同机器人建立隔离身份,并检查配置、会话、Memory、Skills 和凭据的边界。Delegation 是一次任务内的分工,Profile 则是长期身份与状态的隔离。