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

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

小夜