Kanban + Profile:让你的 AI Agent 自己管博客

从 delegate_task 临时工到 Kanban + Profile 独立 Agent,一步步搭建自动化的博客写作管家。包含完整架构设计、实战踩坑和可复用的搭建流程。

你跟 AI 说"帮我写篇博客",它写完就走了。下次再说,它又是从零开始。

这篇文章教你用 Hermes 的 Kanban + Profile,给 AI Agent 一个专职身份,让它自己管博客。

先说结论

delegate_task 是临时工,Kanban + Profile 是全职员工。

如果你想:

  • 让一个 AI 专门负责博客(写文章、同步、部署)
  • 任务不丢失(主 Agent 崩了也不影响)
  • 随时查看进度(微信直接看)
  • 出了问题自动通知你

那就用 Kanban + Profile。下面是完整方案。

我的踩坑故事

我有一个 Hugo 静态博客。之前让主 Agent 兼顾博客写作——一边排查路由器 DNS 问题,一边写博客文章。结果:

  1. read_file 带行号前缀写回文件,Hugo front matter 全毁,页面数从 168 暴跌到 102
  2. 日期格式不对date: 2026-05-14 被解析成 0001-01-01
  3. 中文 URL 编码错误,又拍云上传 45 个文件失败

根本原因:上下文切换太频繁,主 Agent 在路由器、DNS、博客之间反复横跳,每次切换都丢细节。

两种方案对比

很多人第一反应是 delegate_task(子代理),我也是。但调研完官方文档后发现,这俩根本不是一个量级:

维度delegate_taskKanban + Profile
形状函数调用(fork→join)持久工作队列 + 状态机
生命周期分钟级,调用者阻塞等待小时/天级,fire-and-forget
身份匿名子代理,干完就走命名 Profile,有自己的记忆和人格
抗中断父 Agent 断了,子代理也死独立进程,互不影响
可恢复失败即失败阻塞→解除→重跑;崩溃→回收
人工介入不支持任何节点都能 comment/unblock
审计追踪上下文压缩后丢失SQLite 永久保存

一句话:delegate_task 是你叫一次临时工;Kanban 是你雇了个全职员工。

架构设计

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
你(微信/Telegram/CLI)
  ↓ "写一篇关于 XX 的博客"
主 Agent(orchestrator)
  ↓ kanban_create 创建任务
kanban.db(SQLite 持久化看板)
  ↓ dispatcher 自动调度(gateway 内嵌,60s 轮询)
blog-writer(独立 Profile,独立进程)
  ↓ kanban_complete / kanban_block 汇报
kanban.db
  ↓ gateway 自动通知
你(微信收到完成/阻塞通知)

关键点

  • dispatcher 内嵌在 gateway 里,不需要额外的守护进程
  • blog-writer 是独立 Profile,有自己的 config、记忆、skills、SOUL.md
  • gateway 自动推送通知,任务完成或卡住都会通知你
  • 你随时可以用 /kanban 命令查看进度、添加评论、解除阻塞

5 步搭建

第 1 步:创建独立 Profile

1
hermes profile create blog-writer --clone

--clone 会复制当前 Profile 的 config.yaml、.env、SOUL.md,省得重新配 API Key。

第 2 步:配置独立人格和工作目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 配置工作目录指向博客项目
blog-writer config set terminal.cwd /root/blog

# 写专属 SOUL.md
cat > ~/.hermes/profiles/blog-writer/SOUL.md << 'EOF'
你是 blog.kalend.top 的博客写作专家。
职责:撰写高质量技术博客、同步公众号文章、构建和部署。
风格:简洁直接、先结论后细节、代码示例丰富。
严格遵守 hugo-blog skill 中的所有陷阱清单。
EOF

第 3 步:确认 skill 可用

1
2
3
4
5
6
7
8
# kanban-worker 是 bundled skill,自动同步
blog-writer skills list | grep kanban-worker

# 如果缺失,恢复
blog-writer skills reset kanban-worker --restore

# 验证 hugo-blog skill(需要手动确保已安装)
blog-writer skills list | grep hugo-blog

第 4 步:初始化 Kanban

1
2
3
4
5
# 创建看板数据库(幂等操作)
hermes kanban init

# 确保 gateway 运行(内嵌 dispatcher)
hermes gateway start

第 5 步:创建第一个任务

1
2
3
4
hermes kanban create "写一篇关于 Hermes Kanban 的博客" \
    --assignee blog-writer \
    --skill hugo-blog \
    --workspace dir:/root/blog

从这一刻起,dispatcher 会自动发现 ready 状态的任务,spawn blog-writer Profile 作为独立进程执行。

Worker 的工作流程

当 dispatcher 启动 blog-writer 后,它会:

1
2
3
4
5
6
1. kanban_show()       → 读取任务详情(标题、正文、父任务结果、评论历史)
2. cd $WORKSPACE       → 进入工作目录
3. 执行任务            → 搜索素材 → 撰写文章 → Hugo build → 部署
4. kanban_heartbeat()  → 长任务中间汇报(可选)
5. kanban_complete()   → 完成(附带 summary + metadata)
   或 kanban_block()   → 阻塞(需要你确认标题/内容等)

阻塞时,你微信会收到通知。你直接在微信里回复:

1
2
/kanban comment t_xxx "标题用「Kanban实战:让AI自己管博客」"
/kanban unblock t_xxx

dispatcher 下一次轮询时会重新 spawn worker,worker 读取你的评论后继续。

任务依赖:Pipeline 模式

如果你的写作流程是:调研 → 写作 → 审校 → 部署,可以用 parents 串起来:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 1. 调研任务(立即开始)
hermes kanban create "调研 Hermes Kanban 架构" \
    --assignee researcher

# 2. 写作任务(等调研完成)
hermes kanban create "写博客文章" \
    --assignee blog-writer \
    --parent t_research

# 3. 部署任务(等写作完成)
hermes kanban create "部署博客" \
    --assignee blog-writer \
    --parent t_writing

子任务会停留在 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 可以独立配置模型:

1
blog-writer config set model.default anthropic/claude-sonnet-4

问题 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 协作实战