前言¶
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。
典型用法¶
- 打开 Settings → 顶部的 “Lineups” 按钮
- 面板列出
cordis.patch.yml中的所有供应商,每个供应商下有对应线路的复选框 - 对每个供应商,使用 All / None / Free only 批量操作,然后点击 Save 保存该组
- 重启 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