跳转到内容
全部开发指南

ACP 与 MCP 怎么选,编辑器接入 AI 编程 Agent 的两种协议对比

AIGoCode发布于 更新于

ACP 与 MCP 怎么选,编辑器接入 AI 编程 Agent 的两种协议对比 封面

AI 编程工具越来越多,但长期以来它们彼此不通:Claude Code 主要在终端里用,Codex 有自己的客户端,Cursor 的 Agent 只能在 Cursor 里跑。想把某个 Agent 放进自己习惯的编辑器,或者让几个 Agent 协作处理同一个项目,往往要做定制集成。

十几年前编程语言工具也是这个局面,每个编辑器都要自己实现语法高亮、补全和错误检查,直到微软推出 LSP(Language Server Protocol)把这层通信统一起来。现在 AI 编程领域有了类似的协议:Agent Client Protocol(ACP),目标是让任何支持 ACP 的编辑器都能用任何支持 ACP 的 Agent。

很多人第一次看到 ACP 会把它和 MCP 搞混。这篇会讲清楚 ACP 协议是什么、它和 MCP 的分工、Harness 这个概念、目前的生态,以及在 Zed 里接入 Claude Code 的配置方法。

ACP 原文配图 1

ACP 协议是什么

Agent Client Protocol 是一个标准化的通信协议,定义了代码编辑器(客户端)和 AI 编程 Agent 之间怎么对话:会话管理、流式输出、工具调用、权限审批等。

技术上它基于 JSON-RPC,支持两种运行方式:

  • 本地模式:Agent 作为编辑器的子进程运行,通过 stdio 通信;
  • 远程模式:Agent 运行在云端,通过 HTTP 或 WebSocket 连接。

有了这层统一接口,就不再是“Claude Code 只能在终端用”“Cursor 只能用自己的 Agent”,而是可以在 Zed 里用 Claude Code,在其他编辑器里用 Gemini CLI,自由组合。

ACP 与 MCP 对比:一个管编辑器,一个管工具

两者都带“Protocol”,但解决的是不同方向的问题:

对比项ACP(Agent Client Protocol)MCP(Model Context Protocol)
解决什么编辑器怎么和 Agent 对话Agent 怎么获取外部工具和数据
客户端是谁编辑器Agent
服务端是谁Agent数据库、API、文档等外部能力
典型内容会话、权限审批、流式输出、diff 展示工具调用、资源读取
类比类似 LSP 在语言工具里的位置类似给 Agent 接插件

两者是配合关系:编辑器通过 ACP 和 Agent 说话,Agent 通过 MCP 获取外部工具和数据,编辑器还可以把自己配置的 MCP server 转交给 Agent 使用。可以简单记成:ACP 管“人怎么和 Agent 交互”,MCP 管“Agent 怎么和外部世界交互”。

如果你在给 Agent 接 MCP 工具,权限边界的问题可以参考 Codex Hooks,异步执行与 MCP 工具接入的权限边界。

ACP 原文配图 2

Harness:管理 Agent 生命周期的那一层

在 ACP 生态里,Harness 是一个常被提到的概念。如果说 Docker 是应用的容器,负责启动、停止、网络和存储,那么 Harness 就是 Agent 的容器,负责:

  • 启动和停止 Agent 进程;
  • 管理多个并发会话;
  • 处理权限控制,也就是 Agent 要执行命令、读写文件时的审批流程;
  • 转发 MCP 服务器配置;
  • 保存、恢复和关闭会话。

编辑器只需要知道怎么和 Harness 说话,不必关心后面跑的是哪家的模型。原文举了 OpenClaw 的例子:它可以用 openclaw acp 作为 ACP harness 运行,也可以指向远程 Gateway 或绑定到某个 Agent 会话(具体参数以 OpenClaw 官方文档为准)。

ACP 生态现状:哪些 Agent 已经支持

原文写的是“30 多个 Agent”。按 ACP 官网 Agents 页面 2026 年 10 月的列表,已经超过 40 个,主流工具包括:

  • Claude Agent:通过 ACP 适配器接入(基于 Claude Agent SDK,适配器项目现在在 agentclientprotocol 组织下维护);
  • Codex CLI:通过 ACP 的适配器接入;
  • Gemini CLI、Cursor、GitHub Copilot(public preview)、JetBrains 的 Junie;
  • OpenClaw、Cline、Goose、OpenHands、OpenCode、Qwen Code、Kimi CLI、Kiro CLI 等。

客户端方面,Zed 是最早原生支持 ACP 的编辑器,JetBrains 也参与了协议推进(ACP 官网导航里同时挂着 Zed Industries 和 JetBrains)。不过很多集成还在早期,实际体验和各工具的原生客户端可能有差距。

ACP 原文配图 3

实操:在 Zed 里通过 ACP 使用 Claude Code

Zed 的设置文件里可以用 agent_servers 声明自定义 Agent。以 Claude Code 的 ACP 适配器为例(需要先安装 npm 包 @agentclientprotocol/claude-agent-acp,它提供 claude-agent-acp 命令):

{
  "agent_servers": {
    "Claude Code": {
      "type": "custom",
      "command": "claude-agent-acp",
      "args": [],
      "env": {}
    }
  }
}

接 OpenClaw 的 Agent 也是同样写法:

{
  "agent_servers": {
    "OpenClaw ACP": {
      "type": "custom",
      "command": "openclaw",
      "args": ["acp", "--session", "agent:main:main"],
      "env": {}
    }
  }
}

保存后打开 Zed 的 Agent 面板,选择配置好的 Agent 就能开始对话,同时用上编辑器的 diff 预览、文件树和内联显示。新版 Zed 也内置了 Claude 等常用 Agent 的入口,可以先看 Agent 面板里有没有现成选项。

进阶:用 acpx 让不同 Agent 协作

acpx 是 ACP 的命令行客户端,可以让一个 Agent 调用另一个。原文的例子是让 Codex 通过 ACP 访问 OpenClaw Agent 的上下文:

acpx openclaw exec "总结一下当前项目的最新进展"
acpx openclaw sessions ensure --name codex-bridge
acpx openclaw -s codex-bridge "help me review this PR"

这样就能搭一个多 Agent 工作流:一个负责写代码,一个负责审查,一个负责测试,通过 ACP 标准接口通信,不用为每对组合写定制集成。想先从两个 Agent 分工入手,可以看 Claude Code 写,Codex 查,两个 AI 协作时先分清 4 个边界。

限制与注意事项

  • 集成成熟度不一:列表里的 Agent 很多是通过适配器接入的,功能覆盖和原生客户端不完全一样,上生产工作流前先在小项目里试。
  • 权限要自己把关:ACP 定义了权限审批流程,但具体放行哪些命令、文件读写范围,仍取决于编辑器和 Harness 的配置。
  • 命令和参数会变:ACP 生态更新很快,适配器包名、命令和参数以各项目最新文档为准。

总结

ACP 和 MCP 不是二选一:要让编辑器接入各家 AI 编程 Agent,看 ACP;要让 Agent 调用外部工具和数据,看 MCP。实际工作流里两者通常一起用。目前 Zed 对 ACP 的支持最完整,Claude Code、Codex CLI、Gemini CLI 等主流 Agent 都能通过 ACP 接入。

如果你通过 AIGoCode 使用 Claude Code 或 Codex,换到支持 ACP 的编辑器里,接入配置照常沿用。

参考链接