Hermes Agent SubAgent 子袋里使用教程:多任务并行处理高效指南
当大型项目同时遭遇代码缺陷、文档错误与性能瓶颈时,难道只能逐一排队处理?若能将不同任务同时交给多个“AI助手”并行执行,效率提升将是指数级的。SubAgent(子袋里)正是Hermes Agent为此而设计的核心能力——通过delegate_task工具,你可以将复杂、并行或需隔离的任务委派给独立的子袋里执行,实现上下文隔离、并行处理,同时让主会话保持轻量化。这套机制在处理多任务时,效率提升绝非一星半点。本文将从核心原理、基础用法、并行任务、高级配置、实战场景到最佳实践,带你全面掌握SubAgent的委派用法。

一、SubAgent 核心原理
1.1 什么是 SubAgent 委派
SubAgent本质上是一个独立隔离的轻量级Agent实例。它由主袋里(即父袋里)通过delegate_task工具创建,拥有自己独立的上下文、终端会话以及受限的工具集。任务执行完毕后,仅将最终摘要返回给主袋里,整个中间过程不会污染主会话的历史记录。
1.2 核心价值
上下文完全隔离——子袋里不继承父袋里的会话历史,因此不会出现上下文膨胀或相互干扰的情况。并行任务处理——默认支持3个子袋里并发运行,多任务效率一目了然。轻量化主会话——仅返回关键结果,主会话的Token消耗大幅降低。模型成本优化——子袋里可指定更廉价的模型,复杂任务的推理成本自然下降。风险隔离——子袋里独立执行,即使出错或出现异常,也不会影响主袋里的正常运行。
1.3 关键特性
无记忆继承——子袋里完全是“空白”的,仅继承父袋里的API密钥和凭证配置。工具集受限——你可以自定义子袋里可用的工具,像递归委派、内存修改这类高风险操作默认禁止。深度限制——默认仅支持1级委派(父→子),防止无限递归。中断传播——主袋里一旦中断,所有活跃的子袋里会同步终止。
图1:SubAgent 委派架构图
graph TBPARENT[主袋里 Parent Agent] -->|delegate_task| CHILD1[子袋里 1
独立上下文 / 工具集]PARENT -->|delegate_task| CHILD2[子袋里 2
独立上下文 / 工具集]PARENT -->|delegate_task| CHILD3[子袋里 3
独立上下文 / 工具集]subgraph "完全隔离 | 仅返回摘要"CHILD1CHILD2CHILD3endCHILD1 -->|最终摘要| PARENTCHILD2 -->|最终摘要| PARENTCHILD3 -->|最终摘要| PARENT
从架构图可以清晰看到,子袋里与主袋里完全隔离。接下来就从最基础的单个任务委派开始,掌握SubAgent的核心用法。
二、基础用法:单个任务委派
单个任务委派适用于独立的任务,比如复杂调试、代码审查、单主题研究等。这种情况下,子袋里会串行执行。
2.1 核心语法
delegate_task(goal="任务目标(清晰具体)",context="任务上下文(完整背景、约束、依赖)",toolsets=["可用工具集"])
2.2 实操示例:代码调试委派
例如,你可以将测试失败调试任务委派给子袋里,隔离执行环境:
delegate_task(goal="调试 test_foo.py 第42行断言失败问题",context="项目路径:~/myproject,Python 3.11。错误:assertEqual 预期200实际500,接口/api/health 响应异常",toolsets=["terminal", "file"])
2.3 关键注意:上下文必须完整
子袋里没有父袋里的历史记录,所以你必须传递必要信息,不能含糊:
❌ 错误:goal="修复接口错误"(缺乏上下文,子袋里无法执行)
✅ 正确:goal="修复/api/health接口500错误" 完整错误日志/项目信息
单个任务委派解决独立问题,但当需要同时处理多个不相关任务时,并行委派就能发挥巨大作用。
三、高级用法:并行批量委派
并行批量委派支持最多3个子袋里同时执行,非常适合多主题研究、多文件重构、多模块审查等并行场景。
3.1 核心语法
delegate_task(tasks=[{"goal="任务1", "context="上下文1", "toolsets=["工具集1"]},{"goal="任务2", "context="上下文2", "toolsets=["工具集2"]},{"goal="任务3", "context="上下文3", "toolsets=["工具集3"]}])
3.2 实操示例:并行技术研究
你可以同时委派3个子袋里,分别研究WebAssembly、RISC-V和量子计算在2025年的进展:
delegate_task(tasks=[{"goal": "研究2025年WebAssembly浏览器与非浏览器支持情况","context": "重点:主流浏览器兼容性、Node.js/wasmtime运行时、语言支持(Rust/Go)","toolsets": ["web"]},{"goal": "研究2025年RISC-V服务器与嵌入式 adoption 现状","context": "重点:服务器芯片厂商、嵌入式生态、软件适配(Linux/RTOS)","toolsets": ["web"]},{"goal": "研究2025年量子计算纠错与实际应用进展","context": "重点:纠错技术突破、金融/材料应用、头部厂商路线","toolsets": ["web"]}])
3.3 并行任务特性
并发限制——默认最大3个,可通过delegation.max_concurrent_children配置调整。结果排序——按任务输入顺序返回,与完成时间无关。进度实时显示——CLI的树状视图会展示各子袋里的工具调用和完成状态。
图2:并行任务执行时序图
sequenceDiagramparticipant 主袋里participant 子袋里1participant 子袋里2participant 子袋里3主袋里->>子袋里1: delegate_task(任务1)主袋里->>子袋里2: delegate_task(任务2)主袋里->>子袋里3: delegate_task(任务3)par 并行执行子袋里1->>子袋里1: 独立研究 WebAssembly子袋里2->>子袋里2: 独立研究 RISC-V子袋里3->>子袋里3: 独立研究 量子计算end子袋里1-->>主袋里: 返回摘要子袋里2-->>主袋里: 返回摘要子袋里3-->>主袋里: 返回摘要Note over 主袋里: 结果按任务输入顺序返回
并行执行使效率直接翻倍,但要充分发挥SubAgent的潜力,还需按需求调整模型、工具集、超时等配置。
四、子袋里配置与优化
4.1 自定义子袋里模型
为子袋里指定更廉价或更轻量的模型,可有效降低成本、提升速度:
# ~/.hermes/config.yamldelegation:model: "google/gemini-flash-2.0"# 子袋里专用模型provider: "openrouter"# 模型提供商
4.2 工具集精细化控制
子袋里默认会禁止高风险工具,你可以根据需要配置可用工具集:
| 工具集 | 适用场景 |
|---|---|
["terminal", "file"] |
代码调试、文件编辑、构建任务 |
["web"] |
研究、文档查询、事实核查 |
["file"] |
只读代码审查、配置分析 |
["terminal"] |
系统运维、进程管理 |
默认被禁止的工具包括:delegation(递归委派)、memory(内存修改)、send_message(跨平台推送)。
4.3 迭代与超时控制
最大迭代——限制子袋里的工具调用次数(默认50),可避免无限循环:
delegate_task(goal="快速检查配置文件",context="查看~/config.yaml语法正确性",toolsets=["file"],max_iterations=10# 限制10轮内完成)
超时时间——默认600秒(10分钟),超时后自动终止:
delegation:child_timeout_seconds: 300# 5分钟超时
4.4 嵌套委派(高级)
默认情况下,子袋里不可递归委派。不过你可以通过role="orchestrator"开启二级委派(最多可达3层):
delegate_task(goal="统筹代码审查与修复",context="管理3个子袋里:审查、修复、测试",toolsets=["terminal", "file"],role="orchestrator"# 允许二级委派)
配置优化完成之后,将SubAgent应用于实际开发,才能真正体现其价值。
五、实战场景示例
5.1 代码审查与修复(串行)
将审查认证模块并修复安全漏洞的任务委派给子袋里:
delegate_task(goal="审查并修复Flask认证模块安全问题",context="项目路径:~/webapp,文件:src/auth/login.py/jwt.py。重点:SQL注入、JWT验证、密码处理,修复后执行pytest测试",toolsets=["terminal", "file"])
5.2 多文件重构(串行)
让子袋里批量替换Python项目中的print为日志模块:
delegate_task(goal="重构src目录所有Python文件,替换print为logging",context="使用logging模块,按日志级别替换,不修改测试文件,重构后执行pytest验证",toolsets=["terminal", "file"])
5.3 系统巡检(并行)
并行委派3个子袋里,分别检查CPU、内存和磁盘状态:
delegate_task(tasks=[{"goal": "检查服务器CPU使用率,超过90%告警", "context": "Linux系统,top命令", "toolsets":["terminal"]},{"goal": "检查内存占用,超过85%告警", "context": "free -h命令", "toolsets":["terminal"]},{"goal": "检查磁盘使用率,超过80%告警", "context": "df -h命令", "toolsets":["terminal"]}])
从这些实战案例可以看出,SubAgent特别擅长需要推理的复杂任务,这与单纯的代码执行工具有本质区别。
六、SubAgent 与 execute_code 区别
| 特性 | SubAgent(delegate_task) | 代码执行(execute_code) |
|---|---|---|
| 推理能力 | 完整 LLM 推理,支持多步决策 | 仅执行脚本,无推理 |
| 上下文 | 独立会话,支持复杂背景 | 无会话,仅脚本执行 |
| 并行性 | 最多 3 个并发 | 单个执行 |
| 适用场景 | 需判断、推理的复杂任务 | 机械式脚本任务 |
| 成本 | 较高(LLM 调用) | 较低(仅执行) |
理解了SubAgent与代码执行的定位差异后,最后总结几项最佳实践,助你用得更加顺手。
七、最佳实践与注意事项
7.1 最佳实践
上下文务必完整——传递目标、背景、约束、依赖,避免模糊描述。模型分层——简单任务用廉价模型,复杂任务用高性能模型。工具集最小化——仅授予必要工具,降低安全风险。并行分组——同类任务并行执行,避免跨类型干扰。结果精简——子袋里返回摘要,减少主会话的冗余信息。
7.2 注意事项
无记忆继承——子袋里完全是空白,不继承父袋里的会话。不可递归——默认禁止子袋里再委派,避免无限循环。中断同步——主袋里中断时,所有子袋里都会终止。结果汇总——仅返回最终摘要,中间过程不会污染主会话。安全隔离——子袋里独立执行,错误不会影响主袋里。
八、总结
SubAgent委派是Hermes Agent多任务处理的核心能力。通过上下文隔离、并行执行和成本优化,它可以高效处理复杂调试、并行研究、批量重构等场景。只要合理配置模型、工具集和迭代限制,再加上完整的上下文传递,就能最大化发挥子袋里的价值,让任务处理效率和主会话的轻量化程度都得到显著提升。
