什么是 ACP?
ACP(Agent Client Protocol,智能体客户端协议)是一种连接代码编辑器等交互式客户端与编码智能体的开放 JSON-RPC 协议。稳定 v1 与 Draft v2 共用这层边界,但对提示、更新、能力、会话、文件和终端定义了不同契约。
快速了解
| 全称 | 智能体客户端协议(Agent Client Protocol) |
|---|---|
| 规范文档 | 官方规范 |
工作原理
稳定 v1 生命周期
ACP v1 从 initialize 开始,协商整数 protocolVersion 与能力,再创建或恢复 Session。session/prompt 会持续到本轮结束,过程由 session/update 报告,响应携带停止原因。可选的客户端文件与终端方法会暴露编辑器资源,因此路径、进程、凭证与输出限制仍由客户端负责。
Draft v2 迁移
ACP v2 已发布 Baseline Schema,但协议整体仍是 Draft。Prompt 响应改为使用智能体生成的 messageId 确认消息已插入;state_update 报告 running、requires_action 与最终 idle。Update 改为按 ID Upsert,能力重新分组,session/load 被可回放的 session/resume 取代,客户端文件与可执行终端方法被删除。
扩展与传输状态
Elicitation、通用请求取消、Session 管理、Usage Update 与可选 Tool Call 程序化名称已通过独立 RFD 稳定。程序化名称只是元数据,不是授权。Streamable HTTP 与 WebSocket 仍是 Active RFD,因此远程能力必须锁定提案版本,并由具体 Client-Agent 组合验证。
安全与评测边界
协议兼容不代表代码、命令、路径或副作用安全。应把 Session 绑定到可信用户和工作区,校验路径与参数,在模型之外执行授权,限制凭证,传播取消,记录副作用状态并对账未知结果。每个支持的版本与能力组合都要测试重复、乱序、局部和未知更新。
主要特点
- 基于 JSON-RPC 2.0,在用户界面客户端与编码智能体之间建立双向契约
- 稳定 v1 与 Draft v2 在每条连接上协商一个整数线协议版本
- v2 通过状态更新把 Prompt 插入确认与前台执行完成分离
- v2 使用按 ID Upsert 与可前向兼容的 Tagged Value
- v1 的客户端文件和终端方法不进入 v2,客户端侧工具改由 MCP 提供
- 权限、传输、认证、业务授权和副作用恢复仍是彼此独立的契约
常见用途
- 让一个编码智能体运行时接入多个 IDE,避免为每个编辑器维护专用集成
- 由编辑器以受控子进程方式嵌入本地命令行编码智能体
- 通过显式 Feature Flag 将集成从稳定 v1 迁移到 Draft v2
- 在原生开发界面中展示消息、计划、Tool Call、Diff、终端输出、用量和前台状态
- 恢复 Session 并回放更新,同时避免把传输送达误判成持久化完成
示例
Loading code...常见问题
ACP 解决什么问题?
ACP 避免每个编码智能体与每个编辑器都开发一套专用集成。它为初始化、会话、提示、更新、权限、取消和协商能力提供共享 JSON-RPC 契约,同时让模型运行时与用户界面可以独立替换。
ACP 和 MCP 有什么区别?
ACP 连接 IDE 等交互式客户端与编码智能体,承载面向用户的会话;MCP 连接 AI 应用或智能体与外部工具、资源和提示模板。ACP 会话可以向智能体提供 MCP 服务器配置,但 ACP 权限选择不能替代 MCP 服务器内部的授权。
ACP v2 与 v1 有什么不同?
Draft v2 会立即确认 Prompt 插入,再通过 `state_update` 报告完成;它采用按 ID Upsert,重组能力,以可回放 `session/resume` 取代 `session/load`,并删除 v1 客户端文件和可执行终端方法。在目标兼容矩阵证明 v2 可用前,应分开实现并保留两版。
ACP 的权限响应能否保证工具调用安全?
不能。客户端权限选择只表达用户对界面所展示操作的意图。智能体和下游服务仍需校验参数、认证主体、验证租户和对象权限、限制凭证、处理重复副作用并保留审计记录。
ACP 取消操作应如何实现?
取消是停止请求,不是回滚。v1 中智能体从 Prompt 请求返回 cancelled 停止原因;v2 中则通过最终 idle `state_update` 报告该原因。两版都必须为可能已经提交的操作保留副作用日志和对账机制。