AIにコード修正を任せると、短時間にリクエストが集中してエラーが頻発する。私も最初はこれで頭を抱えた。
Claude Codeのhooks機能を活用する。AIの危険操作を止めるガードレールやログ記録を、外部スクリプトで制御する。
AIエージェントの自律化には、LLMの賢さよりも実行密度をコントロールする仕組みと定型の枠組みが必要だ。
AIを安全かつ安定して動かすための設計ノウハウを解説する。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理までAIがサポート。
Claude Codeのhooks機能とAIエージェント制御
AIエージェントが自律的にコードを書き、ツールを操作する開発スタイルが広がっている。AIの誤動作やAPI制限による停止を防ぐ「制御層の設計」が議論されている。
Claude Codeに実装されているhooks機能が活用されている。設定ファイルに記述を追加し、ツール呼び出しの前後に外部スクリプトを割り込ませる。
hooksを活用した制御パターン:
- PreToolUse:ツール実行前に介入。危険な削除コマンドなどを検知し、exit code 2を返して実行を強制キャンセルする
- PostToolUse:コード書き込み直後に自動でフォーマットを適用し、コード品質を維持する
- Stop:処理完了時にローカル通知を発火させ、自動処理を監視する
- 構造化ログ記録:ツール名やセッションIDを含む操作履歴をJSON形式で保存し、状態を統合管理する
しんたろー:
Claude Codeに勝手にコマンドを叩かれる懸念がある。フック機能で事前に止める仕組みは有効だ。AIの出力を監視するのではなく、外側にガードレールを置くのが標準になる。
自動化運用で障害となるのが429 Too Many Requests(API制限エラー)だ。エラーの原因は「1日の総リクエスト数」ではなく「短時間への処理集中(時間密度)」にある。
時間密度制御(スロットリング)の検証数値:
- 失敗事例:1日100件の上限に対し、1セッション30件を0.5秒間隔で処理。15分でAPI制限に到達
- 最適化事例:1セッション15件に制限し、実行間隔を1.5秒に延長。1日80件の運用で429エラーをゼロに抑制
AIの応答を安定させるため、挨拶や定型文などの「型」はプログラム側で制御し、AIには特定の一言だけを生成させる設計が有効だ。
hooksによる事前検証、実行密度の調整、定型処理の分離を組み合わせる。
制御層と「型」で設計する自律型AIエージェント
LLMの推論能力だけに頼った自動化は破綻する。システムを安定させるために必要なのは、外部から実行を制限する制御層と、出力を構造化する型の設計だ。
プロンプトを工夫しても、AIの出力には揺らぎが存在する。この不確実性をコード側で抑え込む。
Claude Codeのhooks機能は、推論と制御を分離するアプローチを提供する。ファイルの書き込みやコマンド実行といったツールの呼び出し前後に、独自のスクリプトを割り込ませる。
AIが何かを出力するたびに、裏でPythonなどのプログラムが自動的に動作する。
危険なシェルコマンドを実行しようとした際に、事前のPreToolUseで判定し、実行をキャンセルする。
コード生成直後のPostToolUseで自動フォーマットを掛けたり、全体の処理が終了したStopイベントで通知を飛ばす運用も可能だ。
すべてをAIにフリートークさせると破綻する。挨拶や時報などの固定枠はコードで生成し、AIには「特定の一言だけ」を出力させるセミフリートーク方式をとる。
しんたろー:
Claude Codeでコードを書いていると、AIに全部判断させる危険性を感じる。ファイル書き込みの後にフォーマットを走らせたり、処理終了時に通知を鳴らすフックを入れるだけで、開発のストレスは軽減される。
API制限と状態管理も重要だ。多くの開発者が「1日あたりの合計実行数」に気を取られるが、エラーを引き起こすのは「短時間におけるリクエストの集中」だ。
リクエストの実行条件とAPIエラーの発生有無に関する検証数値:
- 高密度での失敗パターン:上限1日100件に対し、1セッション30件を0.5秒間隔で実行。15分で429エラーが発生
- 低密度での成功パターン:1セッション15件に絞り、実行間隔を1.5秒に延長。1日80件の運用でエラー発生率が0%に改善
API制限の回避には「件数を減らすこと」以上に「時間あたりの実行密度を薄めるスロットリング」が有効だ。
自動化スクリプトが吐き出すログや履歴ファイルの扱いにも注意する。処理対象の状態を記録したファイルが分かれている場合、起動時にそれらを読み込んで単一の集合(set構造)に統合する。
状態が統合されていないと、過去に解除した処理を再び実行するバグが発生する。ファイルが増えるほど「どれが正しい最新状態か」を初期化時に確定させる。
データが1万件を超える場合、配列の先頭から探す線形探索ではなく、高速に判定できるデータ構造へ変換して保持する。
AIエージェントの構築で差がつくのはモデルの性能ではなく、「安全なガードレールを設置し、時間密度と状態をコントロールできるか」という制御層の設計だ。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後はAIが投稿案を毎日生成。確認して選ぶだけ。
実務で導入すべき3つの設計
これからのエージェント開発で取り組むべきは、AIの周りを囲む制御層の構築だ。
1. PreToolUseで物理的にブロックする
AIに「危険なコマンドは実行しないで」とプロンプトで頼むのは不十分だ。Claude Codeを使うなら、ツール実行前に挟まるフックイベントを記述し、実行コマンドをスクリプトでチェックする。
破壊的なコマンドパターンを検知したら、特定の終了コード2を返して実行を強制キャンセルさせる。
AIが誤って重要なファイルを消す事故を100%防ぐ。安全対策はプロンプトの記述ではなく、プログラムによる決定論的なガードレールで担保する。
2. 「実行の密度」でレート制限を回避する
AIがAPIを叩く際、短時間にアクセスが集中すると429エラーで処理が停止する。重要なのは、全体の総リクエスト数ではなく、時間あたりの実行密度だ。
ループ処理の間に適切なスリープを挟むか、1セッションあたりの処理件数を小さく刻むスロットリングを実装する。
実行間隔を数秒伸ばすだけでシステムの安定性は向上する。
3. 「型のテンプレート」を外部に持つ
システム全体の雰囲気をAIだけに作らせると、出力のブレや処理遅延が発生する。定型的な挨拶やシステム通知、共通のフォーマットは、すべてプログラム側のテンプレート定数として保持する。
AIには「核心となる一言」や「文脈に応じたコード」だけを生成させるハイブリッド構成にする。LLMの責任範囲を狭めることで、APIのトークン消費を抑えつつ、出力結果の質を一定以上に保つ。
しんたろー:
プロンプトをいじっている時間は楽しいが、本番環境で429エラーで止まったり、変な出力で全体が落ちたりする。泥臭いシェルスクリプトやガードレールを書いた日の方が、夜はぐっすり眠れる。
AIを賢く動かすこと以上に、「暴走させない枠組み」を先に作る。この制御層の設計を初期段階から組み込めるかどうかが、実用的なAIエージェントを作れるかの境界線だ。
よくある質問
AIエージェントがAPI制限の429エラーに引っかかるのを防ぐには?
1日の上限数だけでなく実行の時間密度をコントロールする。短時間にリクエストを集中させると、全体の実行回数を抑えていても制限に達する。インターバルを0.5秒から1.5秒に広げたり、1セッションあたりの処理数を30件から15件に絞る調整を行う。ログを出力し、どのタイミングでリクエストが過密になっているかを可視化する。
LLMの生成するテキストが単調で飽きられるのを防ぐには?
AIに全体の構成まで丸投げせず、固定の型と組み合わせる。挨拶や定型通知などの決まり文句はプログラム側でテンプレート出力し、AIには「その場の文脈に応じた一言」だけを生成させる。全体の枠組みをプログラムで制御しつつ要所だけをLLMに語らせることで、構成を崩さずに柔軟な表現を維持できる。
Claude Codeのhooks機能で危険なコマンドの実行を防ぐには?
ツールが実行される直前に処理を挟むPreToolUseフックを設定する。入力データからコマンド文字列を取り出し、危険な削除処理などのパターンが含まれていないかをチェックする。該当するコマンドを検知した際に終了コード2を返して終了させれば、Claude側でツール実行がキャンセルされ、安全に暴走を差し止められる。
まとめ
AIエージェントを乗りこなす鍵はLLMの頭脳ではなく、組むガードレールと型だ。
Claude Codeのhooks機能で安全柵を作りつつ、定型処理で枠組みを固める。この組み合わせで自動化の安定感が上がる。
AIに何でも任せるのではなく、枠にハメて動かす。ThreadPost開発でも活きている設計手法だ。
エージェントの制御や自動化の試行錯誤を記録し、共有する。

この記事が参考になったら、ThreadPostを試してみませんか?
投稿作成・画像生成・スケジュール管理まで、AIがサポートします。
ThreadPostをもっと知る