DeepSeek Harness Plugin

11zld22/dsh-model-info-fill

Stars ★ 5 Category Models & Providers Added 2026-09-07

Fills missing context window, max tokens, thinking levels, and image input on custom DSH models from models.dev, and lists unmatched models for manual edits.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:11zld22/dsh-model-info-fill

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

This plugin publishes its README in Chinese only.

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,只补这一个供应商。

匹配规则

按顺序,命中即停(大小写不敏感):

  1. 你的指定:面板里手动指定的百科条目(别名)。它永远优先。
  2. 供应商身份:用配置的 baseURL 主机的可注册域(token.sensenova.cn → sensenova.cn)去比对 models.dev 每个供应商的 api 地址;再退到 apiKeyEnv 与供应商的 env、以及路由名 / displayName 与该供应商的 id / name。
  3. 精确 id:本地模型 id 与百科 id 完全相同。
  4. 网关命名空间:本地 id 形如 opencode-zen-free/beam-free 时,把首段当上游网关名去找对应供应商(opencode)里的 beam-free。
  5. 模型名:去掉 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

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.