跳至主要內容

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 變成重複提醒。