dsh-route-resilience:DSH 多路由高可用與故障隔離

前言

在 DeepSeek Harness(DSH)裏,一次智能體請求通常會落到某一條 provider route 上。如果這條 route 返回 429、超時、傳輸異常,或憑證/配額狀態異常,當前輪次可能直接失敗。已有的重試策略往往圍繞同一條 route 做有限恢復;如果用戶已經有多條被授權訪問同一模型的 route,就希望請求能切換到仍健康的 route,同時把壞憑證、壞配額或壞 route 隔離掉。

dsh-route-resilience 解決的是這個多路由可用性問題:它把用戶已授權的 provider routes 組織成 model groups,在健康 route 之間分配請求,並在可重試錯誤發生時切換到下一條 route。下面介紹它的定位、功能、安裝方式、典型用法和注意事項。

定位

dsh-route-resilience 是一個 DSH 插件,用於 multi-route high availability, fault isolation and observability。維護者是 lokic7123-star,許可證爲 MIT。

它不是 quota workaround。它不繞過 quotas、rate limits 或 fair-use caps,也不支持多賬號、多身份繞過 provider limits。它只使用用戶已授權的 credentials 和 routes;每條 route 仍然受其 provider 的服務條款約束。插件通過名稱引用 provider routes,不讀取、寫入或暴露 key material。

核心功能

多路由與故障切換

插件提供以下已覈實能力:

  • Model groups:將服務同一模型的多條 provider routes 組織成一個 group。
  • Round-robin allocation:新請求在 active group 的健康 routes 間進行輪詢分配。
  • Retryable failover:遇到可重試錯誤時,請求可切換到下一條 route。
  • 429 / Retry-After handling:對限流場景進行 429 / Retry-After 處理。
  • Auth / quota isolation:對 auth / quota 異常進行隔離,避免異常 route 影響整個 group。
  • Fallback:提供 fallback,避免所有 route 不可用時陷入死鎖。

觀測與管理

插件還提供以下入口:

  • Observability:提供只讀狀態接口 GET /api/dsh-route-resilience/status。
  • Web settings panel:在 Models 頁面提供 Route resilience 面板,用於管理 groups、keys 和 quarantine parameters。

安裝與啓用

安裝

文檔給出的 npm 安裝命令是:

npm install dsh-route-resilience

資料未確認 npm 發佈狀態。如果當前環境沒有可安裝的 npm 包,可以從 GitHub 倉庫獲取源碼,並按 DSH profile 的插件方式接入。倉庫地址:

https://github.com/lokic7123-star/dsh-route-resilience

在 profile 中啓用

啓用時,需要在 profile 的 package.json 中完成兩步:

1、將 dsh-route-resilience 加入 dsh.profile.bundles。
2、添加一個 link: 依賴,指向本地插件目錄。

可以寫成類似下面的形式:

{
  "dsh": {
    "profile": {
      "bundles": ["dsh-route-resilience"]
    }
  },
  "dependencies": {
    "dsh-route-resilience": "link:/path/to/plugins/dsh-route-resilience"
  }
}

這裏的 /path/to/plugins/dsh-route-resilience 應替換爲實際存放插件的目錄路徑。經過上面的步驟後,插件進入 DSH profile 的加載路徑。

典型用法

配置 settings namespace

插件從 dsh-route-resilience settings namespace 讀取配置。下面是一個示例結構:

{
  "groups": [
    {
      "id": "deepseek",
      "targets": [
        { "provider": "route-a", "model": "deepseek-chat" },
        { "provider": "route-b", "model": "deepseek-chat" }
      ],
      "retryableCodes": ["RATE_LIMIT", "TIMEOUT", "TRANSPORT"],
      "quarantineBaseMs": 60000,
      "quarantineCapMs": 300000
    }
  ],
  "activeGroup": "deepseek"
}

其中:

  • groups 定義一個或多個模型組。
  • targets 列出組內 provider route 和 model。
  • retryableCodes 指定可觸發 failover 的錯誤代碼。
  • quarantineBaseMs 和 quarantineCapMs 用於 quarantine 參數。
  • activeGroup 是可選字段;當 activeGroup 未設置時,插件處於 installed but idle 狀態,routing passes through unchanged。

查看狀態

插件提供只讀狀態接口:

GET /api/dsh-route-resilience/status

該接口用於查看當前路由健康狀態。資料說明該狀態路由是 read-only,與 served web UI 同域,並被 host trust fence 限制遠程瀏覽器訪問。

使用 Web 面板

在 Models 頁面底部會出現 Route resilience 面板。可以在其中管理:

  • groups
  • keys
  • quarantine parameters

該面板用於日常查看和調整多路由策略。插件側仍只通過名稱引用 provider routes,不暴露 key material。

適用場景與注意

這個插件適合以下場景:

  • 已有多個被授權的 provider routes,希望同一模型在多路由之間保持可用。
  • 希望把 429 / Retry-After、傳輸異常、auth / quota 異常等 route 級故障隔離。
  • 希望有隻讀狀態接口和 Web 面板來查看路由健康。
  • 希望在不修改 DSH 核心源的前提下,以插件方式擴展路由行爲。

需要注意:

  • 它不繞過 quotas、rate limits 或 fair-use caps。
  • 它不支持 multi-account 或 multi-identity circumvention of provider limits。
  • 它只使用用戶已授權的 credentials 和 routes;每條 route 仍受其 provider 的 terms of service 約束。
  • 它不讀取、寫入或暴露 key material,只按名稱引用 provider routes。
  • 要求 DSH >= 0.1.0-rc.5,Cordis >= 4.0.1。
  • 插件以當前 DSH 進程權限運行。安裝前應檢查源碼、MIT 許可證、依賴版本和實際配置。

結尾

dsh-route-resilience 的價值在於:當某一條 provider route 出現限流、故障或授權異常時,讓 DSH 仍能從其他已授權 route 繼續提供服務,而不是讓整個請求失敗。它把多路由高可用、故障隔離和觀測能力做成了一個 DSH 插件。

社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係;本文未確認目錄頁 URL。倉庫地址爲:

https://github.com/lokic7123-star/dsh-route-resilience
羽毛球分组比赛记分
小程序二维码

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

小夜