自動化
Cronジョブ
Cron vs Heartbeat? それぞれの使用タイミングについては、Cron vs Heartbeat を参照してください。
CronはGatewayの組み込みスケジューラです。ジョブを永続化し、適切な時間にエージェントを起動し、オプションで出力をチャットに配信できます。「毎朝これを実行する」や「20分後にエージェントに通知する」といった場合、cronがその仕組みです。トラブルシューティング: /automation/troubleshooting
概要
- Cronは Gateway内部 で実行されます(モデル内部ではありません)。
- ジョブは
~/.openclaw/cron/以下に永続化されるため、再起動してもスケジュールは失われません。 - 2つの実行スタイル:
- メインセッション: システムイベントをキューに入れ、次のハートビートで実行します。
- 分離:
cron:で専用のエージェントターンを実行し、配信を行います(デフォルトはアナウンス、またはなし)。
- ウェイクアップは第一級です: ジョブは「今すぐ起動」と「次のハートビート」を要求できます。
- Webhook投稿はジョブごとに
delivery.mode = "webhook"+delivery.to = ""で設定します。 - レガシーフォールバック:
notify: trueが設定された保存済みジョブは、cron.webhookが設定されている場合、そのジョブをwebhook配信モードに移行する警告とともに、引き続き使用されます。
クイックスタート (実用的)
ワンショットリマインダーを作成し、存在を確認し、即時実行します:
openclaw cron add \
--name "Reminder" \
--at "2026-02-01T16:00:00Z" \
--session main \
--system-event "Reminder: check the cron docs draft" \
--wake now \
--delete-after-run
openclaw cron list
openclaw cron run <job-id>
openclaw cron runs --id <job-id>
配信付きの繰り返し分離ジョブをスケジュールします:
openclaw cron add \
--name "Morning brief" \
--cron "0 7 * * *" \
--tz "America/Los_Angeles" \
--session isolated \
--message "Summarize overnight updates." \
--announce \
--channel slack \
--to "channel:C1234567890"
ツールコール相当 (Gateway cronツール)
正規のJSON形式と例については、ツールコール用JSONスキーマ を参照してください。
Cronジョブの保存場所
CronジョブはデフォルトでGatewayホストの ~/.openclaw/cron/jobs.json に永続化されます。Gatewayはファイルをメモリに読み込み、変更時に書き戻すため、手動編集はGatewayが停止している場合にのみ安全です。変更には openclaw cron add/edit またはcronツールコールAPIを優先してください。
初心者向け概要
cronジョブは いつ 実行するか + 何を するか、と考えてください。
- スケジュールを選択
- ワンショットリマインダー →
schedule.kind = "at"(CLI:--at) - 繰り返しジョブ →
schedule.kind = "every"またはschedule.kind = "cron" - ISOタイムスタンプにタイムゾーンが含まれていない場合、UTC として扱われます。
- ワンショットリマインダー →
- 実行場所を選択
sessionTarget: "main"→ 次のハートビート時にメインコンテキストで実行。sessionTarget: "isolated"→cron:で専用のエージェントターンを実行。
- ペイロードを選択
- メインセッション →
payload.kind = "systemEvent" - 分離セッション →
payload.kind = "agentTurn"
- メインセッション →
オプション: ワンショットジョブ (schedule.kind = "at") はデフォルトで 成功後に削除されます。保持するには deleteAfterRun: false を設定します(成功後は無効化されます)。
概念
ジョブ
Cronジョブは以下の情報を持つ保存されたレコードです:
- スケジュール (いつ実行するか),
- ペイロード (何を実行するか),
- オプションの 配信モード (
announce,webhook,none)。 - オプションの エージェントバインディング (
agentId): 特定のエージェントの下でジョブを実行します。欠落または不明な場合、ゲートウェイはデフォルトエージェントにフォールバックします。
ジョブは安定した jobId で識別されます(CLI/Gateway APIで使用)。エージェントツールコールでは、jobId が正規です。互換性のためにレガシーな id も受け入れられます。ワンショットジョブはデフォルトで成功後に自動削除されます。保持するには deleteAfterRun: false を設定します。
スケジュール
Cronは3種類のスケジュールをサポートします:
at:schedule.atによるワンショットのタイムスタンプ (ISO 8601)。every: 固定間隔 (ミリ秒)。cron: 5フィールドのcron式(または秒を含む6フィールド)とオプションのIANAタイムゾーン。
Cron式は croner を使用します。タイムゾーンが省略された場合、Gatewayホストのローカルタイムゾーンが使用されます。多数のゲートウェイ間での時間先頭の負荷スパイクを軽減するため、OpenClawは繰り返しの時間先頭式(例: 0 * * * *, 0 */2 * * *)に対して、最大5分の決定論的なジョブごとのスタッガーウィンドウを適用します。0 7 * * * のような固定時間式は正確なままです。任意のcronスケジュールに対して、明示的なスタッガーウィンドウを schedule.staggerMs で設定できます(0 は正確なタイミングを維持)。CLIショートカット:
--stagger 30s(または1m,5m) で明示的なスタッガーウィンドウを設定。--exactでstaggerMs = 0を強制。