前言¶
DeepSeek Harness(dsh)通常以插件和进程的形式承载智能体能力。对已经在用 dsh 的开发者来说,常见需求不是另起一个 agent,而是把已有的 dsh agent 接到外部客户端里,例如 Zed,或其他支持 Agent Client Protocol(ACP)的客户端。
dsh-acp-server 解决的就是这个问题:它让 dsh 以 ACP server 的方式运行,外部客户端可以创建会话、发送 prompt、接收流式输出、查看计划更新、工具调用和审批请求。下面介绍它的能力、安装方式和几种典型用法。
这是什么¶
dsh-acp-server 是一个 DSH 插件,由 dushaobindoudou 维护,许可证为 MIT。
它把 DSH agent 暴露为 ACP server,可以从 Zed 和任意 ACP 客户端驱动 dsh agent。它既可以作为独立进程运行,也可以和 dsh web 在同一个进程、同一个端口上同时提供 GUI 与 ACP 接口。
核心能力¶
下面列出的能力来自插件描述和已核实的 ACP 方法支持情况。
会话与消息¶
常用 ACP 方法包括:
initialize
session/new
session/prompt
session/list
session/resume
session/load
session/set_mode
available_commands_update
session/request_permission
session/cancel
session/close
对应能力如下:
initialize:声明完整能力,包括loadSession、promptCapabilities.image、sessionCapabilities.list/resume/close。session/new:创建一个 durabledshagent,并通告 modes 和 slash commands。session/prompt:支持流式agent_message_chunk/agent_thought_chunk、plan更新、完整 tool-call 生命周期、image blocks,以及/commandrouting。session/list、session/resume、session/load:处理 persisted 和 live sessions。session/set_mode:在default和plan模式之间切换,并推送current_mode_update。available_commands_update:按 session 通告dshcommand registry,并在每一轮刷新。session/request_permission:把dsh的 approval decision 桥接到客户端。session/cancel:中止当前 turn,prompt 以cancelled结束。session/close:取消、flush 并 dispose agent。
运行形态¶
dsh-acp-server 支持两种常见形态:
dsh-acp-server
dsh web
dsh-acp-server:可以作为 standalone ACP server 运行在 stdio 上,也可以通过serve提供 remote HTTP+SSE。dsh web:可以在一个进程、一个端口上同时提供 GUI 和 ACP。
此外,dsh/* vendor methods 会暴露只读的 sessions、jobs、goals、skills 和 agent tree 数据。
安装与启用¶
运行环境需要 Node.js >= 22,并安装 dsh CLI。
先安装 dsh:
npm i -g @deepseek-ai/dsh
然后把插件安装到 acp profile:
dsh plugin --profile acp add dsh-acp-server
如果从源码安装,可能会触发 prepare 脚本构建 lib/。在使用 pnpm >= 10 的环境中,需要先允许构建,再重新执行 add。配置项如下:
allowBuilds:
dsh-acp-server: true
为了避免构建授权,可以优先使用 prebuilt npm package 或 tarball 安装。
在 Zed 中使用¶
dsh-acp-server 可以作为 stdio ACP server 启动:
dsh-acp-server
在 Zed 的 Settings 中配置 agent_servers,示例如下:
{
"agent_servers": {
"dsh": {
"type": "custom",
"command": "dsh-acp-server",
"args": []
}
}
}
配置后,Zed 可以通过 ACP 驱动这个 dsh agent。
用 dsh web 同时提供 GUI 与 ACP¶
如果希望 GUI 和 ACP 在同一个进程里启动,可以使用 dsh web。
先执行 setup 脚本:
node bin/setup-webacp.mjs
然后启动:
dsh web
dsh web 会在 http://127.0.0.1:3080 提供 GUI,并在 /acp 提供 ACP 接口。
可以用下面的示例脚本访问这个 ACP 端点:
node bin/acp-chat.mjs --url http://127.0.0.1:3080
用 serve 提供远程 ACP¶
如果希望从远程机器、共享 agent 场景或通过 HTTP 客户端访问,可以使用 serve 启动 long-lived HTTP+SSE endpoint。
本地启动:
dsh --profile acp serve --port 7800
serve 默认绑定到 127.0.0.1。如果需要远程访问,需要显式配置 host 和 token:
dsh --profile acp serve --host 0.0.0.0 --port 7800 --token s3cret
HTTP 路由包括:
POST /acp
GET /acp/stream
DELETE /acp
GET /acp/healthz
dsh/* 只读扩展¶
ACP 标准主要描述一次会话的协议能力。围绕会话的主机侧数据,例如 sessions、jobs、goals、skills 和 agent tree,可以通过 dsh/* vendor methods 暴露。
这些方法是只读的,适合用于查看当前 DSH 宿主侧的会话、任务、目标、技能和 agent 树数据。
适用场景与注意¶
这个插件适合以下情况:
- 你已经在用
dsh,希望从 Zed 或其他 ACP 客户端驱动dshagent。 - 你希望编辑器里能接收流式输出、计划更新、工具调用和审批请求。
- 你希望把
dsh web的 GUI 和 ACP 放在同一个进程、同一个端口。 - 你需要一个远程 HTTP+SSE ACP endpoint。
使用前需要注意:
- 插件以当前
dsh进程权限运行,安装前应检查源码与许可证。 - 需要 Node.js
>= 22和dshCLI。 serve默认绑定本地地址,远程访问必须显式配置 host 和 token。session/fork和 elicitation 目前属于 roadmap,并且在 ACP SDK 中仍为 UNSTABLE。dsh/*vendor methods 是只读接口。
链接¶
目录页:
https://www.skillhub.cn/plugins/dushaobindoudou/dsh-acp
GitHub:
https://github.com/dushaobindoudou/dsh-acp