dsh-lineup-manager:DeepSeek Harness 模型线路管理器

前言

DeepSeek Harness(DSH)在模型选择器中按供应商分组显示模型线路,但具体展示哪些条目取决于配置:有 models: 列表的供应商只显示列表中的线路,没有该列表的供应商则显示适配器的完整目录,可能达到数百条。保持只显示免费线路需要手动编辑 YAML 文件,而平台会每几天更新线路列表——新模型出现、免费层消失。手动维护成本高且容易遗漏变更。

dsh-lineup-manager 插件将这个流程变成设置页面的复选框操作,支持按供应商批量管理,并能从平台实时刷新线路列表,标记新增和下线的条目。

插件定位

  • 名称:dsh-lineup-manager(GitHub: cheeri020/dsh-lineup-manager)
  • 维护者:cheeri020
  • 版本:0.2.0
  • 许可证:MIT
  • 分类:模型推理
  • 兼容性:DeepSeek Harness 0.2.1-rc.2,Node.js ^22.19.0 || >=24.0.0,所有平台(纯 ESM,无原生代码)

插件通过 HTTP API 扩展 DSH 的设置面板,允许用户勾选要显示的模型线路,按供应商分组管理,并支持实时刷新标记变更。

核心功能

1. 按供应商分组管理

插件读取 cordis.patch.yml 中声明的供应商,为每个供应商列出其所有已声明的模型线路。每个线路对应一个复选框。

2. 批量操作

每个供应商提供三个快捷按钮:
- All:选中该供应商的所有线路
- None:取消选中所有线路
- Free only:仅保留免费线路(需平台提供免费标识,由插件读取)

3. 实时刷新

刷新功能从平台拉取当前线路列表,并与本地配置对比:
- 绿色 new 标记:平台已提供,但未在本地勾选
- 灰色删除线 gone 标记:本地已勾选,但平台已下线

刷新仅标记差异,不会写入配置,直到用户保存变更。

4. 安全写入机制

编辑配置存在风险,插件提供四重防护:
- Surgical replace:仅替换目标供应商的 models: 块,其他部分不受影响
- Backup first:写入前生成 cordis.patch.yml.bak-lineup-<timestamp> 备份
- Structural check:内存中验证(无重复供应商、合法的模型 ID),失败则拒绝写入
- Read-back verify:写入后重新读取磁盘内容比对,不匹配则恢复备份

5. 线索识别与性能优化

插件通过以下方式实现可靠刷新:
- 绕过内置目录:discoverModels 返回的是安装时的冻结目录,插件通过发送 baseURL 而非 provider 参数来获取实时列表,避免展示过时数据
- 独立命名空间:使用常量命名空间 dsh-lineup-manager,避免与 dsh-llm-pi-ai 的 loader 冲突
- Asar 读取优化:通过精确的字节范围读取而非全量读取,将内存占用从数百 MB 降至约 69 MB

安装与启用

从 tarball 安装(推荐)

pnpm pack                       # 生成 dsh-external-dsh-lineup-manager-<version>.tgz
dsh plugin add ./dsh-external-dsh-lineup-manager-0.2.0.tgz

安装后重启 DSH。

从 git 检出安装

dsh plugin add github:<you>/dsh-lineup-manager

prepare 脚本会在安装时构建 dist/ 目录。若 pnpm >=10 默认拒绝运行 git 依赖的构建脚本,可在 pnpm-workspace.yaml 中添加:

allowBuilds:
  "@dsh-external/dsh-lineup-manager": true

仅对可信来源启用,并建议固定 commit:github:<you>/dsh-lineup-manager#<sha>。

手动安装

pnpm install
pnpm build                     # 生成 dist/ 并验证

然后将包复制到 $DSH_HOME/profiles/<profile>/node_modules/ 并重启 DSH。

典型用法

  1. 打开 Settings → 顶部的 “Lineups” 按钮
  2. 面板列出 cordis.patch.yml 中的所有供应商,每个供应商下有对应线路的复选框
  3. 对每个供应商,使用 All / None / Free only 批量操作,然后点击 Save 保存该组
  4. 重启 DSH,模型选择器会反映变更

未保存的变更会被标记,关闭面板时会提示确认。

刷新线路列表

在供应商卡片上点击 Refresh(或页面底部的 Refresh all):

  • 绿色 new 标记 = 平台提供,但未在本地勾选
  • 灰色删除线 gone 标记 = 本地已勾选,但平台已下线

刷新操作不写入配置,仅标记差异。

配置建议:声明 baseURL

强烈建议为每个供应商声明 baseURL:

      openrouter:
        apiKeyEnv: OPENROUTER_API_KEY
        api: openai-completions
        baseURL: https://openrouter.ai/api/v1

常见平台的已验证端点:

Provider baseURL
openrouter https://openrouter.ai/api/v1
opencode https://opencode.ai/zen/v1
nvidia https://integrate.api.nvidia.com/v1

修改 baseURL 后需要重启 DSH。

适用场景与注意

  • 适合:需要频繁调整模型线路列表、希望只显示免费层、需要快速响应平台变更的开发者
  • 注意:插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证
  • 备份清理:备份文件 cordis.patch.yml.bak-lineup-* 会累积,满意配置后可手动清理

总结

dsh-lineup-manager 将手动编辑 YAML 的维护工作转化为设置页面的复选框操作,支持按供应商分组、批量操作和实时刷新。四重写入防护机制降低了配置损坏的风险,配合 baseURL 声明确保了刷新的可靠性。对于需要精细控制模型线路可见性的 DSH 用户,这是一个实用的辅助工具。

  • 目录页:https://www.skillhub.cn/plugins/cheeri020/dsh-lineup-manager
  • GitHub:https://github.com/cheeri020/dsh-lineup-manager
羽毛球分组比赛记分
小程序二维码

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

Xiaoye