Hermes Orchestrator(编排器)— 完整手册
Orchestrator 是 Hermes 的"大脑",收到复杂任务时自动判断要不要拆解、怎么拆、派发给谁。
一、为什么需要 Orchestrator
没有 Orchestrator 时,Agent 只有一个会话、一条线:
你:帮我把登录系统做完
↓
Agent:好的
→ 先写界面(30s)
→ 再写网络层(30s)
→ 再写服务端(60s)
总共耗时:120s 串行
↓
你:干等着它一个个做
有 Orchestrator 时:
你:帮我把登录系统做完
↓
Orchestrator:
"这个任务可以拆成 3 个互不依赖的子任务"
↓
并发派发:
Worker A → 写界面 (30s)
Worker B → 写网络层 (30s) ← 同时进行
Worker C → 写服务端 (60s)
总共耗时:60s(最慢的那个)
↓
收集结果 → 汇报
时间节省:120s → 60s,而且你不用参与中间过程。
二、Orchestrator 的判断逻辑
收到一个任务时,Orchestrator 的工作流程:
收到任务
↓
是否开启编排?(orchestrator_enabled)
├── 否 → 当作普通任务,自己不拆,单线程做
└── 是 → 判断能否分解
↓
有 auto_decompose?
├── 否 → 等待你用 writing-plans 告诉它怎么拆
└── 是 → 自动分析任务,决定:
│
├── 太简单(改个变量名)→ 不拆,自己直接做
├── 中等(改一个模块)→ 拆 2-3 个子任务
└── 复杂(重构整个项目)→ 拆多个子任务 + 分批派发
↓
派发给 worker(最多 max_concurrent_children 个)
三、配置详解
# ~/.hermes/config.yaml
delegation:
orchestrator_enabled: true # 是否启用编排
# true → 自动拆解大任务
# false → 所有任务单线程做
max_concurrent_children: 3 # 同时最多几个子任务并行
# 设置太大:API 并发超限
# 设置太小:串行效率低
# 3 是平衡值
max_async_children: 3 # 后台异步子任务上限
# 和上面的区别:
# concurrent = 你还在对话中
# async = 你切去做别的事了
max_spawn_depth: 1 # 子任务能不能再拆孙子任务
# 0 = 不拆
# 1 = 子任务不能再拆
# 2 = 子任务可以拆孙子任务
# 防止无限递归
child_timeout_seconds: 0 # 子任务超时时间
# 0 = 不限时
# 3600 = 1 小时没做完强制终止
subagent_auto_approve: false # 子任务操作是否自动批准
# false → 每个子任务操作需要你确认
# true → 子任务自己决定,不打扰你
max_iterations: 50 # 单个任务的总体迭代次数上限
# 防止死循环
orphan_timeout: 300 # 子任务失联后多久判定为孤儿(秒)
# 仅 gateway 模式有效
和 Claude Code 的对比
| 场景 | Hermes Orchestrator | Claude Code |
|---|---|---|
| 拆任务 | 自动拆(auto_decompose) | 你手动写 writing-plans |
| 并发 | 内建,自动 3 个并发 | 你手动调 Agent()、parallel() |
| 结果审查 | Verifier 自动审查 | 你手动 review |
| 结果合并 | Synthesizer 自动合并 | 你手动合并 |
| 失败重试 | 自动(failure_limit=2) | 你手动处理 |
| 最适场景 | 说一句话,全自动执行 | 你参与决策,精细控制 |
四、实际使用方式
方式 1:完全自动(推荐)
什么都不用配置,直接说:
重构战斗系统的核心逻辑,包括状态机、AI、伤害计算
Hermes 自动判断能不能拆、怎么拆、并发跑。
方式 2:指定 worker profiles
如果有多台机器的 Hermes 实例:
# ~/.hermes/profiles/client.yaml → 客户端开发机器
# ~/.hermes/profiles/server.yaml → 服务端开发机器
帮我把登录系统做了,客户端部分用 client profile,服务端部分用 server profile
方式 3:和 Kanban Swarm 配合
hermes kanban swarm "实现登录系统" \
--worker client:登录界面 \
--worker server:登录接口 \
--verifier senior-dev \
--synthesizer lead-dev
Kanban 上会看到 5 张卡片(3 Worker + 1 Verifier + 1 Synthesizer),Orchestrator 控制执行顺序。
五、常见问题
Q: Orchestrator 能编排 Claude Code 吗?
不能。Orchestrator 只能在 Hermes 自己的 profiles 之间编排。如果需要编排 Claude Code,需要通过 Nacos 或共享看板的方式间接协作。
Q: 自动拆错了怎么办?
auto_decompose: true 不一定每次拆得对。可以显式关闭自动拆解:
auto_decompose: false
然后你自己用 writing-plans 输出方案让 Hermes 执行。
Q: 子任务做一半失败了?
failure_limit=2:同一任务重试 2 次还是失败,就标记 Failed 并通知你。你修复后手动 promote 重新执行。
Q: 3 个并发不够?
max_concurrent_children: 5
但注意 API 并发限制,一般 3 是安全值。
六、Orchestrator 执行过程(有 Kanban 时)
Orchestrator 检测到看板上有新任务
↓
Kanban: Todo → In Progress(标记为有人在做)
↓
子任务拆分
↓
每个子任务创建为独立卡片,建立依赖关系
↓
子任务 Ready → worker claim → 执行
↓
worker 完成 → Kanban: Done
↓
依赖该子任务的其他子任务自动变为 Ready
↓
所有子任务 Done
↓
父任务 Done
评论
评论功能即将上线,敬请期待。