前言¶
在 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