OpenClaw と Cron ジョブ、Heartbeat
Cronや Heartbeat は、エージェントが独立して自律的に動作するための仕組みです。 この仕組みがあるので、OpenClaw は自律的な動作が可能です。 特に何も指示をしていなくても、おすすめの情報を見つけたときに OpenClaw の方から話しかけてくるような行動を取ることがあります。
- Heartbeat
- Heartbeat は定期的に起動し、workspace 内の HEARTBEAT.md を実行します。この間隔はデフォルトでは 30分です。
- 継続的に実行する必要があるがあまり時間に厳密である必要がない場合は Heartbeat が使われます。
- HEATBEAT.md の中身が空の場合は何もしません。
- Cron
- 厳密に指定時間に実行して欲しい処理に対応するのが Cron です。
- こちらは指定時間になったらジョブが起動し、登録されているプロンプトを実行します。
いずれもバックグラウンドで何らかのタスクを走らせることが目的です。 そのため必ずしも実行結果が Slack, Discord 等のチャンネルに報告されるとは限りません。 もし DM 等で報告が欲しい場合は、明確にメッセージを送信するよう指示を出しておくことが大切です。
明示的なジョブの登録
エージェントに対して定期的に、または指定した日時になったら行って欲しい旨の指示を出すと、エージェントがこれらのタスクを自分で登録してくれます。 Cron と Heartbeat のどちらが使われるかもエージェントが自分で判断します。
指定時間にメッセージが来ない問題
指定時間に何らかのメッセージを送るように指示を出しても、メッセージには何の報告も送られてこない場合があります。
解決方法
- 出力に対する明確な指示を出しておく。ファイルに保存させたり DM として誰あてにメッセージを送るように指示を出す。
- プロンプト (payload.message) だけでなく、
~/.openclaw/cron/jobs.jsonの “delivery” が定義されているかも確認してみてください。
- 軽量版モデルやパラメータ数が少ないモデルを使ってる場合は、上位モデルやパラメータ数が多いモデルに切り替える。
- これで報告の問題があっさり解決する場合があります。
- OpenClaw を更新する
openclaw updateコマンドで最新版に更新してください。古い初期のバージョンでは Cron がきちんと動作しない場合があります。
Cron ジョブの設定の確認
openclaw cron list –all コマンドで、登録されている cron ジョブの一覧を確認することができます。
もしくはチャットから確認したい場合はエージェントに尋ねるとおそらく答えてくれます。
Cron ジョブには isolated モードと main モードの 2種類があります。 先程のバックグラウンドで実行されるジョブは isolated になります。 main モードはチャットへの割り込みが発生するため推奨は isolated になっています。
もし直接ジョブの設定ファイルを確認したい場合は ~/.openclaw/cron/jobs.json を参照してください。
Heartbeat 時間の変更
おそらくエージェントに直接指示しても設定できると思いますが、agents.defaults.heartbeat.every で時間の変更できます。
"agents": { "defaults": { "heartbeat": { "every": "30m", "target": "last" }, } }
