一口气把3个独立任务交给3个子Agent并行跑,3分钟后收到3份完整报告——这不是科幻,是 Hermes Agent 的 delegate_task 工具。
▲ delegate_task 工作模式:单任务委托 vs 并行批处理
为什么你需要多Agent协作
很多人用 AI Agent 还停留在"一问一答"模式:你提问,Agent 回答。但真实的工作场景是这样的——
你早上打开电脑,需要同时做三件事:调研竞品新功能、修复昨晚测试报的 bug、写一份周报。如果你只能一件一件来,一上午就过去了。如果你的 Agent 也只能一件一件来,效率和你自己动手差不多。
Hermes Agent 的 delegate_task 工具改变了这个局面。它让你像管理一个小团队一样管理你的 AI Agent——分配任务、设定上下文、指定工具集,然后放手让子 Agent 并行工作。你(或者说你的主 Agent)只需要等待结果汇总。
这篇教程会带你从零掌握 delegate_task 的全部用法,包括:单任务委托、并行批处理、代码审查、多文件重构、以及最常见的踩坑场景。
delegate_task 是什么
delegate_task 是 Hermes Agent 内置的工具之一。它会在后台启动独立的子 Agent 实例,每个子 Agent 拥有:
- 完全隔离的对话上下文:子 Agent 不知道父 Agent 之前聊过什么,只能看到你传过去的
goal 和 context - 受限的工具集:你可以精确控制子 Agent 能用哪些工具(web、terminal、file 等)
- 独立的终端会话:每个子 Agent 有自己的工作目录和 shell 环境
- 最终摘要回传:子 Agent 完成工作后,只有结构化摘要回到父 Agent 上下文,中间的几十次工具调用不会污染父 Agent 的上下文窗口
默认最多 3 个子 Agent 并发运行,可以通过配置调高(没有硬上限)。
快速上手:单任务委托
最简单的用法——把一件事交给子 Agent,你继续做别的:
delegate_task(
goal="Debug why tests fail",
context="Error: assertion in test_foo.py line 42",
toolsets=["terminal", "file"]
)
这里有两个关键参数:
goal:一句话描述要完成什么。子 Agent 的系统提示会围绕这个目标构建。
context:子 Agent 需要的所有上下文。文件路径、错误信息、项目结构、约束条件——全部写在这里。子 Agent 对父 Agent 的历史对话一无所知,漏掉任何信息都会导致它"瞎猜"。
常见错误:
# ❌ 错误:context 太空泛,子Agent根本不知道"the error"是指什么
delegate_task(goal="Fix the error")
# ✅ 正确:把完整的错误信息和上下文传过去
delegate_task(
goal="Fix the TypeError in api/handlers.py",
context="""The file api/handlers.py has a TypeError on line 47:
'NoneType' object has no attribute 'get'.
The function process_request() receives a dict from parse_body(),
but parse_body() returns None when Content-Type is missing.
The project is at /home/user/myproject and uses Python 3.11."""
)
踩坑提醒:新手最容易犯的错误就是把 context 写得太简略。记住——子 Agent 是"失忆"的,它不知道你刚才在聊什么。文件名、行号、错误堆栈、项目路径,能写多详细就写多详细。
进阶实战:并行批处理
这才是 delegate_task 真正发光的地方。一次性派发多个任务,它们会并行执行:
delegate_task(tasks=[
{
"goal": "Research the current state of WebAssembly in 2026",
"context": "Focus on: browser support, non-browser runtimes (Wasmtime, Wasmer), WASI progress, cloud/edge use cases",
"toolsets": ["web"]
},
{
"goal": "Research RISC-V server chip adoption in 2026",
"context": "Focus on: server chips shipping now, cloud providers adopting, software ecosystem maturity",
"toolsets": ["web"]
},
{
"goal": "Fix the build error in the CI pipeline",
"context": "The project is at /home/user/myapp. CI log shows 'ModuleNotFoundError: No module named 'src.utils'' in the test step. Check setup.py and imports.",
"toolsets": ["terminal", "file"]
}
])
三个任务同时启动:
- 子Agent A 在搜索 WebAssembly 最新动态
- 子Agent B 在研究 RISC-V 芯片进展
- 子Agent C 在修 CI 构建错误
3 分钟后,父 Agent 收到三份结构化摘要,可以继续下一步——比如基于前两份研究写报告,同时确认 CI 已修复。
实战场景一:代码安全审查
代码审查是最适合 delegate_task 的场景——让一个"不带偏见"的新 Agent 审视你的代码:
delegate_task(
goal="Review the authentication module for security issues and fix any found",
context="""Project at /home/user/webapp.
Auth module files: src/auth/login.py, src/auth/jwt.py, src/auth/middleware.py.
The project uses Flask, PyJWT, and bcrypt. Python 3.11.
Focus on: SQL injection, JWT validation, password handling, session management.
Fix any issues found and run the test suite (pytest tests/auth/ -v).""",
toolsets=["terminal", "file"]
)
子 Agent 会:
- 逐个读取 auth 模块文件
- 检查 SQL 注入风险、JWT 验证逻辑、密码哈希方式
- 修复发现的问题
- 运行测试套件确认没有引入新 bug
- 返回完整的审查摘要
这在真实团队中的价值在于:你不需要另一个工程师来做 code review,子 Agent 就是一个免费的审查员。
▲ delegate_task 四大实战场景:安全审查、方案对比、代码重构、并行拆分
实战场景二:多方案对比评估
面对技术选型,让三个子 Agent 各自深入研究一种方案,然后你来做决策:
# 在主Agent对话中说:
"我需要为 Django 项目添加全文搜索。请用 delegate_task 并行评估三种方案:
1. PostgreSQL tsvector(内置)
2. Elasticsearch via django-elasticsearch-dsl
3. Meilisearch via meilisearch-python
对每种方案评估:搭建复杂度、查询能力、资源消耗、维护成本。最后给出推荐。"
Hermes 主 Agent 会自动构造三个 delegate_task 调用,每个子 Agent 独立研究一种方案。因为它们互不干扰,每个评估都是独立的,不存在"先入为主"的问题。
父 Agent 收到三份摘要后,综合对比给出推荐。这个过程在传统团队里需要开一个小时的会,在这里只需要 5 分钟。
实战场景三:大规模代码重构
当你面对"把整个 src/ 目录里的 print() 替换成 logging"这种机械但容易出错的任务时:
delegate_task(
goal="Refactor all Python files in src/ to replace print() with proper logging",
context="""Project at /home/user/myproject.
Use the 'logging' module with logger = logging.getLogger(__name__).
Replace print() calls with appropriate log levels:
- print(f"Error: ...") -> logger.error(...)
- print(f"Warning: ...") -> logger.warning(...)
- print(f"Debug: ...") -> logger.debug(...)
- Other prints -> logger.info(...)
Don't change print() in test files or CLI output scripts.
Run pytest after to verify nothing broke.""",
toolsets=["terminal", "file"]
)
子 Agent 会遍历所有 Python 文件,识别 print() 调用,按规则替换为对应的 logging 级别,然后运行测试。关键是——这些中间步骤的几十行输出不会塞满你的上下文窗口,最终你只看到:"重构完成,修改了 23 个文件,127 处替换,所有测试通过。"
实战场景四:拆分重构到多个子Agent
对于大型重构,可以把不同模块分给不同子 Agent 并行处理:
delegate_task(tasks=[
{
"goal": "Refactor all API endpoint handlers to use the new response format",
"context": """Project at /home/user/api-server.
Files: src/handlers/users.py, src/handlers/auth.py, src/handlers/billing.py
Old format: return {"data": result, "status": "ok"}
New format: return APIResponse(data=result, status=200).to_dict()
Import: from src.responses import APIResponse
Run tests after: pytest tests/handlers/ -v""",
"toolsets": ["terminal", "file"]
},
{
"goal": "Update all client SDK methods to handle the new response format",
"context": """Project at /home/user/api-server.
Files: sdk/python/client.py, sdk/python/models.py
Old parsing: result = response.json()["data"]
New parsing: same key but add status code checking
Also update sdk/python/tests/test_client.py""",
"toolsets": ["terminal", "file"]
}
])
两个子 Agent 同时工作——一个改后端 handler,一个改客户端 SDK。传统做法是先改后端再改客户端,串行耗时翻倍。
子Agent上下文管理:你必须知道的事
这是整个 delegate_task 中最容易被忽视但最重要的部分。
子 Agent 的上下文是完全空白的。它不记得:
- 你之前和主 Agent 讨论过的内容
- 你项目的目录结构
- 你用的编程语言版本
- 任何前置讨论
所以,context 参数不是你"顺便提一句"的地方——它是子 Agent 的全部信息来源。
写 context 的铁律:
✅ 文件路径:完整绝对路径
✅ 错误信息:完整堆栈,不要摘要
✅ 项目技术栈:语言版本、框架、关键依赖
✅ 约束条件:什么不能改、什么特殊处理
✅ 验证方式:跑什么测试、检查什么输出
❌ "修一下那个 bug"——哪个bug?
❌ "改一下格式"——什么格式?
❌ "和上次一样"——子Agent没有"上次"
配置技巧
▲ 子Agent上下文管理铁律:错误做法 vs 正确做法对比
调整并发数
默认 3 个并发。如果你的任务都很轻量(比如都是纯搜索),可以考虑调高:
# ~/.hermes/config.yaml
delegation:
max_concurrent_children: 5
环境变量方式:DELEGATION_MAX_CONCURRENT_CHILDREN=5
为子Agent指定更便宜的模型
重任务留给主 Agent,轻任务(搜索、简单格式转换)派给便宜的模型:
# ~/.hermes/config.yaml
delegation:
model: "google/gemini-flash-2.5"
这样你的研究类子 Agent 用 Gemini Flash(极低成本),代码修改类子 Agent 还是用主 Agent 的模型。
常见踩坑
坑1:context 写得太简略
症状:子 Agent 返回"I cannot find the file"或"unable to determine the error"。
解法:context 里必须包含文件路径、错误堆栈、项目根目录。宁可多写不要少写。
坑2:忘记指定 toolsets
症状:子 Agent 返回"I don't have access to the tools needed"。
解法:需要读文件就加 "file",需要执行命令就加 "terminal",需要搜索就加 "web"。
坑3:并发任务访问同一文件
症状:两个子 Agent 同时改同一个文件,后完成的覆盖了先完成的。
解法:拆分任务时确保不同子 Agent 操作不同文件。如果真的需要改同一文件,用单任务模式而非并行批处理。
坑4:子Agent上下文污染主Agent
不用担心。delegate_task 只返回结构化摘要,子 Agent 中间的几十次工具调用完全不会进入父 Agent 的上下文窗口。这也是它的核心设计优势之一。
坑5:把 delegate_task 和 cron job 搞混
delegate_task 是把一个任务派给子 Agent 立即执行,适合需要等结果的场景(代码审查、研究、重构)。
terminal(background=True, notify_on_complete=True) 是启动一个后台进程,适合长时间运行的构建、部署、测试套件。
cron 是定时任务,适合每天自动执行的重复工作(日报、数据采集、备份)。
三者用途不同,不要混用。
什么时候不该用 delegate_task
虽然 delegate_task 很强大,但不是所有场景都适合:
- 简单的一行命令:
terminal("ls -la") 比 delegate_task 快得多 - 需要紧跟对话流的任务:子 Agent 不知道你在聊什么,如果任务高度依赖对话历史,直接在父 Agent 里做
- 需要人工确认的操作:子 Agent 不会中途问你"这样可以吗",它只会按指令执行到底。如果有决策需要你参与,不要委托
- 需要读写父Agent上下文记忆的任务:子 Agent 无法访问
memories/ 目录
完整的每日工作流示例
假设你是一个独立开发者,每天早上需要:
- 查看 GitHub Issues 和 PR 动态
- 阅读 AI 行业最新新闻
- 检查生产环境日志是否有异常
用 delegate_task 一步搞定:
delegate_task(tasks=[
{
"goal": "Check GitHub notifications and summarize important items",
"context": "Repository: myorg/myapp. Check open issues, recent PRs, and any mentions. Summarize in 5 bullet points max.",
"toolsets": ["web"]
},
{
"goal": "Catch up on AI industry news from the last 24 hours",
"context": "Focus on: LLM releases, AI agent frameworks (Hermes Agent, OpenClaw, Claude Code), MCP ecosystem updates, AI regulation news.",
"toolsets": ["web"]
},
{
"goal": "Check production logs for errors in the last 12 hours",
"context": "SSH into prod-server (ssh prod-server). Check /var/log/app/error.log for entries in the last 12 hours. Summarize any critical errors.",
"toolsets": ["terminal"]
}
])
3 分钟后你得到三份报告,一天的工作优先级一目了然。
总结
delegate_task 是 Hermes Agent 从"一个聪明的助手"进化为"一个能管理团队的操作系统"的关键工具。核心要点:
- context 是子Agent的全部世界——写得越详细,结果越好
- 并行批处理是效率倍增器——3 个任务同时跑,不是 3 倍速,而是 3 个独立工作者
- 子Agent不污染父Agent上下文——中间步骤静默执行,只回传摘要
- 为不同任务选择不同模型——省钱的同时不牺牲质量
- 划分好任务边界——不同子Agent操作不同文件,避免冲突
动手试试:打开 Hermes Agent 终端,输入"帮我把 src/ 目录所有 Python 文件的 TODO 注释收集到一个文件里",看看 delegate_task 是怎么自动分解和执行这个任务的。
*本文由AI辅助创作,经人工审核编辑发布*
#AI创业 #Agent工坊 #HermesAgent #多Agent协作 #一人公司
本文由AI辅助创作,经人工审核编辑发布