第12篇:子代理委派——AI 的分身术
Hermes 功能详解第12篇:子代理。把大任务拆给多个 AI 并行处理,效率翻倍。
这篇讲的是:如何让 Hermes Agent 同时派出多个“分身”去干活,再把结果汇总给你——就像你同时雇了三个实习生,各干各的,最后交报告。
为什么要用“分身”?
想象一下:你让一个助手去查资料、改代码、做调研。如果它一件一件做,又慢又容易乱。子代理委派(Subagent Delegation)就是让主代理临时创建几个独立的“小代理”,每个小代理有全新的对话记忆,只专注于你交给它的那一件事。干完后,它只把最终结论汇报给主代理,中间过程完全不打扰你。
⚠️ 重要:分身什么都不知道!
小代理的脑子里是空的。它不知道你之前聊了什么,也不知道“那个错误”指的是什么。你必须在派活时,把所有背景信息写清楚。
第1步:派一个分身干单件事
最基础的用法,就是给一个目标(goal)和背景(context):
delegate_task(
goal="调试为什么测试失败",
context="错误信息:test_foo.py 第42行断言失败"
)
注意:背景写得越详细,分身干得越好。下面这个例子就是“坏”和“好”的对比:
# ❌ 坏——分身不知道“那个错误”是什么
delegate_task(goal="修复那个错误")
# ✅ 好——所有信息都给全了
delegate_task(
goal="修复 api/handlers.py 里的 TypeError",
context="""文件 api/handlers.py 第47行报错:
'NoneType' object has no attribute 'get'。
函数 process_request() 从 parse_body() 拿数据,
但 Content-Type 缺失时 parse_body() 返回 None。
项目在 /home/user/myproject,用 Python 3.11。"""
)
第2步:一次派多个分身(并行批处理)
默认最多同时跑 3 个分身(可以改配置)。把任务放在一个列表里就行:
delegate_task(tasks=[
{"goal": "调研主题A", "context": "重点关注近期原始资料"},
{"goal": "调研主题B", "context": "比较主流解释"},
{"goal": "修复构建失败", "context": "项目根目录:/home/user/project"}
])
Hermes 会并行跑这三个任务,全部完成后,把结果按你给的顺序汇总成一条消息发给你。
第3步:给分身换一个更便宜的模型
分身默认用和主代理一样的 AI 模型。如果你想省钱,可以让分身用便宜快速的模型:
# 在 ~/.hermes/config.yaml 里
delegation:
model: "google/gemini-flash-2.0" # 便宜模型
provider: "openrouter" # 可选:换供应商
第4步:控制分身的工作量
- 最大迭代次数:分身最多能调用多少次工具(默认50次)。简单任务可以调小:
delegate_task(
goal="快速检查文件",
context="检查 /etc/nginx/nginx.conf 是否存在,打印前10行",
max_iterations=10 # 简单任务,10次够了
)
- 超时时间:默认没有硬性超时。以前有10分钟上限,结果深度代码审查这种活经常被掐断。现在只要分身还在干活(比如在等模型回复),就不算卡死。只有它完全没动静(不调API、不启动工具)才会被判定为“卡住”。
实用场景举例
并行调研:一次查三个话题(WebAssembly、RISC-V、量子计算),各写各的报告。
代码审查+修复:让分身在一个全新环境里审查登录模块的安全性,发现问题直接改,然后跑测试。
大范围重构:把“把所有 print() 改成 logging”这种会刷爆主代理记忆的活,丢给分身去干,它干完只汇报结果。
小总结
子代理委派就是把大任务拆成小任务,分给多个“失忆”但专注的分身。关键记住两点:背景信息给足、任务描述清楚。这样你就能同时干好几件事,效率翻倍。
下篇预告:分身们干活时,你还能继续和主代理聊天——下一篇讲讲后台任务与消息队列,看看 Hermes 是怎么做到“边聊边干”的。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › getting-started/nix