agentclientprotocol/agent-client-protocol
A protocol for connecting any editor to any agent
Agent Client Protocol (ACP)
何であるか – ACP は 標準化された、言語に依存しないプロトコル であり、コードエディタ が コードエージェント(生成AIを使ってソースコードを自動的に読み書き・リファクタリングするプログラム)と通信できるようにします。このプロトコルは、双方の間を流れることになる JSON-RPC 風のメッセージ(リクエスト、レスポンス、通知)を定義し、バージョン交渉機能も備えているため、エディタとエージェントが互いに破壊的変更を起こさずに進化できるようになっています。
なぜ重要か – AI駆動の「ペアプログラミング」ツール(例:GitHub Copilot、Cursor、Code Llamaベースのアシスタント)が増える中、各ベンダーはこれまで独自のアドホックAPIを設計してきました。ACPは 共通の契約 を提供し、以下を実現します:
- エディタは単一の統合レイヤーで多数のエージェントをサポート可能。
- エージェントは一度書けば、ACPを実装した任意のエディタで動作可能。
- 複数言語のSDKが、同じ JSON-Schema 定義から型安全なクライアント/エージェントコードを生成可能。
主要なアーティファクト
- Rust crate
agent-client-protocol-schema– ワイヤフォーマット(メッセージ、エンベロープ、バージョン情報)を反映した低レベルのRust型。スキーマに直接アクセスしたい場合や、他の言語向けコード生成に使う場合に使用。 - Rust crate
agent-client-protocol– クライアントおよびエージェント側を実装する高レベルのランタイム。接続設定、メッセージルーティング、機能交渉を処理。 - JSON-Schemaファイル – バージョン付きのスキーマは
schema/v1/とschema/v2/に配置されています。各リリースでは.jsonファイルがGitHubアセットとしてバンドルされ、SDKジェネレータ(Kotlin、Java、Python、TypeScriptなど)が言語固有のライブラリを生成する際に利用します。
バージョニングモデル
- プロトコルバージョン(現在は 1)は、
initializeリクエストのprotocolVersionフィールドを通じてランタイムで交渉されます。これにより、交換可能なメッセージの形状が決定されます。 - クレート および スキーマ のリリース番号は、ワイヤ互換性とは独立しています。これらはRust APIやJSON-Schemaファイルのレイアウト変更のみを反映します。互換性は、交渉されたプロトコルバージョンと各側がアドバタイズする機能によって決定されます。
公式SDK
| 言語 | リポジトリ | ハイライト |
|---|---|---|
| Kotlin | acp-kotlin |
JVMサポート、サンプルクライアント/エージェントプロジェクト |
| Java | java-sdk |
Maven/Gradleアーティファクト、例題 |
| Python | python-sdk |
pipパッケージ、クイックスタートスクリプト |
| Rust | agent-client-protocol |
Crates.ioパッケージ、例 agent.rs / client.rs |
| TypeScript | @agentclientprotocol/sdk |
npmパッケージ、ブラウザ&Node例 |
一般的なワークフロー
- エディタまたはエージェント実装に合った言語SDKを選択。
- SDKを生成またはインポート(多くは crates.io、Maven Central、PyPI、npm などに公開)。
- エディタ側のクライアントを実装:通知(例:
codeChange、applyEdits)を登録し、generateCodeやrefactorなどのリクエストを送信。 - エージェント側を実装:リクエストを受信し、生成AIモデルを呼び出し、編集内容や診断情報を返信。
initialize交換中に機能を交渉し、双方がどのオプションメッセージをサポートしているかを把握。
導入方法
- Rust:
cargo add agent-client-protocol→rust-sdk/examples/の例を実行して、stdin/stdout経由で最小限のクライアントとエージェントが通信する様子を確認。 - Python:
pip install agentclientprotocol→ Python SDKリポジトリのexamples/フォルダに従う。 - Java/Kotlin/TypeScript: 対応するSDKリポジトリをクローンし、標準ツールチェーンでビルドし、提供されたサンプルプロジェクトを実行。
コミュニティと貢献
- プロトコルは意図的に オープン です。GitHubのイシュー追跡システムと
CONTRIBUTING.mdに記載された正式な貢献プロセスを通じて、拡張を提案できます。 - CLAは不要。貢献は Apache 2.0 ライセンスの下で行われます。
- コミュニティメンテナンスのライブラリ一覧は公式ウェブサイトに掲載されています。
誰が関心を持つべきか
- AIコードアシスタントを即時追加できる、VS Code、JetBrains、Neovimなどエディタ開発者。
- 複数の開発環境で利用可能になるようにしたいAIエージェント構築者。
- AIエージェントによって駆動できるコード解析、Lint、リファクタリングユーティリティをツール作成者。
TL;DR – ACPは、コードエディタと生成AI駆動のコードエージェントがJSON-RPCメッセージを交換する方法を標準化するクロスランゲージプロトコルです。このリポジトリには、信頼できるRustスキーマクレート、バージョン付きJSON-Schemaファイル、Kotlin、Java、Python、Rust、TypeScriptの公式SDKへのリンクが含まれており、AI支援プログラミングの統一エコシステムを可能にします。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト