Skip to content

Agent Client Protocol

Agent Client Protocol(ACP)标准化编码 Agent 与编辑器/IDE 的通信。编辑器负责启动进程、提供项目 上下文和显示进度;自定义 Deep Agents 应用在 stdio server 中接收 session 请求并返回消息、工具与 状态更新。

Alpha 包元数据:官方教程页没有单独的成熟度徽标;PyPI deepagents-acp 0.0.9(2026-07-07) classifier 为 Alpha,要求 Python >=3.11。协议和 adapter 升级应先做客户端兼容测试。

ACP 与 MCP 的方向不同

协议谁连接谁主要承载本页角色
ACP编辑器/IDE → Agent serversession、prompt、进度、Agent action把完整 Deep Agents 应用接入客户端
MCPAgent/client → tool servertools、resources、prompts给 Agent 增加外部能力

一个 ACP server 内部仍可以加载 MCP tools;两者互补,不应把“编辑器接入 Agent”和“Agent 调外部 工具”混成同一个协议层。

前端类比

ACP 类似 IDE 与 Language Server 之间的会话协议,MCP 更像应用调用插件服务的 RPC。两者都传输 结构化消息,但连接方向和生命周期不同。

Deep Agents 原生语义AgentServerACP 把编译后的 Deep Agents graph 适配为 ACP agent; run_agent 通过 stdio 驱动协议循环。规划、tools、subagents、checkpointer 和 permissions 仍由原 Agent 配置决定,ACP 不会自动提供安全策略。

最小 Stdio Server

安装锁定的 Alpha 版本:

bash
pip install "deepagents-acp==0.0.9"

创建 agent_server.py

python
import asyncio
import os

from acp import run_agent
from deepagents import create_deep_agent
from deepagents_acp.server import AgentServerACP
from langgraph.checkpoint.memory import MemorySaver


async def main() -> None:
    agent = create_deep_agent(
        model=os.environ["DEEPAGENTS_MODEL"],
        system_prompt="在项目范围内分析代码;修改前说明依据并请求批准。",
        checkpointer=MemorySaver(),
    )
    await run_agent(AgentServerACP(agent))


if __name__ == "__main__":
    asyncio.run(main())

通常由 ACP client 启动该命令,而不是用户先开一个 TCP 端口。内存 checkpointer 只适合本地演示; 需要跨进程恢复时要换成持久实现。

Stdio 进程约束

  • stdout 属于协议传输,不要混入 print、banner 或普通日志;日志写到 stderr
  • 客户端配置使用绝对命令/脚本路径,并明确工作目录和允许继承的环境变量。
  • Server 崩溃、客户端取消和编辑器退出都要可靠终止子进程及 remote sandbox。
  • 不把 API key 写进编辑器配置;通过凭据存储或受控环境注入。
  • 来自编辑器的路径、选区、文件内容和用户 prompt 都是不可信输入。

客户端接入检查

官方列举的 ACP clients 包括 Zed、JetBrains IDEs、VS Code 的 ACP 扩展,以及兼容插件形式的 Neovim。具体配置字段由客户端决定,但都需要明确:

  1. 启动 server 的命令和 cwd。
  2. Agent 能看到的 workspace roots。
  3. 修改、shell、网络和 MCP action 的审批 UI。
  4. Session 恢复、取消与模型切换的兼容性。
  5. Client/server 版本组合和协议日志采集方式。

不要因为 Agent 由 IDE 启动就默认信任整个工作区。仓库内文件、任务描述、依赖脚本与生成输出都可能 包含 prompt injection。

何时不用 ACP

  • Web/移动前端消费 Agent Server:优先使用 LangGraph SDK/streaming。
  • 只想给 Agent 增加外部工具:使用 MCP。
  • Agent-to-Agent 服务通信:评估 Agent Protocol、A2A 或应用自己的 API。
  • 只需要终端编码产品:直接使用 Deep Agents Code。

先修

下一步

官方参考

学习文档整合站点