用途:Heartbeat 作为 Agentic OS 的后台处理器,从共享的 .agent/state/tasks.json 队列读取任务,识别待处理项,将其路由到合适的技能执行,并在完成后更新任务状态。
主要能力:通过 heartbeat.py 脚本管理队列。scopes 命令列出 _<batch>_extension.<queue> 下的可弹出队列及 ready/in-progress/completed 计数;pop 取出下一个任务(legacy 模式或 --scope 限定模式);complete 回写结果,失败则记录到 .agent/state/errors.json。支持 1.2.0 引入的 scoped queues:当存在 _extension 队列时,不带 --scope 的 pop 会以退出码 11 拒绝;出现在 blocked_on 数组中的项会被自动跳过;scoped 队列耗尽时退出码 10 并提示填写证据报告后停止。还支持 stale in_progress 处理,pop 遇到上次会话遗留的进行中项会以退出码 12 拒绝,可用 clear-stale 重置或 --accept-stale 接管。
使用方式:脚本路径因 agent 而异:Gemini/Antigravity 用 python3 ~/.gemini/skills/heartbeat/scripts/heartbeat.py,Claude 用 python3 ~/.claude/skills/heartbeat/scripts/heartbeat.py(两者经符号链接指向同一规范脚本)。典型流程:先跑 scopes 查看队列,再 pop 取任务,用相应技能执行,最后 complete 回写结果。任务失败时自主 agent 应先重试最多两次再判定失败。
适用场景:检查队列、处理任务、驱动共享任务队列;默认一次处理一个任务以保持稳定和上下文长度,除非被明确要求排空队列。
限制:使用 scoped 队列时必须传 --scope,不得越界处理队列外任务;wrapper 应依据退出码分支(10 停止,11/12 需操作者决策,14 为配置错误)。技能必须将自身执行记录到 .agent/state/last-run.json,1.2.0 的 last-run schema 新增 scope 字段。