乐于分享
好东西不私藏

ACP协议:打通多个超级AI编程工具

ACP协议:打通多个超级AI编程工具

AI编程今年很可能今年被正式取代,前两天google说内部70%的代码是AI生成,Antrophic更高,去年就说接近90%了。我们有必要聊聊AI编程底层的一些工具,工欲善其事必先利其器,了解下基本原理可以让我们更有效的使用工具~

1、痛点和背景

先说痛点:你可能已经在用 Kiro CLI、Claude Code、OpenAI Codex 这些终端 AI 编码工具,但它们都是”单机版”——只能在终端里用,没法接入微信、飞书这些 IM 渠道。

能不能实现这样一个功能?

在微信里发一条消息,就能让 Kiro 写代码、Codex 抓网页发小红书、Claude 做 Code Review——这篇文章手把手教你怎么配。

Kiro CLI、Claude Code 这些工具都支持一种叫 ACP(Agent Client Protocol)的协议——本质上就是通过 stdin/stdout 传输 JSON-RPC 2.0 消息

ACP Bridge 做的事情是:

  1. 接收外部的 HTTP 请求

  2. 启动 CLI 工具的子进程

  3. 把 HTTP 请求翻译成 JSON-RPC 消息写入子进程的 stdin

  4. 从子进程的 stdout 读取 JSON-RPC 响应

  5. 翻译回 HTTP 响应返回给调用者

一句话总结:任何有 CLI 的 AI Agent,配任何模型,都能通过 ACP Bridge 接入 IM。

Agent兼容性:

2、过程中依赖的核心技术

2.1 JSON-RPC

JSON-RPC 的核心思想是:“调用一个远程的方法,就像调用本地的方法一样。”当客户端想要调用服务器上的某个函数时,它会向服务器发送一个符合 JSON-RPC 规范的 JSON 对象。服务器收到后,解析这个对象,执行相应的函数,然后将结果打包成另一个 JSON 对象返回给客户端。

  1. 语言无关性:只要能解析 JSON,任何编程语言(Python, Java, Go, JS 等)都可以使用 JSON-RPC 进行通信。

  2. 传输层无关性:虽然最常用的是 HTTP/HTTPS,但它也可以在 TCP、WebSocket 或其他传输协议上运行。

  3. 轻量级:相比于 SOAP 或复杂的 gRPC,JSON-RPC 非常简单,易于调试(人类可读)。

  4. 无状态:每个请求都是独立的,服务器不需要维护客户端的状态。

2.2 ACP协议

ACP(Agent Client Protocol,Agent 客户端协议)是一个开放标准,定义了代码编辑器(客户端)与 AI 编程 Agent(服务端)之间的通信方式。它由 Zed 编辑器 团队于 2025 年 8 月发布,采用 Apache License 开源。

简单来说,ACP 之于 AI 编程 Agent,就像 LSP(Language Server Protocol)之于编程语言支持 —— 让任何编辑器可以对接任何 AI Agent,无需定制插件。

ACP 基于 JSON-RPC 2.0,通过 stdio(Agent 作为子进程)或 HTTP(远程 Agent)通信。核心消息流如下:

Session Update 类型包括:plan(执行计划)、agent_message_chunk(流式文本)、thought_message_chunk(推理过程)、tool_call(工具调用)、tool_call_update(工具进度/结果)等。

1)与 MCP 的关系:

ACP 和 MCP 是互补的,不是竞争关系:

  • MCP 解决的是 Agent 如何访问外部工具和数据(Agent ↔ 工具)

  • ACP 解决的是 Agent 如何与编辑器/UI 通信(Agent ↔ 客户端)

ACP 会话启动时,编辑器会将可用的 MCP Server 端点和凭证传递给 Agent,Agent 可以通过标准 MCP 调用来使用这些工具(运行测试、查询文档、访问数据库等)。编辑器始终保持监督权,敏感操作需要用户确认。

这三者的关系分别是:MCP是Agent如何调用不同的工具,ACP是(人如何控制)程序如何调用不同的Agent,A2A则更进一步Agent之间的相互调用。

2)生态现状:

  • Zed 编辑器原生支持(自身内置 AI 助手也重构为 ACP)

  • Google Gemini CLI 作为首个参考实现

  • Neovim 通过 Code Companion 插件支持

  • 社区正在探索 Claude Code 等更多 Agent 的集成

  • JetBrains、Obsidian 等编辑器也在适配中

2.3 kiro-gateway:

Kiro Gateway 是一个协议翻译代理,让你可以用任何兼容 OpenAI/Anthropic 的客户端(Claude Code、Cursor、Cline等)来调用 Kiro 提供的免费 Claude 模型。

五个核心机制:

  1. 认证管理 (auth.py)

支持 4 种认证方式,自动检测类型:

– Kiro Desktop Auth:读取 Kiro IDE 的 JSON 凭证文件,用

prod.{region}.auth.desktop.kiro.dev/refreshToken 刷新

– AWS SSO OIDC:读取 kiro-cli 的 SSO 缓存,用 oidc.{region}.amazonaws.com/token 刷新(需要

clientId/clientSecret)

– SQLite DB:直接读 kiro-cli 的 data.sqlite3 数据库

– 环境变量:直接传 refresh_token

关键:用 asyncio.Lock 保证并发安全的 token 刷新,token 过期前自动续期。

2. 协议转换 (converters_core.py)

这是最核心的部分。Kiro API 的请求格式是私有的,不同于 OpenAI/Anthropic:

  1. 模型解析 (model_resolver.py)

    4 层解析管道,兼容各种客户端发来的模型名:

  1. 流式响应解析 (parsers.py + streaming_core.py)

Kiro API 返回的是 AWS Event Stream 二进制格式(不是标准 SSE),需要:

– 解析二进制帧头(4 字节长度 + headers + payload)

– 提取 JSON 事件

– 用 FSM(有限状态机)解析 <thinking> 标签,分离推理内容和正文

– 处理 tool call 的特殊格式(Kiro 用 [{…}] 括号格式返回)

– 转换成标准 OpenAI SSE (data: {…}\n\n) 或 Anthropic SSE 格式

5. 容错与重试 (http_client.py)

– 403 → 自动刷新 token 重试

– 429 → 指数退避

– 5xx → 指数退避

– 首 token 超时 → 重试(模型可能在”思考”)

– 流式请求用独立 httpx client(防止 CLOSE_WAIT 连接泄漏)

3、令人经验的效果展示

1)微信里面使用kiro帮你完成调研

2)kiro转API供给本地AI服务

同样的逻辑也可以配置Claudecode和codex,实现买一个套餐玩儿转所有coding Agent!

4、参考:

1)kiro-gateway

https://github.com/jwadow/kiro-gateway

2)acp-bridge

https://github.com/allvegetable/acp-bridge