自動化を増やすと、失敗の質が変わる。

最初の頃は「動かない」が問題だった。設定ミス、パッケージ不足、権限エラー。原因は明確で、直せば動く。

今は違う。動いているように見えて、実は途中で止まっている。ログを見に行かないと気づかない。気づいた頃には数時間経っている。この「無言停止」が一番厄介だった。

OpenClawのHeartbeat機能を使って、ロングタスクの状態を定期的にチェックする仕組みを入れた。派手な仕組みではないが、発見の遅れが大幅に減った。


何が起きていたか

自分の環境では、Pixel 4a上でいくつかの処理を並行して走らせている。

  • Remotionの動画レンダリング(数分〜十数分)
  • npmパッケージのインストール(環境によっては数分)
  • Puppeteerを使ったスクレイピング(タイムアウトしやすい)

これらが途中でSIGKILLされたり、OOMで落ちたりする。Pixel 4aのRAMは6GBなので、同時実行が重なると起きやすい。

問題は、プロセスが消えてもエラー通知が来ないこと。次にDiscordでメッセージを送って初めて「あれ、反応がおかしい」と気づく。そこからログを掘る。毎回これだと効率が悪い。


Heartbeatで何を変えたか

OpenClawにはHeartbeat機能がある。定期的にエージェントにメッセージを送り、応答させる仕組み。

これを使って、5分ごとにプロセスの状態をチェックするようにした。

監視ルール

ルールは単純にした。

1. プロセスリストを取得する 2. 5分以上動いているプロセスがあるか確認する 3. あれば状況を報告する 4. なければHEARTBEAT_OKと返す


HEARTBEAT.md の内容:
- プロセスリストを確認
- 5分以上動いているプロセスがあれば進捗報告
- 何もなければ HEARTBEAT_OK

cronジョブとして登録

このチェックを5分間隔のcronジョブとして登録している。メインセッションにsystemEventとして送る形式。


{
  "schedule": { "kind": "every", "everyMs": 300000 },
  "sessionTarget": "main",
  "payload": {
    "kind": "systemEvent",
    "text": "プロセスリストを確認して、5分以上動いているプロセスがあれば進捗報告..."
  }
}

実際の検知事例

Remotionレンダリングの途中停止

420フレームのレンダリング中、47フレーム目でプロセスがkillされていた。Heartbeatのチェックで「プロセスが消えている」ことに5分以内に気づけた。以前なら次にDiscordを開くまで気づかなかった。

onboardingプロセスの無限待機

OAuth認証のonboarding中、入力待ちのまま応答がない状態が続いていた。Heartbeatで「同じプロセスが10分以上動いている」と報告が上がり、手動でkillして再実行できた。

npmインストールのOOM

npm installがメモリ不足で落ちていた。プロセス自体は終了していたが、次のステップに進んでいなかった。Heartbeatの「プロセスなし」報告から、失敗に気づいた。


運用して分かった調整ポイント

頻度は5分がちょうどいい

1分だとノイズが多い。10分だと発見が遅い。5分間隔にしたら、コストと検知速度のバランスが取れた。

報告は短く固定文で十分

最初は詳細なログを出そうとしたが、確認する側の負担が増えるだけだった。「問題なし」か「このプロセスがX分動いてる」の2パターンで十分。

監視対象を絞る

全プロセスを見ると関係ないものまで拾ってしまう。「5分以上」というフィルタだけで、実用上は問題なかった。


Heartbeat vs cron、どう使い分けるか

似た仕組みとしてcronジョブがある。使い分けの基準はこうしている。

Heartbeatに向くもの:

  • 複数のチェックをまとめて1回で回したい
  • メインセッションのコンテキストが必要
  • 多少のタイミングずれが許容できる

cronに向くもの:

  • 正確な時刻で実行したい(毎時15分ちょうど、など)
  • メインセッションと分離したい
  • 別モデルやthinkingレベルで実行したい

自分の場合、ロングタスク監視はHeartbeat、X投稿や記事生成はcronで分けている。


まとめ

Heartbeat監視を入れたことで、「止まっていることに気づかない」時間が大幅に減った。

仕組みとしては単純で、5分ごとにプロセスを見て、異常があれば報告するだけ。それだけで運用のストレスが変わる。

長時間のタスクを日常的に動かしているなら、まずはHeartbeatで「異常を早く見つける」仕組みを入れるだけでも効果がある。高度な監視ツールを導入する前に、こういう軽い仕組みから始めるのが現実的だった。


関連記事

参考リンク