「会話が止まるなら、定期的に叩けばいい」——そう考えて cron や launchd で AI エージェントを 定期起動する構成を組んだ人は多いはずです。ところがその先で、だいたい次の3つのどれかに 引っかかります。
先に結論を書きます。この3つは、賢いプロンプトを書いても防げません。 防げるのは、エージェントの中身ではなく、それを動かしている外側の器の設計だけです。 この記事では、具体的な対策の実装には踏み込まず、まず症状の見分け方を 共有します。
事故1: 暴走 — できることを全部やってしまう
広い権限と曖昧な目標を同時に渡すと、エージェントは「目標の達成に役立ちそうなこと」を 片端から実行し始めます。設定ファイルを勝手に書き換える、頼んでいないリポジトリのテストを 直しにいく、依存パッケージを最新に上げる。厄介なのは、個々の行動にはそれぞれ一応の理屈が あることです。ログを読むと「言いたいことは分かる」行動が並んでいるのに、全体としては 頼んでいない変更が広い範囲に入ってしまいます。
見分け方はシンプルで、差分の範囲がタスクの説明より明らかに広いときは暴走を 疑います。原因は権限の広さそのものではなく、「やってはいけないこと」が定義されていないこと にあります。
事故2: 無限ループ — 前に進まないのに動き続ける
より静かで、より発見しづらいのがこちらです。エージェントは毎回律儀に起動し、律儀に調査し、 「次はこうすべき」と結論を出して終わります。ところが翌日も、同じような結論を出します。 成果物のファイルは1つも増えていないのに、起動の回数だけが積み上がっていきます。
これは、前回の自分が何をどこまでやったかを読んでいないために起きます。毎回ゼロから 考え直すので、堂々巡りになります。しかも毎回それらしい計画を出すため、 ログだけを見ていると順調に動いているように見えるのが、この事故の最も 厄介な点です。見分けるには、ログではなく成果物のファイル数や更新日時を確認する必要が あります。
事故3: コスト超過 — 止める人がいない
暴走と無限ループは、どちらも金銭的には同じ結末にたどり着きます。API 課金は起動回数と 入出力トークンにおおむね比例するため、「動いてはいるが前に進んでいない」状態は、 そのまま請求額として積み上がります。夜中に何時間も回り続けて、朝になって気づく、 というパターンが典型です。
根本の理由は、エージェント自身にはコストを止める動機がないことです。 1回の起動の中で「もう少し調べた方が良い結果が出る」と判断すること自体は、その場だけを 見れば間違っていません。予算という制約は、タスクの外側から与えるしかないものです。
| 事故 | 表に出る症状 | 見分け方 |
|---|---|---|
| 暴走 | 頼んでいない変更が入る | 差分の範囲がタスクの説明より広いか |
| 無限ループ | 成果物が増えない | ログではなくファイルの数・更新日時を見る |
| コスト超過 | 請求額が跳ねる | 起動回数・稼働時間を定期的に確認する |
この先の話
「禁止事項をどう明文化するか」「前回の状態をどうファイルに引き継がせるか」「予算をどう 縛るか」——こうした具体的な対策(憲法テンプレート・state 設計)は、このエンジンが 自分自身の設計を解説する書籍の中で扱っています。
書籍の詳細を見る 前の記事: AIエージェントが「放置できない」3つの理由 次の記事: 監視役と実行役を分けると、なぜAIエージェントは安定するのか 関連記事: AIエージェントの暴走を防ぐ最初の一手は「禁止事項を先に書く」こと