Hermes Kanban 跨Agent协作教程
什么是Kanban协作?
Hermes Kanban是一个任务分发系统,可以让多个Profile(AI助手实例)之间进行任务分配和数据传递。就像公司里的项目经理把任务分配给不同部门的同事一样。
为什么需要跨Agent协作?
当你的工作涉及多个专业领域时,单一Agent可能不够高效:
- 学习通作业批阅 → 需要专门的学习通Agent
- 博客文章发布 → 需要专门的WordPress Agent
- 代码开发部署 → 需要专门的DevOps Agent
Kanban让这些Agent像团队一样协作,而不是各自独立工作。
基本概念
Profile(角色)
Profile是独立运行的Agent实例,每个有自己的:
– 配置文件(model、provider、toolsets)
– 内存空间
– 技能集合
查看当前profiles:
hermes profile list
Kanban Board(任务看板)
所有任务存储在SQLite数据库中,状态流转:
todo → ready → in_progress → done
↓
blocked(等待人工干预)
Dispatcher(调度器)
每个Gateway内置dispatcher,每60秒扫描:
– 检查 ready 状态的任务
– 匹配 assignee 对应的profile
– 启动worker执行任务
跨Agent协作流程
1. 创建任务分配给其他Profile
kanban_create(
title="发布博客文章",
assignee="blog", # 分配给blog profile
body="标题:xxx\n内容:xxx\n分类:善用AI",
)
2. 任务依赖链
# 先让researcher调研
t1 = kanban_create(
title="调研Python数据分析库",
assignee="researcher",
body="对比Pandas、Polars、Dask的性能",
)
# 等调研完成后再写文章
t2 = kanban_create(
title="撰写调研报告",
assignee="writer",
body="根据调研结果写博客文章",
parents=[t1["task_id"]], # 依赖t1
)
parents参数创建依赖关系:子任务在父任务完成后才自动变为ready。
3. 完成任务并传递结果
kanban_complete(
summary="文章已发布:https://xxx/post/123",
metadata={
"post_id": 123,
"url": "https://xxx/post/123",
"categories": [53557],
},
)
metadata是结构化数据,下游worker可以直接使用。
实战示例:跨Agent发布博客
场景:用户通过QQ让default Agent写文章,default分配给blog Agent发布。
步骤图示
用户(QQ) → default Agent
↓
kanban_create(assignee="blog")
↓
[任务进入ready状态]
↓
blog Dispatcher检测到任务
↓
blog Worker启动执行
↓
WordPress API发布文章
↓
kanban_complete()
↓
Gateway通知default Agent
↓
default回复用户"文章已发布"
关键代码
Default Agent创建任务:
result = kanban_create(
title="发布博客:Kanban教程",
assignee="blog",
body="""
标题: Hermes Kanban 跨Agent协作教程
分类: 善用AI
内容: [完整文章Markdown内容]""",
)
task_id = result["task_id"]
Blog Agent执行任务:
# 1. 获取任务信息
task = kanban_show()
# 2. 解析body中的标题、分类、内容
# 3. 调用WordPress API发布
# 4. 完成任务
kanban_complete(
summary="文章已发布",
metadata={"post_id": post_id, "url": url},
)
任务状态监控
查看任务列表:
hermes kanban list
查看任务详情:
hermes kanban show <task_id>
实时跟个任务日志:
hermes kanban tail <task_id>
常见问题
Q: 任务一直停在ready状态?
检查assignee的profile名称是否正确。Dispatcher只会启动存在的profile。
hermes profile list # 查看可用profiles
Q: 如何处理任务失败?
任务失败后会重试。如果反复失败,可以:
– hermes kanban reclaim <id> — 重置任务
– hermes kanban reassign <id> <new-profile> — 换个profile
Q: 任务执行多久算超时?
默认max_runtime_seconds为3600秒(1小时)。可在profile配置中调整。
最佳实践
- 任务拆分 — 大任务拆成多个小任务并行执行
- 明确assignee — 用准确的profile名称
- 结构化metadata — 方便下游worker解析
- 设置依赖 — 需要顺序执行的任务用parents链接
- 添加注释 — 用
kanban_comment记录上下文
总结
Kanban让Hermes从”单一助手”变成”AI团队”:
– 分工明确 — 每个Profile专注自己的领域
– 异步协作 — 任务队列解耦,不阻塞
– 结果传递 — metadata携带结构化数据
– 状态追踪 — 完整的任务生命周期管理
这就是Hermes多Agent协作的核心机制!