dsh-llm-model-tuning:在 Models 页按模型配置推理强度与多模态输入

前言

在 DeepSeek Harness(DSH)里用 llm-pi-ai 接自定义供应商时,同一路由下往往挂着多个模型:有的支持 reasoning effort,有的不支持;有的能收图片,有的只收文本。内置的供应商卡片 deliberately 不在 provider 级别提供 reasoning 控件——因为同一 provider 下各模型能力不一致,provider 级设置很容易被部分模型拒绝。

dsh-llm-model-tuning 把编辑粒度放到每个模型条目上:在 Settings → Models 的每张自定义 provider 卡片里,为路由下的模型分别配置 reasoningEfforts 与 input,并可在路由级设置 defaultInput,让目录未描述的 vision 网关仍可用。维护者为 xurunxin,分类为模型推理;社区目录见 SkillHub 插件页,源码见 GitHub。

这是什么

一句话:纯客户端 bundle,在 DSH Settings → Models 的 settings.models.provider-card 席位上挂一张卡片,读写 llm-pi-ai 设置段里与「按模型推理档位、多模态输入」相关的字段;Host 侧包体 intentionally 为空,仅用于让 @deepseek-ai/dsh-client-modules 扫描 dsh.client 并把 lib/client.js 纳入浏览器启动图。

写入落在 llm-pi-ai 段,无需重启——适配器按请求解析 profile。

核心功能

编辑的字段

卡片针对路由下列出的每个 model 条目编辑两个字段,并支持路由级 fallback:

字段 含义
reasoningEfforts 模型提供的 effort 档位,以及各档位发往 wire 的拼写。false 表示非 reasoning 模型;缺省则继承已安装 catalog。
input 模型接受的请求模态(text、image)。缺省则继承 catalog。
defaultInput(路由级) 当 catalog 未描述某类网关时的默认输入模态 fallback。

与内置编辑器的关系

  • 内置 provider 编辑器 不提供 reasoning 控件;本插件补的是 per-model 能力。
  • 卡片只改 reasoningEfforts、input、defaultInput;容量、兼容开关、凭据仍由内置编辑器和 settings.yaml 负责。

写入与校验行为(使用时会碰到)

  • 读写的是 llm-pi-ai 段的 user 层;仅存在于 composition base 的路由会先读出 resolved 值再允许写入 user 层。
  • 通过 settings.mutate 路径操作写入,未渲染的字段不会被删掉;namespace revision 用于避免并发下 stale 卡片覆盖。
  • models 与 modelOverrides 二选一:models 整表替换 catalog,modelOverrides 在其上 reshape;适配器不允许两者并存。卡片编辑 profile 里已有的一种;若两者都没有,可引导添加 modelOverrides 条目。
  • input / defaultInput:声明会替换模态列表而非追加;为避免只勾 image 却丢掉 text,卡片会始终保留 text;清掉最后一个可选模态时会移除字段,让适配器默认生效。
  • 卡片在本地复现适配器对 reasoningEfforts 的规则(每档需 wire 拼写、仅 off 可为空、除 off 外至少一档),以便拒绝时能点名具体字段。

客户端插件为何足够

所有贡献就是一张挂在 provider 行 settings namespace 上的卡片。可配置的 pi-ai 路由均声明 settingsNs: 'llm-pi-ai',在该 key 下注册一次即可覆盖所有自定义 provider 卡片(含已保存行与「添加 provider」草稿),Models 区本身不感知本插件。

安装与启用

环境要求:

  • dsh 0.1.7 或更新。卡片通过 configForms 服务读写;0.1.7 起已移除 settingsScope,仍注入旧服务的卡片不会激活。
  • 部署中须 compose llm-pi-ai 适配器(拥有本卡片所编辑的 settings namespace)。卡片用 configForms.whileServed 跟随适配器;无该适配器时不会出现死面板,而是完全不显示本卡片。

用插件管理器安装 bundle,target 为本包目录的绝对路径(不要手改 profile 的 package.json 或 cordis.patch.yml,也不要在 profile 目录里自行跑包管理器):

plugin_manager  action: install_bundle  target: <absolute path to this package>

上述命令会完成包装安装与 bundle 选择:添加依赖、链入当前 profile 的 node_modules,并把包追加到 dsh.profile.bundles(因包声明了 dsh.bundle.patch)。

安装为指向该目录的 symlink,后续改源码无需重装。新装的 bundle 可通过 HMR 激活;若替换已有 bundle,需 profile 重启 以加载新的 JavaScript 模块代。

包版本 1.1.0(见 package.json),许可证 MIT,Node >=20。

典型用法

  1. 确认 dsh ≥ 0.1.7,且 profile 已 compose llm-pi-ai。
  2. 按上文命令 install_bundle 到本插件目录。
  3. 打开 DSH Settings → Models,进入任一自定义 provider 卡片。
  4. 在插件提供的 per-model 区域:
    - 为支持 thinking 的模型配置 reasoningEfforts 各档及 wire 拼写;非 reasoning 模型设为 false 或按 catalog 继承。
    - 为 vision 等模型勾选 input(text 会保持;可增 image)。
    - 若网关 serving 的 vision 模型不在 catalog 中,在路由级设置 defaultInput。
  5. 保存后下一请求即生效;设置落在用户 settings.yaml,卡片自身不持状态。

若 profile 使用 modelOverrides 而非整表 models,在对应 override 条目上编辑上述字段;若两者皆无,按卡片提示添加 modelOverrides 再编辑。

适用场景与注意

适合谁: 在 DSH 里用 llm-pi-ai 自建或多模型混挂的开发者,需要在 UI 里按模型区分 reasoning effort 与 text/image 输入,而不愿为整 provider 设一个会被部分模型拒绝的值。

限制(README 明确列出):

  • 仅编辑 reasoningEfforts、input、defaultInput。
  • schema 接受的 effort 档位为 off、minimal、low、medium、high、xhigh、max 共七档;超出部分写入时会保留,但 UI 不提供编辑。
  • 设置存于用户 settings.yaml。

安全与权限: 插件以当前 dsh 进程权限运行;安装前请自行审阅 源码仓库 与 MIT 许可证。SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。

开发者在仓库根目录可离线跑测试(无需额外安装依赖):

npm test

结尾

dsh-llm-model-tuning 把 Models 设置页里缺失的 per-model 推理档位与多模态输入编辑补到自定义 provider 卡片上,写入 llm-pi-ai 后随请求生效。需要 dsh 0.1.7+ 与已 compose 的 llm-pi-ai 适配器。

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

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

小夜