dsh-llm-error-retry:大模型請求錯誤休眠重試

前言

DSH(DeepSeek Harness)採用插件化架構,旨在將功能模塊化以適配不同的工作流場景。在開發與調試大模型應用時,經常遇到因網絡波動或限流導致的請求失敗(例如 429 狀態碼)。dsh-llm-error-retry 插件通過攔截錯誤事件,根據配置的規則進行休眠後重試,從而減少人工干預,提升自動化工作流的穩定性。

插件概覽

  • 名稱:dsh-llm-error-retry
  • 定位:DSH Profile Bundle 插件
  • 所有者:liaoyuqing
  • 類別:工作流
  • 許可:MIT

安裝與啓用

安裝該插件需要使用 DSH 的包管理命令。請確保你的 web profile 已啓動。

dsh plugin --profile web add github:liaoyuqing/dsh-llm-error-retry

安裝完成後,需要重啓該 profile 以完成 bundle 層的裝配。刷新 GUI 頁面後,在左下角找到 設置 → LLM 錯誤重試,即可看到配置分區。你也可以通過備用配置頁 <http://127.0.0.1:3080/llm-error-retry> 進行操作。

核心功能

該插件提供以下核心能力:

  1. 多形態錯誤匹配:支持按 HTTP 狀態碼、機器碼(如 RATE_LIMIT)、返回字段=值(如 code=insufficient_quota)三種形態命中報錯。這覆蓋了包括把狀態碼壓平進 message 的適配器形態在內的常見場景。
  2. 獨立規則配置:每條規則可以獨立配置休眠時長(delayMs)與最大重試次數(maxRetries)。
  3. GUI 實時編輯:提供圖形界面用於實時編輯規則,保存即生效,且跨重啓持久。
  4. 會話展示:重試過程會在會話框內以原生重試卡片展示,顯示當前進度(如“第 N/M 次 · 休眠 Xs”)。休眠期間可被用戶中斷/停止,卡片會顯示爲已取消。

典型用法

配置規則時,JSON 格式中的字段含義如下:

{
  "rules": [
    {
      "code": "429",
      "delayMs": 60000,
      "maxRetries": 10
    }
  ]
}

在此配置下,當模型請求返回 429 錯誤時,系統將休眠 60 秒,並嘗試重新發起請求,最多重試 10 次。若耗盡重試次數,錯誤將如實上報。支持的命中示例還包括 500、RATE_LIMIT、code=insufficient_quota 等。

注意事項

在開發或部署時,需要注意以下幾點:

  • 零依賴與構建:本包無構建腳本、零運行時依賴。安裝本質是 pnpm 依賴 + dsh.bundle 聲明自動註冊。
  • 文件命名規則:宿主半(host.v7.mjs)代碼改動必須換文件名(如 host.v8.mjs),並同步更新 package.json 中的 exports 路徑與 cordis.patch.yml 中的 name,因爲 DSH 的 HMR 機制不重載同路徑 ESM 模塊。
  • HTTP 響應限制:宿主 HTTP 響應絕不自帶 Content-Length。若在 web profile 中使用 gzip 中間件,手動設置 Content-Length 會與壓縮後的實際長度衝突,導致瀏覽器丟棄響應體。
  • 數據存儲:用戶配置絕不能寫進包目錄(pnpm store 升級會替換包內容)。數據目錄固定在 ~/.dsh/llm-error-retry/,包括規則配置文件(rules.json)和運行快照(status.json)。

結尾

dsh-llm-error-retry 通過規則化的重試策略,解決了大模型請求中常見的臨時性故障問題。開發者可以在 GUI 中快速調整策略,或在配置文件中定義更復雜的重試邏輯。相關文檔與源碼可參考 GitHub 倉庫。

羽毛球分组比赛记分
小程序二维码

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

小夜