词元之母TOK.MOM - 平台充值汇率 1:1 即 1 人民币充值到账 1 美元,支持一个 Key 调用近 600+ 海内外模型,限时特价模型低至 1 折,欢迎上岸!
kanban-worker skill,其中包含更深入的操作细节。Hermes Kanban = 规范的任务生命周期 + 审计追踪
Worker lane = 某张已分配卡片的实现执行器
Reviewer = 人工或人工代理,负责把关"完成"状态
GitHub PR = 可上游的产物(可选,适用于代码通道)ready → running → blocked / done / archived。Worker lane 执行工作,但从不拥有该真实状态;它们所做的一切都通过 kanban_* 工具回流至 kanban 内核(对于非 Hermes 外部 worker, 则通过 API)。Reviewer 负责把关从"代码变更已写入"到"任务完成"的转换。task.assignee 与 Hermes profile 名称(默认通道形态)或已注册的不可生成标识符(插件通道形态——见下文添加外部 CLI worker 通道)进行匹配。assignee 无法解析的任务将保留在 ready 状态,并记录 skipped_nonspawnable 事件,以便看板运维人员修复;它们不会被静默丢弃,也不会由任意回退逻辑执行。_default_spawn 会在任务固定的 工作区内运行 hermes -p <assignee> chat -q <prompt>(或当 hermes shim 不在 $PATH 时使用等效的模块形式),并设置以下环境变量:| 变量 | 携带内容 |
|---|---|
HERMES_KANBAN_TASK | worker 正在操作的任务 id |
HERMES_KANBAN_DB | 每个看板 SQLite 文件的绝对路径 |
HERMES_KANBAN_BOARD | 看板 slug |
HERMES_KANBAN_WORKSPACES_ROOT | 看板工作区树的根目录 |
HERMES_KANBAN_WORKSPACE | 本任务工作区的绝对路径 |
HERMES_KANBAN_RUN_ID | 当前运行的 id(用于生命周期门控) |
HERMES_KANBAN_CLAIM_LOCK | claim 锁字符串(<host>:<pid>:<uuid>) |
HERMES_PROFILE | worker 自身的 profile 名称(用于 kanban_comment 作者归因) |
HERMES_TENANT | 租户命名空间(如果任务有的话) |
spawn_fn 可调用对象,接收 task、workspace 和 board,并返回可选的 pid 用于崩溃检测。kanban_complete(summary=..., metadata=...) — 任务成功,状态切换为 done。kanban_block(reason=...) — 任务等待人工输入,状态切换为 blocked。调度器在 kanban_unblock 运行时重新生成。crashed(PID 已消亡)、gave_up(连续失败断路器触发)或 timed_out(超过 max_runtime)。这是失败路径;健康的 worker 不会在此结束。reason 以 review-required: 为前缀,使仪表板 / hermes kanban show 将该行显示为等待审查。kanban_comment,因为 kanban_block 只携带人类可读的 reason。Comment 是持久的注解通道——所有与审计相关的字段(changed_files、tests_run、diff_path 或 PR url、决策记录)都应放在这里。kanban_show 的上下文看到这些内容。kanban-worker skill 中有 kanban_complete(真正终态的任务——拼写修复、文档变更、研究报告)和 review-required block 模式的完整示例。<board-root>/logs/<task_id>.log。日志可通过 kanban 元数据进行审计:task_runs 行携带 log_path、退出码(如有)、摘要和元数据。task_events 行携带每次状态转换(promoted、claimed、heartbeat、completed、blocked、gave_up、crashed、timed_out、reclaimed、claim_extended)。kanban_show 同时返回两者,因此 reviewer(或后续 worker)读取任务时无需访问仪表板即 可获得完整历史。hermes kanban tail <task_id> 实时跟踪,或运行 hermes kanban runs <task_id> 查看历史尝试列表。hermes -p <profile>,worker 自动加载 kanban-worker skill 以及 KANBAN_GUIDANCE 系统提示块,并使用 kanban_* 工具终止运行。除定义 profile 外无需任何额外配置。hermes profile list 发现你的 profile 名称——系统不假设固定的名单(orchestrator 侧的契约请参阅 kanban-orchestrator skill)。kanban,但排除了用于实现的 terminal / file / code / web。其职责是通过 kanban_create + kanban_link 将高层目标分解为子任务,然后退出。orchestrator skill 编码了反诱惑规则。spawn_fn 是 dispatch_once 的参数),插件可以为非 Hermes assignee 注册自己的 spawn_fn,但周边集成工作——将 CLI 的退出码封装为 kanban_complete / kanban_block 调用、将 CLI 的工作区/沙箱约定映射到调度器的 HERMES_KANBAN_WORKSPACE 环境变量、处理认证和每个 CLI 的策略——仍是每个集成各自的设计工作。DEFAULT_CLAIM_TTL_SECONDS(默认 15 分钟)后被回收——但仅当 worker 进程确实已死亡时。存活的 worker(慢速模型在一次无工具调用的 LLM 调用中耗时 20 分钟以上)会获得 claim 延期而非被终止;只有 PID 已消亡时才会被回收。detect_crashed_workers 检测并回收;任务的 consecutive_failures 递增,断路器触发时可能自动阻塞。expected_run_id 参数,在自身运行已被取代时快速失败。task.max_runtime_seconds 对每次运行的挂钟时间进行硬性限制,与 PID 存活状态无关。可捕获真正死锁的 worker——否则存活 PID 延期机制会让其持续运行。kanban.stranded_threshold_seconds(默认 30 分钟)内始终未产生 claim 的 ready 任务, 会在 hermes kanban diagnostics 中显示为 stranded_in_ready 警告。严重程度在 2 倍阈值时升级为 error,在 6 倍时升级为 critical。可通过单一信号捕获拼写错误的 assignee、已删除的 profile 以及宕机的外部 worker 池——与标识无关,无需维护每个看板的白名单。kanban-worker — worker 进程加载的 skill。kanban-orchestrator — orchestrator 侧。