前言¶
DeepSeek Harness (DSH) 的默認重試插件(dsh-llm-retry)通常只重試白名單內的錯誤碼(如空響應、限流、服務器錯誤等)。遇到不在白名單內的錯誤(如鑑權失敗、配額不足、無效請求等),默認行爲是直接結束本輪運行。
dsh-better-retry 是一個 DSH Cordis 插件,旨在解決上述痛點。它不依賴白名單,而是嘗試重試任何模型請求的失敗。通過指數退避策略和可配置的重試預算,它在 UI 上顯示重試狀態,並允許通過滑塊實時調整參數。
核心功能¶
- 全量重試:重試任何錯誤碼(鑑權、配額、無效請求等),不侷限於白名單。
- 指數退避:重試延遲從 500ms 開始,呈指數增長,最高延遲 10 秒。
- UI 滑塊配置:在 設置 → 常規 中提供滑塊,調整“失敗重試次數”(0-64)和“429 等待時長”(5-120s)。
- 狀態顯示:UI 會顯示“正在重試模型請求…”,確保會話重放安全。
- 智能排除:自動排除
ABORTED(用戶取消)和CONTEXT_WINDOW_EXCEEDED(由壓縮插件處理)錯誤。 - 共存性:與默認的
dsh-llm-retry插件共存,下游的決策優先級更高。
安裝¶
推薦使用全局靜態安裝方式,這樣配置變更會持久化,且插件能在 DSH 重啓後存活。
cd "$DSH_HOME/profiles/web"
pnpm add https://github.com/Yaing-Yan/dsh-better-retry/archive/refs/tags/v1.0.0.tar.gz
安裝後,需在 $DSH_HOME/profiles/web/package.json 的 dsh.profile.bundles 數組中添加 "dsh-better-retry",然後重啓 DSH。
也可以使用動態方式(cordis_define)在單個會話中注入代碼,但動態模式下重試次數固定爲 8,且不持久化。
配置與使用¶
安裝後,插件會自動註冊到 設置 → 常規 頁面。
- 調整重試次數:拖動“失敗重試次數”滑塊。默認爲 8,範圍 0-64。設置爲 0 可完全禁用此插件。
- 調整 429 等待:拖動“429 等待”滑塊。默認爲 15 秒,範圍 5-120 秒。這決定了遇到限流錯誤時的等待時長。
- 查看狀態:當請求失敗時,UI 會顯示“正在重試模型請求…”。
- 持久化:所有設置變更會立即保存到
~/.dsh/settings.yaml,並在下次啓動時生效。
插件會優先使用 Provider 返回的 Retry-After 頭作爲等待時間,但該時間會被限制在用戶設定的 429 等待範圍內。
注意事項¶
- 鑑權與配額:重試
AUTH或QUOTA錯誤僅對瞬態故障有效。如果 API Key 永久失效或餘額爲空,重試多次後仍會報錯。 - 上下文窗口:上下文窗口溢出(
CONTEXT_WINDOW_EXCEEDED)由dsh-compaction-basic插件處理,本插件不會嘗試重複重試該錯誤。 - 會話安全:插件發出的
llm/retry事件符合 DSH 標準規範,確保會話可重放。
總結¶
dsh-better-retry 通過移除重試白名單限制,讓 DSH 在遇到非標準錯誤時也能嘗試恢復。對於需要處理複雜 API 響應或偶爾不穩定模型的場景,該插件能提高請求成功率。