按模型名从 models.dev 补全自定义模型缺失的上下文、输出上限、思考档位和图片能力,并列出未匹配模型供手改。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:11zld22/dsh-model-info-fill
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 插件。按模型名从 models.dev 查出客观参数,补进自定义供应商的模型行:
- 上下文窗口
contextWindow - 输出上限
maxTokens - 图片能力
input - 显示名
name(仅在本地为空时)
不写思考档位。 DSH 0.2 起,宿主的模型编辑里已经有「推理等级」:一个开关加每个档位对应的 API 值,并且会校验档位与写入值。插件只把百科对该模型的说法显示成一行只读提示(「会思考:low / medium / high」或「不思考」),不写 reasoningEfforts,也不写供应商的 reasoning。
也不写占位默认值。 留空的上下文 / 输出上限本来就由宿主的 defaultContextWindow / defaultMaxTokens 回退,插件只写百科真正给出的值 —— 写 262144 进去和留空效果一样,只会把「不知道」伪装成「知道」。
安装
dsh plugin --profile web add github:11zld22/dsh-model-info-fill
装完重启 DSH。桌面版把 --profile web 换成 --profile desktop。打开 设置 → 模型 即可使用。
本机开发用 link 安装:dsh plugin --profile desktop add link:F:\path\to\dsh-models-dev-catalog,改完代码重启 DSH 生效。
怎么用
底部「模型信息补全」一行显示百科同步时间与模型数量,右侧三个按钮:
| 按钮 | 作用 |
|---|---|
| 更新 | 重新拉取 models.dev |
| 补全全部缺失 | 把所有能补的字段一次写进配置 |
| 详情 | 展开面板:供应商的百科身份、可补数量,以及下面各分区 |
芯片按需展开对应分区:
| 芯片 | 含义 |
|---|---|
| 可补全 N | 百科命中,且该模型有缺失字段;逐条列出「将写入 …」,可单独补一条 |
| 有分歧 N | 百科里同名记录对不上,冲突字段不会被填;列出候选来源,点「用这条」指定其中一个 |
| 未匹配 N | 百科里查不到;可搜索条目手动指定,或忽略 |
| 已忽略 N | 被忽略的模型,可恢复 |
每个自定义供应商卡片底部还有 补全缺失字段 · N,只补这一个供应商。
匹配规则
按顺序,命中即停(大小写不敏感):
- 你的指定:面板里手动指定的百科条目(别名)。它永远优先。
- 供应商身份:用配置的
baseURL主机的可注册域(token.sensenova.cn→sensenova.cn)去比对 models.dev 每个供应商的api地址;再退到apiKeyEnv与供应商的env、以及路由名 /displayName与该供应商的id/name。 - 精确 id:本地模型 id 与百科 id 完全相同。
- 网关命名空间:本地 id 形如
opencode-zen-free/beam-free时,把首段当上游网关名去找对应供应商(opencode)里的beam-free。 - 模型名:去掉
provider/前缀与:变体后缀后比对(google/gemma-4-31b-it:free→gemma-4-31b-it)。
为什么先认供应商:models.dev 里 9000 多条模型中有 1200 多个 id 重复出现(同一个模型被几十家转售),其中约 900 个的上下文档位互相冲突(glm-5.3 有 32 条记录、5 种上下文)。只按名字全局比对时,常用模型要么永远「参数不一致」补不上,要么抄了别家网关的数字。认准自己那条供应商记录后,冲突基本消失。
同一组候选里有多条记录时,逐字段求值:只有所有记录都一样的字段才会被写;对不上的字段跳过,并在「有分歧」里列出候选。
填什么
| 字段 | 条件 | 写入 |
|---|---|---|
contextWindow |
本地缺失(不是正整数),命中的记录无分歧 | 百科值 |
maxTokens |
同上 | 百科值 |
input |
百科标注支持图片,本地未声明 image | [text, image];百科只写 text 时不写 |
name |
本地为空 | 百科名 |
reasoningEfforts / 供应商 reasoning |
—— | 永不写 |
其它字段(compat、modelOverrides、headers …) |
—— | 原样保留 |
不会覆盖任何你手填的值;只 set providers.<供应商>.models,值为空或没有可补字段时不发写入。
未匹配怎么办
本地网关(http://127.0.0.1:…)或转售商自造的 id(workbuddy/…、zcode/…)通常查不到。在「未匹配」里:
- 搜索指定:输入关键词(默认填当前 id),从结果里选一条作为依据。这条映射存进缓存(
aliases),下次自动用它。 - 忽略:这条不再出现在未匹配里(存进
ignored),可随时恢复。
指定的条目之后如果从百科消失,这条会回到未匹配并标注「之前指定的百科条目已不存在」。
数据
| 路径 | 内容 |
|---|---|
~/.dsh/models-dev.json |
百科缓存(供应商身份 + 模型事实)、别名、忽略列表 |
llm-pi-ai 的 providers.*.models |
被补全的模型字段 |
若设置了 DSH_HOME,缓存写到 $DSH_HOME/models-dev.json。
无缓存或超过 7 天会在启动后后台刷新;缓存结构版本变更时旧缓存自动视为过期并重拉。拉取失败沿用旧缓存;没有缓存时面板显示「尚未更新」并禁用补全,不阻断任何操作。写入会带当前 settings 修订号,冲突时按最新配置重算一次再写;仍冲突则提示「配置刚被改动,请重试」。
从 0.2.x 升级
- 旧缓存会因结构版本变更自动重拉,不需要手点「更新」。
- 旧版本写进配置的
reasoningEfforts和供应商reasoning不会被改动。 想清理请到宿主的模型编辑里改(那是你的数据,插件不擅自删)。 - 面板里的「档位未写明」「疑似旧版本代填,请确认」两个分区随档位逻辑一起删除;供应商默认档位只在「不支持」时以一行红字提示(只读)。
- 不再有任何后台写入:补全只在你点按钮时发生,因此不会让宿主的模型编辑弹窗保存时报「配置已过期」。建议在编辑弹窗关闭时点补全。
更新日志
0.3.0 · 只补百科事实,不再写思考档位
重写了匹配与写入范围,净删约 2500 行。
- 不写思考档位:不写
reasoningEfforts,也不写供应商的reasoning。DSH 0.2 起宿主自己就有推理等级编辑(开关 + 每档 API 值 + 校验),插件只把百科对该模型的说法显示成一行只读提示。 - 不写占位默认值:未匹配的模型不再被填上 262144 / 32768 这类数字。留空本来就由宿主的
defaultContextWindow/defaultMaxTokens回退,写死只会把「不知道」伪装成「知道」。 - 先认供应商,再认名字:用
baseURL可注册域、apiKeyEnv、路由名先锁定 models.dev 里对应的那家,再做精确 id、网关命名空间(opencode-zen-free/beam-free→opencode的beam-free)、裸名比对。本机 49 个模型里「参数不一致」从遍地降到 0,「未匹配」从 9 条降到 6 条。 - 只能在面板里手动触发:删掉设置变更时的后台自动补全,所以不会再让宿主的模型编辑弹窗保存时报「配置已过期」。写入带修订号,冲突时按最新配置重算一次。
- 未匹配有出口:搜索百科条目手动指定(存成别名,失效会回到未匹配)或直接忽略,不再往下塞默认值。
- 卡片按钮挪位:「补全缺失字段 · N」移到「编辑」前面,并借用宿主的按钮样式;没有可补字段的供应商不再显示按钮;点击后按钮原地显示结果 4 秒。
- 面板删掉「档位未写明」与「疑似旧版本代填,请确认」两个分区。供应商默认档若不被某些模型支持,仍以一行红字提示(只读)。
0.2.4 · 保持未声明不再被写回
「保持未声明」的模型不再被自动补全写回档位;参数对不上的字段留空,不再抄第一条记录。
0.2.2 / 0.2.3 · 按模型名匹配,不再被 :free 变体后缀带偏
摘要不再挤成一行;待确认项可以确认保留。
开发
npm test # 63 项,纯 Node,不联网
npm install # 额外装 react / react-dom / jsdom,解锁卡片布局测试
npm test # 64 项
服务端测试覆盖百科解析(含 reasoning_options 的 null 档位、供应商 api 地址、旧缓存判过期)、匹配级联(供应商身份、命名空间、别名与失效别名、逐字段一致/分歧)、填充规则(只写缺失且信息量增加的字段、永不写思考、未匹配不写默认值、未知字段原样保留),以及路由(/status /refresh /fill /alias /ignore /search)、方法与来源校验、修订冲突重试。
test/card.test.mjs 在 jsdom 里用真实 React 挂载卡片、套上宿主卡片的结构,验证那颗按钮确实落在「编辑」前面的动作行里、点击后原地显示结果、卸载时不留下孤儿节点。缺 devDependencies 时它跳过而不是失败。
License
MIT
链接
同类插件
Ebony-Vinyl/dsh-our-free-model★ 47046
为 dsh 接入免费模型车道(含 DeepSeek V4.1 Flash、Kimi K3 等),无需登录、注册或填写 API Key,并提供本地 OpenAI 兼容网关、降级路由与用量看板。
dingminhua/dsh-connect-workbuddy★ 721
将本机登录的 WorkBuddy 模型接入 DSH,支持逐模型图片输入开关、账号切换,以及带每日签到的只读积分概览。
V1ki/dsh-plugin-subscriptions★ 521
把 ChatGPT(Codex)、Claude、Grok 订阅当作 DeepSeek Harness 的 LLM 提供方:设置页登录、模型目录、用量展示,以及 image_generate、video_generate 与 x_search 工具。
Mars-Sea/dsh-commandcode-provider★ 441
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
Alice-Marx/dsh-model-router★ 405
为 DeepSeek Harness 规划有依赖的工作包,将其分配给已配置的模型 API 或支持的厂商 CLI,并提供费用预览。
FishBottle7/opencode2dsh★ 365
将 OpenCode Zen 免费模型接入 DeepSeek Harness,无需 API Key。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。