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。
修改步驟:
- 按 Profile 頁面確認 Home,備份該檔案。
- 編輯
heartbeat區塊,避免改到另一個 Profile。 - 對同一個 Profile 執行
anyy doctor。 - 使用
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 變成重複提醒。