前言¶
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> 進行操作。
核心功能¶
該插件提供以下核心能力:
- 多形態錯誤匹配:支持按 HTTP 狀態碼、機器碼(如
RATE_LIMIT)、返回字段=值(如code=insufficient_quota)三種形態命中報錯。這覆蓋了包括把狀態碼壓平進 message 的適配器形態在內的常見場景。 - 獨立規則配置:每條規則可以獨立配置休眠時長(
delayMs)與最大重試次數(maxRetries)。 - GUI 實時編輯:提供圖形界面用於實時編輯規則,保存即生效,且跨重啓持久。
- 會話展示:重試過程會在會話框內以原生重試卡片展示,顯示當前進度(如“第 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 倉庫。