跳到主内容

dsh-provider-model-configurator

11Star0Fork0Issue0Watching

在 DSH Web 设置中新增「模型 Pro」页,集中管理各提供商的模型条目(上下文、输出、输入模态、推理档位),并支持从内置目录一键复制参数。

机审证据5/5方法论数据来源安装命令持续维护DSH 版本风险扫描
机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
JavaScript
License
MIT
分支
main
dsh-plugin

安装

命令web profile
$ 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 或 >=24package.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)

查看使用指南 →

该插件的安装步骤、关键要点、FAQ 与兼容性说明(基于已收录字段派生)。

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/LiangYin233/dsh-provider-model-configurator)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录