AI エージェントの可視化

エージェントは言語モデルを反復するループに組み込みます。モデルが行動を要求し、実行基盤が処理し、その結果をコンテキストへ戻します。モデルは結果を読んで次の行動を決めます。このアニメーション集では、ツール要求から結果までの経路と、ループの継続・終了を確認します。

言語モデル単体はテキストを生成します。実行基盤はツール要求を検索、計算、データベース照会などに変え、結果をモデルへ返します。ツール、ループ、ターン間の状態を組み合わせたものがエージェントです。各要素を個別に学んでから、その連携を見ます。

エージェントを構成する要素

  • ツール:モデルが関数名と引数を含む構造化要求を出し、実行基盤が処理結果を返します。
  • ループ:推論、行動、観察を繰り返し、結果から次の行動を決めます。計画を途中で調整できます。
  • 記憶:ターンをまたぐ状態は、後のリクエストに含める必要があります。ウィンドウの容量に応じて情報を保持、要約、削除します。
  • 根拠となる情報:検索した文書をコンテキストに入れ、モデルが提供された資料をもとに回答できるようにします。

ループを学ぶレッスン

レッスン観察する内容
エージェントループwhile ループがモデル呼び出しとツール実行を繰り返し、テキスト回答で終了する。実行基盤は実行上限を設定する
ツール呼び出しモデルが構造化された関数呼び出しを要求し、実行結果を読む
MCP プラグイン外部ツールの説明をホストのツール群へ追加し、MCP クライアント経由で呼び出す。経路の欠落とツールの検索失敗を区別する
権限管理allow、deny、ask の規則が実行の可否を決める
フックイベントとツールのマッチャーが、実行前後のコールバックを決める
ReAct ループ推論、行動、観察をタスク完了まで繰り返す
コンテキストとメモリターン間の情報がウィンドウを使う様子
システムプロンプト組み立て実行時の情報源からシステムセクション、ツール定義、選択したコンテキストを作る。スキルやファイルの一覧だけでは本文を読んだことにならない
エラー回復再試行の前に失敗を分類する。待つ、コンテキストを圧縮する、出力予算を上げる、互換の代替モデルへ切り替える、または停止してエラーを返す
サブエージェントTask が新しい messages[] 上で子ループを開始し、探索過程を子コンテキストに残して結果カードを返す
計画してから実行完了条件を確認し、失敗したら修復して再検証する
タスクシステム目標を依存関係グラフに分け、tasks.json に保存し、中断の影響を受けたタスクから再開する
バックグラウンドタスク遅いコマンドを独立した shell で動かし、エージェントは別の作業を進め、ターン境界で完了通知を受け取る
エージェントチームインターフェースの取り決めの更新を別コンテキストの受信箱へ送り、API と UI の連携を検証する
RAG関連文書を検索してプロンプトに入れる

学習の順序

最初はエージェントループです。モデルを呼び出し、要求されたツールを実行し、モデルがテキストを返すまで繰り返します。通常の継続・終了は stop_reason が示し、実行基盤は別に上限を設けます。次のツール呼び出しでは、一つの構造化要求、ツール実行、結果返却を追い、要求するモデルと実行するコードを区別します。

続いて権限管理とフックを学びます。権限の規則は実行前に許可、拒否、承認要求を選び、未回答の承認は待機したままです。フックはイベントとツールの条件に応じて呼び出されます。実行前の阻止、実行後の報告、条件不一致で呼び出されない場合を見比べます。ReAct ループは同じ流れをモデルの推論から見ます。行動を選び、結果を観察し、次の行動を修正します。

次はコンテキストとメモリです。モデルは呼び出し間でリクエストの状態を保持しないため、必要な情報を再送します。ウィンドウの容量は有限です。サブエージェントは新しいコンテキストで探索し、結論を返します。親が渡していないタスク情報を、自動的に受け取るわけではありません。計画してから実行では、作業と完了条件を明記し、「試した」と「完了を証拠で確認した」を区別します。

