跳到正文

Provider 与接入方式

在 C2 中,Provider 指由 C2 通过 Agent Client Protocol(ACP) 驱动的编程智能体 CLI。 C2 不会重新实现智能体,也不代理模型访问;它只在本机启动 CLI 或 ACP 适配器子进程,并通过 stdin/stdout 交换 JSON-RPC 消息。

身份验证、订阅、配额、可用模型和费用仍由对应 Provider 管理。开始真实会话前,请先安装并登录相应 CLI。

“支持”具体意味着什么

每个内置 Provider 都有固定的 ID 和启动配置。为会话选择 Provider 后,C2 会:

  1. 检查启动命令是否能从 PATH 中找到;
  2. 在本机启动原生 ACP 端点或适配器;
  3. 初始化 ACP 会话,并把编译后的文档作为提示词发送;
  4. 在 Provider 实际提供对应能力时,把文本流、工具调用、权限请求、计划、终端更新和任务结束状态转换为统一的 C2 Event。

“支持”不代表所有 Provider 都暴露完全相同的模型和 ACP 能力。C2 只显示当前 ACP 端点真实上报的内容,不会伪造能力一致性。

十一个内置 Provider

Provider接入方式C2 启动命令前置要求
Claude CodeACP 适配器npx -y @agentclientprotocol/claude-agent-acpNode,以及已完成身份验证的 Claude Code 环境
CodexApp Server ACP 适配器npx -y @agentclientprotocol/[email protected]Node,以及本地 Codex runtime/登录状态
Grok原生 ACPgrok agent stdio已登录的 grok CLI,并位于 PATH
CursorCLI 内置 ACP 模式cursor-agent acp已登录的 cursor-agent,并位于 PATH
OpenCode 1CLI 内置 ACP 模式opencode acp已登录的 opencode,并位于 PATH
OpenCode 2(Beta)CLI 内置 ACP 模式opencode2 acp已登录的 opencode2 beta,并位于 PATH
Pi社区 ACP 适配器npx -y pi-acpNode;pi 位于 PATH 中以读取配置和凭据
Kimi原生 ACPkimi acp已登录的 kimi CLI,并位于 PATH
ZCode(GLM)GLM ACP 智能体npx -y glm-acp-agentNode,加 Z_AI_API_KEY 或一次性 --setup
AmpACP 适配器npx -y amp-acpNode,以及已登录并位于 PATH 中的 amp
Droid原生 ACPdroid exec --output-format acp已登录的 droid CLI,并位于 PATH

原生 ACP

GrokKimiDroid 直接提供 ACP 端点,因此 C2 无需 Node 适配器即可启动它们。

CLI 内置 ACP 模式

Cursor 和两个 OpenCode 版本都通过自身 CLI 的 ACP 模式接入。OpenCode 2 使用独立的 opencode2 二进制与 V1 并存,不会替换 opencode,因此 C2 也把二者作为独立 Provider。 Beta 的安装与迁移边界见 OpenCode 2 官方文档

适配器接入

Claude CodeCodexPiZCode(GLM)Amp 通过 npx 启动。Pi 与 Amp 使用社区适配器。GLM 项启动的是 GLM ACP 智能体,而不是 ZCode 桌面应用;后者自身是 ACP 客户端,不能作为 C2 驱动的 CLI。

GLM 可以通过环境变量提供 Z_AI_API_KEY,也可以先运行:

sh
npx -y glm-acp-agent --setup

Provider 原生子代理

C2 不会自行调度子代理。只有当前原生运行时或适配器已经确认提供 Agent/Task 委派工具时, 插件子代理块才会发送给 Provider:Claude Code、Codex、Cursor、OpenCode 1/2、Kimi、Amp 和 Droid。它们的标准 ACP 工具调用事件直接进入现有只读 Agents roster;Cursor 官方定义的 cursor/task 完成通知只在 ACP 接入层做一次标准化。

Grok、Pi、ZCode 和自定义 Provider 收到含插件子代理的 prompt 时,会在 turn 被接受前直接 失败;C2 不会把 specialist 指令悄悄交给主 Agent 内联执行。

可用状态与身份验证

C2 会为每个内置 Provider 显示健康状态:

  • 绿点表示注册的启动命令可以从 PATH 中找到;
  • 缺失表示 C2 找不到该命令;
  • 如果新会话选择了缺失命令,编辑器会在运行前给出警告。

这个检查有意保持窄范围:它不能证明凭据有效、账户仍有配额,或适配器包可以成功下载。对于通过适配器接入的 Provider,绿点主要说明 npx 可用。

模型与 Provider 专属能力

如果 ACP 端点在 session/new 阶段上报模型,C2 会显示模型控件,并在切换时发送 session/set_model。如果端点没有上报模型列表,模型仍由 Provider 自己的 CLI 配置决定。

OpenCode 2 会通过 ACP 配置项上报当前项目/账户的模型目录与模型专属 variant。C2 直接使用这些 实时值(包括 thought_level),不会假定固定的思考等级。

计划、斜杠命令、MCP 工具、图片、浏览器/计算机控制等能力也遵循相同边界:是否可用取决于 Provider、适配器版本和宿主运行时。出现在上表中,不代表它自动拥有所有可选能力。

统一的 ACP 循环

九个 Provider 最终都会进入同一条核心链路:

text
initialize → session/new → session/prompt → stream session/update
           → answer session/request_permission → read StopReason

正是这层统一传输,让桌面端、TUI 和远程客户端可以共享与 Provider 无关的会话与事件模型。

支持 MCP 的 Provider 可以在会话开始时接收额外工具。C2 的 MCP Server 来自 MCP Skill;完整说明见技能文档(英文)市场(英文)

基于 Apache-2.0 许可证开源。