dsh-llm-net-retry: DeepSeek Harness 網絡故障有界重試插件

前言

DeepSeek Harness (dsh) 是一個智能體開發框架。一些 OpenAI 兼容網關(如 OpenCode Zen)把自身上游連接的瞬時失敗回傳給客戶端(流的終止 finish_reason、錯誤負載回顯等),而不是走 HTTP/傳輸層錯誤。在 dsh 0.1.5-rc.2(及 0.1.7 Messages 線)中,這些措辭仍被原生策略誤分類爲不可重試(如 PI_AI_ERROR),導致整個 turn 直接硬失敗。dsh-llm-net-retry 插件爲這些瞬時網絡故障提供有界重試機制,修復原生策略的盲區。

核心功能

  • 有界重試:針對瞬時網關網絡故障進行重試。
  • 捕獲盲區錯誤:捕獲原生策略歸爲不可重試的錯誤,如 network_error、unexpected EOF、stream_read_error 等。
  • 環境要求:適用於 dsh >= 0.1.7-rc.1。
  • 零侵入:不佔用 settings 命名空間,不修改 dsh 核心邏輯。
  • 可觀測性:記錄重試事件到 llm/retry,與原生策略事件格式兼容。

安裝

本插件是獨立的 dsh 插件,裝入任意 dsh profile 即可生效(tui / web / 自定義 launcher 均可)。

dsh plugin --profile <profile> add @aiwayds/dsh-llm-net-retry

卸載

卸載時會自動清理 profile bundles 中的對應條目。本插件無落盤狀態,卸載後不留任何殘留。

dsh plugin --profile <profile> remove @aiwayds/dsh-llm-net-retry

配置

本插件不佔用 settings 命名空間,配置通過組合樹 entry config 在 cordis.patch.yml 中設置。全部參數可選,默認值對齊 llm-retry 原生策略。

- insert:
    - id: dsh-llm-net-retry
      name: '@aiwayds/dsh-llm-net-retry'
      config:
        mode: on            # 'off' 完全摘除 listener
        maxRetries: 5
        backoff:
          initialDelayMs: 500
          maxDelayMs: 10000
          jitterRatio: 0.1

工作原理

插件掛在 agent/request-error waterfall 的末端。

  1. 優先級判定:先調用 next() 執行原生策略(dsh-llm-retry)。任何一方決定重試,決策原樣透傳。
  2. 盲區捕獲:只有當所有 listener 都棄權,且失敗落在官方分類盲區時,才調度本插件的有界重試。
    • 消息匹配:覆蓋 network_error、unexpected EOF、stream_read_error、流提前收尾措辭等。
    • Code 守衛:若原生策略已認領該錯誤碼(如 TRANSPORT、SERVER 等),本插件讓位,不疊加雙重重試。
  3. 持久化:重試事件記錄到 llm/retry,計數使用插件自身的 policy key,不污染原生 llm-retry 的計數。

兼容性

  • 要求:dsh >= 0.1.7-rc.1。插件只跟隨 dsh RC/stable 線,不再支持 alpha 線。
  • 零侵入:無 monkey-patch,不替換服務,dispose 即乾淨移除。

許可證

MIT

生態信息

  • GitHub: https://github.com/fan56/dsh-llm-net-retry
  • 目錄: https://www.skillhub.cn/plugins/fan56/dsh-llm-net-retry
羽毛球分组比赛记分
小程序二维码

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

小夜