Skip to content

Hermes Agent Kanban 看板 — 多智能体协作实战

Hermes Kanban 是一个基于 SQLite 的持久化任务看板,让多个命名 Profile(智能体)协作完成复杂项目。本笔记基于视频实战演示 + 官方文档整理,覆盖团队配置、看板操作、任务生命周期和远程监控。

目录


Kanban vs 普通 Agent

核心区别

特性 普通 Agent(delegate_task) Kanban 看板
形态 RPC 调用(fork → join) 持久化消息队列 + 状态机
生命周期 子代理随父代理结束 任务持久化到 SQLite,重启不丢
人工干预 不支持 随时评论 / 解除阻塞 / 重新分配
审计追踪 上下文压缩后丢失 完整事件日志永久留存
多代理协作 单次调用 = 单个子代理 N 个代理参与同一任务全生命周期
父子任务 无依赖关系 父任务完成后自动激活子任务

架构概览

用户 / Orchestrator(PM)
         │
         ▼
    ┌─────────┐
    │  Kanban  │ ← ~/.hermes/kanban.db (SQLite)
    │  Board   │
    └────┬─────┘
         │ Dispatcher(Gateway 内嵌,60s 一次 tick)
         │
    ┌────┼──────────────────────┐
    ▼    ▼         ▼            ▼
  Alice  Danny    Ray          Tess
 (架构师)(开发)  (Code Review) (测试)

判断决策树

选 delegate_task 如果你需要:
  ✅ 短时间推理结果返回给父代理
  ✅ 无需人工干预
  ✅ 一次性任务

选 Kanban 如果你需要:
  ✅ 任务跨代理边界、需持久化
  ✅ 可能需要人工介入
  ✅ 多代理接力(开发 → Review → 测试)
  ✅ 需要事后审计和回溯

团队角色与 Profile 配置

视频演示的 5 角色团队

角色 Profile 名 职责 SOUL.md 定位
产品经理(PM) Paul 接收需求 → 拆分用户故事 需求分析与任务分解
架构师 Alice 用户故事 → 开发/Review/测试任务 技术方案设计与任务分配
开发 Danny 执行开发任务 编码实现
Code Review Ray 审查代码质量 代码审查
测试 Tess 执行测试任务 质量保证

创建 Profile

# 从主 Agent 克隆(自动复制 API Key 等配置)
hermes profile create "Alice" --clone
hermes profile create "Danny" --clone
hermes profile create "Ray" --clone
hermes profile create "Tess" --clone

# 每个 Profile 需要编写 SOUL.md 定义角色人格和职责
# 路径: ~/.hermes/profiles/<name>/SOUL.md

Gateway 启动

# 只需启动 PM(Paul)的 Gateway,其余 Profile 由 Dispatcher 按需拉起
hermes -p Paul gateway start

只启动 PM 的 Gateway 即可,其他 Profile 由 Dispatcher 在分配任务时自动 spawn。

最佳实践

  • ✅ 用 --clone 从主 Profile 克隆,避免重复配置 API Key
  • ✅ SOUL.md 中明确角色边界,避免角色越权
  • ✅ 架构师角色负责拆分任务,不直接执行开发
  • ❌ 不要给每个 Profile 都启动 Gateway,只需启动 Orchestrator

看板操作:创建与任务流转

三种创建看板的方式

方式 操作 适用场景
对话创建 在 TUI 中告诉 PM "创建看板 DevTeam02" 最简单
Dashboard 打开 Dashboard → Kanban 标签 → 创建 可视化操作
命令行 hermes kanban init 脚本 / 自动化

看板泳道布局

┌────────┬────────┬───────┬────────┬────────┬──────────┐
│ 待分类 │  待办  │  就绪 │ 进行中 │  阻塞  │  已完成  │
│triage  │  todo  │ ready │running │blocked │   done   │
└────────┴────────┴───────┴────────┴────────┴──────────┘
  • 待分类(triage):保存想法的地方,不是智能体工作泳道
  • 待办(todo):实际需要智能体执行的任务
  • 就绪(ready):前置依赖已完成,等待 Dispatcher 分配
  • 进行中(running):正在执行
  • 阻塞(blocked):需要人工干预
  • 已完成(done):任务完成

任务流转流程

用户需求 → PM 创建用户故事(triage)
    │
    ▼ 拖到 todo(或 Auto Decompose)
Alice 架构师拆分 → 开发任务 + Review 任务 + 测试任务
    │
    ▼ 父子依赖链接
Dispatcher 按 60s tick 自动调度 → Profile 认领执行
    │
    ▼
开发完成 → Code Review → 测试 → 全部 done

代码示例

# 初始化看板
hermes kanban init

# 创建任务(分配给 PM)
hermes kanban create "开发 Todo List Web APP" \
  --assignee Paul \
  --body "使用 Next.js + SQLite,邮箱密码登录"

# 查看所有任务
hermes kanban list

# 查看特定任务详情(含父子关系)
hermes kanban show <task_id>

# 查看统计
hermes kanban stats

注意事项

  • ❌ 待分类泳道的任务不会被自动调度,需拖到待办
  • ✅ 待分类 → 拖到待办 → 点击"触发调度器"即可启动
  • ✅ 父子任务用数字标识:0/2 = 0 完成 / 共 2 子任务,1/1 = 全部完成

