自動化
自動化トラブルシューティング
このページは、スケジューラと配信の問題 (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 runsがokまたは明示的なスキップ理由を表示する。
一般的な兆候:
cron: scheduler disabled; jobs will not run automatically→ 設定/環境で cron が無効化されている。cron: timer tick failed→ スケジューラのティックがクラッシュした; 周囲のスタック/ログコンテキストを調査する。- 実行出力内の
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) → 内部的には成功しても外部送信をスキップする可能性がある。 - チャネル認証エラー (
unauthorized,missing_scope,Forbidden) → チャネルの認証情報/権限により配信がブロックされる。
Heartbeat が抑制またはスキップされた
openclaw system heartbeat last
openclaw logs --follow
openclaw config get agents.defaults.heartbeat
openclaw channels status --probe
正常な出力は以下のようになります:
- ハートビートがゼロ以外の間隔で有効化されている。
- 最後のハートビート結果が
ran(またはスキップ理由が理解できる)。
一般的な兆候:
heartbeat skippedでreason=quiet-hours→activeHoursの範囲外。requests-in-flight→ メインレーンがビジー; ハートビートが延期された。empty-heartbeat-file→HEARTBEAT.mdに実行可能なコンテンツがなく、タグ付けされた cron イベントもキューされていないため、間隔ハートビートがスキップされた。alerts-disabled→ 可視性設定により外部ハートビートメッセージが抑制される。
タイムゾーンと 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はキーが設定されていないことを意味する; ハートビートはホストのタイムゾーン (または設定されていればactiveHours.timezone) にフォールバックする。--tzなしの Cron はゲートウェイホストのタイムゾーンを使用する。- ハートビートの
activeHoursは設定されたタイムゾーン解決 (user,local, または明示的な IANA tz) を使用する。 - タイムゾーンなしの ISO タイムスタンプは、cron の
atスケジュールでは UTC として扱われる。
一般的な兆候:
- ホストのタイムゾーン変更後、ジョブが間違った現地時刻に実行される。
activeHours.timezoneが間違っているため、日中に常にハートビートがスキップされる。
関連項目: