Hermes Agent

Hermes Agent Kanban 多 Agent 编排教程

Hermes Agent Kanban 是可持久化、可恢复、可审计的多 Agent 工作队列,适合跨轮次协作;短暂推理子任务仍可使用 delegate_task。页面对比两种原语的生命周期、状态、人工介入和失败恢复,帮助你判断什么时候该从一次委派升级为看板任务。查看完整拆解与风险提醒。便于后续检查。

自动化 高级

📚 系列导航:上一篇 Hermes Agent 使用入口指南 已经讲清“CLI、桌面 App 与 Web Dashboard 使用入口”;本篇聚焦 Hermes Agent Kanban ;下一篇 Hermes Agent Swarm 调度指南 继续学习“Swarm 与子 Agent 调度原理”。

先给结论:短任务用 delegate_task,需要跨轮次、可恢复、可审计的协作才用 Kanban。 前者像一次函数调用,后者像持久工作队列。两者不是替代关系,而是不同粒度的原语。

ℹ️ 版本说明: 原稿基于 Hermes Agent v0.16.0(2026 年 6 月)源码整理。本文保留其版本化机制分析;命令、数量和界面请以 Hermes Agent 官方文档 与本地输出为准。

delegate_task 的适用范围

翻回两个月前的旧书,Hermes 的多 Agent 那一章其实挺单薄。它只有一个原语,叫 delegate_task 。

机制很好懂:父 Agent fork 出一个短命的子 Agent,把任务丢过去,然后阻塞着等返回。子 Agent 在隔离的会话里跑完,吐一段 summary 回来,然后就消失了。最多三个并发。能让不同子 Agent 用不同模型,推理用强模型、搜索用快模型,也就到此为止了。

这是个标准的 fork-join 结构。适合短的、自包含的推理子任务。但它撑不起社区里越来越常见的那几种活:一个要跑几小时的工程流水线、一个每天早上自动出日报的循环、一个你想给它起个名字、养上几个月的持久助理。这些都需要「活过单次 API 调用」的东西, delegate_task 给不了。

Hermes Kanban 的最初设计边界

2026 年 4 月 25 日,Nous Research 在仓库里放了一份 PDF,叫 Hermes Kanban v1 spec。我第一次读到它的扉页时,是有点意外的。

扉页的 Abstract 上,几句话写得斩钉截铁:

设计文档原文(扉页):Status: DESIGN ONLY. No implementation accompanies this document. / The kernel requires no changes to run_agent.py , no new core tools.

翻译过来:这只是设计,没有任何实现跟着它。这个内核不需要改动 run_agent.py 一行,不需要任何新的核心工具。

整份 spec 的调性都是这种克制到近乎洁癖的极简主义。它把内核的边界画得清清楚楚,恨不得用尺子量过:

维度 v1 设计文档的承诺

状态机 恰好 6 个状态:todo / ready / running / blocked / done / archived

数据库表 原文写「exactly four tables」,恰好 4 张

新增核心工具 零。一个都不许加

CLI 命令 一个子命令

其余 一个 skill、一个 cron job,完事

spec 里那个 dispatcher(调度器)也被设计得故意「笨」。它只干三件事:重新算哪些任务 ready 了、用 CAS 原子地认领一个任务、spawn 出一个 worker 进程。不做智能路由,不做预算,不做审批。所有聪明的活都推给上层的 profile 和插件去干。

这是一份很漂亮的设计。问题是,它没能管住自己。

Hermes Kanban 从设计到落地的变化

到了 v0.16.0,我把实际 shipped 出来的代码和这份 spec 逐条对了一遍。落差大到有点好笑。

💡 推荐

设计文档说:6 状态·4 张表·0 新工具·1 个 CLI 子命

⚠️ 不推荐

落地代码是:9 状态·7 张表·一整套 kanban_*工具集 · 30+个 CLI 子命令

每一条都被突破了。状态机多出了三个: triage (人随手丢个粗想法进来)、 scheduled (等时间不等人的任务)、 review (评审门控)。表从 4 张涨到 7 张,光是核心那张 tasks 表的列数就从十几列暴涨到三十列左右。

