关键词:ACP|Agent Client Protocol|JSON-RPC 扩展|TypeBox|流式通信|多端同步
在构建一个支持 WhatsApp、Telegram、Web、iOS、Android 和 CLI 的 AI 智能体系统时,通信协议的选择直接决定了系统的扩展性、一致性与开发效率。
OpenClaw 没有采用现成的 gRPC、GraphQL 或 REST,而是基于 JSON-RPC 2.0 扩展出一套专为 AI Agent 场景定制的轻量级协议——ACP(Agent Client Protocol)。这并非“重复造轮子”,而是一次面向领域特性的精准设计。
本文将揭示:为什么通用协议不够用?ACP 解决了哪些 AI 原生问题?以及它是如何保障类型安全与多端一致性的。
- ❌ 不支持服务端主动推送(如工具调用进度、思考过程)
- ❌ 难以表达流式输出(Streaming),需依赖 SSE 或长轮询
- ❌ 无内置Agent 智能体幂等性或会话上下文概念
对 AI 而言,“发送消息”只是开始,后续可能有多轮 事件流。
- ✅ 支持双向流、强类型、高效序列化
- ❌ 依赖 Protobuf,前端(JS/TS)集成复杂
- ❌ 调试困难:二进制格式无法直接阅读
- ❌ 跨平台成本高:iOS/Android 需生成客户端 stub
OpenClaw 需要的是“人类可读 + 机器可靠”的平衡。
- ✅ 灵活查询
- ❌ 本质仍是请求-响应,不擅长表达异步事件
- ❌ 缺乏对命令式操作(如 , )的自然建模
OpenClaw 团队提出 ACP 的四大设计原则:

💡 ACP = JSON-RPC 2.0 + WebSocket + AI 原生语义扩展
所有请求遵循标准格式:
- :RPC 方法名(如 , )
- :参数对象
- :用于匹配响应(支持幂等性)
当智能体执行过程中产生新状态,网关主动推送事件:
常见事件类型:
- :AI 生成文本片段
- :AI 请求调用工具(如 )
- :工具执行结果返回
- : / /
🔄 这使得 Web UI 可实时渲染“打字机效果”或“工具调用卡片”。
- 每个 可携带
- 网关缓存结果,防止网络重试导致重复执行
- 所有事件携带 ,客户端可关联完整执行链
ACP 定义统一错误码:
常见错误码:
- :上下文溢出(触发自动压缩)
- :需要用户审批(弹出确认框)
- :账号限流(触发换号逻辑)
OpenClaw 使用 TypeBox 定义所有 ACP 方法的参数与响应结构。
- 运行时校验:网关收到请求后自动验证参数合法性
- 编译时类型: 和 可导入该 Schema,获得 TypeScript 类型提示
- 文档自动生成:结合 Swagger 可输出 API 文档
🔒 从源头杜绝“字段不存在”或“类型错误”类 bug。
由于所有客户端(Web/iOS/Android/CLI)都实现同一套 ACP 协议,它们天然具备功能对齐:

🧩 协议即契约——只要遵守 ACP,任何新客户端都能立即获得全部能力。

✅ ACP 的独特价值在于:它连接了“渠道 ↔ 模型 ↔ 工具”全链路。
在 OpenClaw 中,ACP 不仅是通信格式,更是系统架构的约束与保障。它强制解耦了渠道、协议、智能体三层,使得:
- 渠道开发者无需懂 LLM
- 智能体开发者无需关心 WhatsApp 协议
- 客户端开发者只需实现一套协议
这种“协议优先”(Protocol-First)的设计哲学,正是 OpenClaw 能够快速扩展到多端、多渠道、多模型的核心秘密。
在下一篇文章中,我们将聚焦 OpenClaw 的启动与配置体系,解析 、 与环境变量如何协同工作。
✅ 下一篇预告:
第 4 篇:启动与配置体系 —— 、 与环境变量管理
如需,我可立即为您生成 第 4 篇全文,或提供本文的 Markdown 源码、TypeBox 示例代码 等。是否继续?
发布者:Ai探索者,转载请注明出处:https://javaforall.net/273974.html原文链接:https://javaforall.net
