在 DSH Web 设置中新增「模型 Pro」页,集中管理各提供商的模型条目(上下文、输出、输入模态、推理档位),并支持从内置目录一键复制参数。
- 语言
- JavaScript
- License
- MIT
- 分支
- main
安装
$ dsh plugin --profile web add github:LiangYin233/dsh-provider-model-configurator在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程
对话式安装
帮我安装 DeepSeek Harness 插件 LiangYin233/dsh-provider-model-configurator:先查看仓库 https://github.com/LiangYin233/dsh-provider-model-configurator 确认安全性,然后执行安装命令并验证插件加载成功。
把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。
一句话定位
在 DSH Web 设置中新增「模型 Pro」页面,把每个已配置提供商下的模型条目集中起来查看、新建、编辑、复制与删除,支持设置上下文窗口、最大输出、输入模态、推理档位与推理分发兼容开关,并能从内置 llm-pi-ai 模型目录一键复制参数。
核心能力
- 列出已配置提供商下的显式模型条目与当前配置摘要,支持一键进入编辑或删除(src/host/index.js:147-207)
- 新建模型:填入模型 ID 后手动设置显示名、上下文窗口、最大输出、输入模态(text/image)、推理档位与兼容开关(src/host/index.js:210-325)
- 复制填充:顶部「使用模型预设」按钮打开来源选择器,从内置目录或别的提供商挑一个模型把上下文、输出、模态、推理档位预填进表单(src/client/page.tsx:431-480)
- 推理档位受控下拉:枚举值限定为
off / minimal / low / medium / high / xhigh / max,每个档位需填实际请求字段值(wire 值),避免拼错(src/shared/thinking.js:13-14 / src/host/index.js:255-263) - 推理分发兼容开关:可显式写入
thinkingFormat(openai / deepseek / openrouter / together / zai / qwen / string-thinking / ant-ling)与supportsReasoningEffort(true / false / 未设置),仅供 openai-completions 推理分发读取(src/shared/thinking.js:16-17 / src/host/index.js:267-283) - 未设置字段保持「继承目录」语义:留空 / 未勾选的字段不会写入显式默认值,下次应用配置时会从目录条目继承(src/client/model.ts:18-48 / src/host/index.js:310-313)
技术实现
- 语言: TypeScript(Client:
src/client/page.tsx/static.tsx/dynamic.ts)+ JavaScript(Host:src/host/index.js/dynamic.js/contract.js);构建用 esbuild(package.json:46-48) - 关键依赖:
@deepseek-ai/cordis(插件运行时)、@deepseek-ai/dsh-typert-protocol+@deepseek-ai/dsh-typert-registry(Host RPC 与 strict schema)、@deepseek-ai/dsh-client-runtime+dsh-client-ui-slots(前端插槽与远程调用)、@deepseek-ai/dsh-client-locale(zh/en 字典)(package.json:53-69) - 架构模式: 双半区 Cordis Bundle 插件 ——
cordis.patch.yml在 web Profile bundle 层挂载dsh-provider-model-configurator;Host 半区在apply(ctx)中实例化ModelConfiguratorRuntime(继承自TypertRemoteService),并通过ctx.typert.register(TYPERT_MANIFEST)注册 6 个 strict 描述符;Client 半区通过ctx.remote.$mount拿到 Remote 句柄,并slots.inject('settings.section', ...)注册「模型 Pro」页面(slot order = 11)(src/host/index.js:384-387 / src/client/static.tsx:43-87 / cordis.patch.yml:4-6) - 入口文件: Host 入口
lib/index.js(构建自src/host/index.js);Client 入口lib/client.js(构建自src/client/static.tsx);另有动态插件版本src/host/dynamic.js+dist/dynamic-client-body.js(来自src/client/dynamic.ts)作为 cordis_define 动态激活的副线(src/host/dynamic.js:14 / src/client/dynamic.ts:7)
适用场景
在 DSH Web 里用一段时间后,用户已通过 Models 页搭好若干提供商(DeepSeek / 阿里云百炼 / 自建 OpenAI 兼容端点等),但每个模型条目的上下文窗口、推理档位、推理分发兼容开关要么要手改 settings.yaml,要么受限于 DSH 自带 UI 提供的字段。本插件把「修改一个模型条目」这件事搬到设置页里以表单形式完成,并能从内置目录里挑一个类似模型把参数直接复制过来,省去查文档、翻 settings.yaml 的步骤。
前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | >=0.0.1(dsh.plugin.json#engines.dsh 声明) | 实际需宿主已装载 llm-pi-ai 适配器,并满足 peerDependencies:@deepseek-ai/cordis ^4.0.1-rc.1、@deepseek-ai/dsh-typert-protocol、@deepseek-ai/dsh-typert-registry、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-slots、@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-api-gateway(package.json:53-69 / dsh.plugin.json:6-8) |
| Node | ^22.19 或 >=24 | package.json#engines.node 声明(package.json:50-52) |
| 平台 | 跨平台 | 仅作用于 Web(dsh.client.platform = "web"),源码中未做平台校验 |
| 原生模块 | 无 | 源码与依赖均为纯 JS / TS |
安装方式
dsh plugin --profile web add github:LiangYin233/dsh-provider-model-configurator
配置项
本插件无需额外配置。页面运行所需的「目标提供商列表 / 上下文 / 推理档位 / 写入开关」全部从宿主已装载的 llm-pi-ai 适配器与 settings.writable 状态读取,宿主配置完成后即可在设置页直接使用。
插件内可操作的字段(在「模型 Pro」页面编辑一个模型条目时):
| 字段 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| 模型 ID(id) | 字符串 | 条目的唯一标识,新建时必填,编辑时不可改 | 空 |
| 显示名称(name) | 字符串 | 在模型列表里展示的友好名;留空表示不写入该字段 | 空(继承目录) |
| 上下文窗口(contextWindow) | 整数(>0) | 单位 tokens | 空(继承目录) |
| 最大输出(maxTokens) | 整数(>0) | 单位 tokens | 空(继承目录) |
| 输入模态(input) | 枚举勾选 text / image | 标记模型能接受的输入模态;勾选「未设置」表示不写该字段 | 未设置(继承目录) |
| 推理档位(reasoningEfforts) | off / levels / unset 三选一 | off = 标记为非推理模型;levels = 勾选 off / minimal / low / medium / high / xhigh / max 中至少一个档位并填入 wire 值;unset = 不写该字段 | 未设置(继承目录) |
| 兼容:推理参数格式(compat.thinkingFormat) | 枚举 | openai / deepseek / openrouter / together / zai / qwen / string-thinking / ant-ling / 未设置;仅 openai-completions 推理分发读取 | 未设置(自动检测) |
| 兼容:是否接受 reasoning_effort(compat.supportsReasoningEffort) | 布尔 / 未设置 | 仅 openai-completions 推理分发读取 | 未设置(自动检测) |
常见问题
Q: 安装之后从哪里进入这个页面?
A: 安装后重启 Web 服务并刷新页面,设置 → 左侧导航栏会出现「模型 Pro」入口(位于 Models 页之后),点击即进入(src/client/static.tsx:13-14)。
Q: 这个页面和 DSH 自带的 Models 设置页是什么关系?
A: 它只改写已有「提供商模型列表」里的每一条条目(上下文、最大输出、输入模态、推理档位、推理分发兼容开关),不新建提供商、不动 API Key,也不替代 Models 页新建提供商的流程;插件读取的目标列表就是你在 Models 页已经建好的提供商(src/host/index.js:147-207)。
Q: 「使用模型预设」按钮是怎么工作的?
A: 点击「使用模型预设」会打开一个弹层,先选来源提供商、再选模型。已注册的提供商走 llm.listModels,未注册的(休眠提供商)走 llm.discoverModels 读取目录元数据;选完后会把上下文、输出、模态、推理档位预填进表单,可继续手动改(src/host/index.js:69-93)。
Q: 编辑已有模型时,没在表单里出现的字段会怎样?
A: 保留。插件只覆盖你填写的字段(name、contextWindow、maxTokens、input、reasoningEfforts、compat),其他字段(如 description、tools)原样保留;把某个字段在表单里留空,则该字段会从旧条目里删掉、回退为目录继承,而不是留旧值(src/host/index.js:308-313)。
Q: 删除某个提供商的最后一个模型条目会发生什么?
A: 对于内置目录里的提供商,会清空该提供商的显式列表、回退到内置目录;对于自定义提供商,插件会拒绝删除并提示「必须至少保留一个显式模型条目」(src/host/index.js:355-365)。
Q: 推理档位和推理参数格式(thinkingFormat)是什么关系?
A: 推理档位是模型自身声明的「思考强度」(off / minimal / low / medium / high / xhigh / max 之一 + 对应的 wire 值);thinkingFormat / supportsReasoningEffort 只在 openai-completions 这条线路上影响推理分发如何把这些档位落到请求字段上,缺省值由目录条目或 baseURL 自动检测(src/shared/thinking.js:13-17)。
Q: 设置为只读模式(settings.writable=false)时插件会怎样?
A: 顶部出现「当前设置为只读」提示,所有编辑 / 删除 / 应用配置按钮都会被禁用;远程调用会被 host 直接拒绝并返回「设置只读,无法写入模型配置」(src/host/index.js:215)。
上手难度
入门 — 页面是一个普通表单,所有可选项都用下拉或输入框暴露,不要求用户理解 Typert / settings.mutate / llm-pi-ai 适配器等内部概念;唯一需要了解的进阶点是「未设置(继承目录)」这一语义,避免把留空误以为是删值。
已知问题与限制
- 内置目录型提供商一旦被写入显式模型列表,目录后续更新不会自动合并进该列表;只有删完所有显式条目才会回退到内置目录(README.md:34 / src/host/index.js:288-302)
- 删到零个显式条目时,自定义(非 catalog)的提供商会保留至少一个条目的硬限制,无法彻底清空(src/host/index.js:355-365)
- 表单只暴露 name / contextWindow / maxTokens / input / reasoningEfforts / compat 等字段;模型条目里的 description、tools 等字段无法通过此页面编辑,只能保留或被删除(src/host/index.js:308-313)
- 该插件仅作用于 Web 平台(
dsh.client.platform: "web"),桌面 / 终端宿主用不上 settings.section 槽位(package.json:18-26) - 0.3.9 版本
dsh.plugin.json#engines.dsh声明为>=0.0.1,非常宽松;实际可用性受 peerDependencies(cordis ^4.0.1-rc.1、dsh-typert-protocol、dsh-typert-registry 等)约束(package.json:53-69 / dsh.plugin.json:6-8)
一个 DeepSeek Harness (DSH) 插件:在独立设置页「模型 Pro / Model Pro」中集中查看、新建、编辑、复制与删除已配置提供商下的模型条目——上下文窗口、最大输出、输入模态、推理档位与推理兼容开关。还可以从内置的 llm-pi-ai 模型列表读取您所需要配置的模型的上下文参数、最大Token,无需自行填写、手动查询。
界面预览
| 模型 Pro 设置页 | 复制来源选择器 |
|---|---|
![]() | ![]() |
安装
# 从 GitHub 安装
dsh plugin --profile web add github:LiangYin233/dsh-provider-model-configurator#v0.3.9
# 或从 GitHub tarball 安装
dsh plugin --profile web add https://github.com/LiangYin233/dsh-provider-model-configurator/archive/refs/tags/v0.3.9.tar.gz
# 或从本地打包安装
npm pack
dsh plugin --profile web add ./dsh-provider-model-configurator-0.3.9.tgz
安装后重启 Web 服务器并刷新页面,打开设置 → 左侧导航「模型 Pro」(Models 页之后)。
功能
- 选择目标提供商,列出其显式模型条目与配置摘要,可编辑 / 删除;
- 新建:输入模型 ID,手动填写显示名、上下文窗口、最大输出、输入模态(text/image)、推理档位(档位 → wire 值,
off留空 = 不发送);推理档位与输入模态均支持「未设置(继承目录)」,避免把未配置的字段写成显式默认值; - 复制填充:「使用模型预设」打开来源选择器,从预设目录或其他提供商挑一个模型快速填充表单;
- 兼容开关 (compat):编辑
thinkingFormat(openai / deepseek / openrouter / together / zai / qwen / string-thinking / ant-ling)与supportsReasoningEffort(true / false / 未设置),供 openai-completions 推理分发读取;
目录快照行为:在尚未显式配置模型列表的目录提供商上新建/应用模型时,插件会把内置目录的当前模型列表整体写入为该提供商的显式条目(目录中已有的 ID 原地更新,新 ID 追加),之后再编辑均基于这份显式列表;目录后续更新不会自动合并进已快照的列表。目录提供商若删到零个显式条目,则回退为内置目录(未快照)状态。
仓库结构
├── package.json bundle 清单(dsh.bundle.patch / dsh.client / exports)
├── cordis.patch.yml bundle patch:挂载 dsh-provider-model-configurator
├── dsh.plugin.json 插件元数据(id / version / main)
├── docs/ 界面截图(README 预览用)
├── lib/ 构建产物(随包发布,由 build.mjs 生成)
│ ├── index.js ← src/host/index.js
│ ├── contract.js ← src/host/contract.js
│ └── client.js ← src/client/static.tsx
├── shared/ 构建产物:src/shared/thinking.js(共享常量;lib/contract.js
│ 运行时按 ../shared/thinking.js 解析到包根目录)
├── src/
│ ├── host/ Host 半区源码(index.js 静态 / dynamic.js 动态插件)
│ ├── client/ Client 半区源码(page.tsx / model.ts / page.css / locales/)
│ └── shared/ thinking.js — 推理档位 / 推理格式常量的单一来源
├── scripts/
│ └── check-dynamic.mjs 动态半区语法校验 + 常量同步校验(npm run check 执行)
├── build.mjs esbuild 构建(lib/ 与 dist/dynamic-client-body.js)
└── tsconfig.json
License
MIT
鸣谢
查看使用指南 →
该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。
收录徽章
[](https://deepseek-plugin.org/plugins/LiangYin233/dsh-provider-model-configurator)把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

