動画記事 · AI Engineer
ACP 互換エージェントをライブ構築 — Zed の Bennet Fenner氏
動画の文字起こしと公開情報をもとにAIで要約・構成しています。 正確な発言は元動画と時間位置で確認してください。
まず要点
Zed の Bennet Fenner氏が、ACP(Agent Client Protocol)プロトコルを用いて Anthropic 基盤のコーディングエージェントをライブで構築・デモする実践的解説。
Zed の開発者が実演!AI エージェントの標準化「ACP」を 15 分で構築する方法
Zed エディタの開発者である Bennet Fenner 氏が、AI コーディングエージェントとエディタ間の通信を統一する新プロトコル「ACP(Agent Client Protocol)」の実装プロセスをライブコーディングで披露しました。MCP や LSP に似たこの規格は、開発者が特定の AI モデルやエディタに縛られず、最適なツールを自由に組み合わせるための基盤となるものです。
ACP とは:AI エージェントの「共通言語」
ACP は、エージェント(AI)とクライアント(エディタ)が JSON-RPC ベースのプロトコルで通信するための標準化された仕様です。Bennet 氏はこれを、MCP(Model Context Protocol)や LSP(Language Server Protocol)に似たものだと説明しています。
「ユーザーが好みのエージェントをツールに持ち込み、すべてのモデルで統一された優れたインターフェースを楽しめるようにするにはどうすればよいか」という問いから、ACP は生まれました。
このプロトコルにより、異なるモデルやエディタ間でも統一されたインターフェースが提供されます。現在では 40 を超えるクライアント(Zed、Open Claw、JetBrains、Obsidian など)や、Claude Code、Codex、Gemini CLI などのエージェントが ACP モードをサポートしており、オープンソースとして公開されています。
ライブ実装:最小限のコードから ACP 対応へ
Bennet 氏は、既存の単純な TypeScript のコーディングエージェント(ファイル読み書きのみ可能)をベースに、ACP SDK を組み込んで機能を拡張する様子をデモしました。元々のコードは Anthropic API を呼び出すループを持つ基本的なものですが、ACP に対応させるために必要な変更は驚くほど最小限でした。
1. 4 つの必須関数の実装
ACP エージェントとして機能させるには、SDK が提供するインターフェースを実装し、最低限以下の 4 つの関数を実装する必要があります。
- 初期化処理: プロトコルバージョンやサポート機能をクライアントに通知します。Bennet 氏は「認証は不要で、環境変数の API キーを使用するだけ」と簡潔な実装を示しました。
- セッション管理: ACP ではスレッドごとに新しいセッションが発生します。ランダム ID を生成し、作業ディレクトリを内部マップに保存して返す処理が必要です。
- プロンプト処理: クライアントから送られてきたテキストや画像(今回は非対応)を含むコンテンツを解析し、モデル API に送信するループを実行します。
- キャンセル機能: 必要に応じて処理を停止するためのシンプルな実装です。
これらを追加してビルド・再起動すると、Zed のデバッグビューにセッションのリクエストと応答が表示され、エージェントが正常に接続されたことを確認できます。しかし、この時点ではまだトークン出力やファイル操作の可視化は行われていません。
2. ストリーミング出力の実装
次に実装したのは、モデルからの回答を即座にエディタに表示する「ストリーミング」機能です。
Anthropic SDK のストリーム機能を活用し、トークンが生成されるたびに ACP の session update をクライアントへ送信します。これにより、ユーザーはモデルが思考している様子や出力の進行状況をリアルタイムで追跡できるようになります。
「Anthropic から得たチャンク(断片)を、ACP が定義するセッション更新としてクライアントに送るだけです。これは通常のリクエスト・レスポンスとは異なり、いつでも発生しうる通知のようなものです。」
3. ファイル操作と差分表示の統合
ファイル読み書き機能においても、単なる実行だけでなく、エディタ側での可視化が重要になります。
- ツール呼び出しのシグナリング: ファイルを読み込む処理を開始する際、ACP を介して「進行中」のステータスをクライアントに通知します。これにより、Zed 上でどのファイルが読み込まれているかを示す UI が更新されます。
- 差分表示(Diff): ファイル編集時には、新旧のテキストを ACP で送信し、エディタ側で差分計算を行います。Bennet 氏は実際に「hello world」を追加する指示を出すと、Zed の上で変更箇所がハイライトされる様子を確認しました。
4. クライアント機能の活用:ターミナル実行
ACP の真価が発揮されるのは、エージェント自身がファイル操作を行うだけでなく、クライアント(エディタ)が持つ機能を呼び出せる点です。Bennet 氏は、このデモで「自分自身にターミナルツールを追加する」よう指示を出しました。
「ACP には、クライアントがターミナルの作成と管理をサポートしていることをエージェントにアピールする機能があります。」
エージェントは ACP の仕様を読み込み、エディタが持つターミナル機能をプロキシとして利用できるようになります。結果として、エージェントは「5 秒間スリープして ls コマンドを実行」といった指示を、直接ターミナル上で実行し、その出力を即座にユーザーに表示することができました。
まとめ:開発者体験の自由化へ
約 15 分のライブコーディングで示されたように、ACP を実装することで、AI エージェントは単なるチャットボックスから、エディタと深く連携する強力なツールへと進化します。この標準化が進めば、開発者は特定のモデルやエディタに縛られることなく、自分のワークフローに最適なエージェントを自由に組み合わせることが可能になります。
ACP の詳細や仕様書は agentclientprotocol.com で公開されており、オープンソースコミュニティによる貢献も歓迎されています。AI エージェント市場の競争激化と、より高性能で信頼性の高いツールの登場が期待される今、このプロトコルは開発者体験を大きく変える鍵となるでしょう。
Original Source
元動画で発言を確認
プレイヤーは必要になるまで読み込みません。YouTubeのCookieと通信も再生を選ぶまで開始しません。
時間位置から根拠を確認
章や引用を選ぶと、元動画をその位置から再生します。