dsh-reconnect:DeepSeek Harness 的模型請求安全重試插件

前言

DSH 中的一次模型請求可能經過 relay、reverse proxy、API gateway 或 forwarding service。臨時斷連、5xx、限流、超時,都可能導致 agent 輪次或長任務中斷。

dsh-reconnect 是 DeepSeek Harness(DSH)的 Host 端插件。它在 Provider normal / always 策略之後接管可恢復失敗,並按插件策略重發同一請求。

這是什麼

dsh-reconnect 的定位是:

Safe model-request retry for DeepSeek Harness with exponential backoff, relay/proxy failure recovery, and a unified settings panel.

已覈實信息:

  • 維護者:MistRain-1
  • 版本:2.0.0
  • 許可證:MIT
  • 運行位置:DSH Host 插件
  • 依賴:DSH Host、agent/request-error 瀑布事件、Host settings service

它主要解決“同一模型請求因爲臨時失敗而失敗”的問題,避免臨時網絡或服務異常直接終止當前 agent 步驟。

核心功能

監聽與接管

dsh-reconnect 監聽 DSH 的 agent/request-error 瀑布事件。

在內置 normal Provider 重試策略放棄後,或在 Provider always 策略將恢復交給下游時,該插件按自身策略再次發送同一請求。

重試範圍

場景 行爲
EMPTY_RESPONSE、RATE_LIMIT、SERVER、STREAM_CLOSED、TIMEOUT、TRANSPORT 等臨時失敗 按插件策略重試
模型缺失或未配置 繼續重試,等待模型或賬戶配置恢復
QUOTA 默認不重試;開啓 retryQuota: true 後重試
未知錯誤 默認無限重試;關閉 retryUnknown 後使用 unknownMaxRetries 限制
工具執行錯誤、參數錯誤、未知工具、認證、憑證、上下文溢出、中止等 永不重試,並立即結束步驟

指數退避

插件使用指數退避:

1s -> 2s -> 4s -> ...

默認本地退避上限爲 60s。

maxDelayMs 只限制本地指數退避延遲,不限制 Provider Retry-After,也不限制總重試時長。

如果 maxDelayMs 無效或缺失,會回落到默認值 60000。

Provider Retry-After

當存在正數 providerRetryAfterMs 或 Provider Retry-After 時,插件會尊重該最小等待。

它是 Provider 側給出的最小等待,不受本地 maxDelayMs 指數退避上限限制。

事件與清理

插件會發出標準 llm/retry 事件,用於 Harness 對話 UI 顯示重試計數和倒計時。

以下情況會停止重試並清理活動等待:

  • 當前輪中止
  • 插件停止
  • 插件熱重載

安裝與啓用

獲取插件包

一種已覈實的獲取方式是 Git clone:

git clone https://github.com/MistRain-1/dsh-reconnect.git "$HOME/dsh-reconnect"

也可以通過 GitHub Web Download 或終端下載 ZIP 獲取插件包。

註冊插件

將插件包註冊到 DSH Cordis composition 中:

- insert:
    - id: reconnect
      name: dsh-reconnect

安裝持久插件包後需要重啓 DSH。

插件配置變更可以立即生效,不需要重啓。

典型用法

使用設置卡片

打開:

Settings → Plugin configuration

找到 ReConnect 插件卡片,可配置:

  • Max wait per attempt:可選擇 1/2/5/10/30/60/120 秒,或自定義值
  • Retry on quota:默認關閉
  • Retry unknown errors indefinitely:默認開啓
  • Max retries for unknown errors:默認 3

模型缺失或未配置的錯誤不受未知錯誤重試次數上限限制。

使用 YAML 配置

可以在 Cordis row config 中配置:

- insert:
    - id: reconnect
      name: dsh-reconnect
      config:
        maxDelayMs: 15000
        retryQuota: false
        retryUnknown: true

示例中:

  • maxDelayMs: 15000 表示本地指數退避上限爲 15000ms
  • retryQuota: false 表示 QUOTA 默認不重試
  • retryUnknown: true 表示未知錯誤默認無限重試

maxDelayMs: 15000 對應的本地退避序列大致爲:

1s -> 2s -> 4s -> 8s -> 15s -> 15s...

Provider 側的正數 Retry-After 仍然優先。

適用場景與注意

適合:

  • relay 節點不穩定
  • reverse proxy、API gateway、forwarding service 偶發失敗
  • 連接被重置、斷開或返回不完整響應
  • 臨時 provider 故障、服務端 5xx、限流、超時
  • 希望長任務在短時 provider 或網絡故障後繼續運行

需要注意:

  • QUOTA 默認不重試。餘額不足或配額耗盡時,默認不會無限等待。
  • 未知錯誤默認無限重試。關閉 retryUnknown 後,unknownMaxRetries 默認爲 3,只用於同一模型步驟的連續未知失敗。
  • maxDelayMs 不限制 Provider Retry-After,也不限制總重試時長。
  • 工具執行錯誤、參數錯誤、未知工具、認證、憑證、上下文溢出、中止等錯誤不會重試,並立即結束步驟。
  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與許可證。
  • 客戶端只統一提供設置卡片,不讀取憑證。

資源

  • GitHub:https://github.com/MistRain-1/dsh-reconnect
羽毛球分组比赛记分
小程序二维码

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

小夜