Appearance
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 server | session、prompt、进度、Agent action | 把完整 Deep Agents 应用接入客户端 |
| MCP | Agent/client → tool server | tools、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。具体配置字段由客户端决定,但都需要明确:
- 启动 server 的命令和 cwd。
- Agent 能看到的 workspace roots。
- 修改、shell、网络和 MCP action 的审批 UI。
- Session 恢复、取消与模型切换的兼容性。
- 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。