前言¶
在 DSH(DeepSeek Harness)這類“一切皆插件”的工作流裏,模型 provider 路由常常分散在不同 profile、adapter 和本地配置中。開發或運維時,通常需要先看 DSH 當前註冊了哪些 provider routes,再確認某個 provider/model 是否可被識別,最後才決定新會話默認使用哪個模型。
DSH 社區目錄是獨立站點,不等同於官方應用商店。dsh-switch 提供一個證據優先的控制面:在 DSH bundle 中暴露模型側工具,用於檢查和切換新會話默認模型;同時提供獨立 CLI,用於只讀探測 OpenAI-compatible /models 端點。
這裏需要區分“端點可達”和“模型可用”。/models 探測只能證明端點可達,不能證明端到端生成正確;v0.1 也不啓用 automatic fallback 或 cost-based routing。
這是什麼¶
dongsheng123132/dsh-switch 是 DeepSeek Harness 的插件,定位爲 Evidence-first model control plane for DeepSeek Harness。資料中的類別字段爲模型推理。
倉庫 owner 爲 dongsheng123132;許可證標註爲 MIT;倉庫元數據中另有 MIT © 2026 hfshfg。現有資料未完全明確維護者/版權歸屬。
它主要做兩件相對獨立的事:
1、在 DSH bundle 中暴露模型側工具,檢查已註冊 provider routes,並通過官方 ctx.llm 接縫驗證精確 provider/model。
2、通過獨立 CLI 探測 OpenAI-compatible /models 端點,報告 reachability、HTTP status、latency、model count 和 credential env var 配置狀態。
它不攔截模型請求,不實現另一個 OpenAI adapter,也不會靜默重路由一個 active session。
核心功能¶
DSH 內檢查與切換模型路由¶
dsh_switch_status({ includeModels? }) 用於查看當前狀態:
- 顯示新會話使用的默認選擇;
- 列出已註冊 provider routes;
- 可選地請求適配器 advertised models。
dsh_switch_default({ provider, model, reasoningEffort?, expectedProvider?, expectedModel? }) 用於保存新會話默認模型:
- 驗證精確 provider/model route;
- 拒絕不支持的
reasoningEffort; - 支持
expectedProvider/expectedModel樂觀併發; - 通過
ctx.agentDefaultModel保存選擇; - 讀取回寫結果,若讀取不可觀察則失敗;
- 僅影響新會話。Existing sessions keep the route recorded in their logs。
DSH 工具側切換校驗的是已註冊 adapter 元數據,不是 live provider I/O。
獨立 CLI 探測 /models 端點¶
CLI 面向 OpenAI-compatible /models 端點,用於檢查:
- reachability;
- HTTP status;
- latency;
- model count;
- credential env var 配置狀態。
探針只發送:
GET <baseURL><modelsPath>
它不發送 chat completion,也不消耗 inference tokens。成功的 /models 響應只能證明端點可達,不能證明端到端生成正確。
安全邊界¶
- 拒絕
apiKey字段和 URL 中嵌入憑證。 - 輸出只包含
configured、missing、not-required這類狀態;secret 值不進入結果。 - 一個 401/403 端點是 reachable,但不是 healthy。
- v0.1 不啓用 automatic fallback 或 cost-based routing。
安裝與啓用¶
安裝 DSH bundle 時,使用固定 commit。資料中只給出 <commit> 佔位符,未提供具體 commit,因此需要把它替換爲已審查的提交:
dsh plugin --profile web add github:dongsheng123132/dsh-switch#<commit>
dsh --profile web --dump-config
第一條命令安裝 bundle;第二條命令用於查看當前 profile 的配置。
bundle 直接提供 JavaScript,沒有 install/build lifecycle script。peer dependency @deepseek-ai/dsh-tools 被標記爲 optional。
運行插件 smoke test 時,需要官方 DSH runtime packages 可解析。
運行環境要求:
Node.js >=22
典型用法¶
配置本地 provider¶
把示例配置複製爲私有本地文件。密鑰只通過環境變量名引用,不要把 key 寫進 JSON:
Copy providers.example.json to a private local file such as providers.json; reference secrets by environment-variable name—never place keys in JSON.
使用 DSH 工具¶
查看當前狀態:
dsh_switch_status({ includeModels? })
設置新會話默認模型:
dsh_switch_default({ provider, model, reasoningEffort?, expectedProvider?, expectedModel? })
運行 CLI¶
README 給出以下命令:
node bin/dsh-switch.mjs validate --config providers.json
node bin/dsh-switch.mjs check --config providers.json
node bin/dsh-switch.mjs best --config providers.json
JSON 輸出:
node bin/dsh-switch.mjs check --config providers.json --json
適用場景與注意¶
適合以下情況:
- 需要在 DSH 內檢查已註冊 provider routes;
- 需要爲新會話設置默認 provider/model;
- 需要對 OpenAI-compatible
/models端點做只讀探測; - 希望輸出中只保留 credential 配置狀態,而不是 secret 值。
不適合以下情況:
- 希望 automatic fallback 或 cost-based routing;v0.1 未啓用。
- 希望插件攔截模型請求、實現另一個 OpenAI adapter,或靜默重路由 active session。
- 期望一次
/models探測就證明模型能正確完成生成。
插件會以當前 dsh 進程擁有的權限運行,安裝前應檢查源碼與許可證。本地 providers.json 應放在私有位置,並通過環境變量引用憑證。
鏈接¶
- 目錄頁:https://www.skillhub.cn/plugins/dongsheng123132/dsh-switch
- GitHub:https://github.com/dongsheng123132/dsh-switch