Skip to main content
このページは、スケジューラーと配信まわり(cron + heartbeat)の問題を切り分けるためのものです。

確認コマンドの順番

openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
openclaw channels status --probe
続けて、自動化まわりのチェックを実行します。
openclaw cron status
openclaw cron list
openclaw system heartbeat last

cron が動かない

openclaw cron status
openclaw cron list
openclaw cron runs --id <jobId> --limit 20
openclaw logs --follow
期待する状態は次のとおりです。
  • cron status が有効状態を示し、将来の nextWakeAtMs が表示される。
  • ジョブが有効で、妥当なスケジュールとタイムゾーンを持っている。
  • cron runsok または明示的なスキップ理由が表示される。
よくある兆候:
  • cron: scheduler disabled; jobs will not run automatically → 設定または環境変数で cron が無効になっている。
  • cron: timer tick failed → スケジューラーの tick がクラッシュしているため、周辺のスタックトレースやログを確認する。
  • 実行結果に reason: not-due が出る → --force なしで手動実行しており、まだ実行時刻になっていない。

cron は動いたが配信されない

openclaw cron runs --id <jobId> --limit 20
openclaw cron list
openclaw channels status --probe
openclaw logs --follow
期待する状態は次のとおりです。
  • 実行ステータスが ok である。
  • 分離ジョブ向けの配信モードとターゲットが設定されている。
  • チャンネルプローブで対象チャンネルが接続済みと確認できる。
よくある兆候:
  • 実行は成功したが配信モードが none → 外部メッセージは送られないのが正常です。
  • 配信ターゲットが欠落または不正(channel / to) → 内部処理は成功しても、外向きの配信はスキップされることがあります。
  • チャンネル認証エラー(unauthorizedmissing_scopeForbidden) → チャンネルの認証情報または権限不足で配信が止まっています。

heartbeat が抑制またはスキップされる

openclaw system heartbeat last
openclaw logs --follow
openclaw config get agents.defaults.heartbeat
openclaw channels status --probe
期待する状態は次のとおりです。
  • heartbeat が 0 以外の間隔で有効になっている。
  • 最後の heartbeat 結果が ran である、またはスキップ理由を説明できる。
よくある兆候:
  • heartbeat skippedreason=quiet-hours が出る → activeHours の時間外です。
  • requests-in-flight → メインレーンがビジーのため、heartbeat が延期されています。
  • empty-heartbeat-fileHEARTBEAT.md に実行可能な内容がなく、タグ付き cron イベントもキューにないため、定期 heartbeat がスキップされています。
  • alerts-disabled → 表示設定により外向きの heartbeat メッセージが抑制されています。

タイムゾーンと activeHours の落とし穴

openclaw config get agents.defaults.heartbeat.activeHours
openclaw config get agents.defaults.heartbeat.activeHours.timezone
openclaw config get agents.defaults.userTimezone || echo "agents.defaults.userTimezone not set"
openclaw cron list
openclaw logs --follow
確認ポイント:
  • Config path not found: agents.defaults.userTimezone は、そのキーが未設定であることを意味します。heartbeat はホストのタイムゾーン(activeHours.timezone が設定されていればそちら)へフォールバックします。
  • --tz なしの cron は、ゲートウェイホストのタイムゾーンを使います。
  • heartbeat の activeHours は、設定されたタイムゾーン解決(userlocal、または明示的な IANA tz)を使います。
  • タイムゾーンを含まない ISO タイムスタンプは、cron の at スケジュールでは UTC として扱われます。
よくある兆候:
  • ホストのタイムゾーン変更後に、ジョブが意図しない時刻で実行される。
  • activeHours.timezone が誤っているため、日中なのに heartbeat が常にスキップされる。
関連ドキュメント: