跳到主要内容

Heartbeat 健康巡检

Heartbeat 为当前 Profile 周期记录健康状态,检查已启用 Cron Job 的上次运行是否失败。它由 Gateway 负责,不执行助手提示词,也不在每个 Tick 调用模型。

先看状态,不要把 ok 当成所有任务成功​

anyy heartbeat status
anyy heartbeat status --json

针对指定 Profile 时,例如使用:

anyy --profile work heartbeat status --json

anyy status 和 anyy doctor 也包含 Heartbeat 信息。

状态或字段怎么理解
ok本次观察成功,仍要另外查看 Cron 失败数量
degraded扫描或通知出现错误
disabled已记录关闭状态,不继续周期运行
unknown还没有可用的巡检状态,应检查目标 Profile 的 Gateway
cron_failed_jobs当前检查到上次失败的已启用 Cron Job 数量
Last tick最近一次记录时间

输出还包括启用状态、间隔、报告的 Cooldown、投递目标和 Role/Workspace 标签。检查范围是当前 Profile 内已启用的 Cron,标签不用于缩小扫描范围。

什么情况下会提醒​

Gateway 启动时先记录一次 Tick,启用后默认每分钟继续。Heartbeat 不出现在 Cron 列表,也不是隐藏的定时 Agent 任务。

正常 Tick 不发消息。失败通过 Job ID 和上次运行时间区分:新观察到的失败会通知,同一个 Job 新一次运行失败也可能再通知;未变化的失败不会因为过了一段时间就反复发送。

v0.1.107 会载入并显示 failure_cooldown,默认 15 分钟,但当前探测逻辑使用失败签名变化。这个字段不会延迟新变化的失败,也不会为不变的失败安排周期重发。

调整间隔​

配置在目标 Profile Home 的 config.yaml:

heartbeat:
enabled: true
tick_interval: 1m
failure_cooldown: 15m
delivery_targets:
- gateway
role_id: default
workspace_id: default

默认启用,Tick 间隔 1m,Role/Workspace 标签为 default。间隔使用 30s、5m 等正数 Go Duration。

修改步骤:

  1. 按 Profile 页面确认 Home,备份该文件。
  2. 编辑 heartbeat 区块,避免改到另一个 Profile。
  3. 对同一个 Profile 运行 anyy doctor。
  4. 使用 anyy gateway restart 重启该 Profile,再用 anyy heartbeat status 核对间隔和下一次 Tick;每条命令保持相同的 --profile 选择。

配置在常驻运行时启动时读取,因此编辑间隔后需要重启生效。禁用时仍记录一次 disabled Tick,然后停止周期循环。没有公开的 heartbeat set 或手动 heartbeat tick 命令。

收到通知后做什么​

当前实现只处理 gateway 目标,发布 Profile 级实时事件。它没有 Channel Adapter 路由,也不关联具体会话;在 delivery_targets 加平台名不能配置收件人。这种通知不属于某个对话保存的系统通知历史。

打开 Dashboard → Cron,找到被点名的 Job,检查历史并修正原因。Heartbeat 不修复、重试任务;处理后可以要求 Anyy 再运行自动化,或等下一次调度,并检查最终结果。

若需要定时发到外部 Channel,应使用带已验证投递路由的自动化。修改 Cooldown 不会把 Heartbeat 变成重复提醒。