前言¶
DSH(DeepSeek Harness)採用插件化架構,通過擴展插件可以增強工作流的能力。在構建智能體或複雜工作流時,模型請求的併發管理是一個常見痛點。過高的併發可能導致供應商返回 429 錯誤或觸發風控封禁,而缺乏監控則難以定位瓶頸。下面介紹 dsh-concurrency-guard 插件,它通過掛鉤 DSH 的模型請求總線,提供併發控制與監控能力。
插件介紹¶
dsh-concurrency-guard 是一個 DSH 併發請求監控與門閂插件。
它解決的核心問題是防止併發超限。插件會統計全部在途模型請求(包括主會話、進程內子代理、workflow 派生代理、會話標題、壓縮請求等),並在併發到達上限後對後續請求進行 FIFO 排隊,從而從根上避免因併發超限導致的供應商鎖號或封禁。
核心功能¶
該插件主要具備以下能力:
- 請求總線掛鉤:掛鉤 DSH 唯一的模型請求總線
llm/stream瀑布,確保所有模型調用入口都被監控,不存在旁路。 - 全量統計:統計全部在途模型請求,並支持按來源分類(如主會話、子代理、插件、壓縮、標題)。
- FIFO 門閂:採用先進先出(FIFO)策略防止併發超限。併發滿員後新請求排隊,併發位永不超限。
- 會話級併發控制:支持會話級併發控制,允許對特定會話設置併發上限。
- 多接口支持:提供 WebUI 實時面板、HTTP JSON 端點、落盤狀態文件與工具。
- 歷史與中斷處理:支持歷史自動清理、持久化統計、回合中斷檢測以及 fail-safe 機制。
安裝與啓用¶
DSH 的插件安裝在 profile 裏,每個 profile 是一個獨立的 npm 項目目錄。插件管理基於 pnpm,不要直接使用 npm 安裝。
- 執行安裝命令:
dsh plugin --profile web add dsh-concurrency-guard
(注:此命令會自動寫入 dependencies 並將插件加入 `dsh.profile.bundles`)
-
首次安裝後,需重啓 DSH 宿主進程以使插件生效。
-
重啓後,可通過以下方式驗證:
- 在會話視圖頂部切換到「併發監控」頁籤。
- 訪問
GET http://127.0.0.1:3080/api/concurrency-guard/status返回 200。 - 查看宿主日誌是否出現
[concurrency-guard] 已啓動。
典型用法¶
插件提供多種方式進行監控與配置:
WebUI 監控¶
在 DSH 會話視圖的頂部,將視圖切換到「併發監控」頁籤,即可查看實時的併發水位與在途請求列表。
HTTP 接口¶
通過 HTTP JSON 端點進行操作:
- 查看狀態:
GET http://127.0.0.1:3080/api/concurrency-guard/status
- 熱改配置:
POST http://127.0.0.1:3080/api/concurrency-guard/config
Body: {"mode": "monitor", "maxConcurrency": 8}
代碼調用¶
在 DSH 工作流代碼中,可以通過上下文對象調用:
ctx.concurrencyGuard.configure({...})
工具調用¶
插件提供了命令行工具,可以在模型對話中直接調用:
* concurrency_status:查看當前併發狀態(支持 {"full": true} 參數查看歷史)。
* concurrency_session_list:列出在線會話與限額。
* concurrency_session_set:實時調整某會話上限(如 {"action": "set", "sessionId": "...", "cap": 2})。
適用場景與注意¶
- 適用場景:適用於需要嚴格控制供應商 API 併發配額的場景,或需要監控大量子代理與工作流派生請求的複雜架構。
- 注意:插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。