OpenClaw自動化トラブルシューティング:cronと配信エラーを解決
自動化タスクが予定通りに動かないと、原因探しに時間がかかってしまいますよね。なぜか Cron が動かない、あるいは動いているはずなのに通知が来ないといったトラブルは、開発者なら誰もが経験する悩みです。
このページでは、スケジューラーと配信に関する問題(cron + heartbeat)のトラブルシューティング方法を解説します。
コマンド・ラダー(優先順位)
Section titled “コマンド・ラダー(優先順位)”まずは、問題の全体像を把握するために以下のコマンドを順番に試すのがベストです。
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctoropenclaw channels status --probe次に、自動化のチェックを実行します。
openclaw cron statusopenclaw cron listopenclaw system heartbeat lastCron が実行されない場合
Section titled “Cron が実行されない場合”Cron が起動していない疑いがあるときは、以下のコマンドで状態を確認してください。
openclaw cron statusopenclaw cron listopenclaw cron runs --id <jobId> --limit 20openclaw logs --follow正常な出力の例:
cron statusで有効(enabled)と表示され、将来のnextWakeAtMsが設定されている。- ジョブが有効で、正しいスケジュールとタイムゾーンが設定されている。
cron runsでokまたは明確なスキップ理由が表示されている。
よくある兆候:
cron: scheduler disabled; jobs will not run automatically→ 設定(config)または環境変数(env)で cron が無効になっています。cron: timer tick failed→ スケジューラーのティックがクラッシュしました。前後のスタックトレースやログのコンテキストを確認してください。- 実行出力に
reason: not-dueとある →--forceなしで手動実行が呼ばれましたが、ジョブの実行時刻に達していません。
Cron は実行されたが配信されない場合
Section titled “Cron は実行されたが配信されない場合”ジョブは起動しているのに、期待した通知やデータが届かない場合はこちらを確認します。
openclaw cron runs --id <jobId> --limit 20openclaw cron listopenclaw channels status --probeopenclaw logs --follow正常な出力の例:
- 実行ステータスが
okである。 - 独立したジョブに対して配信モード(delivery mode)とターゲットが設定されている。
- Channel のプローブ結果で、ターゲットとなるチャンネルが接続済みと報告されている。
よくある兆候:
- 実行は成功しているが配信モードが
noneである → 外部へのメッセージ送信は予定されていません。 - 配信ターゲット(
channelやto)が不足または無効 → 内部的な実行は成功しても、外部への送信はスキップされます。 - チャンネルの認証エラー(
unauthorized,missing_scope,Forbidden) → チャンネルの認証情報や権限によって配信がブロックされています。
Heartbeat が抑制またはスキップされる場合
Section titled “Heartbeat が抑制またはスキップされる場合”Heartbeat が動いていない、あるいはメッセージが飛ばない場合は以下のコマンドを使います。
openclaw system heartbeat lastopenclaw logs --followopenclaw config get agents.defaults.heartbeatopenclaw channels status --probe正常な出力の例:
- Heartbeat が有効で、0 以外のインターバルが設定されている。
- 直近の Heartbeat の結果が
ranである(またはスキップ理由が妥当である)。
よくある兆候:
heartbeat skippedかつreason=quiet-hours→activeHoursの時間外です。requests-in-flight→ メインレーンが混雑しているため、Heartbeat が後回しにされました。empty-heartbeat-file→HEARTBEAT.mdは存在しますが、実行可能な内容が含まれていません。alerts-disabled→ 表示設定(visibility settings)により、外部への Heartbeat メッセージが抑制されています。
タイムゾーンと activeHours の注意点
Section titled “タイムゾーンと activeHours の注意点”時間のズレに関する問題は、設定値を直接確認するのが近道です。
openclaw config get agents.defaults.heartbeat.activeHoursopenclaw config get agents.defaults.heartbeat.activeHours.timezoneopenclaw config get agents.defaults.userTimezone || echo "agents.defaults.userTimezone not set"openclaw cron listopenclaw logs --follow覚えておくべきルール:
Config path not found: agents.defaults.userTimezoneと表示される場合は、キーが未設定です。Heartbeat はホストのタイムゾーン(または設定されていればactiveHours.timezone)を使用します。--tzなしの Cron は、Gateway ホストのタイムゾーンを使用します。- Heartbeat の
activeHoursは、設定されたタイムゾーン解決(user,local, または明示的な IANA タイムゾーン)を使用します。 - タイムゾーン指定のない ISO タイムスタンプは、Cron の
atスケジュールにおいて UTC として扱われます。
よくある兆候:
- ホストのタイムゾーン変更後、ジョブが意図しない時刻に実行される。
activeHours.timezoneが誤っているため、日中であっても Heartbeat が常にスキップされる。
次のステップ
Section titled “次のステップ”OpenClaw Expert
まだ解決しませんか?
このページで解決しない場合は、OpenClaw Expertに直接質問してください。