Hermes Kanban 看板 — 多 Agent 协作的正确打开方式
开三个终端窗口让 AI Agent 各干各的,然后人肉做”协调”——受够了?Hermes Agent 开源了 Kanban 看板,一个持久化 SQLite 任务队列,让多个 Agent 像人类团队一样协作。
当你的 AI 智能体不止一个的时候,怎么让它们像人类团队一样协作?
一个老问题
去年 Claude Code 横空出世的时候,开发者圈子里流行一种玩法:开三个终端窗口,一个写后端,一个写前端,一个写测试,让三个 Claude 各干各的。听起来很美,但实际上:
- Agent A 等 Agent B 的接口,但 B 改了接口没人知道
- Agent C 发现自己依赖的模块还没写完,只能阻塞
- 一个跑了 10 分钟后崩溃,什么都没留下
- 你想从手机上看看进度?不存在的
问题出在哪? 这些 Agent 之间的协调全是靠人眼盯着终端窗口完成的,没有持久化的工作队列,没有状态管理,没有失败重试,没有人为干预的入口。
而这就是 Hermes Agent 刚刚推出的 Kanban 特性要解决的核心问题。
Hermes Agent 是 Nous Research 开发的开源 AI Agent 框架,与 Claude Code、OpenAI Codex 同属一个品类,但它最大的特点是”什么都能跑”——支持 20+ 模型提供商、运行在终端/Telegram/Discord/Slack 等十几个平台、有跨会话持久记忆、以及一套完整的技能系统。
什么是 Hermes Kanban?
一个持久化的多 Agent 协作看板。
它的核心是一个 SQLite 数据库(~/.hermes/kanban.db),所有的任务、状态、注释、依赖关系都写在这一份数据里。但有意思的是,它有两套完全独立的操作界面:
- 你(人类) 通过 CLI 命令或 Web Dashboard 操作看板
- Agent(Worker) 通过一套专门的
kanban_*工具函数操作看板
两套接口背后走的是同一套数据库代码,数据永远不会漂移。
看板的列从左到右依次是:
1 | `Triage → Todo → Ready → In Progress → Blocked → Done` |
Triage 是收集原始想法的地方;Ready 是分配给某个 Profile 后等待 Dispatcher 调度的任务;Blocked 是 Worker 需要人类输入才能继续的任务。
delegate_task vs Kanban
如果你用过 Hermes或其他Agent,应该熟悉 delegate_task——它可以让一个 Agent 派生子 Agent 去做一件事,然后等结果回来。
Kanban 不是 delegate_task 的升级版,它们是不同层级的原语:
维度
delegate_task
Kanban
形态
RPC 调用(fork → join)
持久化消息队列 + 状态机
父 Agent
阻塞等待子 Agent 返回
创建后即忘(fire-and-forget)
子 Agent 身份
匿名子进程
具名 Profile,有持久记忆
可恢复性
无 — 失败了就失败了
Block → Unblock → 重试;崩溃 → 自动回收
人为介入
不支持
随时评论 / 解封 / 干预
每个任务参与 Agent 数
一个子 Agent
多个 Agent 接力(重试、Review、后续任务)
审计轨迹
上下文压缩后就丢了
SQLite 永久存储
协作模式
层级式(调用者 → 被调用者)
对等式——任何 Profile 可以读写任何任务
delegate_task 是一个函数调用;Kanban 是一个工作队列,每一次握手都是一行可以被任何人看到和编辑的记录。
它们不互斥——一个 Kanban Worker 在执行任务的过程中完全可以内部调用 delegate_task。
Kanban 的设计哲学
场景一:Solo 开发者做一个功能
假设你要写一个认证模块。经典的三步走:设计 Schema → 实现 API → 写集成测试。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
1 | `# 创建三个任务,通过 --parent 建立依赖链``SCHEMA=$(hermes kanban create "设计认证模块 Schema" \``--assignee backend-dev \``--body "设计 user/session/token 表结构" \``--json | jq -r .id)````API=$(hermes kanban create "实现认证 API 端点" \``--assignee backend-dev \``--parent $SCHEMA \``--body "POST /register, POST /login, POST /refresh" \``--json | jq -r .id)````hermes kanban create "写认证集成测试" \``--assignee qa-dev \``--parent $API \``--body "覆盖正常流程、密码错误、token 过期、并发刷新"` |
关键在依赖引擎:只有 SCHEMA 一开始进入 Ready 状态,其他两个在 Todo 里等待。只有当 SCHEMA 完成后,API 自动提升为 Ready;当 API 完成后,测试任务自动 Ready。
当 backend-dev Worker 被 Dispatcher 派生出来后,它的第一个动作不是跑 CLI 命令,而是调用一个工具函数:
-
-
-
-
-
-
-
-
-
-
-
1 | `# Worker 内部的工具调用,不是人敲的命令``kanban_show() # 读取自己的任务描述``# ... 干活 ...``kanban_heartbeat(note="schema 草稿写完了,正在写迁移文件")``kanban_complete(``summary="users(id, email, pw_hash), sessions(id, user_id, jti, expires_at)",``metadata={``"changed_files": ["migrations/001_users.sql"],``"decisions": ["bcrypt 哈希", "JWT 会话 Token", "7天刷新、15分钟访问"]``}``)` |
当 API Worker 启动后调用 kanban_show(),它会自动看到 SCHEMA 的 summary 和 metadata——下游 Worker 不需要翻聊天记录就知道上游做了哪些决策。
场景二:舰队农场(Fleet Farming)
你有三个翻译、五个音频转写、四个商品文案要写,三个不同的 Worker 并行干活。
-
-
-
-
-
-
1 | `for lang in 日文 韩文 法文; do``hermes kanban create "把首页翻译成$lang" --assignee translator``done``for i in 1 2 3 4 5; do``hermes kanban create "转写 Q3 客户通话 #$i" --assignee transcriber``done` |
启动 Gateway(内置 Dispatcher),然后走开。
Dashboard 上看,In Progress 列会按 Profile 分组显示——每个 Worker 当前在干什么一目了然。完成一个,Dispatcher 自动派发下一个。整个队列不需要任何人盯着。
场景三:角色 Pipeline + 重试
这才是 Kanban 真正发光的地方。PM 写 Spec → 工程师实现 → Reviewer 审核驳回 → 工程师改 → Reviewer 通过。
当工程师的第一次实现被 Reviewer 驳回后,他调用:
-
-
-
1 | `kanban_block(``reason="Review: 密码强度检查缺失,重置链接不是一次性使用"``)` |
任务进入 Blocked 状态。你(或 Reviewer)从 Dashboard 上点了 Unblock 按钮后,Dispatcher 重新派生 Worker。这次 kanban_show() 返回的 worker_context 里包含了前一次运行的 block 原因,所以二次尝试的 Worker 知道要修哪两个问题,不需要重读完整的 Spec。
Dashboard 上这个任务会显示两次 Runs:
-
-
1 | `Run 1 — blocked @backend-dev: "密码强度检查缺失"``Run 2 — completed @backend-dev: "添加了 zxcvbn 强度检查"` |
每次 Run 的 summary、metadata、错误信息都完整保存。这不是事后加上去的”历史记录”——它是 Kanban 的核心数据模型。
场景四:断路器 + 崩溃恢复
Worker 会失败。缺少环境变量、OOM 被 kill、网络超时——这些都是日常。Dispatcher 有两道防线:
- 崩溃检测 — Worker 进程意外退出后,Dispatcher 检测到 PID 消失,自动释放 Claim,下一次 Tick 重新派生
- 断路器 — 连续 N 次失败后(默认 3 次),任务自动进入 Blocked,不会再浪费算力重试
一个缺少 AWS 密钥的部署任务:
-
-
-
-
-
-
-
-
1 | `hermes kanban runs t_ef5d``# # OUTCOME PROFILE ELAPSED STARTED``# 1 spawn_failed deploy-bot 0s 2026-04-27 19:34``# ! AWS_ACCESS_KEY_ID not set in deploy-bot env``# 2 spawn_failed deploy-bot 0s 2026-04-27 19:34``# ! AWS_ACCESS_KEY_ID not set in deploy-bot env``# 3 gave_up deploy-bot 0s 2026-04-27 19:34``# ! AWS_ACCESS_KEY_ID not set in deploy-bot env` |
三次尝试后,断路器跳闸,任务标记为 gave_up。如果有 Telegram/Discord 网关接入,还会推送通知到你的手机上。
总结
Hermes Kanban 的价值不在于”又多了一个看板工具”,而在于它为多 Agent 协作提供了一个正确的数据模型:每个任务是一行持久化数据,每次握手是任何人可以读写的记录,每个 Worker 是一个完整的操作系统进程。
相比 Cline、Codex 等竞品,Hermes 是目前唯一开源实现持久化多 Agent 看板的框架。如果你正在构建 AI Agent 工作流,或者对多 Agent 协作有兴趣,这绝对值得一试。
- END -
💬 本文评论区已开启,但暂无读者留言。
本文转载自微信公众号,如有侵权请联系删除。
- 标题: Hermes Kanban 看板 — 多 Agent 协作的正确打开方式
- 作者: lxiol
- 创建于 : 2026-05-08 21:48:25
- 更新于 : 2026-05-12 16:07:03
- 链接: https://blog.lxiol.cn/2026/05/08/Hermes-Kanban-看板-多-Agent-协作的正确打开方式/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。