OpenClaw 企业定制 私人订制工作流 优化运维 openclaw记忆优化 问题咨询解决 请加微信交流
想象一下这个场景:你让AI帮你同时研究三个不同的技术话题,然后把结果汇总起来。正常AI助手只能一个一个来,但Subagent Delegation可以同时让三个AI分身并行工作。
这是Hermes Agent最强大的功能之一。它让你同时处理多个复杂任务,每个任务有独立的AI上下文,互不干扰。这篇讲清楚它是什么、怎么用、以及实际场景。
Subagent是什么
Subagent是Hermes Agent的”分身术”。当你需要一个任务同时做多件事时,可以派生出多个独立的AI子进程。
每个子进程有:
- 独立的对话上下文(完全不知道主对话里之前说了什么)
- 受限的工具集(你可以决定它能用什么工具)
- 独立的终端会话
- 只返回最终总结给主Agent
主Agent派发任务后,各个子任务并行执行,最后汇总结果。
两种模式
单任务模式
delegate_task(
goal="Debug why tests fail",
context="Error: assertion in test_foo.py line 42",
toolsets=["terminal", "file"]
)
并行模式(最多3个)
delegate_task(
tasks=[
{"goal": "Research topic A", "toolsets": ["web"]},
{"goal": "Research topic B", "toolsets": ["web"]},
{"goal": "Fix the build", "toolsets": ["terminal", "file"]}
]
)
超过3个的任务会被截断,这是设计上的权衡,避免资源竞争。
重要:上下文隔离
这是最容易踩坑的地方。
Subagent从零开始,它不知道主对话里之前说了什么。它唯一的上下文来自goal和context参数。
# 错误:Subagent不知道"这个错误"是什么
delegate_task(goal="Fix the error")
# 正确:所有需要的上下文都传进去
delegate_task(
goal="Fix the TypeError in api/handlers.py",
context="File: api/handlers.py line 47. Error: NoneType object has no attribute get. Function process_request() receives dict from parse_body(), but parse_body() returns None when Content-Type is missing. Project at /home/user/myproject, Python 3.11."
)
原则:把Subagent当成一个完全不了解你项目的人来对待。你需要把所有它需要知道的信息都告诉它。
实战场景
并行研究
同时研究三个话题,汇总结果:
delegate_task(
tasks=[
{
"goal": "Research WebAssembly state in 2025",
"context": "Focus on: browser support, non-browser runtimes, language support",
"toolsets": ["web"]
},
{
"goal": "Research RISC-V adoption in 2025",
"context": "Focus on: server chips, embedded systems, software ecosystem",
"toolsets": ["web"]
},
{
"goal": "Research quantum computing progress in 2025",
"context": "Focus on: error correction breakthroughs, practical applications",
"toolsets": ["web"]
}
]
)
三个研究并行跑,5分钟出结果,而不是一个一个跑要15分钟。
代码审查+自动修复
派一个Subagent去做安全审查,发现问题直接修复:
delegate_task(
goal="Review authentication module for security issues and fix any found",
context="Project at /home/user/webapp. Auth files: src/auth/login.py, src/auth/jwt.py, src/auth/middleware.py. Uses Flask, PyJWT, bcrypt. Focus on: SQL injection, JWT validation, password hashing. After fixing, run pytest tests/auth/ to verify.",
toolsets=["terminal", "file"]
)
审查和修复由同一个Subagent完成,它知道改了什么、为什么改,最后给你一个总结报告。
大型重构
想把所有print()替换成logging?这种大型重构放给Subagent处理,不撑爆主对话的上下文:
delegate_task(
goal="Refactor all Python files in src/ to replace print() with proper logging",
context="Project at /home/user/myproject. Use logging module with logger = logging.getLogger(__name__). Replace: print with logger calls. Do not change test files or CLI output. After refactoring, run pytest to verify.",
toolsets=["terminal", "file"]
)
工具集选择
toolsets参数决定Subagent能用什么工具:
| 工具集 | 适用场景 |
|---|---|
| [“terminal”, “file”] | 代码工作、调试、文件编辑、构建 |
| [“web”] | 研究、事实核查、查文档 |
| [“terminal”, “file”, “web”] | 全功能任务 |
| [“file”] | 只读分析,不执行代码 |
| [“terminal”] | 系统管理、进程管理 |
永远被阻止的工具
无论你怎么配置,以下工具Subagent永远不能用:
- delegate_task — 不能递归派生(防止无限循环)
- clarify — 不能和用户交互
- memory — 不能写共享的持久记忆
- send_message — 不能跨平台发消息(如发Telegram)
子任务模型配置
可以在config.yaml里给Subagent单独配置更便宜更快的模型:
# ~/.hermes/config.yaml
delegation:
model: "google/gemini-flash-2.0"
provider: "openrouter"
简单任务用Gemini Flash,省钱。复杂推理任务还是用Claude或GPT-4。
并行执行细节
- 最多3个并发:超过的会被截断
- 实时进度:CLI模式下实时显示各Subagent的执行进度
- 按序返回:结果按任务顺序返回,不管完成先后
- 中断传播:中断主对话时,所有子任务也会被中断
迭代次数限制
每个Subagent有迭代次数限制(默认50次),控制它最多能调用多少次工具:
delegate_task(
goal="Quick file check",
context="Check if /etc/nginx/nginx.conf exists and print its first 10 lines",
max_iterations=10
)
深度限制
Subagent不能再派Subagent。深度限制是2:
- 深度0:主Agent
- 深度1:Subagent
- 深度2:(不允许再派生)
这是为了防止无限递归的派生活动。
和execute_code的区别
| 维度 | delegate_task | execute_code |
|---|---|---|
| 推理能力 | 完整LLM推理循环 | 只是Python代码执行 |
| 上下文 | 全新隔离对话 | 无对话,只有脚本 |
| 工具访问 | 所有非阻止工具+推理 | 7个工具通过RPC,无推理 |
| 并行性 | 最多3个并发 | 单个脚本 |
| 适用场景 | 需要判断的复杂任务 | 机械性数据处理 |
| Token消耗 | 较高(完整LLM循环) | 较低(只返回stdout) |
原则:需要推理、判断、多步骤解决问题的用delegate_task。只需要机械性数据处理或脚本化流程的用execute_code。
一个真实例子
假设你要做一个全面的技术调研,需要:
- 研究竞品A的功能和定价
- 研究竞品B的用户评价
- 研究目标用户的需求
- 写一份综合报告
传统方式:一个个来,1小时起步。
用Subagent:三个研究并行跑,15分钟出初稿。
delegate_task(
tasks=[
{"goal": "Research competitor A features and pricing", "toolsets": ["web"]},
{"goal": "Research competitor B user reviews", "toolsets": ["web"]},
{"goal": "Analyze target user pain points", "toolsets": ["web"]}
]
)
三个Subagent同时工作,主Agent汇总结果,写报告。
常见问题
Subagent挂了怎么办?
返回错误信息告诉你哪个任务失败了,主Agent可以决定重试或换策略。
能开超过3个并行吗?
不能,限制是3个。这是设计上的权衡,避免资源竞争。
Subagent能看到主对话的文件吗?
可以,只要在context里告诉它文件路径,它通过工具集访问。
子任务结果什么时候能看到?
所有子任务完成后,主Agent才收到汇总结果。所以如果某个任务很慢,会等它。
总结
Subagent Delegation让Hermes Agent真正具备了并行处理能力。
核心价值:
- 多任务并行,节省时间
- 上下文隔离,不污染主对话
- 工具集受限,更安全
- 子任务可用便宜模型,省成本
- 适合:并行研究、批量处理、大型重构、安全审查
用它来分解复杂任务,并行处理,效率翻倍。








暂无评论内容