ACP 编码代理
Agent Client 协议将编码界面连接到编码代理。该界面可以是编辑器、桌面应用程序、CLI,或另一个 ADK-Rust 代理。编码代理是一个独立进程,它会推理项目并通过共享会话报告其工作。
ADK-Rust 实现了稳定的 ACP 协议版本 1 的两端:
- 从 ADK-Rust 应用程序中使用外部 ACP 编码代理;
- 将一个 ADK-Rust 代理暴露为编辑器可以启动的 ACP 进程。
该实现使用官方 agent-client-protocol Rust SDK。SDK crate 版本与 ACP wire 版本是分开的:ADK-Rust 当前使用 SDK 1.2,同时在 initialize 期间协商协议版本 1。
阅读本节
- 架构与概念 解释了两个角色和完整的请求流程。
- 构建一个 ACP 客户端或宿主 涵盖一次性委派、持久会话、流式传输、取消、权限、文件、终端以及会话 MCP 服务器。
- 暴露一个 ADK-Rust ACP 代理 涵盖服务器构建、生命周期映射、事件流式传输、会话持久化和部署。
- 测试和支持矩阵 列出了已验证的行为,以及 ADK-Rust 明确不声明支持的功能。
我应该使用哪种协议?
| 边界 | 用途 |
|---|---|
| ACP | 与项目会话中的编码代理协同工作的交互式编码界面 |
| A2A | 独立部署的业务代理,交换远程任务和工件 |
| MCP | 在代理后面提供的工具、提示和资源 |
ACP 可能在编码会话打开时携带 MCP 服务器配置。这并不意味着 ACP 和 MCP 可以互换:ACP 拥有编码代理对话;MCP 提供该对话期间使用的工具和资源。
示例
| 示例 | 证明了什么 |
|---|---|
examples/acp_client_host | 流式客户端 UI、异步权限,以及受工作区限制的只读文件系统 |
examples/acp_kiro | 直接委派、作为 ADK 工具的 ACP agent、持久会话、环境配置以及并发取消 |
examples/acp_server | 通过 ACP v1 向编辑器提供的、使用工具的 ADK-Rust LLM agent |
examples/acp_full_protocol | 进程内、无需 API-key 的、由 Runner 支持的参考实现,覆盖完整的 Phase 2 服务器表面(嵌入资源 + 图像/音频提示、权限桥接、session/load 回放、用量/工具调用更新),并带有一个验证测试 |