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
羽毛球分组比赛记分
小程序二维码

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

小夜