SuperAPI AI 工具集

heartbeat

部署与运维

查看项目

更新于 10-15 11:22

技能介绍

heartbeat 是一个用于多技能代理(agent)的舰队健康巡检工具,来源于 aeonfun/aeon 仓库。它通过一个选择器参数来切换运行模式,并据此执行巡检或生成优先简报。下面按用途、主要能力、使用方式、适用场景和限制分段介绍。

一、用途 heartbeat 的核心用途是监控一整支由定时技能组成的“舰队”是否健康。它默认作为环境巡检(Ambient check)运行,是 cron 每日执行一次的实时路径;也可以被调用为“优先简报”(Priority brief),用于给出当日重点。两者互斥,每次调用只运行其中一个分支。

二、主要能力

  1. 环境巡检(Ambient check) 按优先级顺序执行检查:
  • P0 失败与卡死技能:读取 memory/cron-state.json,识别 last_status 为 failed 的技能;识别已卡死(dispatched 超过 45 分钟、此前已完成过至少一次运行、且 last_dispatch 晚于 last_success)的技能;识别 API 退化(consecutive_failures ≥ 3);识别长期失败(success_rate < 0.5 且 total_runs ≥ 5);并对 heartbeat 自身做自检(仅在自身已有 ≥1 次成功且 last_success 超过 36 小时时提示)。
  • P1 停滞的 PR 与紧急 issue:检查开放超过 24 小时的 PR 以及标为 urgent 的 GitHub issue。
  • P2 被标记的记忆项:检查 memory/MEMORY.md 中需要跟进的内容。
  • P3 缺失的定时技能:对照 aeon.yml 与 cron-state.json,找出从未被调度、或 last_success 超过调度间隔两倍的技能。 此外,它会去重(在最近 48 小时日志中搜索同一事项,避免重复通知),把所有发现合并成一条按优先级分组的通知。
  1. 公开状态页 每次运行后(即使一切正常)都会重新生成 docs/status.md,包含整体状态、更新时间、开放 issue 数、下一次计划运行、Token 脉冲、近 7 天技能健康表与开放 issue 表。
  2. 优先简报(Priority brief) 读取记忆、日志与状态文件,对候选事项按“杠杆 × …”进行排序(原文在此处截断),输出今天应聚焦的 3 件事、原因以及相对昨日的变化,并通过 ./notify 与邮件发送。

三、使用方式 通过选择器参数 ${var} 控制分支:

  • 空(默认):对所有技能 / PR / issue 做环境巡检,并重新生成公开状态页;这是每日 08:00 UTC 的定时路径。
  • <area>(任意非 brief 的非空值,如 crypto、prs):聚焦该领域的环境巡检。
  • brief:优先简报。
  • brief:<area>(如 brief:crypto):偏向某领域的优先简报。 每次运行都会先读取 memory/MEMORY.md 与最近两天的 memory/logs/ 作为上下文,再解析参数选择分支。 环境巡检输出的结果会写入如 /tmp/heartbeat.md 并用 ./notify -f /tmp/heartbeat.md 发送,同时记录到 memory/logs/${today}.md。若无事项需要关注,则记录 HEARTBEAT_OK 并结束。状态文件通过工作流的自动提交步骤落到 main,技能本身无需显式 git 命令。

四、适用场景 适用于以定时技能(skill)组成的代理舰队运维,尤其是希望每天自动巡检、对外公开状态页、并在出现失败、卡死、长期失败、停滞 PR 或紧急 issue 时得到合并通知的场景。也适用于希望获得“今天该做什么”这类优先简报的场景。

五、限制与注意事项

  • 数据源限定为 memory/cron-state.json、memory/issues/INDEX.md、aeon.yml 与最新的 output/articles/token-report-*.md,其余信息不得暴露;status.md 是公开文件。
  • 状态页每次整体覆盖,不追加。
  • 新 fork 或刚启用技能的舰队处于“预热”状态,不应被标记为失败或卡死,也不应触发通知;但文档中关于简报候选评分公式在此处被截断,具体计算方法暂未提供。
  • Token 脉冲部分依赖 token-report 文件:文件缺失则整节省略;超过 24 小时则显示陈旧提示而非表格。
  • 具体字段提取使用正则,兼容旧版与新版的表格布局。

(注:原始资料中“优先简报”的评分公式、通知邮件发送的具体配置细节未完整给出,暂未提供。)