前言¶
在 DeepSeek Harness(DSH)裏接多個模型來源時,常見做法是手動切換 provider,或在某條路由失敗後再改配置。請求一旦落在額度已耗盡或瞬時故障的路由上,agent loop 和會話側往往要額外處理切換邏輯。dsh-llm-auto 是 DSH 宿主插件,在模型選擇器裏註冊 auto 模型,按配置的有序「provider + model」鏈依次嘗試;單條路由內在產出內容前失敗時,先按與官方相近的策略原地重試,耗盡後再靜默切下一條,對上層仍表現爲一個普通模型。下面介紹它的定位、能力與安裝配置方式。
這是什麼¶
- 名稱:dsh-llm-auto(npm 包名,註冊 id 爲
llm-auto) - 維護者:liuyun847
- 分類:模型推理(社區目錄 SkillHub 歸類)
- 倉庫:github.com/liuyun847/dsh-llm-auto
- 當前版本(README 徽章):0.11.1
- 許可證:MIT
本包是組合包(bundle):註冊行隨包內 cordis.patch.yml 發佈,宿主按 profile 的 package.json 裏 dsh.profile.bundles 加載,無需再往 profile 的 cordis.patch.yml 手工粘貼 - insert: 行。
核心功能¶
有序回退與單路由重試¶
用戶選擇 Auto 分組下的 auto 後,請求進入 AutoAdapter.stream()。插件按 routes 順序嘗試;某一跳在產出任何內容之前失敗時,若錯誤碼落在可重試白名單內(默認含 EMPTY_RESPONSE、RATE_LIMIT、SERVER、TIMEOUT、TRANSPORT),則在該路由內指數退避後原地重試(默認每路由最多 5 次,不含首次);重試耗盡才切下一條。成功時分片原樣透傳;全部失敗則拋出 AUTO_ROUTES_EXHAUSTED,消息中列出各路由嘗試次數與失敗原因。
每條路由可配置:
keepThinking:DeepSeek 原生路由上保留工具循環中的思考塊(缺省仍摘除)breakToolLoop:在特定歷史形態下追加用戶提示,使出站以用戶消息結尾,繞開 thinking 模式的工具循環校驗
發生靜默路由切換時,會在出站消息末尾追加與 DSH 自帶的同款 model changed 通知(只改出站負載,不寫會話記錄)。
推理檔位(0.10.0 起)¶
模型選擇器爲 auto 提供兩檔:Default(插件不寫檔位,由宿主/上游默認決定)與 max(逐跳取該路由能提供的最高檔,對應 0.9.x 的舊行爲)。
額度感知排序與冷卻(0.8.0 起,0.11.x 增強)¶
默認 ordering.mode 爲 auto:插件按訂閱額度決定嘗試順序——有月度重置時刻的訂閱按「越早重置越靠前」排,查不到重置時刻的按配置順序,永不過期的按量兜底排在最後。某一跳因窗口額度耗盡被拒(錯誤碼 QUOTA 或報文符合窗口額度語義;0.9.1 起判據已放寬以覆蓋 Command Code 等文案)時,插件補查額度接口,確認後將該來源冷卻到對應檔位重置時刻,期間不再嘗試,到點自動恢復。
0.11.0 起冷卻表落盤(宿主領域存儲),跨 DSH 重啓與插件重組合仍存活到重置時刻;被 QUOTA 拒絕的當下先記 5 分鐘短閘門,補查確認後換成重置時刻。面板冷卻行右側提供「解除」按鈕(額度提前恢復時用);0.11.1 起「解除」指令的已消費記錄也落盤,避免宿主重啓後重復消費舊指令。
若要回到「完全按 routes 順序、僅在失敗時切換」的行爲,將 ordering.mode 設爲 manual(插件頁有開關,熱改生效)。
compactWindow 與壓縮點¶
可通過 compactWindow(默認 500000 token)把自動壓縮點釘在指定規模附近。DSH 壓縮引擎按「該請求聲明的窗口」算閾值;本插件對外宣稱的窗口由壓縮點反算。
插件頁與觀測¶
0.4.0 起自帶瀏覽器半側:在 Web 側欄「插件」→「已安裝」→ 點開 dsh-llm-auto 卡片,可直接改 compactWindow 等表單項。
回退鏈面板(0.5.0 只讀,0.6.0 可編輯):拖拽改順序、從 live 模型目錄換模型、按行開關 keepThinking/breakToolLoop,保存寫入 profile 的 cordis.patch.yml 並免重啓生效;下半部分展示最近若干次請求的實際回退過程。
0.7.0 起只讀「額度」摘要;0.8.0 起「自動排序」摘要(模式開關 + 實際嘗試順序,冷卻條目帶恢復時刻)。0.9.0 起界面按 auto/manual 模式收斂:自動模式主視圖爲「生效順序」,可編輯鏈折進默認收起的「配置順序」。
調試時可訪問 http://127.0.0.1:19387/api/llm-auto/routes 查看實際走路由與當前聲明的上下文窗口;0.6.0 起另有 GET /api/llm-auto/catalog 供鏈編輯器選模型。
安裝與啓用¶
在 DSH profile 目錄(示例爲 ~\.dsh\profiles\desktop\)下操作。
# ① 裝進 profile:dshpm 會順帶把包名寫進 dsh.profile.bundles
node <工作區>\dsh\dsh-plugin-manager\dshpm.mjs add file:./plugins/dsh-llm-auto --profile desktop
# 公開環境:profile 的 package.json 里加 "dsh-llm-auto": "github:liuyun847/dsh-llm-auto"
# 再 pnpm install(或 npm install)—— 同樣只要包名在 dsh.profile.bundles 裏
# ② 按本機 provider 改 routes:改包內 cordis.patch.yml 那一行(profile 層也可按 id 覆寫)
# ③ 重啓一次 DSH(本機桌面端:關掉再打開 DeepSeek Harness 窗口)
注意:0.4.0 新增的瀏覽器半側必須重啓一次 DSH 纔會被收錄;僅 HMR 時插件頁可能暫時不出現配置表單。
啓停:Web 側欄「插件」頁「已安裝」區本卡總開關(寫 dsh.profile.bundles);卡片內各行另有行級開關(向 profile 的 cordis.patch.yml 寫 disabled 覆蓋)。
卸載:
node dshpm.mjs remove dsh-llm-auto --profile desktop
若 profile 的 pnpm 帶供應鏈策略導致 pnpm remove 報錯,可在 profile 目錄執行:
pnpm remove dsh-llm-auto --config.minimum-release-age=0
配置要點¶
配置入口有兩處:插件頁表單(compactWindow、routes、ordering.mode 等熱改項)與包內 / profile 覆寫的 cordis.patch.yml(結構性項如 retry 僅能通過 patch 改)。
包內註冊示例(摘自 README,需按本機 provider 調整):
- insert:
- id: llm-auto
name: 'dsh-llm-auto'
config:
routes:
- { provider: commandcode, model: deepseek/deepseek-v4.1-flash }
- { provider: opencode-go, model: deepseek-v4.1-flash }
- { provider: deepseek-official, model: deepseek-flash, keepThinking: true, breakToolLoop: true }
compactWindow: 500000
# ordering.mode 默認 auto;manual 見上文
# retry 不寫則每路由默認 5 次重試
| 鍵 | 默認 | 熱改 | 說明 |
|---|---|---|---|
routes |
— | ✅ | 有序回退鏈,第一項即首選;model 須寫 provider 聲明的真實 id |
compactWindow |
500000 |
✅ | 自動壓縮發生的 token 規模附近 |
ordering.mode |
auto |
✅ | auto 額度感知排序 + 冷卻;manual 僅按配置順序 + 失敗切換 |
retry.* |
見 README | ✗ | 每路由重試上限、白名單、退避參數 |
標爲熱改的字段經宿主設置服務寫入後原地更新,改鏈、改模式、改壓縮點一般不必重啓;retry 等結構性配置需改 patch 並依賴 apply 邊界(見 README「生效條件」)。
典型用法¶
- 按上文安裝並重啓 DSH,在包內或插件頁「回退鏈」中配置本機可用的
provider+model列表。 - 在模型選擇器選擇
Auto→auto(可按需選 Default / max 推理檔)。 - 正常對話;若需確認實際路由,打開
http://127.0.0.1:19387/api/llm-auto/routes。 - 多訂閱並存且希望優先用「快重置」額度時,保持
ordering.mode: auto,在插件頁查看「生效順序」與冷卻行;若只要固定優先級,切到manual。 - 希望長上下文在固定 token 附近觸發壓縮時,在插件頁調整
compactWindow。
適用場景與注意¶
適合:已配置多條 DSH provider,希望合併爲一個模型入口;需要在 QUOTA、502、限流等情況下自動重試或切路由,且不想改 agent 或會話層代碼的開發者。
注意:
- 插件在當前 DSH 進程權限下運行,安裝前請自行審閱 源碼與 MIT 許可證。
- 社區目錄 SkillHub 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態主張「一切皆插件」,本介紹事實以倉庫 README 爲準。
ordering.mode等 YAML 值勿寫入!!js、函數或非普通對象形態,否則可能導致整行插件加載失敗(README 有說明)。
結尾¶
dsh-llm-auto 把多條「provider + model」收成模型選擇器裏的一個 auto,用有序回退、單路由重試和可選的額度感知排序,減少手工換模型和重複撞額度的問題。進一步瞭解與安裝說明見社區目錄頁與 GitHub 倉庫:
- 目錄頁:https://www.skillhub.cn/plugins/liuyun847/dsh-llm-auto
- GitHub:https://github.com/liuyun847/dsh-llm-auto