dsh-concurrency-guard 併發請求監控與門閂

前言

DSH(DeepSeek Harness)採用插件化架構,通過擴展插件可以增強工作流的能力。在構建智能體或複雜工作流時,模型請求的併發管理是一個常見痛點。過高的併發可能導致供應商返回 429 錯誤或觸發風控封禁,而缺乏監控則難以定位瓶頸。下面介紹 dsh-concurrency-guard 插件,它通過掛鉤 DSH 的模型請求總線,提供併發控制與監控能力。

插件介紹

dsh-concurrency-guard 是一個 DSH 併發請求監控與門閂插件。

它解決的核心問題是防止併發超限。插件會統計全部在途模型請求(包括主會話、進程內子代理、workflow 派生代理、會話標題、壓縮請求等),並在併發到達上限後對後續請求進行 FIFO 排隊,從而從根上避免因併發超限導致的供應商鎖號或封禁。

核心功能

該插件主要具備以下能力:

  1. 請求總線掛鉤:掛鉤 DSH 唯一的模型請求總線 llm/stream 瀑布,確保所有模型調用入口都被監控,不存在旁路。
  2. 全量統計:統計全部在途模型請求,並支持按來源分類(如主會話、子代理、插件、壓縮、標題)。
  3. FIFO 門閂:採用先進先出(FIFO)策略防止併發超限。併發滿員後新請求排隊,併發位永不超限。
  4. 會話級併發控制:支持會話級併發控制,允許對特定會話設置併發上限。
  5. 多接口支持:提供 WebUI 實時面板、HTTP JSON 端點、落盤狀態文件與工具。
  6. 歷史與中斷處理:支持歷史自動清理、持久化統計、回合中斷檢測以及 fail-safe 機制。

安裝與啓用

DSH 的插件安裝在 profile 裏,每個 profile 是一個獨立的 npm 項目目錄。插件管理基於 pnpm,不要直接使用 npm 安裝。

  1. 執行安裝命令:
    dsh plugin --profile web add dsh-concurrency-guard
(注:此命令會自動寫入 dependencies 並將插件加入 `dsh.profile.bundles`)
  1. 首次安裝後,需重啓 DSH 宿主進程以使插件生效。

  2. 重啓後,可通過以下方式驗證:

    • 在會話視圖頂部切換到「併發監控」頁籤。
    • 訪問 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 進程權限運行,安裝前應檢查源碼與許可證。
羽毛球分组比赛记分
小程序二维码

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

小夜