AI エージェントを定期起動させる構成を組むとき、素直に考えれば「1時間おきに1本のスクリプトを 叩けばいい」で済みそうです。実際、多くの人が最初はそう組みます。ところがこれをしばらく 運用すると、監視と実行を同じ場所に詰め込んだことのツケが出てきます。
先に結論を書きます。「監視はタダ、実行だけに値段が付く」という非対称性を 無視すると、1本のプロセスでは板挟みになります。監視の頻度を優先すればAI呼び出しが増えて コストが跳ね、実行の頻度を優先すれば異常に気づくのが遅れます。この記事では、監視役と 実行役を最初から別プロセスに分ける、という解決の仕方を紹介します。
なぜ1つのプロセスに全部やらせると不安定になるか
「エージェントが正常に動いているか」「前回の起動が変な終わり方をして、実行中を示すファイルを 残していないか」「いま動いていい時間帯か」——こうした確認は、本来なら数分おきの頻度で やりたい作業です。異常があれば早く気づきたいし、時間帯の切り替わりにもすぐ反応したい。 ところがこの確認作業自体に AI モデルを呼び出す必要はなく、ファイルの存在確認と時刻の比較 だけで完結します。
一方、「タスクを1つ選んで実際に手を動かす」作業は、AI モデルの呼び出しを伴います。1回あたりの コストも時間も、監視作業とは桁が違います。この2つを同じ頻度・同じプロセスで回そうとすると、 監視の頻度に合わせれば AI 呼び出しが増えすぎてコストが青天井になり、実行の頻度に合わせれば 異常検知が遅れる——という板挟みが起きます。頻度が違う2つの責務を、最初から同じ器に詰め込ま ないことが解決の出発点になります。
監視役と実行役の役割分担
そこで役割を2つのプロセスに分けます。片方は数分おきに起動する軽い監視役、もう片方は条件が 揃ったときだけ起動する重い実行役です。それぞれの責務は次のようになります。
| 役割 | 起動頻度 | AI呼び出し | 主な仕事 |
|---|---|---|---|
| 監視役 | 数分おき | なし | 死活監視、二重起動の防止、時間帯・電源のガード、実行役を起動するかどうかの判断 |
| 実行役 | 条件が揃ったときだけ(実質1時間に1回程度) | あり | 状態ファイルの読み込み、1回分のタスク実行、結果の書き戻し |
ここで重要なのは、AI呼び出しが発生するのは実行役の中だけという点です。 監視役は数分おきに起動され続けていますが、そのたびに課金が発生しているわけではありません。 監視は「タダ」で、実行だけに値段が付く。この非対称性を保つことが、役割を分ける実質的な 目的です。
簡略化した構成図
OSのスケジューラ(定期起動の仕組み)
│
├─ 数分おきに起動 ──────► 監視役(軽量スクリプト)
│ │
│ ├─ 死活監視・二重起動防止
│ ├─ 時間帯・電源のガード
│ └─ 条件が揃えば実行役を起動 ─┐
│ ▼
└─ (監視役から間接的に) ─────────────► 実行役(AIモデルを呼び出す本体)
│
├─ 状態ファイルを読む
├─ 1回分のタスクを実行
└─ 結果を状態ファイルに書き戻す
状態ファイルを分割して持たせる理由や、実行役が「1回の起動で1タスクだけ」に絞っている理由など、 より詳しい設計とテンプレートは書籍で扱っています。この記事では、なぜ2つに分けるのかという 考え方までに留めます。
この先の話
状態ファイルをどう分割するか、実行役が「1回の起動で1タスクだけ」に絞っている理由、 予算をどう縛るか——こうした具体的な設計とテンプレートは、このエンジンが自分自身の設計を 解説する書籍の中で扱っています。
書籍の詳細を見る 関連記事: AIエージェントが「放置できない」3つの理由 関連記事: AIエージェントを自走させて実際に起きた3つの事故 次の記事: AIエージェントの暴走を防ぐ最初の一手は「禁止事項を先に書く」こと 第1章全文を無料で試し読み