返回博客

AI 入门指南

什么是 ACP(Agent Client Protocol)?自带智能体

ACP 是代码编辑器与编码智能体之间的插槽。本文介绍它与 MCP 的区别,以及你的模型和 API 密钥位于何处。

作者:CheapTokens Team发布于 5 分钟阅读

封面:编辑器 → ACP → 智能体流程,代码编辑器与编码智能体之间的协议
本页内容
  1. 为什么需要插槽?
  2. ACP 如何工作,用大白话说
  3. ACP 与 MCP:各自连接什么
  4. 在 Android Studio 中自带智能体
  5. 模型和 API 密钥位于何处
  6. 接下来做什么

Android Studio 现在提供 40 多种编码智能体的菜单,相关新闻反复提到三个字母:ACP。简短版本如下。Agent Client Protocol (ACP) 是代码编辑器与编码智能体之间的共享插槽,有点像电脑与所插入设备之间的 USB。任何支持 ACP 的编辑器都能托管任何支持 ACP 的智能体。MCP 是另一根线缆:它把智能体连接到工具和数据,而不是连接到你的编辑器。

新闻的由头是 Android Studio。Android Developers 博客(2026 年 10 月 28 日)称,现已稳定的 Android Studio Rabbit 2 提供“Bring Your Own Agent”:你可以从 40 多种编码智能体中选择,包括 Claude Agent、OpenAI 的 Codex、Junie 和 Google Antigravity。该文章从未明确写出“ACP”。名称和机制来自 ACP 介绍(2026 年 11 月 1 日查阅)。

为什么需要插槽?#

假设有 5 个编辑器和 8 个编码智能体。如果每一对都需要手工建立连接,那就是 5 × 8 = 40 个集成,而且每新增一个智能体,五个编辑器团队就要各多做五份工作。如果大家都约定使用同一个插槽,每个编辑器只需实现一次,每个智能体也只需实现一次:5 + 8 = 13 份工作。这就是全部思路。

ACP 网站用 LSP(Language Server Protocol)做了同样的类比:一个语言服务器可以在许多编辑器中使用。同样的技巧应用到编码智能体上:任何 ACP 智能体都能与任何 ACP 编辑器配合,无需为每一对做定制集成。

闪卡

你会围绕 ACP 遇到的词汇

ACP 如何工作,用大白话说#

想象两位同事通过投信口传递纸条。编辑器写一个请求,智能体写回它想展示的内容。对于本地智能体,这个投信口是字面意义上的:编辑器在你的机器上把智能体作为子进程启动,它们通过 stdio 交换 JSON-RPC 消息。每条消息都有相同的大致结构:

json
{ "jsonrpc": "2.0", "id": 1, "method": "…", "params": { … } }

方法名由 ACP 本身定义,所以你永远不用手写这些。编辑器和智能体会写。

智能体不必住在你的笔记本电脑上。远程智能体使用 HTTP 或 WebSocket,不过 ACP 网站表示完整的远程支持仍在开发中。而且由于该协议是为编码而构建的,它尽可能复用 MCP 的 JSON 表示,并增加了编辑器需要绘制的内容类型,例如差异。这就是为什么一个提议的更改可以在你的编辑器中以差异形式显示,而不是一大段文字。

编辑器、ACP、智能体和模型 API 排成一行
ACP 是编辑器与智能体之间的连接。模型位于智能体之后,在单独的连接上。

ACP 与 MCP:各自连接什么#

把智能体放在中间。一侧是你的编辑器,那条连接是 ACP。另一侧是智能体所操作的东西:文件、数据库、服务。那条连接是 MCP。它们位于智能体的不同两侧,所以并不竞争。如果你对 MCP 还不熟悉,请从我们的通俗 MCP 指南开始。

ACP 连接编辑器和智能体,MCP 连接智能体和工具
两个协议并排。ACP 面向编辑器,MCP 面向工具。

它们也是近亲:如上所述,ACP 尽可能借用 MCP 的 JSON 表示。试着自己配对:

配对

将每个名称与其连接的对象配对

  • ACP编辑器 ⇄ 编码智能体
  • MCP智能体 ⇄ 工具和数据
  • 基于 stdio 的 JSON-RPC本地 ACP 智能体如何与编辑器通信
  • 模型 API(base URL + key)智能体 ⇄ 语言模型

在 Android Studio 中自带智能体#

没有共享协议时,向编辑器添加智能体是编辑器厂商的工作。使用 Android Studio Rabbit 2,你可以自己选择智能体。根据 Android Developers 的文章,你打开智能体窗口并选择一个智能体,或者在 Settings > Tools > AI > Agents 中选择一个。然后进行身份验证并发送你的第一个提示。文章只说了“authenticate”;具体要求取决于你选择的智能体,所以应查阅该智能体自己的文档。

如果你想自己核对,顺序如下:

排序

将 Android Studio 的步骤排序

  1. 打开 Android Studio Rabbit 2
  2. 选择一个智能体(智能体窗口或 Settings > Tools > AI > Agents)
  3. 进行身份验证
  4. 发送第一个提示

模型和 API 密钥位于何处#

这是最让初学者困惑的部分。ACP 连接承载编辑器和智能体之间的对话。智能体仍然需要一个语言模型来思考,而那是单独的连接,通常有自己的登录或 API 密钥。切换编辑器不会改变模型,切换模型也不会改变编辑器。Android Studio 的文章没有提到自定义密钥或模型,所以你能改变什么取决于你选择的智能体。

有些智能体允许你将其指向 OpenAI 兼容端点:一个 base URL、一个密钥和一个模型 id。当你的智能体支持时,这就是模型侧的全部连接,你可以在改动任何设置之前先在终端中测试它(密钥是环境变量中的占位符):

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-ai/DeepSeek-V4-Flash-0731",
    "messages": [{"role": "user", "content": "Explain ACP in one sentence."}]
  }'

你会收到一个 JSON 回答,文本在 choices[0].message.content 中,token 计数在 usage 中。编码智能体在每一步都会重新发送大量上下文,所以长上下文模型适合它们。在 CheapTokens 中,那就是 DeepSeek-V4-Flash:380K 上下文窗口,每次回答最多 32,768 个输出 token,一天中任何时段价格相同,所有模型共用一个余额。该 API 兼容 OpenAI 和 Anthropic。请从 CheapTokens 文档获取确切的模型 id;不同提供商之间的 id 不同。DeepSeek 模型页面有详细信息。

不确定哪个工具接受自定义密钥?我们的指南在哪里接入你自己的 API 密钥涵盖了聊天、编辑器、终端和代码。如果“base URL”是个新术语,请阅读什么是 base_url 以及如何切换。

自己试试试一试:你安装了一个 ACP 智能体。要切换它使用的模型,你需要更改哪个连接?显示答案

不是 ACP 那个。编辑器到智能体的插槽保持原样。模型是智能体自己的设置:如果智能体暴露了这些设置,就在智能体的配置中设置 base URL、密钥和模型 id。

接下来做什么#

打开你想要使用的智能体的文档,找到它设置模型的位置。如果你好奇智能体内部如何工作,AI 智能体如何工作:循环会一步步展示。ACP 只回答一个问题:编辑器和智能体如何通信。其他一切都在智能体与其工具和模型之间。