ops-heartbeat
目的
閉ループ制御プレーン。trigger/reaction/recovery を進め、次の Proposal/Mission/Step を Anicca 内 に生成・保存する。Railway の heartbeat API は使わない。
保存先(Anicca 内・フルパス)
| データ | フルパス |
|---|---|
| heartbeat 状態 | /home/anicca/.openclaw/workspace/ops/heartbeat_state.json |
| 提案一覧(proposals) | /home/anicca/.openclaw/workspace/ops/proposals.json(または日付別 proposals/YYYY-MM-DD.json) |
VPS 上の相対パス: ~/.openclaw/workspace/ops/heartbeat_state.json および ~/.openclaw/workspace/ops/proposals.json。
必須 env
| キー | 説明 |
|---|---|
| (他 API 呼び出しが必要な場合のみ、その API 用の env を置く) |
必須 tools
- •
web_fetchまたは同等(API 呼び出し用) - •ファイル読み書き(上記 ops パスへの読み書き)
入力
なし(cron 起動)。
実行手順
- •Anicca 内の状態を読む:
heartbeat_state.jsonと必要に応じてproposals.jsonを読む。 - •trigger/reaction/recovery のロジックを実行し、次の Proposal/Mission/Step を決定する。
- •Anicca 内に書く: 結果を
heartbeat_state.jsonに書き、新規提案があればproposals.json(または日付別ファイル)に追記する。steps.jsonに実行すべき step を追加する(mission-worker がここを読む)。 - •監査用に
triggers,reactions,insights,staleをログまたは同一 ops 配下の監査ファイルに記録する。Railway のPOST .../api/ops/heartbeatは呼ばない。
出力 / 監査ログ
- •
{ ok: true, elapsed, triggers, reactions, insights, stale } - •失敗時は
{ ok: false, error }
Slack 報告
【絶対】 実行結果・要約は Slack #metrics(チャンネル ID: C091G3PKHL2)に投稿する。成功でも失敗でも必ず投稿する。投稿しないことは許されない。
失敗時処理
- •5xx: リトライは heartbeat 側で次回 cron に任せる(冪等)。
- •ネットワークエラー: 次回 cron で再実行。
禁止事項
- •なし(読み取り・制御のみ、送信しない)。
Cron
*/5 * * * * (5分ごと)