前言¶
DSH 的插件生態裏,很多能力已經通過 Web UI 和宿主進程跑起來了,但第三方腳本、命令行工具、瀏覽器端服務,或者其他客戶端,往往還需要一條穩定的 HTTP 通道。dsh-api-gateway 就是爲這個場景做的 DSH 插件:它把運行中的 DeepSeek Harness 暴露爲 HTTP API,讓外部客戶端創建會話、發送消息,並通過 SSE 接收流式回覆。
這個插件由 litestartup-com 維護,許可證爲 MIT。它提供的不是獨立推理服務,而是圍繞當前 DSH 會話和 agent 的 HTTP 接入層。
這是什麼¶
dsh-api-gateway 是一個 DeepSeek Harness 插件,用於給任意第三方客戶端提供簡單的 REST + SSE 接口。
它解決的主要問題是:
- 已有 DSH 會話和 agent 能力,但外部程序不能直接調用。
- 需要把 Web UI 中創建的會話暴露給腳本或服務。
- 需要流式讀取回復,而不是隻等待最終結果。
- 需要區分可見答案和模型思考內容。
- 需要把網關事件發佈到宿主事件總線,方便其他插件集成。
核心功能¶
下面列出的能力來自插件說明和已覈實事實。
- 將運行中的 DeepSeek Harness 暴露爲 HTTP API,讓第三方客戶端創建會話並流式接收回復。
- 提供 REST + SSE 接口,README 明確 10 個端點,並支持
assistant/chunktoken 級流式輸出。 - 支持 API-key 認證,以及 GUI 設置卡片中的狀態、軟開關和密鑰輪換。
- API 會話進入真實工作區,並在側邊欄分組顯示。
- 支持會話發現、只讀讀取任意會話歷史,以及接管 GUI 會話繼續驅動。
- 將可見答案
text與思考reasoning分開返回。 - 在 Cordis 事件總線上發佈以下事件:
gateway/session-createdgateway/session-releasedgateway/messagegateway/turn-end- 支持 Linux、macOS、Windows 客戶端,包括 PowerShell;服務端對 GBK 寬容。
安裝與啓用¶
package.json 要求 Node >=20。安裝前建議先檢查源碼與 MIT 許可證。插件運行在 DSH 宿主進程中,會接觸當前進程可訪問的會話和工作區上下文,因此安裝前最好確認你信任這個代碼來源。
從 GitHub 安裝¶
下面是官方安裝命令:
dsh plugin --profile web add github:litestartup-com/dsh-api-gateway
這個安裝方式無需額外的 build approval,因爲 lib/ 已提交。構建腳本僅在 packing/publishing 的 prepack 時運行。
從本地 tarball 安裝¶
如果你已經下載或打包了插件文件,也可以用本地文件安裝:
dsh plugin --profile web add ./dsh-api-gateway-0.1.0.tgz
卸載¶
如果確認不再需要,可以用下面的命令移除:
dsh plugin --profile web remove dsh-api-gateway
典型用法¶
先確認 DSH 已運行,並且插件已經加載。然後用示例腳本發起一條提問:
./examples/ask.py "introduce yourself"
在 Windows PowerShell 中可以使用:
.\examples\ask.ps1 "introduce yourself"
這兩個示例命令的目標相同:向本地網關發送一條提示,並接收回復。
如果想直接看底層 HTTP 調用,可以按下面的順序執行。先聲明網關基礎地址:
BASE=http://127.0.0.1:3080/api-gw/v1
POST /key 用於引導獲取 API key。按 README 說明,第一次調用後會關閉,之後應使用已生成的 key。
KEY=$(curl -s -X POST $BASE/key | jq -r .apiKey)
創建一個會話:
SID=$(curl -s -X POST $BASE/sessions -H "Authorization: Bearer $KEY" | jq -r .sessionId)
先掛接 SSE 流:
curl -sN $BASE/sessions/$SID/stream -H "Authorization: Bearer $KEY" &
再發送消息:
curl -s -X POST $BASE/sessions/$SID/messages -H "Authorization: Bearer $KEY" -H 'Content-Type: application/json' -d '{"content":"hello"}'
這裏的順序比較重要:先掛接流,再發送消息。流式輸出通過 SSE 返回,消息發送接口負責把內容提交給會話。
會話、併發與管理注意¶
使用網關時,有幾個和會話生命週期相關的配置與行爲需要留意。
maxSessions限制併發會話數,達到上限後創建失敗。DELETE /sessions/:id會釋放maxSessions槽位,並結束該會話的 SSE 流,但保留歷史。- 接管 co-driven GUI 會話時,不會 dispose GUI 的 agent,Web UI 保留該會話。
adminKey示例值爲change-me,用於啓用 admin 端點和卡片控制。- API key 通過
POST /key引導獲取,README 說明第一次調用後關閉。
對於按任務創建會話的客戶端來說,及時釋放會話槽位比單純刪除消息更關鍵。否則併發達到上限後,後續創建會話會受到影響。
適用場景¶
這個插件適合以下幾類使用方式:
- 用命令行腳本驅動 DSH agent。
- 讓 Python、Shell、PowerShell 或其他客戶端接入現有 DSH 會話。
- 在服務端保存會話上下文,並繼續向同一個會話追加消息。
- 只讀獲取某個會話的歷史,用於日誌、審計或二次處理。
- 把網關事件接入其他宿主插件。
- 需要在返回結果中區分
text和reasoning。
它更適合接入現有 DSH 運行環境,而不是單獨部署一個完整 agent 平臺。使用前仍應檢查源碼、許可證和網關暴露面,尤其是 API key、admin key、併發上限和 CORS 等配置項。
相關鏈接¶
- 目錄頁:https://www.skillhub.cn/plugins/litestartup-com/dsh-api-gateway
- GitHub:https://github.com/litestartup-com/dsh-api-gateway