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
羽毛球分组比赛记分
小程序二维码

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

小夜