跳到主要内容

Heartbeat

Heartbeat 是 resident runtime 的运行检查。它记录 Anyy 是否在活跃运行,并监控失败的 cron jobs。它在 gateway 常驻运行时启动。

Heartbeat 不调用模型。它读取本地 state,更新 heartbeat meta record,并在发现新的 cron failure signature 时发布通知。

Heartbeat 状态

使用:

anyy heartbeat status
anyy heartbeat status --json

状态 payload 包含:

字段含义
enabled配置中是否启用 heartbeat。
statusokdegradeddisabledunknown
tick_intervalGateway heartbeat loop 的运行间隔。
failure_cooldown失败通知状态中记录的 cooldown 值。
delivery_targets通知目标,默认 gateway
actor_id固定为 heartbeat
role_id / workspace_idHeartbeat 通知使用的 scope。
last_tick_at最近一次成功 tick 的时间。
last_notification_at最近一次 cron 失败通知时间。
cron_failed_jobs最近状态为 failed 的 enabled cron jobs 数量。

anyy status --json 和 gateway status RPC 也会把 heartbeat status 和 cron、channels、MCP、storage、gateway listener 摘要一起返回。

配置

Heartbeat 配置位于 heartbeat

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

默认值:

字段默认含义
enabledtrueGateway 运行时启动 heartbeat。
tick_interval1m两次 tick 之间的间隔。
failure_cooldown15m和失败通知状态一起存储的 cooldown 值。
delivery_targets["gateway"]Heartbeat 通知目标。
role_idhomeHeartbeat event 的 role scope。
workspace_iddefaultHeartbeat event 的 workspace scope。

Duration 接受 30s1m15m 这类 Go duration 字符串。兼容字段 tick_interval_secondsfailure_cooldown_seconds 也被接受。

Runtime 事件

每次 tick 时,heartbeat 会:

  1. 读取之前的 heartbeat state record。
  2. 扫描 enabled cron jobs 中 last_status: failed 的任务。
  3. 发现新的 failure signature 时发布一条通知。
  4. 保存新的 heartbeat state,包含 liveness 和 failure metadata。

通知标题是 Anyy heartbeat。消息会指出最近失败的 cron job。

Heartbeat notification 的 scope metadata:

Metadata
sourceheartbeat
actor_idheartbeat
role_id配置的 role id,默认 home
workspace_id配置的 workspace id,默认 default

写入当前 state record 时,heartbeat 会移除旧的 user_idagent_iddeliver 字段。

可观测性

当 heartbeat status 缺失、过旧或 degraded 时,使用 anyy doctor。Doctor 输出会基于同一份 status payload 包含 heartbeat probe。

常见检查:

现象检查
statusunknownGateway 可能尚未 tick,或者 state database 是新的。
statusdisabledheartbeat.enabled 为 false。
statusdegradedCron failure 扫描或通知投递返回了错误。
last_tick_at 过旧确认预期 home/profile 的 resident gateway 正在运行。

Heartbeat 是 profile-local 的。如果使用多个 profile 或 --home,请对运行 resident gateway 的同一个 home 执行 status 命令。