开放协议 · v1 稳定 · v2 草案

Agent Client Protocol (ACP):给编程 Agent 用的编辑器协议

ACP 是代码编辑器与编程 Agent 之间类似 LSP 的标准。本地 Agent 走 stdio 上的 JSON-RPC;远程 HTTP / WebSocket 传输仍在标准化。本站是独立生态指南,不是官方 spec。

线上协议

v1 稳定

生产环境用这个

下一个大版本

v2 草案

必须用版本协商和 feature flag

已认证 Agent

Registry 40 个

截至 2026-09-12

官方 SDK

TS & Rust 1.0

另有 Python、Java、Kotlin

还在为每一对「编辑器 × Agent」写胶水代码?

没有共享协议时,编程 Agent 和编辑器是绑死的。每一对新组合都是又一个插件、又一套 RPC、又一周胶水。

胶水代码耗掉整周
进程生命周期、流式输出、权限、diff、取消……每一对编辑器与 Agent 都要从头做。
工具组合不起来
想用 Neovim + Claude、Zed + Codex、JetBrains + Gemini?没有 ACP 你选的是厂商栈,不是工作流。
被厂商锁死
Agent 只会说某款编辑器的私有 API 时,换 IDE 或换 Agent 等于把集成推倒重来。

ACP:实现一次,随处接入

就像 LSP 统一了语言服务器,ACP 给 Agent 一张接口、给编辑器一个客户端。兼容 Agent 能进任何 ACP 客户端;兼容编辑器能用整个 Agent 生态。能复用的 MCP 类型会直接复用。

Agent Client Protocol 怎么工作

人还在编辑器里。客户端把本地 Agent 拉成子进程,或连到远程 Agent,然后用 JSON-RPC 跑 session。

JSON-RPC over stdio

JSON-RPC 2.0

请求、响应、通知。双向:Agent 可以向客户端要权限、文件、终端或结构化输入。

对 MCP 友好的类型

内容块、resource、工具调用尽可能复用 MCP JSON,再补上 diff、plan 等编程 UX 类型。

默认 Markdown

给人看的文本用 Markdown,客户端不必内置 HTML 引擎。

真正的 ACP 方法:session/prompt

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "session/prompt",
  "params": {
    "sessionId": "sess_abc123def456",
    "prompt": [
      {
        "type": "text",
        "text": "Refactor this function"
      }
    ]
  }
}
Session
initialize → 必要时 authenticate → session/new 或 session/load。v1 还稳定了 list / resume / close / delete。
流式 UX
Agent 用 session/update 推文本、思考、工具调用、计划、斜杠命令和用量。
权限与 Elicitation
工具调用可以要求用户批准。已稳定的 elicitation 用于结构化表单或站外 URL 流程。

为什么用 ACP

一份契约好过 N×M 套插件,同时不妨碍各产品自己做 UX。

普遍兼容
同一个 Agent 二进制可以挂在 Zed、JetBrains、Neovim、VS Code 扩展,以及手机或聊天入口后面。
能力协商
loadSession、终端、elicitation、配置项等在 initialize 时声明。缺能力不是协议破坏。
开发者自由度
换编辑器或换 Agent,不必重写另一侧。
成熟的本地传输
stdio 已可上生产。Transports 工作组正在标准化 streamable HTTP 与 WebSocket。
稳定 SDK
官方 TypeScript 与 Rust SDK 已到 1.0;Python、Java、Kotlin 覆盖其余官方表面。
可扩展
自定义方法用下划线前缀。_meta 可带额外数据而不拆掉对端。

ACP 实际在干什么

协议只是管道。产品仍然是你的编辑器 UX 和 Agent 的工具。

编辑器内编程 Agent

重构、写测试、应用 diff,继续用你已经熟悉的快捷键。

多 Agent 工作台

把 Claude、Codex、Gemini、OpenCode 当成并行 session,而不是并行插件。

聊天与移动控制面

从 Telegram、Slack、微信、QQ、飞书或手机 App 驱动桌面上的 Agent。

笔记本与数据工具

在 Jupyter、marimo 或 DuckDB 旁边跑 Agent,不必再造一套 RPC。

审查与安全闭环

权限提示和工具调用卡片让写文件、跑命令仍然经过人。

自定义 harness

Deep Agents、Koog、Mastra、ACP Kit 等可以把现有运行时包成 ACP Agent。

客户端、Agent 与 Registry

生态早已不是「Zed 加两三个 CLI」。编辑器、IDE、桌面端,以及 40 个已认证 Registry Agent 都在出货。

编辑器与客户端表面

Zed
First-class external agent support
JetBrains IDEs
Built-in ACP client in AI Assistant
Visual Studio Code
ACP Client, ACP Pro, Multicoder, Poolside
Neovim
CodeCompanion, Avante, agentic.nvim, hermes.nvim
Emacs
agent-shell.el
Obsidian
Agent Client, Agent Console, Copilot, Harness

Agent 与适配器

Claude Agent · claude-agent-acp 0.76
Codex · codex-acp 1.11
Gemini CLI 0.59 · GitHub Copilot CLI
Cursor · Grok Build · Goose · OpenCode · Junie
Qwen Code · Kimi CLI · Cline · Factory Droid

要找特定组合?

对比客户端表面、适配器、Registry 条目和能力支持。

打开兼容性指南

本站指南

我们概括正在用的协议和生态。权威 schema 与 RFD 在 agentclientprotocol.com。

协议
人还在编辑器里。客户端把本地 Agent 拉成子进程,或连到远程 Agent,然后用 JSON-RPC 跑 session。
客户端与 Agent
生态早已不是「Zed 加两三个 CLI」。编辑器、IDE、桌面端,以及 40 个已认证 Registry Agent 都在出货。
SDK
除非你在给一门新语言写绑定,否则不要手写 JSON-RPC framing。官方 SDK 同时覆盖客户端和 Agent 两侧。
Registry
Registry 让客户端发现、安装、配置兼容 Agent,而不用自己发明一份清单格式。它是精选目录:Agent 必须声明认证方法。
ACP vs MCP
搜到「ACP」不一定是这个协议。Agent Client Protocol 是编辑器↔编程 Agent 的标准。它和 MCP 组合使用,而不是取代 MCP。
GitHub
github.com/agentclientprotocol/agent-client-protocol

开始用 ACP

先选边。生产环境用 v1。把 v2 当成需要显式打开的草案。

客户端 / 编辑器开发者
托管 Agent、渲染更新,并把危险工具挡在权限后面。
读架构与 v1 概览
先打通 stdio 上的 JSON-RPC
用官方 SDK,不要手写 framing
声明客户端能力,并用 Registry 里的 Agent 做测试
Agent 开发者
Agent 侧实现一次,就能出现在所有兼容客户端里。
实现 initialize、session/new、session/prompt
用 session/update 流式推送文本、工具和计划
需要登录就声明 authMethods
把已认证 Agent 提交到 ACP Registry

要把编辑器接到 Agent 上了?

从 v1 开始,选一个 SDK,把 v2 留在版本检查后面。

常见问题

短回答。本指南与官方 spec 冲突时,以官方 schema 为准。