dsh-429-guard:DeepSeek Harness 429 錯誤自動重試守衛

前言

DeepSeek Harness (DSH) 在處理模型請求時,默認的 llm-retry 插件在 normal 模式下達到 maxRetries 後會拋出 LlmError,導致當前任務中斷。針對這種情況,dsh-429-guard 插件接管了官方插件放棄後的 429 類錯誤(包含 DeepSeek 返回的 insufficient_quota),提供無限次自動重試能力,避免任務因臨時限流或配額問題而中斷。

核心功能

該插件通過 Web UI 右上角的浮窗與 DSH 主機端插件協同工作,主要提供以下能力:

  • Web UI 交互:右上角顯示玻璃擬態風格的盾牌膠囊,展開卡片可查看開關狀態、重試計數和統計信息。卡片包含“自動無限重試”開關和“清零”按鈕。
  • 錯誤攔截:覆蓋 code ∈ {RATE_LIMIT, QUOTA}、status === 429 或包含 429/rate limit/quota/insufficient_quota 文案的所有錯誤。
  • 無限重試:開啓開關後,遇到 429 類錯誤進入重試循環,直至成功或用戶手動停止。
  • 共存機制:與官方 llm-retry 插件兼容,位於重試鏈(waterfall)的下游,僅在官方插件放棄後接管。
  • 可取消性:重試期間監聽 agent 的 abort signal,用戶手動停止任務時立即放棄當前重試。
  • 持久化統計:累計重試次數、最近攔截時間等數據存儲於 $(DSH_HOME)/storages/dsh-429-guard.json。

安裝與啓用

安裝插件後需重啓 DSH Web 應用以加載組件。

dsh plugin --profile web add github:suufon/dsh-429-guard

安裝完成後,右上角應出現盾牌浮窗。如需卸載:

dsh plugin --profile web remove dsh-429-guard

使用方法

  1. 查看與控制:點擊右上角盾牌膠囊,展開卡片。卡片顯示當前開關狀態。
  2. 開啓重試:打開「自動無限重試」開關。
  3. 觀察重試:當模型請求遇到 429 或配額不足錯誤時,系統自動開始重試,卡片上的重試計數增加,顯示“正在重試”呼吸燈效果。
  4. 狀態警示:若錯誤類型爲 QUOTA(配額耗盡),卡片顯示醒目警示,膠囊狀態點變黃。
  5. 結束或重置:不需要自動重試時關閉開關即可恢復默認放行;可點擊「清零」重置統計計數。

技術實現與機制

  • 架構設計:採用雙層架構。主機端(lib/index.js)監聽 agent/request-error 事件並執行重試邏輯;客戶端(lib/client.js)提供浮窗 UI 與 REST API 通信。
  • 重試鏈路:請求失敗觸發 agent/request-error 事件,官方 llm-retry 插件放棄後,本插件接管。若開啓開關且判定爲 429 類錯誤,返回 kind: 'retry',Agent 循環重新發起請求。
  • 退避策略:
    • 優先使用 provider 返回的 retry-after(封頂 240s)。
    • 否則使用指數退避(初始 2s,每次翻倍,封頂 60s,抖動 ±25%)。
  • 安全限制:REST API 路由僅允許 loopback 可信來源(同源、127.0.0.1/::1)訪問,防止 CSRF 攻擊。

總結

dsh-429-guard 是一個爲 DSH 環境設計的輕量級守衛插件,通過 UI 交互與後端重試邏輯結合,解決了官方插件在處理 429 錯誤時過早放棄的問題。它遵循 MIT 許可證,適合需要在長任務中處理突發限流場景的開發者使用。

項目地址:https://github.com/suufon/dsh-429-guard

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

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

小夜