Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2026-07-25 OpenClaw schdulerをマスターする @ AI社会実装勉強会

2026-07-25 OpenClaw schdulerをマスターする @ AI社会実装勉強会

OpenClaw Schedulerをマスターする

https://docs.openclaw.ai/automation/cron-jobs

Avatar for Naka Masato

Naka Masato

July 25, 2026

More Decks by Naka Masato

Other Decks in Technology

Transcript

  1. 今日の話 Scheduler は、思っているより守備範囲が広い リマインド 忘れる前提で仕組みにする 期限、フォローアップ 定期レポート 毎回まとめるのが面倒 日次・週次のサマリー 監視・チェック

    異常なときだけ知りたい コスト、エラー、 PR の滞留 繰り返しタスク実行 毎回やることが同じ 集計、同期、バックアップ Ad-hoc / 単発 今回だけ予約したい 「明日 9 時にこれ確認して」 今日は OpenClaw の Scheduler (cron) で何ができるのかを話します。
  2. AI Agent 以前 定期実行そのものは、前からやっていた GitHub Actions Zapier Slack リマインダー cron

    でワークフローを 定期実行する サービス間の連携を トリガーで組む チャンネルに定期的な 通知を出す 定期実行そのものは、これらでできていた。
  3. 課題 純粋な Scheduler の 3 つの課題 1 2 3 設定が面倒

    GUI でポチポチ設定する/コードで書く。連携したいサービスごとに認証・接続の設定が必要。 通知が来た後のアクションは自分でやる 通知は届くが、そこから先は連携サービス上で手を動かす。例:タスクの状態更新、 Doc の更新。 Non-deterministic な処理は自前実装 LLM を挟みたい場合、 SDK を使って自分で実装する必要があった。
  4. 変わったこと AI Agent × Scheduler で課題が解決 以前 設定が面倒 通知後のアクションが手動 LLM

    処理は自前実装 OpenClaw などの AI Agent 自然言語で設定できる 「これ明日 9 時にリマインドして」 返信をそのまま拾って更新 Doc / State の更新まで繋がる LLM 実行が組み込み 判断を含む処理をそのまま書ける
  5. パ タ ーン OpenClaw Scheduler (cron) agentTurn command LLM が判断する

    決まった処理を確実に実行する • 要約・レビュー・調査 • 取得・チェック・集計 • 指示を書くだけで動く • スクリプトを呼ぶ • 毎回の出力に揺れがある • 毎回同じ結果/テストできる 元々は agentTurn のみ。 6 月に command が追加された。 ※ ほかに --system-event (システムイベントとして渡す)もある
  6. 設定 agentTurn の設定 スケジュール --at ペイロード 一回きり( ISO 8601 /

    "20m" のような相対指定) --message Agent に渡すプロンプト( isolated は必須) --every interval 設定 --system-event --cron cron 表記( 5 / 6 フィールド) --model / --fallbacks --tz タイムゾーン。未指定だと UTC 扱い --exact / --stagger 実行時刻の分散を制御 --light-context bootstrap の注入を省略 --tools --session main / isolated / current / session:<id> 配信 どの Agent に実行させるか --wake main セッションを起こす( now / next-heartbeat ) --name ジョブ名 使えるツールを制限 --announce / --no-deliver --channel / --to --webhook HTTP エンドポイントに POST 実行後に消すか残すか --session の公式の用途: main = リマインダー・システムイベント / isolated = レポート・バックグラウンド current ・ session:<id> = 文脈を積み上げる処理 現状は基本 isolated を使っている openclaw cron add --name "Morning brief" --cron "0 7 * * *" --tz "Asia/Tokyo" \ --announce --channel slack --to "channel:C..." 最終応答を送るか 送信先チャンネルとターゲット --delete-after-run --session isolated --agent main --message "..." \ モデルとフォールバック --thinking thinking レベル セッション・実行 --agent システムイベントとして渡す
  7. 設定 command の設定 コマンド実行 --command スケジュール・配信は agentTurn と共通 シェル文字列( sh

    -lc で実行) --at / --every / --cron / --tz --command-argv 厳密な argv 実行(シェル解釈なし) --announce / --no-deliver --command-cwd 作業ディレクトリ --channel / --to / --webhook --command-env 環境変数( KEY=VALUE ) 実行の扱い --command-input stdin に渡す入力 出力・タイムアウト --timeout-seconds 結果を送るか 送信先 そのまま結果になる(空なら stderr ) exit 0 ok として記録される 実行時間の上限 --no-output-timeout-seconds --output-max-bytes stdout 同じ指定方法 無出力タイムアウト 非 0 / signal / timeout error として記録され、失敗通知の対象 NO_REPLY 何も投稿しない 出力サイズの上限 モデルを介した agent turn は起動しない openclaw cron create "*/15 * * * *" \ --name "Queue depth probe" \ --command "scripts/check-queue.sh" --command-cwd "/srv/app" \ --announce --channel slack --to "channel:C..."
  8. 運用の実態 cron の例 タスク期限チェック 期限が近いものを拾って通知 command 目標 Check-in 進捗を定期的に確認する command

    モニタリング コストや状態を見て閾値で知らせる command 開発支援 Open PR を読んで要約する agentTurn 調査 調べてまとめる agentTurn Ad-hoc (その場で頼む) 「 17 時の実行の結果を 17 時 10 分に確認してこのスレで通知して」 agentTurn 事前に登録しておくものだけでなく、思いついたときに一言頼めるのが効く( Ad-hoc )
  9. Tip 1 agentTurn は「 Skill を実行する」 message にする message に処理を直接書く

    "message": "◦◦ を集めて△△の形式で まとめて□□に通知して… " cron 以外に、普段の Agent とのやり取りからも同じ処理を呼べる 処理の実体が 1 か所にまとまり、 cron 定義が指示文で肥大化しない 修正が Skill 側だけで済む Skill 化して、それを呼ぶ "message": "xxx-report skill を 実行して "
  10. Tip 2 形が固まったら command に寄せる agentTurn で作る 動きが固まる command に落とす

    とにかく速い。まず動かして試す 出力と手順が安定してくる deterministic にする 特に、最終的なフォーマットを固定したいものは command が向く 出力の揺れがなくなる 実行時間とコストが読める agentTurn は「まだ形が決まっていない処理」の置き場と考える。 テストできる
  11. その先にあること command が増えると、 Script 管理が本題になる 1 1 スケジュール = 1

    スクリプト 最初はこれで足りる 2 共通処理が出てくる 同じような取得・整形・通知が重なる 3 散らかりはじめる どこに何があるか分からなくなる やっていることは、普通の CLI 開発に近づいていく
  12. 設計 構成例 scripts/ ├── pyproject.toml 共通処理を切り出す ├── src/ 取得・整形・通知をモジュールに分ける │

    └── jobs/ │ ├── __init__.py │ ├── common/ # 共通処理 │ └── reports/ # 各ジョブ └── tests/ └── test_reports.py エントリポイントを揃える cron からは同じ形で呼べるようにする テストを書く 外部依存はモックして単体で回す ★ 実構成に差し替え
  13. 今後の展望 create-scheduler Skill を AI Agent に追加 1 2 3

    用途を伝える Skill が判断する Scheduler ができる 「毎週これをまとめたい」 agentTurn か command か 命名・配置・構成も揃う AI Agent 自体に依頼して、 Scheduler を決まった形で使えるようにしておく WIP 現在進行中
  14. まとめ Scheduler は起点として万能。だいたいのことは「いつやるか」から始まる AI Agent で「設定・連携・ LLM 処理」の手間が消えた → 数を増やせる

    agentTurn は Skill を呼ぶ形にすると、 cron 以外でも再利用できる 形が固まったものは command に寄せて deterministic にする command が増えると普通のソフトウェア開発。テストと再利用性を意識する 最終的には、その作り方自体を Skill にしていく
  15. まだ模索しているところ 大きく分けると、 2 つのパターンがある AI Agent の中で実行する 決まったスクリプトの Scheduler OpenClaw

    の cron command など + AI Agent から Scheduler を設定 考えることが増える 普通に実装できる LLM への接続方法 LLM の API Key MCP 用クライアントの作成 各サービスの Client SDK 後者なら、 AI Agent 側に Scheduler の設定を 簡単に開発できる Skill を作るとよさそう