VS Code Agent Host のアーキテクチャ
VS Code は、Agent Host と呼ばれる専用プロセスで AI コーディングエージェントを実行し、Agent Host Protocol (AHP) を介して通信します。ホストは、それらを表示および制御するクライアントとは独立して、エージェントセッションを所有します。
Agent Host と AHP は現在活発に開発されており、ユーザーに対して順次有効化されています。
拡張機能ホストから Agent Host へ
Copilot Chat 拡張機能は、従来、VS Code の多くの AI エクスペリエンスを提供してきましたが、エージェントロジックは拡張機能ホスト内で実行されていました。拡張機能ホストは拡張性のために依然として重要ですが、拡張機能のライフサイクルや API を中心に設計されています。長時間実行される自律的な作業には、異なる要件が必要です。
VS Code は、エージェントセッションのオーケストレーションを Agent Host に移行しており、これにより以下の機能が提供されます。
- 共有セッション: 複数のクライアントが同じセッションを監視および制御し、同期を維持できます。
- リモート実行: クライアントが別の場所から接続している間、ホストを別のマシンのワークスペースの近くで実行できます。
- 独立した実行: エディターやその他のクライアントが接続されていない場合でも、エージェントセッションを継続できます。
- 複数のエージェント実装: さまざまなエージェントランタイムを 1 つのホスト向けインターフェイスにプラグインし、共通のセッション概念をクライアントに提示できます。
- 専用プロセス: エージェントは独自のプロセスで実行されるため、忙しい拡張機能によってブロックされることはありません。
VS Code の拡張機能は、引き続きツール、MCP サーバー、カスタムエージェントなどのチャットのカスタマイズを提供できますが、エージェントランタイム自体は Agent Host プロセス内で実行されます。デフォルトでは、拡張機能からのツールは、その拡張機能が実行されているエディターウィンドウ内のチャットでのみ利用可能です。
プロセスアーキテクチャ
Agent Host は、ローカルのユーティリティプロセスとして、またはリモートマシンのスタンドアロンサーバーとして実行できます。VS Code は、ローカル IPC にメッセージポートを使用し、リモート接続には WebSocket 経由の AHP JSON-RPC を使用します。
ファーストパーティのエージェントアダプターは、Agent Host プロセス内で実行されます。アダプターは、エージェントランタイムと共通の AHP セッションモデルの間を変換します。
Agent Host はワークスペースの隣に配置されます。ホストがリモートで実行される場合、ファイルの編集やコマンドはリモートマシン上で実行されます。
Agent Host Protocol
Agent Host Protocol は、ホストとそのクライアント間の、オープンでエージェントに依存しないプロトコルです。通信には JSON-RPC を使用し、同期されたセッションデータには純粋なリデューサーを使用したイミュータブルな状態を使用します。
ホストが信頼できる情報源(シングル・ソース・オブ・トゥルース)となります。各クライアントは、セッション、チャット、ターミナル、変更セットなどのリソース用に、URI でアドレス指定されたチャネルにサブスクライブします。クライアントは初期状態のスナップショットを受け取り、続いて順序付けられたアクションを受け取ります。接続が切断された場合、クライアントは再接続し、見逃したアクションまたは新しいスナップショットを受け取ります。
自己完結型、オプションのクライアントツール付き
Agent Host の定義上の原則は、エージェントがクライアントなしで実行できることです。クライアントは自由に参加および退出できるビューアおよびコントローラーです。したがって、ホストには、セッションを管理し、ワークスペースを操作するために必要なベースライン機能が含まれています。
エージェントセッションは、ワークスペースのウィンドウのライフタイムに結び付けられていません。ウィンドウを閉じて、後から別のウィンドウからセッションを再度開くことができます。Agent Host が実行を維持している間は、接続されたクライアントがいなくてもアクティブなターンを継続できます。
接続されたクライアントもツールを提供できます。たとえば、VS Code は、(ブラウザーツールなどの)クライアントによって提供されるツールや、インストールされた拡張機能によって提供されるツールを通知できます。Agent Host はそれらの定義をアクティブなセッションに追加し、ツール呼び出しを提供元のクライアントにルーティングして戻します。
ローカルおよびリモートのホスト
リモートセッションの場合、Agent Host はスタンドアロンプロセスとして実行され、WebSocket 経由で AHP を公開します。エージェントウィンドウは、SSH または開発用トンネルを介してそれにアクセスします。
インテリジェントな VS Code リモート開発と同様に、ユーザーインターフェイスはクライアント側に残り、ワークスペースの操作はソースコードや開発ツールの近くで実行されます。
独自のスタンドアロン Agent Host を実行するには、code agent host を使用します。デフォルトでは、このコマンドは localhost 上でサーバーを起動し、接続トークンで保護します。開発用トンネルを介して公開するには、--tunnel オプションを使用します。