dsh-auto-retry:DSH 有界後備恢復插件

前言

在 DeepSeek Harness (DSH) 的生態中,官方提供的 @deepseek-ai/dsh-llm-retry 通常能覆蓋大部分請求錯誤的重試邏輯。但在實際部署中,中轉方有時會將瞬時的限流錯誤誤標爲 QUOTA(餘額耗盡),或者模型請求正常結束卻未返回可見文本,導致官方策略直接放棄重試。dsh-auto-retry 作爲一個有界後備恢復插件,填補了這一空白。它不替代官方策略,而是在官方提供方策略不再重試後接手處理。

這是什麼

這是一個針對 DSH 的有界後備恢復插件。它旨在解決三類特定問題:
1. 中轉方把可恢復的瞬時 429 標成 QUOTA。
2. 模型請求“正常結束”但沒有可見輸出。
3. 輸出被 max-tokens 截斷。

插件通過識別錯誤特徵和自動續行機制,在有明確證據時介入,並將重試次數、總等待時間和自動續行次數全部限制在配置預算內。

核心功能

  • 額外重試範圍:在官方策略放棄後,對 RATE_LIMIT、HTTP 429、EMPTY_RESPONSE 和 STREAM_CLOSED 進行額外重試。
  • 誤報識別:僅在中轉方錯誤詳情包含 rate_limit_exceeded、rate limit、allocated quota exceeded 等特徵時重試,避免對真正的餘額耗盡進行無效重試。
  • 自動續行:處理空響應和 max-tokens 截斷導致的輸出中斷,每個 turn 最多自動續行 2 次。
  • 預算控制:將重試次數和總等待時間限制在配置預算內,防止無限重試。
  • 事件複用:複用 DSH 的持久事件(llm/retry、llm/retry-started),確保會話重放和現有重試狀態 UI 能正確理解後續操作。

安裝與啓用

從 GitHub 安裝到 Web profile:

dsh plugin --profile web add "github:Windsland52/dsh-auto-retry#main"

安裝器會自動將包含 dsh.bundle.patch 的依賴加入 profile bundle。安裝完成後需要重啓 DSH。

典型用法

配置文件位於 profile 的 cordis.patch.yml 中。以下是一個基礎配置示例:

- id: dsh-auto-retry
  name: '@dsh-external/dsh-auto-retry'
  config:
    # 空數組表示所有 provider;也可以只寫 [scnet]
    providers: []
    # 額外重試的錯誤碼
    retryCodes:
      - RATE_LIMIT
      - EMPTY_RESPONSE
      - STREAM_CLOSED
    # 啓用預算控制
    retryQuota: true
    maxRetries: 8
    maxElapsedMs: 900000
    # 初始延遲與抖動配置
    initialDelayMs: 1500
    maxDelayMs: 60000
    jitterRatio: 0.2
    # 自動續行限制
    maxAutoContinuations: 2
    continueOnMaxTokens: true

適用場景與注意

  • 兼容性:已針對 DSH 0.1.0-rc.7 的 Web profile 驗證。
  • 行爲邊界:插件不切換模型或 provider,不修改請求內容。內部自動續行使用 plugin 來源的 user message,不會僞裝成人類輸入。
  • 插件互斥:不建議與 dsh-llm-bounded-retry 同時使用,因爲兩者都涉及全局重試預算,可能產生衝突。

結語

dsh-auto-retry 定位爲 Host 側、provider-aware 的後備恢復工具。它保留了官方重試的優先級,專門補齊了中轉方瞬時限流誤報、空可見輸出和輸出截斷這三個缺口,爲開發者提供了一個可控的重試兜底方案。更多細節可參考其 GitHub 倉庫。

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

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

小夜