Agent.Space 博客

Agent Client Protocol(ACP)是什么?

了解 Agent Client Protocol 如何规范 Coding Agent 与客户端通信、怎样工作,以及兼容目录能证明什么、不能证明什么。

Agent Client Protocol(ACP)是一种开放协议,用来规范面向用户的客户端(Client)与 Coding Agent 之间的通信。这个客户端可以是代码编辑器或 IDE。ACP 让双方用同一种方式建立 Session、发送 Prompt、流式展示工作过程、呈现工具活动和请求权限。

ACP 不是 Agent、模型、编辑器或工具目录,而是客户端与 Agent 之间的通信合同。这个区别很重要:某个产品出现在 ACP 目录里,只能说明它存在一条接入路径,不能说明背后运行什么模型、接入是不是原生实现,也不能说明所有功能在每个客户端里都能使用。

用一句话解释 ACP

ACP 统一了客户端操作和展示 Coding Agent 的方式,不再需要为每一组客户端与 Agent 单独设计协议。官方的 ACP 介绍把它定义为代码编辑器、IDE 和其他面向用户应用之间的互操作层。

层级它负责什么它不是什么
Client界面、用户输入、Session 控制、过程展示和权限交互Coding Agent 或它使用的模型
ACP消息、能力协商、Session 生命周期、流式更新和 Client—Agent 请求Agent Runtime、模型或安全策略
Coding Agent推理、工具使用、代码修改和执行行为外围编辑器或产品 UI
模型Agent 背后选用的推理引擎ACP 连接本身

如果你仍然容易把“Agent”和“模型”当成同一件事,可以先看 Agent harness 和模型的区别。Agent harness 是包在模型外面的执行入口,可以管理工具、文件、状态和审批;模型则可以单独选择。

为什么需要 ACP

没有统一协议时,每个客户端都要为每个 Coding Agent 单独做集成。每增加一个编辑器或 Agent,都可能多出一批需要设计、实现、测试和维护的适配器。ACP 架构说明把它概括为 N×M 集成矩阵,并把 ACP 想要达到的互操作效果与 Language Server Protocol 作了类比。

有了 ACP,客户端可以实现一次共同协议,Agent 也能向多个客户端暴露同一套通信合同。这样能减少重复集成工作,并为 Session、Prompt 内容、流式更新、工具调用和权限提供共同语言。

但统一协议不等于所有实现完全相同。ACP 会协商能力,因为不同 Agent 和客户端可能支持不同的可选功能。共同的传输协议让连接成为可能;具体行为仍然取决于两端的实现和配置。

一次 ACP Session 怎样运行

ACP v1 使用 JSON-RPC 2.0 method 和 notification。在典型的本地场景中,客户端会把 Agent 启动为子进程,双方通过标准输入与标准输出交换按换行分隔的 JSON-RPC 消息。这个流程来自官方 v1 OverviewTransport 规范

把细节简化后,一次 Session 大致经过以下步骤:

  1. 连接并初始化。 客户端启动或连接 Agent,双方交换协议版本和能力;Agent 还可以声明认证方式。
  2. 新建或恢复 Session。 客户端为项目或工作目录打开工作 Session,并且只使用双方都支持的生命周期操作。
  3. 发送 Prompt。 用户文字和双方支持的内容块从客户端传给 Agent。
  4. 流式展示工作过程。 Agent 持续发送 Session update,客户端可以在任务进行时展示消息、计划、工具调用、工具结果和代码修改。
  5. 处理交互。 Agent 可以请求客户端让用户决定是否授权。可选的客户端能力也可以让 Agent 与客户端提供的文件系统或终端服务协作。
  6. 完成或取消。 Agent 返回停止原因,或者客户端请求取消正在进行的工作。

协议规定了这些消息及其顺序,但不规定 Agent 内部怎样推理、使用哪家模型、代码在哪里执行,也不负责产品如何在 Session 外保存持久工作区。

ACP 规范了什么,又没有规范什么

ACP 覆盖了构建 Coding Agent 界面所需的一组重要能力,但它有意停在通信边界。

ACP 可以规范:

  • 初始化和能力协商;
  • Session 新建与双方支持的恢复操作;
  • Prompt 和流式 Session update;
  • 客户端展示的计划、工具调用状态、内容和 Diff;
  • 权限请求与回应;
  • 与客户端提供的文件和终端进行可选协作。

只靠 ACP 不能保证:

  • 使用某个特定 Coding Agent、模型或 Provider;
  • 不同客户端和 Agent 拥有完全相同的功能;
  • 自动获得沙箱、授权体系或安全的权限策略;
  • 生成代码或工具决策的质量;
  • 获得持久化远程工作区或可直接用于生产的远程 Transport;
  • 目录里每个产品的所有版本都彼此兼容。

换句话说,ACP 可以传递一项权限请求,但最终给用户展示什么、允许什么,以及操作在哪里执行,仍由客户端和执行环境决定。

ACP 和 MCP 解决的是不同层级

