词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
kanban_* 工具集(kanban_show、kanban_list、kanban_complete、kanban_block、kanban_heartbeat、kanban_comment、kanban_create、kanban_link、kanban_unblock)来操作看板。三个界面——dashboard、CLI、worker 工具——都通过同一个每看板独立的 SQLite 数据库(默认看板为 ~/.hermes/kanban.db,后续创建的任意看板为 ~/.hermes/kanban/boards/<slug>/kanban.db)进行路由,因此无论变更来自哪一侧,每个看板的数据始终一致。default 看板。如果你需要多个隔离队列(每个项目/仓库/领域一个),请参阅概述中的看板(多项目)——相同的 CLI/dashboard/worker 流程适用于每个看板,且 worker 在物理上无法看到其他看板上的任务。bash 的代码块是你运行的命令。 标注为 # worker tool calls 的代码块是生成的 worker 模型发出的工具调用——展示在这里是为了让你能端到端地了解整个循环,而不是让你自己去运行它们。
hermes kanban decompose <id> / /kanban decompose <id>。对于不需要扇出的单个任务,✨ Specify 会进行一次性规格重写(目标、方法、验收标准)并将任务提升到 todo。在 config.yaml 的 auxiliary.kanban_decomposer 和 auxiliary.triage_specifier 下配置相关模型。参见主 Kanban 指南中的自动与手动编排。Lanes by profile 切换按钮和 Nudge dispatcher 按钮——后者会立即执行一次调度 tick,而无需等待守护进程的下一个间隔。点击任意卡片会在右侧打开其详情抽屉。
API 以 SCHEMA 为父任务,tests 以 API 为父任务,只有 SCHEMA 从 ready 状态开始。其他两个任务在 todo 中等待,直到其父任务完成。这正是依赖提升引擎在发挥作用——在有 API 可测试之前,不会有其他 worker 去接手测试编写工作。backend-dev profile 会以 HERMES_KANBAN_TASK=$SCHEMA 作为环境变量生成一个 worker。以下是该 worker 在 agent 内部的工具调用循环:kanban_show 默认将 task_id 设为 $HERMES_KANBAN_TASK,因此 worker 无需知道自己的 id。kanban_complete 将 summary 和 metadata 写入当前 task_runs 行,关闭该 run,并将任务转换为 done——全部通过 kanban_db 以原子方式完成。SCHEMA 进入 done 状态时,依赖引擎会自动将 API 提升为 ready。API worker 认领任务后,调用 kanban_show() 时会看到 SCHEMA 的 summary 和 metadata 附加在父任务交接信息中——因此它无需重新阅读冗长的设计文档就能了解 schema 的决策。
completed,worker @backend-dev,耗时、时间戳,以及完整的交接 summary。metadata 块(changed_files、decisions)也存储在 run 上,并会呈现给读取该父任务的任何下游 worker。content-ops(或直接搜索"Transcribe"),你会看到:
kanban_complete(summary="translated 4 pages, style matched existing marketing voice", metadata={"duration_seconds": 720, "tokens_used": 2100})——对分析以及依赖此任务的任何下游任务都很有价值。auth-project 筛选:
Spec: password reset flow(DONE,pm)、Implement password reset flow(DONE,backend-dev)、Review password reset PR(READY,reviewer)。每个任务底部都有绿色的父任务,以及作为依赖项的子任务。$IMPL 提升回 ready,并在下一次 tick 时重新生成 backend-dev worker。这第二次生成是同一任务上的新 run:
@backend-dev 标记为 blocked。审查反馈紧跟在结果下方:"password strength check missing, reset link isn't single-use (can be replayed within 30min)"。@backend-dev 标记为 completed。全新的 summary,全新的 metadata。task_runs 中都是独立的一行,有自己的 outcome、summary 和 metadata。重试历史不是叠加在"最新状态"任务之上的概念性附加物—— 它是主要的数据表示形式。当重试的 worker 打开任务时,build_worker_context 会向其展示之前的尝试,因此第二次 worker 能看到第一次被阻塞的原因,并针对性地解决那些具体问题,而不是从头重来。Review password reset PR 时,会看到:
Review password reset PR 上生成并调用 kanban_show() 时,返回的 worker_context 包含父任务最近一次已完成 run 的 summary 和 metadata——因此审查者在查看 diff 之前就已读到"added zxcvbn strength check, reset tokens are now single-use",并掌握了变更文件列表。AWS_ACCESS_KEY_ID 而无法生成 worker 的部署任务:RuntimeError: AWS_ACCESS_KEY_ID not set)。dispatcher 释放认领,递增失败计数器,并在下一次 tick 重试。由于本示例设置了 --max-retries 3,在三次连续失败后熔断器触发:任务进入 blocked 状态,outcome 为 gave_up。如果省略该标志,Hermes 使用 kanban.failure_limit(默认值:2)。在人工解除阻塞之前不再重试。
error 字段均为相同错误。前两个为 spawn_failed(可重试),第三个为 gave_up(终止)。上方的事件日志显示完整序列:created → claimed → spawn_failed → claimed → spawn_failed → claimed → gave_up。gave_up 事件时发送通知,让你无需主动检查看板就能得知故障。systemctl stop。dispatcher 轮询 kill(pid, 0) 检测到死亡的 pid;认领释放,任务回到 ready,下一次 tick 将其分配给新的 worker。
crashed,错误为 OOM kill at row 2.3M (process 99999 gone)。Run 2 — completed,metadata 中包含 "strategy": "chunked with LIMIT + WHERE id > last_id"。重试的 worker 在其上下文中看到了 run 1 的崩溃信息,并选择了更安全的策略;metadata 让未来的观察者(或事后分析撰写者)能清楚地看到发生了什么变化。summary 和 metadata 的重要性kanban_complete(summary=..., metadata=...)。这不是装饰性的——它是工作流各阶段之间的主要交接通道。kanban_show() 时,返回的 worker_context 包含:hermes kanban complete a b c --summary X(你,从 CLI 执行)会被拒绝——将相同的 summary 复制粘贴到三个任务几乎总是错误的。不带交接标志的批量关闭仍然适用于常见的"我完成了一堆行政任务"场景。工具界面根本不提供批量变体;kanban_complete 始终是单任务操作,原因相同。backend-dev 认领但尚未完成):
Running。活跃的 run 出现在 Run History 部分,outcome 为 active,没有 ended_at。如果该 worker 死亡或超时,dispatcher 会以相应的 outcome 关闭此 run,并在下一次认领时开启新的 run——尝试记录永远不会消失。hermes kanban --help — 所有子命令,所有标志。hermes kanban watch --kinds completed,gave_up,timed_out — 在整个看板上实时流式输出终端事件。hermes kanban notify-subscribe <task> --platform telegram --chat-id <id> — 当特定任务完成时通过 gateway 接收推送通知。