ACP 协议:v1 稳定,v2 草案
ACP 使用 JSON-RPC 2.0。客户端和 Agent 必须在 initialize 时对上主版本。新功能通常以可选能力出现,而不是升版本。v2 是 v1 之后第一个计划中的破坏性主版本。
v1 消息流
一次典型的本地连接是这样。
Initialize
客户端发送 initialize,带上它支持的最新 protocolVersion 和 clientCapabilities。Agent 回所选版本、agentCapabilities、agentInfo 和 authMethods。
Authenticate
如果 authMethods 非空,客户端在创建 session 前调用 authenticate(v1)。
打开 session
session/new;若 Agent 声明了相应能力,也可用 session/load 或 session/resume。
Prompt turn
session/prompt 开始一轮。Agent 流式发送 session/update。该轮以带 stopReason 的 session/prompt 结果结束。session/cancel 用于中断。
你真正会实现的方法
下列名称是 v1。协议里的文件路径必须是绝对路径。行号从 1 开始。
Agent 方法
| 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。完整远程 Agent 支持还在推进。Transports 工作组正在起草长连接 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"
}
}
}