ACP 是为智能体-编辑器集成设计的。如果您希望您的智能体调用外部服务器托管的工具,请参阅 模型上下文协议(MCP)。
快速入门
安装 ACP 集成包: :::pythonpip install deepagents-acp
uv add deepagents-acp
npm install deepagents-acp
yarn add deepagents-acp
pnpm add deepagents-acp
import asyncio
from acp import run_agent
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents_acp.server import AgentServerACP
async def main() -> None:
agent = create_deep_agent(
model="google_genai:gemini-3.6-flash",
# You can customize your deep agent here: set a custom prompt,
# add your own tools, attach middleware, or compose subagents.
system_prompt="You are a helpful coding assistant",
checkpointer=MemorySaver(),
)
server = AgentServerACP(agent)
await run_agent(server)
if __name__ == "__main__":
asyncio.run(main())
import asyncio
from acp import run_agent
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents_acp.server import AgentServerACP
async def main() -> None:
agent = create_deep_agent(
model="openai:gpt-5.5",
# You can customize your deep agent here: set a custom prompt,
# add your own tools, attach middleware, or compose subagents.
system_prompt="You are a helpful coding assistant",
checkpointer=MemorySaver(),
)
server = AgentServerACP(agent)
await run_agent(server)
if __name__ == "__main__":
asyncio.run(main())
import asyncio
from acp import run_agent
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents_acp.server import AgentServerACP
async def main() -> None:
agent = create_deep_agent(
model="anthropic:claude-sonnet-5",
# You can customize your deep agent here: set a custom prompt,
# add your own tools, attach middleware, or compose subagents.
system_prompt="You are a helpful coding assistant",
checkpointer=MemorySaver(),
)
server = AgentServerACP(agent)
await run_agent(server)
if __name__ == "__main__":
asyncio.run(main())
import asyncio
from acp import run_agent
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents_acp.server import AgentServerACP
async def main() -> None:
agent = create_deep_agent(
model="openrouter:z-ai/glm-5.2",
# You can customize your deep agent here: set a custom prompt,
# add your own tools, attach middleware, or compose subagents.
system_prompt="You are a helpful coding assistant",
checkpointer=MemorySaver(),
)
server = AgentServerACP(agent)
await run_agent(server)
if __name__ == "__main__":
asyncio.run(main())
import asyncio
from acp import run_agent
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents_acp.server import AgentServerACP
async def main() -> None:
agent = create_deep_agent(
model="fireworks:accounts/fireworks/models/glm-5p2",
# You can customize your deep agent here: set a custom prompt,
# add your own tools, attach middleware, or compose subagents.
system_prompt="You are a helpful coding assistant",
checkpointer=MemorySaver(),
)
server = AgentServerACP(agent)
await run_agent(server)
if __name__ == "__main__":
asyncio.run(main())
import asyncio
from acp import run_agent
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents_acp.server import AgentServerACP
async def main() -> None:
agent = create_deep_agent(
model="baseten:zai-org/GLM-5.2",
# You can customize your deep agent here: set a custom prompt,
# add your own tools, attach middleware, or compose subagents.
system_prompt="You are a helpful coding assistant",
checkpointer=MemorySaver(),
)
server = AgentServerACP(agent)
await run_agent(server)
if __name__ == "__main__":
asyncio.run(main())
import asyncio
from acp import run_agent
from deepagents import create_deep_agent
from langgraph.checkpoint.memory import MemorySaver
from deepagents_acp.server import AgentServerACP
async def main() -> None:
agent = create_deep_agent(
model="ollama:north-mini-code-1.0",
# You can customize your deep agent here: set a custom prompt,
# add your own tools, attach middleware, or compose subagents.
system_prompt="You are a helpful coding assistant",
checkpointer=MemorySaver(),
)
server = AgentServerACP(agent)
await run_agent(server)
if __name__ == "__main__":
asyncio.run(main())
import { startServer } from "deepagents-acp";
await startServer({
agents: {
name: "coding-assistant",
description: "AI coding assistant with filesystem access",
},
workspaceRoot: process.cwd(),
});
npx deepagents-acp
Example coding agent
The
deepagents-acp 包包含一个带有文件系统和 shell 的示例编码智能体,您可以直接运行。Deep Agents ACP on npm
The
deepagents-acp 包提供了一个 CLI 和一个程序化 API,用于通过 ACP 暴露深度智能体。客户端
深度智能体可以在您能运行 ACP 智能体服务器的任何地方工作。一些值得注意的 ACP 客户端包括:- Zed
- JetBrains IDEs
- Visual Studio Code (通过 vscode-acp)
- Neovim (通过 ACP 兼容插件)
Zed
:::python Thedeepagents 仓库包含 一个示例 ACP 入口点,您可以将其注册到 Zed:
- 克隆
deepagents仓库并安装依赖:
git clone https://github.com/langchain-ai/deepagents.git
cd deepagents/libs/acp
uv sync --all-groups
chmod +x run_demo_agent.sh
- 为演示智能体配置凭证:
cp .env.example .env
ANTHROPIC_API_KEY 在 .env 中。
- 在 Zed 的
settings.json中配置您的 ACP 智能体服务器命令:
{
"agent_servers": {
"DeepAgents": {
"type": "custom",
"command": "/your/absolute/path/to/deepagents/libs/acp/run_demo_agent.sh"
}
}
}
- 打开 Zed 的智能体面板并启动一个深度智能体线程。
~/.config/zed/settings.json,macOS 上的 ~/Library/Application Support/Zed/settings.json)来向 Zed 注册您的深度智能体:
简单设置(无需代码):
{
"agent": {
"profiles": {
"deepagents": {
"name": "DeepAgents",
"command": "npx",
"args": ["deepagents-acp"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
}
{
"agent": {
"profiles": {
"deepagents": {
"name": "DeepAgents",
"command": "npx",
"args": [
"deepagents-acp",
"--name", "my-assistant",
"--skills", "./skills",
"--debug"
],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-..."
}
}
}
}
}
// server.ts
import { startServer } from "deepagents-acp";
await startServer({
agents: {
name: "my-agent",
description: "My custom coding agent",
skills: ["./skills/"],
},
});
{
"agent": {
"profiles": {
"my-agent": {
"name": "My Agent",
"command": "npx",
"args": ["tsx", "./server.ts"]
}
}
}
}
Toad
如果您想将 ACP 智能体服务器作为本地开发工具运行,您可以使用 Toad 来管理进程。uv tool install -U batrachian-toad
toad acp "python path/to/your_server.py" .
# or
toad acp "uv run python path/to/your_server.py" .
ACP 注册中心
深度智能体可在 ACP 智能体注册中心 中找到,用于在 Zed 和 JetBrains IDEs 中一键安装。当 ACP 客户端支持注册中心时,用户可以无需任何手动配置即可发现和安装深度智能体。 ::: :::jsCLI 参考
CLI 是启动 ACP 服务器的最快方式。它无需代码——只需运行npx deepagents-acp 并连接您的编辑器。
npx deepagents-acp [options]
| 选项 | 简写 | 描述 |
|---|---|---|
--name <name> | -n | 智能体名称(默认: "deepagents") |
--description <desc> | -d | 智能体描述 |
--model <model> | -m | LLM 模型(默认: "claude-sonnet-4-5-20250929") |
--workspace <path> | -w | 工作区根目录(默认:当前工作目录) |
--skills <paths> | -s | 以逗号分隔的技能路径 |
--memory <paths> | 以逗号分隔的 AGENTS.md 路径 | |
--debug | 启用将调试日志写入 stderr | |
--help | -h | 显示帮助信息 |
--version | -v | 显示版本 |
环境变量
| 变量 | 描述 |
|---|---|
ANTHROPIC_API_KEY | Anthropic/Claude 模型的 API 密钥(必需) |
OPENAI_API_KEY | OpenAI 模型的 API 密钥 |
DEBUG | 设置为 "true" 以启用调试日志 |
WORKSPACE_ROOT | --workspace 标志的替代方案 |
程序化 API
startServer
一次性创建并启动服务器的便捷函数:
import { startServer } from "deepagents-acp";
await startServer({
agents: {
name: "coding-assistant",
description: "AI coding assistant with filesystem access",
},
workspaceRoot: process.cwd(),
});
DeepAgentsServer
对于完全控制,直接使用 DeepAgentsServer 类:
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: [
{
name: "code-agent",
description: "Full-featured coding assistant",
model: "google:gemini-3.6-flash",
skills: ["./skills/"],
memory: ["./.deepagents/AGENTS.md"],
},
{
name: "reviewer",
description: "Code review specialist",
systemPrompt: "You are a code review expert...",
},
],
serverName: "my-deepagents-acp",
serverVersion: "1.0.0",
workspaceRoot: process.cwd(),
debug: true,
});
await server.start();
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: [
{
name: "code-agent",
description: "Full-featured coding assistant",
model: "openai:gpt-5.5",
skills: ["./skills/"],
memory: ["./.deepagents/AGENTS.md"],
},
{
name: "reviewer",
description: "Code review specialist",
systemPrompt: "You are a code review expert...",
},
],
serverName: "my-deepagents-acp",
serverVersion: "1.0.0",
workspaceRoot: process.cwd(),
debug: true,
});
await server.start();
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: [
{
name: "code-agent",
description: "Full-featured coding assistant",
model: "anthropic:claude-sonnet-5",
skills: ["./skills/"],
memory: ["./.deepagents/AGENTS.md"],
},
{
name: "reviewer",
description: "Code review specialist",
systemPrompt: "You are a code review expert...",
},
],
serverName: "my-deepagents-acp",
serverVersion: "1.0.0",
workspaceRoot: process.cwd(),
debug: true,
});
await server.start();
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: [
{
name: "code-agent",
description: "Full-featured coding assistant",
model: "openrouter:z-ai/glm-5.2",
skills: ["./skills/"],
memory: ["./.deepagents/AGENTS.md"],
},
{
name: "reviewer",
description: "Code review specialist",
systemPrompt: "You are a code review expert...",
},
],
serverName: "my-deepagents-acp",
serverVersion: "1.0.0",
workspaceRoot: process.cwd(),
debug: true,
});
await server.start();
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: [
{
name: "code-agent",
description: "Full-featured coding assistant",
model: "fireworks:accounts/fireworks/models/glm-5p2",
skills: ["./skills/"],
memory: ["./.deepagents/AGENTS.md"],
},
{
name: "reviewer",
description: "Code review specialist",
systemPrompt: "You are a code review expert...",
},
],
serverName: "my-deepagents-acp",
serverVersion: "1.0.0",
workspaceRoot: process.cwd(),
debug: true,
});
await server.start();
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: [
{
name: "code-agent",
description: "Full-featured coding assistant",
model: "baseten:zai-org/GLM-5.2",
skills: ["./skills/"],
memory: ["./.deepagents/AGENTS.md"],
},
{
name: "reviewer",
description: "Code review specialist",
systemPrompt: "You are a code review expert...",
},
],
serverName: "my-deepagents-acp",
serverVersion: "1.0.0",
workspaceRoot: process.cwd(),
debug: true,
});
await server.start();
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: [
{
name: "code-agent",
description: "Full-featured coding assistant",
model: "ollama:north-mini-code-1.0",
skills: ["./skills/"],
memory: ["./.deepagents/AGENTS.md"],
},
{
name: "reviewer",
description: "Code review specialist",
systemPrompt: "You are a code review expert...",
},
],
serverName: "my-deepagents-acp",
serverVersion: "1.0.0",
workspaceRoot: process.cwd(),
debug: true,
});
await server.start();
服务器选项
| 选项 | 类型 | 默认 | 描述 |
|---|---|---|---|
agents | DeepAgentConfig | DeepAgentConfig[] | required | 智能体配置(s) |
serverName | string | "deepagents-acp" | ACP 的服务器名称 |
serverVersion | string | "0.0.1" | 服务器版本 |
workspaceRoot | string | process.cwd() | 工作区根目录 |
debug | boolean | false | 启用调试日志 |
智能体配置
| 选项 | 类型 | 描述 |
|---|---|---|
name | string | 唯一智能体名称(必填) |
description | string | 智能体描述 |
model | string | LLM 模型(默认:"claude-sonnet-4-5-20250929") |
tools | StructuredTool[] | 自定义 LangChain 工具 |
systemPrompt | string | 自定义系统提示词 |
middleware | AgentMiddleware[] | 添加到 Deep Agents 堆栈 的自定义中间件 |
backend | AnyBackendProtocol | 文件系统后端 |
skills | string[] | 技能源路径 |
memory | string[] | 记忆源路径 (AGENTS.md) |
interruptOn | Record<string, boolean | InterruptOnConfig> | 需要用户批准的工具 (HITL) |
commands | Array<{ name, description, input? }> | 自定义斜杠命令 |
自定义
多个智能体
您可以从单个服务器暴露多个智能体。ACP 客户端在创建会话时选择要使用的智能体:import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: [
{ name: "code-agent", description: "General coding" },
{ name: "reviewer", description: "Code reviews" },
],
});
某些 ACP 客户端(如 Zed)目前尚未提供在智能体之间进行选择的 UI。在这种情况下,请考虑运行具有单个智能体的单独服务器实例。
斜杠命令
服务器向 IDE 注册内置斜杠命令:/plan、/agent、/ask、/clear 和 /status。您还可以为每个智能体定义自定义命令:
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: {
name: "my-agent",
commands: [
{ name: "test", description: "Run the project's test suite" },
{ name: "lint", description: "Run linter and fix issues" },
{
name: "deploy",
description: "Deploy to staging",
input: { hint: "environment (staging or production)" },
},
],
},
});
人机交互
使用interruptOn 在 IDE 中运行敏感工具之前要求用户批准:
import { DeepAgentsServer } from "deepagents-acp";
const server = new DeepAgentsServer({
agents: {
name: "careful-agent",
interruptOn: {
execute: { allowedDecisions: ["approve", "edit", "reject"] },
write_file: true,
},
},
});
自定义工具
import { DeepAgentsServer } from "deepagents-acp";
import { tool } from "@langchain/core/tools";
import { z } from "zod";
const searchTool = tool(
async ({ query }) => {
return `Results for: ${query}`;
},
{
name: "search",
description: "Search the codebase",
schema: z.object({ query: z.string() }),
},
);
const server = new DeepAgentsServer({
agents: {
name: "search-agent",
tools: [searchTool],
},
});
await server.start();
自定义后端
import { DeepAgentsServer } from "deepagents-acp";
import { CompositeBackend, FilesystemBackend, StateBackend } from "deepagents";
const server = new DeepAgentsServer({
agents: {
name: "custom-agent",
backend: new CompositeBackend(new StateBackend(), {
"/workspace/": new FilesystemBackend({ rootDir: "./workspace" }),
}),
},
});
技能和记忆
import { startServer } from "deepagents-acp";
await startServer({
agents: {
name: "project-agent",
description: "Agent with project-specific knowledge",
skills: ["./skills/", "~/.deepagents/skills/"],
memory: ["./.deepagents/AGENTS.md"],
},
workspaceRoot: process.cwd(),
});
请参阅上游 ACP 文档了解协议细节和编辑器支持:
官方原文:src/oss/deepagents/acp.mdx · 非官方翻译,译文由 AI 生成,以英文原文为准。