ACP 与 Model Context Protocol(MCP)是可以配合使用的协议,不是互相替代的竞争关系。

协议主要连接对象它回答的核心问题
ACP面向用户的 Client ↔ Coding Agent客户端怎样启动、控制和展示 Agent 的工作?
MCPAI 应用或 Agent ↔ MCP ServerAI 怎样访问外部工具、资源、Prompt 和上下文?

ACP 对 MCP 友好,会在合适的地方复用兼容的 MCP 类型,同时增加 Coding Agent 体验需要的结构,例如 Diff。ACP 架构也允许客户端把配置好的 MCP Server 交给 Agent,再由 Agent 直接连接这些 Server。但不应该在同一个 socket 上混合传输 ACP 和 MCP。

这个边界来自官方的 ACP 架构说明MCP 架构说明。如果需要产品例子和选择表,可以继续看完整的 ACP 与 MCP 对比

哪些 Agent 与 ACP 兼容

官方 ACP Agents 页面是当前最合适的发现入口,但它是一份持续变化的目录,不是永久不变的兼容矩阵。2026 年 9 月 1 日的快照中可以看到 Claude Agent、Codex CLI、Cursor、Gemini CLI、GitHub Copilot、OpenCode、OpenHands、Pi 和 Qwen Code 等例子。

这里的“被列出”需要谨慎理解:

  • Codex CLI 通过适配器接入。 当前的 Codex ACP 仓库说明,这个 ACP Server 会启动 Codex App Server,并在两种接口之间做转换。旧的 Zed 仓库已经归档;当前 README 给出的安装入口是 npx -y @agentclientprotocol/codex-acp。这不能证明 Codex CLI 原生实现了 ACP。
  • Claude Agent 也通过适配器提供 ACP 接口。 当前的 ACP 适配器仓库在 ACP 接口背后使用 Claude Agent SDK。
  • Pi 通过 pi-acp 被列出。 这同样是一条适配器路径,不能因此把底层所有能力统称为“原生 ACP”。
  • GitHub Copilot 的 ACP 支持在本次核验时仍是 public preview,状态来自 GitHub 的官方更新日志

其他条目可能直接暴露 ACP,也可能提供自己的启动模式、Package 或 Bridge。官方目录没有提供覆盖所有 Client—Agent 组合的统一功能矩阵。真正选用前,应该重新检查当前项目链接、安装说明、支持的协议版本、认证流程、Session 能力,以及你确实需要的功能。

对 Codex 来说,ACP 也不是 SDK、app-server 和 codex exec 三种接口选择的同义词;Codex 集成接口对比单独解释了这些层级。

Agents 页面和 Registry 不是同一份名单

ACP 还维护官方 Registry,但它与面向人阅读的 Agents 页面用途不同。

来源主要用途条目提供什么
Agents 页面发现产品和查阅说明产品名、简介,以及项目或安装链接
Registry机器读取和自动安装经过筛选的条目,以及认证和分发元数据,例如 npm、Python Package 或可下载 Binary

2026 年 9 月 1 日的快照能直接看出差异:Agents 页面与在线 Registry JSON并不是同一组条目。Registry 仓库说明 Agent 版本会每小时自动更新,因此名称、版本、Package 和可用状态都可能很快变化。

Registry 的验证有价值,但范围有限。检查内容包括启动条目,并确认 ACP 握手返回有效的 authMethods。这不等于对安全、代码质量、功能覆盖,或与所有客户端的兼容性进行完整认证。应该把两个来源都当成起点,再测试计划使用的具体组合和版本。

需要留意的版本与 Transport 边界

截至 2026 年 9 月 1 日,ACP v1 是当前稳定协议。ACP v2 仍是 Draft,设计和迁移细节仍可能变化。

描述 Transport 成熟度时也要准确。ACP 介绍会同时讨论本地和远程 Agent,但 v1 Transport 文档说明,完整远程支持仍在开发,Streamable HTTP 也还是 Draft Proposal。本地子进程通过 stdio 通信,是已经明确的 v1 路径;不能只看到“兼容 ACP”,就推断它已经具备可用于生产的远程部署、认证、重连或隔离能力。

这些信息变化很快。真正开始实现前,应再次检查协议版本、Transport 状态、目录条目、适配器仓库和安装命令。

ACP 对 Agent.Space 用户意味着什么

ACP 可以帮助我们理解 Coding Agent 的集成边界放在哪里,但它不会把客户端、Agent harness、模型、Provider、Workspace、权限和部署环境这些独立选择合并成一件事。

截至 2026 年 9 月 1 日,Agent.Space 尚未公开承诺支持 ACP。本文不是 ACP 集成或路线图公告。即使同一个 Agent 同时出现在 Agent.Space 和 ACP 官方目录里,也不能证明 Agent.Space 通过 ACP 与它连接。

请以当前产品界面和正式发布信息为准。如果你现在要做的是运行可用的执行入口,而不是实现一套协议,可以打开 Agent.Space,用一个边界任务验证产品实际显示的选项,而不是只看它是否出现在某个目录里。