タスクシステムは作業を時間軸で分けます。依存関係グラフをディスクに保存し、依存先に応じて実行し、プロセスが中断されたら影響を受けたタスクから再開します。バックグラウンドタスクは遅いコマンドを独立して動かします。その間に進められるのは、コマンドの出力に依存しない作業です。完了通知は次のターン境界で届きます。エージェントチームは独立したコンテキストをつなぎます。タスクの完了状態だけでは API フィールドの変更は伝わりません。同僚エージェントのメッセージで変更を共有し、UI が応答を読めるか確認します。エラー回復は、失敗した一回のモデル呼び出しに戻ります。まず原因を分類し、その原因を直してから再試行するか、停止します。何も変えずに送り直しても、多くの場合は同じ結果になります。

最後の RAG では、質問に関連する文書を検索してプロンプトに入れ、モデルがそれをもとに回答します。回答に必要な根拠を補う仕組みです。

すべてのエージェントレッスン

ツール呼び出しの次に MCP プラグイン を開きます。同じツール要求で Notes 連携を切り替え、その後に存在しないノートを検索します。連携の解除ではホスト側の経路がなくなります。ノートが存在しない場合はツールに到達しますが、ツールがエラーを返します。

コンテキストとメモリの次に システムプロンプト組み立て を開きます。スキルの一覧と本文の読み込みを比較し、メモリの読み込みを有効にして、必要な私的情報が組み立てたリクエストに入るか確認します。

下のレッスンを選び、入力の変更やステップ実行で結果を確認できます。

エージェントループすべてのエージェントは 1 つの while ループ:モデルを呼び、求められたツールを実行し、結果を返し、止まるまで繰り返す。ループは決して変わらない——残りはすべて harness。ツール呼び出しモデルは何も実行しない——JSON を返して止まるだけ。あなたのコードが関数を実行し、結果を送り返す。1 回のツール呼び出し = 2 回の往復。権限管理ツールが動く前に必ずルールの門を通る:allow は実行、deny は遮断、ask はあなたに委ねる。まず境界を引き、それから自由を与える。フックツール実行の前後にチェックを登録します。イベントとマッチャーを変えて、保護対象への書き込みが阻止されるか、事後に報告されるか、見逃されるかを確認できます。ReAct ループ思考 → 行動 → 観察——世界を確かめることが推論だけに勝る理由と、書かれた思考が行動だけの場合に加える監査可能な記録。計画してから実行完了条件を決めて計画を立て、チェックの失敗から修正、再検証まで追います。リストの完了状態とツールの実際の結果を比較できます。サブエージェント大きなタスクをクリーンなコンテキストのサブエージェントに渡す:隔離して作業し、結論だけを泡のように返すので、ノイズがメイン会話に漏れない。コンテキストとメモリエージェントが上限の手前でコンテキストを圧縮する理由——要約が残すもの・失うもの、そしてメモリファイルが次のセッションへ持ち越すもの。システムプロンプト組み立て実行時の情報からシステム指示、ツール定義、コンテキストを組み立てます。一覧のスキルと読み込んだ指示、メモリファイルと実際に送信される内容を比べます。エラー回復失敗した呼び出しは終わりではない——リトライ連鎖の始まり:再試行、圧縮して空きを作る、トークン予算を上げる、別のモデルにフォールバック。RAG:検索拡張生成学習していない文書から LLM が答える仕組み——埋め込み、コサインで順位付け、top-k をプロンプトへ——そして答えが生成前に決まる理由。タスクシステム大きな目標は小さなタスクの依存グラフに分解され、ディスクに永続化される:各ノードはそれを阻むものを待ち、1 つ終わると次が解放される。バックグラウンドタスク遅い作業はバックグラウンドへ、エージェントは考え続ける——長いコマンドが脇で走り、完了通知は次のターン境界で届く。エージェントチームチームメイトは別々のコンテキストを持ちます。契約の更新がメールボックスを通る様子を追い、API と UI の成果物が一致するか確認します。MCP プラグイン外部ツールの検出からサーバールートの登録、MCP 呼び出しまでを追跡。ツールが使えない場合と検索が失敗する場合を比較します。