一句话定义:Agent Client Protocol(ACP,智能体客户端协议)是一套开放协议,规定代码编辑器和编码智能体(coding agent)之间怎么对话,目标是让任意编辑器都能接上任意 agent。
它解决的是"插头不统一"
在 ACP 出现之前,这件事很像早年手机充电口:VS Code 一套插件、JetBrains 一套插件、Vim 一套插件,每家都要为同一个 agent 重新适配;反过来,agent 团队也得为每个编辑器各写一遍集成代码。N 个编辑器 × M 个 agent,工作量是乘法。
ACP 的思路是做除法:把"界面"和"大脑"拆开。编辑器负责显示、编辑、快捷键、文件读写和权限弹窗;agent 只负责推理、规划、决定下一步做什么。中间用双方都认的结构化消息(这类协议通常基于 JSON-RPC 风格的消息格式,支持流式返回)来通信。编辑器实现一次 ACP,就能接上所有支持 ACP 的 agent。
打个比方:LSP(Language Server Protocol)让编辑器不必为每种编程语言单独写补全和跳转;ACP 是同一个思路往前再走一步——只是这次被插上去的不是语言服务器,而是一个会自己读文件、改代码、跑命令的智能体。
一次会话大概长什么样
创建会话 → 用户发出消息 → agent 流式回吐思路和内容 → 途中提出"我要读这个文件""我要改这一行""我要执行这条命令"→ 编辑器实际执行这些动作,必要时弹窗让你批准 → 结果回传给 agent 继续推理。
关键点在于:真正动文件的是编辑器,权限闸门也在编辑器和用户手里,agent 并不能绕过它乱来。具体支持哪些能力、字段如何定义,以官方规范页面为准。
ACP 和 MCP 各管哪一段
这两个词经常被混着说,其实分工很清楚:
| 对比项 | ACP | MCP(Model Context Protocol) |
|---|---|---|
| 连接谁和谁 | 编辑器 ↔ 编码 agent | agent/模型 ↔ 外部工具与数据 |
| 解决什么问题 | 接入解耦:换个 agent 不用换编辑器 | 能力扩展:让 agent 能查库、调 API、读文档 |
| 谁当客户端 | 编辑器是 client,agent 是 server | agent 是 client,工具服务是 server |
| 生活化类比 | 电源插座标准 | 给 agent 配的工具箱 |
一句话记忆:ACP 管 agent 怎么被用起来,MCP 管 agent 能用上什么。 一个是门,一个是手。
对从业者和普通人的意义
对 agent 团队,ACP 意味着不用再维护 N 份编辑器插件;对编辑器团队,不用追着每个模型做深度定制;对用户,可以用手顺的编辑器配信任的 agent,而不是"选编辑器=选 AI 供应商"。
需要清醒的是:ACP 只是接口层,它本身不提升模型能力。协议的成熟度、各家支持范围仍在演进,落地细节以官方页面为准。
