DeepSeek Harness 的 OMP 風格 429 重試策略

前言

DeepSeek Harness(DSH)內置的 dsh-llm-retry 對臨時故障使用有界指數退避策略,默認從 500ms 到 10s 共重試 5 次。當預算耗盡時,TPM/RPM 窗口仍然活躍,可能導致更嚴重的限流。OpenModel Platform(OMP)對速率限制的處理方式不同:它會重試最多 10 次,等待至少 30 秒,並接受 provider 的 Retry-After 頭,最長可達 5 分鐘。

這個插件爲 DSH 增加了一套與 OMP 對齊的 429 重試行爲,無需修改 DSH 核心代碼。

是什麼

dsh-omp-retry 是一個 DSH 插件,爲 HTTP 429(Too Many Requests)響應提供 OMP 風格的重試策略。它由 Rinai-R 維護,定位爲工作流類插件。插件會在 dsh-llm-retry 之前插入一個 agent/request-error 監聽器,只接管 RATE_LIMIT 錯誤碼,其餘錯誤碼仍由內置執行器處理。

核心功能

  • 最多 10 次速率限制重試(可配置)。
  • 延遲爲 max(30 s, provider Retry-After),即至少等待 30 秒,或使用 provider 返回的 Retry-After 頭。
  • 若 provider 返回的 Retry-After 超過 5 分鐘,則終止重試鏈,不再等待。
  • 每次重試會持久化 llm/retry / llm/retry-started 事件,保證重試 UI 和會話歷史正常工作。
  • 取消操作、回合結束或插件銷燬會中斷當前等待。
  • SERVER、TIMEOUT、TRANSPORT、EMPTY_RESPONSE 仍由 dsh-llm-retry 處理。
  • CONTEXT_WINDOW_EXCEEDED、QUOTA、AUTH、INVALID_REQUEST 不會重試。

安裝與啓用

使用官方安裝命令:

dsh plugin --profile desktop add github:Rinai-R/dsh-omp-retry

將 desktop 替換爲你的實際 profile 名稱(如 web 或自定義 profile),然後重啓 DSH。插件會在啓動時自動插入 omp-rate-limit-retry 配置行。

配置

默認配置爲:

  • maxRetries: 10
  • floorMs: 30000
  • maxDelayMs: 300000

在 profile 的 cordis.patch.yml 中覆蓋:

- id: omp-rate-limit-retry
  config:
    maxRetries: 10
    floorMs: 30000
    maxDelayMs: 300000

設爲 maxRetries: 0 可禁用插件。插件的重試預算獨立於 provider 的 retryPolicy.maxRetries:即使 provider 仍爲默認 5 次,該插件仍會進行最多 10 次速率限制重試。

典型用法

在 cordis.patch.yml 中爲 provider 配置 OMP 風格的本地退避,並將 RATE_LIMIT 放入可重試列表:

retryPolicy:
  mode: normal
  maxRetries: 10
  retryableCodes:
    - EMPTY_RESPONSE
    - RATE_LIMIT
    - SERVER
    - TIMEOUT
    - TRANSPORT
  backoff:
    initialDelayMs: 500
    maxDelayMs: 8000
    jitterRatio: 0.25

這樣,當 dsh-omp-retry 攔截到 429 響應時,會按 OMP 策略重試;未攔截的錯誤仍由 provider 策略處理。

適用場景與注意

適合需要與 OMP 行爲對齊、希望更長時間窗口內處理速率限制的開發者。插件以當前 DSH 進程權限運行,安裝前建議檢查源碼與許可證(MIT)。

限制

  • 不適用於 Ghostty,也不是通用重試框架,僅覆蓋 HTTP 429 速率限制。
  • 未實現 OMP 的 model/credential 降級鏈。
  • 若 provider 的 Retry-After 超過 maxDelayMs,將不再等待。

總結

dsh-omp-retry 通過 OMP 風格的 429 重試策略,幫助 DSH 更好地處理速率限制場景。配合合適的 provider 重試配置,可以在保持會話歷史和 UI 正常工作的同時,延長重試窗口。更多細節見插件目錄頁或 GitHub 倉庫。

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

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

小夜