最打脸的是那句「no new core tools」。实际代码里,dispatcher 每 spawn 一个 worker,就把 kanban_show 、kanban_complete 、 kanban_block 这一整套工具直接塞进它的 schema 里。这恰恰就是新的核心工具。

那个里程碑发生在 v0.15.0,官方自己的 release notes 写得很直白:「Kanban grew into a real multi-agentplatform— 104PRs」。一份极简主义的设计宣言,被现实需求在 104 个 PR 里一口一口喂成了一个平台。

💡 核心建议

这条「设计文档 vs 落地实现」的落差,本身就是观察开源项目演化最好的样本之一。它说明一件事:克制是一种姿态,但真实用户的工作形态会持续往内核里灌东西。能写出「exactlyfourtables」的团队,两个月后照样会因为有人真的要拿它管 50 个 Instagram 账号,而把表加到 7 张。这不是设计失败,是设计在和现实谈判。

delegate_task 与 Kanban 的选择标准

有人可能会问:Kanban 这么强,那 delegate_task 是不是被淘汰了?

没有。它还在,源码里反复强调 kanban 的 worker 在自己一次运行内仍然可以调 delegate_task 。变的是它的位置。它从「多 Agent 的全部」降格成了「函数调用级」的子能力,而 Kanban 成了「队列级」的协作底座。两者共存,分工被官方写死成一句话。

这条分界线值得记住,它干净利落:

维度delegate_taskKanban
形态RPC 调用(fork→join)持久消息队列+状态机
父 Agent阻塞到子返回fire-and-forget,建完即 done
子身份匿名子 Agent,无持久自我有名 profile,自己的记忆/skill/历史
可恢复无,失败就是失败block 后能 unblock 重跑;崩溃自动回收
人能不能插手不行,全程 headless随时 comment/block/reassign
每任务 Agent 数一次调用一个任务一生 N 个(重试/评审/跟进)
审计父上下文一压缩就丢SQLite 行永久留存

怎么选?官方给了一句判据,特别适合背下来:这个交接,需要活过单次 API 循环、并且对别人可见吗?需要就上看板,不需要就用 delegate。一句话就把两个原语的边界划干净了。

用大白话讲: delegate_task 是一次函数调用,调完就忘;Kanban 是一个持久工作队列,每一次交接都是一行任何 profile(或者你这个人)都能读、能改的数据。

Hermes Kanban 的持久任务基础设施

把这个反转串起来看,Hermes 多 Agent 这两个月的演化路径其实很清楚。

Hermes Agent 从 delegate_task 函数委派演进到 Kanban 持久队列

一个 SQLite 支撑、跨进程、能扛住单点失败的看板平台。它有自动任务分解、有 swarm 拓扑、有定时任务、有按任务覆盖模型、有断路器重试、有多租户、有多看板。这些后面几节会一个一个拆开讲。

但这一节我只想让你先记住这个反转本身。旧书最弱的一章,现在成了全书最有料的 Part。而它之所以这么有料,恰恰是因为那份 spec 一开始想得太克制。克制给了它一个干净的内核,现实又逼着它在这个内核之上长出了一整个平台。

下一节我们钻进这个平台的内核,看看那个被设计成「笨」的 dispatcher,到底笨在哪、又为什么这种笨反而是它能扛住生产环境的原因。

常见问题

Hermes Kanban 和 delegate_task 怎么选?

父 Agent 需要一个短答案后继续时用 delegate_task;任务要跨轮次、跨角色、可恢复或允许人工介入时用 Kanban。两者可以嵌套使用。

Hermes Kanban 的任务会在重启后保留吗?

Kanban 的目标就是把任务和交接持久化到工作队列中,使任务可以恢复和审计。具体恢复行为仍取决于当前调度器配置和工作区状态。

这篇教程里的版本数字会变化吗?

会。原稿以 Hermes Agent v0.16.0 为分析基线,平台、工具、命令参数和默认配置可能继续变化;实际操作前请核对当前官方文档和本地命令帮助。