1. 从Agent混乱生态说开去:这个协议要干什么
最近一年,AI Agent的行业讨论度一路走高,但真正动手做过Agent平台的人,多少都有点心虚。市面上所谓的Agent框架、Agent运行时、Agent云服务,说到底是把大模型API包了一层壳,再塞进去一些工具调用逻辑。真正把Agent当成一等公民来设计,并且把“Agent和运行环境之间的关系”这件事做扎实的协议,少之又少。
Agent Client Protocol(后面我统一叫ACP)就是在这个背景下被推到台前的。它不是一个Agent框架,也不是一套编排工具,而是定义“Agent客户端”和“Agent宿主/运行时”之间如何通信、如何协作、如何交付任务的协议。说得直白一点:Agent进程跑在哪个托管环境里,宿主如何把一个任务清单交给Agent,Agent怎么更新任务状态,宿主怎么把执行过程中的事件流推给上层,这套规则它就是ACP。
这事的价值在于标准化。以前每家做Agent平台的公司,内部都有自己一套“宿主和Agent之间的接口”,但因为是非公开的私有协议,外部工具、第三方运行时、可观测系统想接入,只能靠逆向或者说服对方开放API。ACP把这一层抽出来,变成公开的协议规范,相当于给Agent世界定了一个“USB接口”——设备千差万别,但接口标准统一了,插上就能用。
适合看这篇文章的人,我大概划个范围:正在做Agent平台或者Agent运行时的开发者,想在自研系统里接入第三方Agent的架构师,以及对Agent工程化有浓厚兴趣、想搞清楚Agent生产环境到底长什么样的技术人。这篇文章不聊大模型原理,也不聊提示词工程,聊的全是工程侧怎么设计、怎么落地、怎么排坑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 协议核心机制拆解:生产者-消费者模型与任务生命周期
2.1 宿主与Agent的关系,不是“调用”而是“会话”
ACP最值得细品的一点,是它把宿主(Host)和Agent的关系定义成了“会话制”,而不是“请求-响应制”。传统的API调用是你传一个prompt进去,大模型返回一段文本,一次调用结束。但ACP里的Agent更像是长驻的工作单元:宿主创建Agent实例,给Agent一个任务清单(Task List),Agent持续地处理任务、更新状态、抛出事件,直到任务清单全部完成、会话结束。
这个设计最大的好处是,Agent不再被当成无状态的函数来用,而是被当成有状态的执行单元。状态在哪里维护?在宿主侧。ACP规范里,宿主负责维护任务清单的权威状态,Agent通过协议请求获取任务、更新任务结果。这就避免了两个Agent各自维护一份状态、最后状态对不上的问题。
我在实际梳理这套协议时,最大的感受是它很像“生产者和消费者”模型。宿主是任务的分配者,Agent是任务的处理者,而这个协议就是两者之间的消息队列加状态同步规范。Agent可以向宿主请求“给我下一个任务”,处理完把结果写回,宿主把最新状态广播给所有订阅者。这个模型清晰、可扩展、好理解,也方便在协议之上做负载均衡、故障转移。
2.2 任务清单状态机:pending、in-progress、completed、cancelled
任务清单(Task List)是ACP里最核心的数据结构。它不是一个简单的任务数组,而是带状态机约束的有序列表。每个任务都有生命周期,常见的状态包括:待处理(pending)、执行中(in-progress)、已完成(completed)、已取消(cancelled)。宿主和Agent双方都要遵守状态流转规则,不能随意跳转。
为什么把状态机设计得这么严格?因为在多Agent并行的场景里,如果状态流转不规范,很容易出现两个Agent同时处理同一个任务、或者任务已经取消了Agent还在执行的情况。ACP通过把状态流转的规则写死在协议里,从机制上规避了这类脏数据问题。
另外,ACP允许任务之间存在依赖关系。比如任务B依赖任务A的输出,那么在任务A处于completed状态之前,任务B不能进入in-progress状态。这个设计对现实世界的工作流还原度很高,也意味着协议本身已经内置了对DAG任务编排的支持,像复杂的数据处理流水线、多阶段内容生产流程,都能比较自然地映射到这套模型上。
2.3 事件流机制:从轮询到主动推送的质变
有了任务状态机还不够,上层应用还关心Agent执行过程中的中间状态。比如A任务跑了一半,用户想看到它当前的进度,这时候宿主如何把信息通知给客户端?ACP给出的答案是标准化的服务端事件流。
ACP使用JSON-RPC、SSR等消息类型,定义了完整的通知类消息。宿主通过事件通道把“任务状态变更”“Agent生成了新内容”“请求人工确认”等事件主动推送给客户端,客户端不需要自己Loop轮询接口。这个机制我第一次看的时候
