dsh-switch:面向 DeepSeek Harness 的模型控制面插件

前言

在 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 中嵌入凭证。
  • 输出只包含 configuredmissingnot-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
羽毛球分组比赛记分
小程序二维码

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

小夜