dsh-failover-continue:DSH 统一自动续跑与模型故障转移

前言

在 DeepSeek Harness(DSH)里跑长对话或接多路模型网关时,单轮失败、限流、鉴权或上下文超长并不少见。常见做法是把「自动续跑(auto-continue)」和「模型故障转移(model-failover)」拆成两个插件,各自维护一条 resilience 链路,配置和状态容易分散,切换逻辑也可能互相打架。

下面介绍社区插件 dsh-failover-continue(维护者 elanski),它把自动续跑与有序 fallback 收进同一个插件,用一套 failover-continue: 命名空间配置整条链路。插件归类为「模型推理」,在 SkillHub 目录页 与 GitHub 仓库 可查阅说明;目录站为社区生态站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-failover-continue 是面向 DSH 的 auto-continue + model failover 合一插件(README 描述:Unified auto-continue + model failover plugin for DeepSeek Harness)。当前 package 版本为 0.1.0,许可证 MIT。

它要解决的问题是:一次请求失败或会话里某轮 turn 中断时,不必手动换模型或反复点继续,而是由插件按配置的 fallback 链切换路由、在合适时机自动续跑,并在整条链都不可用时才止损。

核心功能

以下能力均来自仓库 README,按职责分述。

有序 fallback 与熔断

  • 支持 有序 fallback 链(provider/model),并带 模型级 + 提供商级 两级熔断:首次失败即打开该路由(阈值 1),下一次请求会离开已失效路由。
  • 若提供商返回 Retry-After(例如网关提示「retry in 3594s」),插件会尊重该间隔,而不是固定 60 秒后重试。

鉴权、计费与上下文

  • 401/403 或计费相关 402 会 切换路由 而非直接结束会话;仅在整条 fallback 链都打开时才触发止损。
  • 遇到 CONTEXT_WINDOW_EXCEEDED 时按 请求粒度 处理:过大的请求会切到更大上下文的候选模型,而不会把当前健康路由一并「停住」。

自动续跑与冷会话

  • 对失败 turn 做 自动续跑:结合实时事件流与 冷会话扫描(主机重启后仍可唤醒 orphan turn 并继续)。
  • 含 自适应退避 与 循环防护;安全阀包括 maxSwitchesPerStep(限制单步在链上切换次数)和 maxConsecutive(限制连续续跑风暴)。

会话日志与设置界面

  • 会话日志安全:插件不写入自定义事件类型(Session.append 无法携带 ignorable 标记);切换通知以普通 user/message 行呈现,状态放在 status route 与 settings 命名空间。
  • 设置卡片为 俄语 / 英语双语(RU/EN),字符串走 locale 字典;插件注册 ru 语言包(DSH 自带一般为 zh/en)。

安装与启用

插件以当前 dsh 进程权限 运行;安装前请自行审阅源码与 MIT 许可证(及 NOTICE.md 中的致谢说明)。

安装命令

官方 README 给出的方式为本地 link 或 GitHub 占位符(需替换为你的 fork/路径):

dsh plugin --profile web add link:/path/to/dsh-failover-continue
# or: dsh plugin --profile web add github:<you>/dsh-failover-continue

替换旧插件并迁移

同一套 waterfall 逻辑只应有一个 owner。启用本插件前,应 禁用 其替代的插件,迁移设置并 重启 host:

node scripts/migrate-settings.mjs --apply

在 ~/.dsh/profiles/web/cordis.patch.yml 中禁用示例(README 原文):

# ~/.dsh/profiles/web/cordis.patch.yml
- id: auto-continue
  disabled: true
- id: model-failover
  disabled: true
- id: model-failover-settings
  disabled: true

配置入口

在 settings.yaml 中使用单一命名空间 failover-continue:。可在 Settings → Plugins → Failover + auto-continue 中编辑,包括有序 fallbacks(provider/model)、tripCodes、阈值与 cooldown、续跑文案与时序、退避与 loop guard 等。完整需求与设计见设计仓库路径 .kiro/specs/failover-continue/(README 指向该处,非本仓库内文件清单)。

典型用法与验证

  1. 按上文安装并禁用 auto-continue、model-failover、model-failover-settings。
  2. 执行 node scripts/migrate-settings.mjs --apply 迁移旧配置。
  3. 在设置 UI 或 settings.yaml 中配置 failover-continue: 下的 fallback 链与续跑策略。
  4. 重启 DSH host 后,在模型网关不稳定或单轮中断的场景下观察路由切换与自动续跑是否符合预期。

开发者在仓库内自检可运行:

npm run typecheck && npm test && npm run build

适用场景与注意

适合谁:已在 DSH web profile 上接多 provider/多模型、希望 一条链 同时管 failover 与 continue 的开发者;需要 RU/EN 设置界面的部署环境也可直接使用该语言包。

注意:

  • 与独立的 auto-continue / model-failover 插件 不要同时启用,避免重复接管 waterfall。
  • 配置项以 README 与 .kiro/specs/failover-continue/ 设计文档为准;本文未逐项列出 YAML 字段,避免与版本漂移不一致。
  • 社区目录当前 星标为 0(以目录页展示为准),选用前建议阅读源码与测试(tests/ 含 circuit、config、walk、idle、stepup、policy、doctor 等)。

结尾

dsh-failover-continue 把 DSH 里「换模型继续跑」和「失败 turn 自动续跑」合成一条可配置的 resilience 回路,并兼顾 Retry-After、鉴权/计费切换与上下文超长等边界。如需安装说明与最新变更,请以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/elanski/dsh-failover-continue
  • GitHub:https://github.com/elanski/dsh-failover-continue
羽毛球分组比赛记分
小程序二维码

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

小夜