dsh-acp-server:把 DSH 接入 ACP 客户端

前言

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:声明完整能力,包括 loadSessionpromptCapabilities.imagesessionCapabilities.list/resume/close
  • session/new:创建一个 durable dsh agent,并通告 modes 和 slash commands。
  • session/prompt:支持流式 agent_message_chunk / agent_thought_chunkplan 更新、完整 tool-call 生命周期、image blocks,以及 /command routing。
  • session/listsession/resumesession/load:处理 persisted 和 live sessions。
  • session/set_mode:在 defaultplan 模式之间切换,并推送 current_mode_update
  • available_commands_update:按 session 通告 dsh command 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 客户端驱动 dsh agent。
  • 你希望编辑器里能接收流式输出、计划更新、工具调用和审批请求。
  • 你希望把 dsh web 的 GUI 和 ACP 放在同一个进程、同一个端口。
  • 你需要一个远程 HTTP+SSE ACP endpoint。

使用前需要注意:

  • 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
  • 需要 Node.js >= 22dsh CLI。
  • 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