任务生命周期与状态机

状态流转

           ┌──────────────────────────────────┐
           │                                  │
           ▼                                  │
  triage → todo → ready → running → done
                      ↑    │       ↑    │
                      │    │       │    │
                      │    ▼       │    ▼
                      │  blocked ──┘    │
                      │    │            │
                      └────┘ (unblock)  │
                                       │
                                  archived

关键特性

特性 说明
消息持久化 所有状态变更写入 SQLite,重启不丢
状态机 严格的状态流转规则,防止非法跳转
父子依赖 父任务 done 后自动 promote 子任务到 ready
多次尝试 同一任务可被多个代理多次执行(run 历史)
结构化交接 kanban_complete 时传递 summary + metadata 给下游

Worker 的典型工具调用序列

1. kanban_show()           → 读取任务详情 + 父任务交接 + 评论
2. terminal/file 工具      → 执行实际工作
3. kanban_heartbeat()      → 长任务中发心跳(每几分钟)
4. kanban_complete(        → 完成并交接
     summary="...",
     metadata={"changed_files": [...], "tests_run": 14}
   )

阻塞处理与人工干预

阻塞场景

Agent 执行中遇到不确定问题
    │
    ▼ kanban_block(reason="需要确认...")
    │
    ▼ Dashboard 显示红色"阻塞"
    │
    ├── 评论交互:在任务评论区与 Agent 对话
    ├── 查看原因:阅读阻塞原因描述
    └── 解除阻塞:点击 Unblock 或 /kanban unblock <id>
    │
    ▼ Dispatcher 下一 tick 自动重新调度

干预方式

方式 操作位置 说明
评论 Dashboard 任务评论区 给 Agent 留言,下次运行时读取
拖拽 Dashboard 拖拽卡片 改变任务状态
Unblock Dashboard 按钮 / CLI 解除阻塞,恢复调度
重新分配 Dashboard / CLI 更改任务负责人

代码示例

# 查看阻塞原因
hermes kanban show <task_id>

# 在评论区与 Agent 交互
hermes kanban comment <task_id> "请使用 2026 schema"

# 解除阻塞
hermes kanban unblock <task_id>

# 重新分配
hermes kanban assign <task_id> Danny

最佳实践

  • ✅ 阻塞时先阅读原因,再决定是否干预
  • ✅ 通过评论提供上下文,而非直接修改代码
  • ✅ 不确定时可以先问 Agent 需要什么确认
  • ❌ 不要盲目 Unblock,先理解阻塞原因

远程监控与通知

通知渠道

视频演示中作者通过 Telegram 每 5 分钟汇报进度,因为看板自带的阻塞推送通知功能还在优化中。

代码示例

# 订阅任务通知(自动推送 completed/blocked 等事件)
hermes kanban notify-subscribe <task_id> \
  --platform telegram --chat-id 12345678

# 查看已订阅的通知
hermes kanban notify-list

# 取消订阅
hermes kanban notify-unsubscribe <task_id> \
  --platform telegram --chat-id 12345678

# 实时监控所有事件
hermes kanban watch

# 监控特定代理的任务
hermes kanban watch --assignee Danny

Cron 定时汇报(视频作者的替代方案)

# 通过 cron job 每 5 分钟汇报进度
hermes cron create "5m" \
  -q "检查 Kanban 看板状态,汇报进行中/已完成/阻塞的任务" \
  --deliver telegram

Gateway 自动订阅

通过 Gateway(Telegram 等)创建任务时,自动订阅该任务的终端事件:

you> /kanban create "研究 AI 融资" --assignee researcher
bot> Created t_9fc1a3 (ready, assignee=researcher)
     (subscribed — 会在完成或阻塞时通知你)

... 几分钟后 ...

bot> ✓ t_9fc1a3 completed by researcher
     研究完成,已保存到 research/funding.md

已知限制

  • ❌ 阻塞推送通知功能尚在优化中(截至视频发布时)
  • ❌ 通知渠道配置默认显示微信,改 Telegram 可能不生效(已知 bug)

协作模式参考

9 种官方协作模式

模式 形态 示例
P1 Fan-out N 个并行同角色 5 个研究员并行研究
P2 Pipeline 角色链式传递 采集 → 编辑 → 写作
P3 Voting N 个 + 1 个汇总 3 研究员 → 1 审核员
P4 Journal 同 Profile + 共享目录 + Cron Obsidian vault 日记
P5 Human-in-the-loop 阻塞 → 人工评论 → 解除 模糊决策点
P6 @mention 文本内联路由 @reviewer 看一下这个
P7 Thread-scoped 线程级工作区 Gateway 按项目分线程
P8 Fleet farming 一个 Profile 管理 N 个主体 50 个社媒账号
P9 Triage specifier 粗略想法 → LLM 展开 → 正式任务 一句话变完整 spec

视频演示的流程对应 P2 Pipeline + P5 Human-in-the-loop

PM(Paul) → 架构师(Alice) → 开发(Danny) → Review(Ray) → 测试(Tess)
     │                                              │
     └──────────── 阻塞时人工干预 ◄──────────────────┘

参考资料

相关笔记