dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
按模型名从 models.dev 补全自定义模型缺失的上下文、输出上限、思考档位和图片能力,并列出未匹配模型供手改。
DeepSeek Harness 插件。按模型名从 models.dev 查出客观参数,补进自定义供应商的模型行:
contextWindowmaxTokensinputname(仅在本地为空时)不写思考档位。 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。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/…)通常查不到。在「未匹配」里:
aliases),下次自动用它。ignored),可随时恢复。指定的条目之后如果从百科消失,这条会回到未匹配并标注「之前指定的百科条目已不存在」。
| 路径 | 内容 |
|---|---|
~/.dsh/models-dev.json | 百科缓存(供应商身份 + 模型事实)、别名、忽略列表 |
llm-pi-ai 的 providers.*.models | 被补全的模型字段 |
若设置了 DSH_HOME,缓存写到 $DSH_HOME/models-dev.json。
无缓存或超过 7 天会在启动后后台刷新;缓存结构版本变更时旧缓存自动视为过期并重拉。拉取失败沿用旧缓存;没有缓存时面板显示「尚未更新」并禁用补全,不阻断任何操作。写入会带当前 settings 修订号,冲突时按最新配置重算一次再写;仍冲突则提示「配置刚被改动,请重试」。
reasoningEfforts 和供应商 reasoning 不会被改动。 想清理请到宿主的模型编辑里改(那是你的数据,插件不擅自删)。重写了匹配与写入范围,净删约 2500 行。
reasoningEfforts,也不写供应商的 reasoning。DSH 0.2 起宿主自己就有推理等级编辑(开关 + 每档 API 值 + 校验),插件只把百科对该模型的说法显示成一行只读提示。defaultContextWindow / defaultMaxTokens 回退,写死只会把「不知道」伪装成「知道」。baseURL 可注册域、apiKeyEnv、路由名先锁定 models.dev 里对应的那家,再做精确 id、网关命名空间(opencode-zen-free/beam-free → opencode 的 beam-free)、裸名比对。本机 49 个模型里「参数不一致」从遍地降到 0,「未匹配」从 9 条降到 6 条。「保持未声明」的模型不再被自动补全写回档位;参数对不上的字段留空,不再抄第一条记录。
: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 时它跳过而不是失败。
MIT