ACP プロトコル: v1 は安定、v2 はドラフト
ACP は JSON-RPC 2.0 です。クライアントとエージェントは initialize でメジャーバージョンに合意しなければなりません。新機能は通常、バージョン上げではなく任意能力として入ります。v2 は v1 以降で初めて計画された破壊的メジャーです。
v1 のメッセージフロー
典型的なローカル接続は次のとおりです。
Initialize
クライアントは最新の protocolVersion と clientCapabilities を initialize で送ります。エージェントは選んだ版、agentCapabilities、agentInfo、authMethods を返します。
Authenticate
authMethods が空でなければ、セッション作成前にクライアントが authenticate(v1)を呼びます。
セッションを開く
session/new。能力があるなら session/load や session/resume。
Prompt ターン
session/prompt でターン開始。エージェントは session/update を流します。ターンは stopReason 付きの session/prompt 結果で終わります。中断は session/cancel。
実際に実装するメソッド
以下は v1 の名前です。プロトコル上のファイルパスは絶対パス必須。行番号は 1 始まりです。
エージェントメソッド
| initialize | 必須 | Negotiate version, capabilities, and auth methods |
| authenticate | 任意 | Authenticate when the agent advertises auth methods |
| logout | 任意 | End the current authenticated state |
| session/new | 必須 | Create a conversation session |
| session/load | 任意 | Load an existing session when loadSession is advertised |
| session/resume | 任意 | Resume a session (stabilized; capability-gated in v1) |
| session/list | 任意 | Discover existing sessions |
| session/close | 任意 | Close an active session without deleting history |
| session/delete | 任意 | Remove a session from history |
| session/prompt | 必須 | Send a user turn; response includes stopReason |
| session/cancel | 通知 | Interrupt the current turn |
| session/set_mode | 任意 | Switch agent operating modes |
| session/set_config_option | 任意 | Set model and other session config selectors |
| $/cancel_request | 通知 | Cancel any outstanding JSON-RPC request by id |
クライアントメソッド
| session/request_permission | 必須 | Ask the user to authorize a tool call |
| fs/read_text_file | 任意 | Read workspace files |
| fs/write_text_file | 任意 | Write workspace files |
| terminal/create | 任意 | Create a client-hosted terminal |
| elicitation/create | 任意 | Collect structured form or URL-mode input |
| session/update | 通知 | Stream chunks, tool calls, plans, usage, and commands |
v2 の主な変更
公式移行ガイドから、少なくとも次を覚えてください。
auth/login + auth/logout
Renamed from authenticate / logout
session/resume
Required; session/load is removed
session/list + session/close
Required baseline session methods
session/prompt
Acknowledges acceptance; completion moves to state_update
fs/* and terminal/*
Removed from the client surface
session/set_mode
Removed; use session/set_config_option
前回のサイト更新以降に安定した機能
ACP はメジャーを待たず、RFD 経由で安定 v1 に機能を足します。
トランスポート
本番の ACP はまだローカルサブプロセスへの stdio JSON-RPC です。リモートエージェント一式は作業中です。Transports WG は長寿命 GET ストリーム + POST、同一エンドポイントでの WebSocket アップグレードを起草しています。その RFD が安定するまで、HTTP 層はベンダー固有です。
initialize(v1)
{
"jsonrpc": "2.0",
"id": 0,
"method": "initialize",
"params": {
"protocolVersion": 1,
"clientCapabilities": {
"fs": {
"readTextFile": true,
"writeTextFile": true
},
"terminal": true
},
"clientInfo": {
"name": "my-client",
"title": "My Client",
"version": "1.0.0"
}
}
}