ACP协议为AI编码助手与编辑器之间的通信提供了标准化方案解决了多编辑器适配和安全性问题。本文介绍了ACP的核心功能、通信模型、生命周期及SDK实现帮助开发者快速理解和应用该协议提升开发效率。1.为什么需要 ACPAI 编码助手Agent正在快速发展但生态存在一个结构性问题N 款编辑器 × M 款 Agent N×M 套适配方案。每一款 Agent 都需要为 VS Code、JetBrains、Zed 等编辑器分别开发插件反之亦然。除了重复劳动还有更深层的矛盾——Agent 若要修改文件或执行终端命令要么由各编辑器自行实现一套私有 API要么直接调用系统原生接口绕过了编辑器的安全管控。Agent Client Protocol (ACP) 的定位是为这一问题提供标准答案一套开放的 JSON-RPC 契约将编辑器Client与 AI 助手Agent解耦为独立的两端。Client 专注于 UI 渲染与本地资源管控Agent 专注于 LLM 推理与任务编排二者通过协议通信互不侵入。2.ACP 与 MCP 的边界ACP 与 Model Context Protocol (MCP) 并非竞品而是互补。ACP 规范的是 Client 与 Agent 之间的交互边界任务下发、流式渲染、权限管控MCP 规范的是 Agent 与外部数据源之间的工具边界调用 GitHub API、查询数据库。在 ACP 的初始化协商中Agent 可以通过mcpCapabilities声明自身支持的 MCP 传输类型由 Client 在创建会话时传入 MCP Server 配置Agent 据此自行建立与外部工具的连接。3.通信模型3.1 传输层stdioACP 的传输层设计刻意保持极简。官方规范目前定义的主要传输机制是 stdioClient 将 Agent 作为子进程启动随即接管其stdin/stdout作为双向通信管道消息采用 NDJSON 格式每条 JSON-RPC 消息占一行以/n分隔。不需要端口分配不需要 HTTP 握手进程存活即连接存活。这一选择的工程意义在于Agent 可以用任意语言实现Rust、Python、TypeScript只要能读写标准流即可接入协议。3.2 消息类型Method 与 NotificationACP 遵循 JSON-RPC 2.0 规范将消息分为两类Method请求-响应携带唯一id调用方挂起等待对端必须返回result或error。适用于需要确认结果的操作如session/prompt、fs/read_text_file、terminal/create。Notification单向通知不携带id发出即完成无需响应。适用于高频的状态推送如session/update流式输出和session/cancel取消操作。这两类消息的区分是理解 ACP 并发模型的关键。一次 Prompt Turn 中Agent 可能同时挂起多个 Method 等待 Client 响应如并发读取多个文件同时持续发出 Notification 推送思考过程。Client 通过id将响应路由回对应的挂起请求互不干扰。4.协议生命周期一次完整的 ACP 交互从进程启动到对话结束按时间线分为四个阶段4.1 初始化InitializationClient 启动 Agent 子进程后首先发送initialize请求携带自身支持的协议版本和能力清单Capabilities。Agent 响应确认协议版本并返回自身能力。双方据此约束后续交互的边界。例如 Client 通过fs.readTextFile/terminal等字段声明可用的沙箱资源Agent 通过promptCapabilities输入模态、mcpCapabilitiesMCP 传输类型等字段声明自身能力。任何未声明的能力对端必须视为不支持。4.2 会话建立Session Setup初始化完成后Client 通过session/new创建会话传入工作目录cwd和可选的 MCP Server 配置。Agent 返回一个sessionId后续所有交互都以此 ID 为上下文锚点。4.3 Prompt TurnPrompt Turn 是 ACP 中最核心的交互循环其流程如下❝上图为简化版流程完整的 Prompt Turn 时序图含取消、多轮工具调用等分支见官方文档 Prompt Turn 章节。梳理一下上图中涉及的几个关键机制流式推送。Agent 通过session/updateNotification 持续向 Client 推送中间状态思考过程agent_message_chunk、执行计划plan、工具调用声明tool_call。Client 据此实时渲染 UI无需等待最终结果。权限拦截。当 Agent 需要执行敏感操作时可通过session/request_permission向 Client 发起反向请求。Client 向用户弹出确认界面将用户决策allow_once/reject_once等序列化为响应返回。若被拒绝Agent 应中断该工具调用并向用户说明原因。沙箱资源调用。Agent 不直接操作文件系统或终端而是通过 ACP 向 Client 借调fs/read_text_file读取文件内容包括编辑器中未保存的修改fs/write_text_file写入文件terminal/create创建终端并执行命令返回terminalIdterminal/output/terminal/wait_for_exit获取输出或等待命令完成terminal/kill/terminal/release终止命令并释放资源终端的设计尤其值得注意terminal/create立即返回句柄terminalId命令在后台异步执行。Agent 可以并发创建多个终端按需轮询输出超时后通过terminal/kill强制终止。协议要求 Agent 在使用完毕后必须调用terminal/release释放资源。Turn 结束。当 Agent 完成所有处理对初始的session/prompt返回 Result携带stopReasonend_turn/max_tokens/cancelled等Turn 正式闭环。Client 可随即发起下一轮session/prompt。4.4 取消CancellationClient 可随时通过session/cancelNotification 中断当前 Turn。Agent 收到后应尽快停止所有进行中的操作并以stopReason: cancelled响应原始的session/prompt请求。协议明确要求 Agent 不得将取消作为错误返回——这是一个正常的业务语义而非异常。5.SDK 源码解析ACP 官方提供了一个 TypeScript SDKagentclientprotocol/sdk整个核心实现仅由三个文件构成结构极为精简jsonrpc.ts46 行定义AnyRequest、AnyResponse、AnyNotification三种 JSON-RPC 消息类型。stream.ts89 行实现ndJsonStream函数——将原始的stdin/stdout字节流转换为结构化的ReadableStreamAnyMessage/WritableStreamAnyMessage即逐行按/n分割并JSON.parse。acp.ts约 2000 行协议的核心调度层包含Connection、AgentSideConnection、ClientSideConnection三个类。其中Connection类是整个 SDK 的调度中枢其核心机制可以归纳为以下几点Pending Map 多路复用。Connection内部维护了一个#pendingResponses: Mapid, {resolve, reject}每次通过sendRequest发出请求时自增#nextRequestId分配 ID将对应的 Promise 回调挂入 Map 后写入管道。当#receive循环从流中读到响应时通过#handleResponse按id匹配并唤醒对应的 Promise——这正是第 3.2 节所述的多路复用模型的落地实现。消息三路分发。#processMessage对收到的每条消息进行三路判定同时包含method和id→ 对方发来的 Request调用#requestHandler处理后回传结果仅包含method→ 对方发来的 Notification调用#notificationHandler处理不回传仅包含id→ 对方回传的 Response通过#handleResponse唤醒挂起的 Promise方法路由。AgentSideConnection在构造时注入一个requestHandler内部通过switch(method)将session/prompt、session/new、initialize等协议方法路由到 Agent 实现的对应函数。ClientSideConnection则对称地路由fs/read_text_file、terminal/create、session/request_permission等 Client 侧方法。断连清理。当底层流关闭或发生异常时#close方法会遍历#pendingResponses中所有未完成的 Promise 并reject确保不会出现永久挂起的请求泄漏。6.微内核实现剥离所有业务逻辑后ACP 的通信内核可以用不到 40 行 TypeScript 还原。其本质是一个基于id映射的异步多路复用器import { EventEmitter } fromevents; const pending new Mapnumber, { resolve: Function; reject: Function }(); let nextId 1; const bus new EventEmitter(); // 发送 Request挂起 Promise等待对端按 id 回调 function sendRequest(method: string, params: any): Promiseany { returnnewPromise((resolve, reject) { const id nextId; pending.set(id, { resolve, reject }); process.stdout.write(JSON.stringify({ jsonrpc: 2.0, id, method, params }) /n); }); } // 接收按 id 路由 Response按 method 分发 Notification/Request process.stdin.on(data, (chunk) { for (const line of chunk.toString().split(/n).filter(Boolean)) { try { const msg JSON.parse(line); if (msg.id ! null (msg.result ! undefined || msg.error)) { const p pending.get(msg.id); if (p) { msg.error ? p.reject(msg.error) : p.resolve(msg.result); pending.delete(msg.id); } } elseif (msg.method) { bus.emit(msg.method, msg); } } catch {} } });无论官方 SDK 如何封装底层的调度模型都是这个结构发送端通过自增id挂起 Promise接收端按id匹配并唤醒。Notification 因为没有id直接走事件分发不占用挂起队列。这就是 ACP 能在单条 stdio 管道上实现全双工、多路复用的根本原因。7.结语ACP 用一套简洁的 JSON-RPC 契约解决了 AI 编码助手生态中编辑器与 Agent 之间的标准化通信问题。协议的核心设计可以归纳为三点通过 Method/Notification 的二元消息模型实现无阻塞的异步流控通过fs/*和terminal/*将系统资源的控制权收归 Client沙箱化通过session/request_permission在工具调用前插入人工审批节点安全拦截。这三者共同构成了一个在性能、安全与可扩展性之间取得平衡的协议架构。最后对于正在迷茫择业、想转行提升或是刚入门的程序员、编程小白来说有一个问题几乎人人都在问未来10年什么领域的职业发展潜力最大答案只有一个人工智能尤其是大模型方向当下人工智能行业正处于爆发式增长期其中大模型相关岗位更是供不应求薪资待遇直接拉满——字节跳动作为AI领域的头部玩家给硕士毕业的优质AI人才含大模型相关方向开出的月基础工资高达5万—6万元即便是非“人才计划”的普通应聘者月基础工资也能稳定在4万元左右。再看阿里、腾讯两大互联网大厂非“人才计划”的AI相关岗位应聘者月基础工资也约有3万元远超其他行业同资历岗位的薪资水平对于程序员、小白来说无疑是绝佳的转型和提升赛道。对于想入局大模型、抢占未来10年行业红利的程序员和小白来说现在正是最好的学习时机行业缺口大、大厂需求旺、薪资天花板高只要找准学习方向稳步提升技能就能轻松摆脱“低薪困境”抓住AI时代的职业机遇。如果你还不知道从何开始我自己整理一套全网最全最细的大模型零基础教程我也是一路自学走过来的很清楚小白前期学习的痛楚你要是没有方向还没有好的资源根本学不到东西下面是我整理的大模型学习资源希望能帮到你。扫码免费领取全部内容1、大模型学习路线2、从0到进阶大模型学习视频教程从入门到进阶这里都有跟着老师学习事半功倍。3、 入门必看大模型学习书籍文档.pdf书面上的技术书籍确实太多了这些是我精选出来的还有很多不在图里4、AI大模型最新行业报告2026最新行业报告针对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。5、面试试题/经验【大厂 AI 岗位面经分享107 道】【AI 大模型面试真题102 道】【LLMs 面试真题97 道】6、大模型项目实战配套源码适用人群四阶段学习规划共90天可落地执行第一阶段10天初阶应用该阶段让大家对大模型 AI有一个最前沿的认识对大模型 AI 的理解超过 95% 的人可以在相关讨论时发表高级、不跟风、又接地气的见解别人只会和 AI 聊天而你能调教 AI并能用代码将大模型和业务衔接。大模型 AI 能干什么大模型是怎样获得「智能」的用好 AI 的核心心法大模型应用业务架构大模型应用技术架构代码示例向 GPT-3.5 灌入新知识提示工程的意义和核心思想Prompt 典型构成指令调优方法论思维链和思维树Prompt 攻击和防范…第二阶段30天高阶应用该阶段我们正式进入大模型 AI 进阶实战学习学会构造私有知识库扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架抓住最新的技术进展适合 Python 和 JavaScript 程序员。为什么要做 RAG搭建一个简单的 ChatPDF检索的基础概念什么是向量表示Embeddings向量数据库与向量检索基于向量检索的 RAG搭建 RAG 系统的扩展知识混合检索与 RAG-Fusion 简介向量模型本地部署…第三阶段30天模型训练恭喜你如果学到这里你基本可以找到一份大模型 AI相关的工作自己也能训练 GPT 了通过微调训练自己的垂直大模型能独立训练开源多模态大模型掌握更多技术方案。到此为止大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗为什么要做 RAG什么是模型什么是模型训练求解器 损失函数简介小实验2手写一个简单的神经网络并训练它什么是训练/预训练/微调/轻量化微调Transformer结构简介轻量化微调实验数据集的构建…第四阶段20天商业闭环对全球大模型从性能、吞吐量、成本等方面有一定的认知可以在云端和本地等多种环境下部署大模型找到适合自己的项目/创业方向做一名被 AI 武装的产品经理。硬件选型带你了解全球大模型使用国产大模型服务搭建 OpenAI 代理热身基于阿里云 PAI 部署 Stable Diffusion在本地计算机运行大模型大模型的私有化部署基于 vLLM 部署大模型案例如何优雅地在阿里云私有部署开源大模型部署一套开源 LLM 项目内容安全互联网信息服务算法备案…扫码免费领取全部内容3、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】