你跟 AI 说"帮我写篇博客",它写完就走了。下次再说,它又是从零开始。
这篇文章教你用 Hermes 的 Kanban + Profile,给 AI Agent 一个专职身份,让它自己管博客。
先说结论
delegate_task 是临时工,Kanban + Profile 是全职员工。
如果你想:
- 让一个 AI 专门负责博客(写文章、同步、部署)
- 任务不丢失(主 Agent 崩了也不影响)
- 随时查看进度(微信直接看)
- 出了问题自动通知你
那就用 Kanban + Profile。下面是完整方案。
我的踩坑故事
我有一个 Hugo 静态博客。之前让主 Agent 兼顾博客写作——一边排查路由器 DNS 问题,一边写博客文章。结果:
- read_file 带行号前缀写回文件,Hugo front matter 全毁,页面数从 168 暴跌到 102
- 日期格式不对,
date: 2026-05-14被解析成0001-01-01 - 中文 URL 编码错误,又拍云上传 45 个文件失败
根本原因:上下文切换太频繁,主 Agent 在路由器、DNS、博客之间反复横跳,每次切换都丢细节。
两种方案对比
很多人第一反应是 delegate_task(子代理),我也是。但调研完官方文档后发现,这俩根本不是一个量级:
| 维度 | delegate_task | Kanban + Profile |
|---|---|---|
| 形状 | 函数调用(fork→join) | 持久工作队列 + 状态机 |
| 生命周期 | 分钟级,调用者阻塞等待 | 小时/天级,fire-and-forget |
| 身份 | 匿名子代理,干完就走 | 命名 Profile,有自己的记忆和人格 |
| 抗中断 | 父 Agent 断了,子代理也死 | 独立进程,互不影响 |
| 可恢复 | 失败即失败 | 阻塞→解除→重跑;崩溃→回收 |
| 人工介入 | 不支持 | 任何节点都能 comment/unblock |
| 审计追踪 | 上下文压缩后丢失 | SQLite 永久保存 |
一句话:delegate_task 是你叫一次临时工;Kanban 是你雇了个全职员工。
架构设计
| |
关键点:
- dispatcher 内嵌在 gateway 里,不需要额外的守护进程
- blog-writer 是独立 Profile,有自己的 config、记忆、skills、SOUL.md
- gateway 自动推送通知,任务完成或卡住都会通知你
- 你随时可以用
/kanban命令查看进度、添加评论、解除阻塞
5 步搭建
第 1 步:创建独立 Profile
| |
--clone 会复制当前 Profile 的 config.yaml、.env、SOUL.md,省得重新配 API Key。
第 2 步:配置独立人格和工作目录
| |
第 3 步:确认 skill 可用
| |
第 4 步:初始化 Kanban
| |
第 5 步:创建第一个任务
| |
从这一刻起,dispatcher 会自动发现 ready 状态的任务,spawn blog-writer Profile 作为独立进程执行。
Worker 的工作流程
当 dispatcher 启动 blog-writer 后,它会:
| |
阻塞时,你微信会收到通知。你直接在微信里回复:
| |
dispatcher 下一次轮询时会重新 spawn worker,worker 读取你的评论后继续。
任务依赖:Pipeline 模式
如果你的写作流程是:调研 → 写作 → 审校 → 部署,可以用 parents 串起来:
| |
子任务会停留在 todo 状态,直到所有 parent 达到 done,然后自动 promote 到 ready。不需要手动协调。
9 种协作模式
官方文档列出了 9 种 Kanban 协作模式。博客场景常用的:
| 模式 | 用法 |
|---|---|
| P1 Fan-out | 同时写 5 篇不同主题的文章 |
| P2 Pipeline | 调研 → 写作 → 审校 → 部署 |
| P5 Human-in-the-loop | 写完后阻塞等你确认再部署 |
| P8 Fleet farming | 一个 writer 处理 N 篇文章队列 |
| P9 Triage specifier | 粗略想法 → triage → 自动展开为完整任务 |
我遇到的真实问题
问题 1:写作质量不可控
解法:GLM-5.1 做格式转换和同步任务完全够用。原创写作需要更强的模型——Profile 可以独立配置模型:
| |
问题 2:格式错误反复出现
解法:把所有踩过的坑写进 skill,每次 worker 启动时自动加载。我的 hugo-blog skill 现在有 12 条陷阱清单,覆盖了行号前缀、日期格式、URL 编码等所有已知问题。
问题 3:上下文丢失
解法:每篇独立跑,skill 固定注入。不依赖主 Agent 的上下文。kanban.db 里的 comment 线程就是完整的任务上下文。
和 delegate_task 什么时候用哪个
| 场景 | 选择 |
|---|---|
| 快速并行子任务(搜索3个话题) | delegate_task |
| 长时间独立工作(写博客文章) | Kanban + Profile |
| 需要人工确认 | Kanban(阻塞/解除) |
| 一次性的简单问答 | 直接回答 |
| 需要跨 session 保持状态 | Kanban(SQLite 持久化) |
它们可以共存:Kanban worker 内部可以调用 delegate_task 处理短子任务。
官方文档
- Kanban 文档:https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban
- Kanban 教程:https://hermes-agent.nousresearch.com/docs/user-guide/features/kanban-tutorial
- Profile 文档:https://hermes-agent.nousresearch.com/docs/user-guide/profiles
这是「Hermes 多 Agent 协作」系列的第一篇。下一篇会实际搭建 blog-writer Profile,跑通第一个完整的写作→部署流程。
如果你也在用 Hermes Agent 或者对 AI Agent 协作感兴趣,关注我,后面会持续分享实战经验。
关注 varkm,一起学习,一起成长
多 Agent 协作实战