dsh-better-model-selector:按官方目录对齐推理档位与上下文长度

前言

在 DeepSeek Harness(DSH)里换模型、调推理强度,通常走对话栏的模型选择器。若网关是自建反代或第三方中转,配置里的模型 id 往往和 DSH 内置官方目录对不上:推理档位要么被写成统一的五档,要么干脆没有,和实际后端支持的 low/medium/high 等并不一致。上下文窗口若按中转站上报的值写满,还容易出现请求 400——报的窗口比真正能用的更大。

下面介绍社区插件 dsh-better-model-selector(维护者 Asaiuta,分类:模型推理)。它不做端点探测、不发网络请求,而是读取 DSH 安装包内自带的官方 pi-ai 模型目录,逐模型对齐推理档位,并在选择器里增加一行可点的「上下文长度」,方便在默认与若干固定档位之间切换。

这是什么

dsh-better-model-selector 给 DSH 模型选择器补两件事:

  1. 每个模型只暴露官方目录里有的推理等级(例如 sol 认 low/medium/high/xhigh,deepseek 只有 high/max,GPT 系列因型号而异),一档不多给。
  2. 第三行「上下文长度」:默认不改任何窗口配置;需要时再选 262K、524K、1M、2.1M 等,只作用于当前模型。

数据来自本机 DSH 官方目录,DSH 升级后目录会一起更新,新模型一般不必等插件发版,重启 DSH 即可同步。插件以当前 DSH 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证。

装完后的界面

根面板从两行变为三行:

模型          gpt-6.1-sol      ›
推理等级      high             ›
上下文长度    默认              ›     ← 插件增加

点「上下文长度」会整页替换选项(与「推理等级」交互一致),例如:

默认   ✓
262K
524K
1M
2.1M
选项 含义
默认 不写窗口配置,沿用 DSH 的 defaultContextWindow
262K / 524K / 1M / 2.1M 将该模型的窗口设为对应值
更小的值 不列出(低于 DSH 默认无意义)

使用约定:

  • 选中后立即生效,下一次请求按新窗口计算,无需重启 DSH(仅改 UI 时;档位同步在启动时读配置,见下文日志说明)。
  • 只改当前模型;同网关下其他模型不动;仅当某模型的 maxTokens 超过所选窗口时会随之降低。
  • 按 Esc 先退回三行根面板,再按一次关闭选择器。

档位如何确定

插件不维护独立模型表,而是从 DSH 内置官方目录加载(README 示例日志为约 1650 条、43 个 provider 数据文件)。

  • 官方给过哪几档就写哪几档,不推断、不倍增。
  • 同一模型有多条通道记录时,取票数最多的档位签名;平局取交集,交集为空则不改。
  • 名称匹配失败时依次尝试:原 id → 去前缀后缀(如 [free]、z-ai/、-coding)→ 同族借用 → 仍失败则保持原样并在日志点名。
  • 运行期零网络请求。

启动日志示例(用于确认插件在工作):

[better-selector] 官方目录已加载:1650 条(…/app.asar (43 个 provider 数据文件))
[better-selector] 目标配置: …\profiles\desktop\cordis.patch.yml / 档位: catalog / 容量: off
[better-selector] 已更新 34 个模型(启动),备份 cordis.patch.yml.bak-better-selector-…
[better-selector] 官方不给档位的模型 3 个,配置保持原样: ziyong/MiniMax-M3, …

安装与启用

本插件未发布到 npm(npm 上同名包属于另一实现 Khellendros97/dsh-better-model-selector),需从 GitHub 安装。

在 desktop profile 下执行:

cd ~/.dsh/profiles/desktop
pnpm add git+https://github.com/Asaiuta/dsh-better-model-selector.git
# 然后在 package.json 的 dsh.profile.bundles 里加上 "dsh-better-model-selector"
# 重启 DSH

本地调试可改为:

pnpm add link:/path/to/dsh-better-model-selector

SkillHub 等社区目录与 DeepSeek / 幻方无官方从属关系,安装步骤以仓库 README 为准。

配置(可选)

在 cordis.patch.yml 中为插件 better-selector 增加 config,字段均可省略:

- id: better-selector
  config:
    mode: catalog        # 档位:catalog(默认,按官方重写)| fill(只补缺失)
    capacity: off        # 容量:off(默认,不写窗口)| fill(只补缺失)| catalog(按官方重写)
    demote: false        # 官方判定「无档位」时是否写 reasoningEfforts: false
    patchPath: null      # 不填则按 DSH_HOME/profiles/<profile> 推导
    backup: true
    watch: true          # 监听配置变化后自动同步

日常默认值即可。只有希望插件把官方窗口也写入配置时才改 capacity;多数网关撑不住官方报的数值,默认 off 更安全。

典型用法与排查

手选上下文:在模型选择器第三行选 262K 等,仅影响当前模型;选「默认」即移除插件对该模型的窗口写入。

查看同步结果但不写盘:

node bin/sync.mjs --patch <cordis.patch.yml> --dry-run --explain

每行末尾会标注匹配来源:exact / normalized / family。

档位仍不对:确认已重启 DSH(配置与插件在启动时读取);插件只保证与官方目录一致,不能保证中转后端认每一档。

第三行显示「默认」但数值不是 262K:「默认」表示未写窗口项,具体由 DSH 的 defaultContextWindow 决定。

第三行灰字不可点:模型不在用户配置层 models 中,或整份设置为只读;悬停可看原因。

适用场景与注意

适合:使用自定义网关、模型 id 与官方目录接近或可通过规范化/同族匹配;希望选择器档位与 pi-ai 官方一致,并偶尔手动放大上下文窗口的用户。

务必知晓:

  • 官方目录口径不等于网关能力;插件不探测端点,窗口默认不动是刻意设计。
  • 同族借用是推断,不想要可删对应配置行或使用 mode: fill。
  • 仅处理块序列写法的 models;models: [] 的 flow 写法会跳过并报错。
  • compat 字段(如 thinkingFormat)插件不修改,仍需自行配置。

卸载:从 dsh.profile.bundles 移除 "dsh-better-model-selector",执行 pnpm remove dsh-better-model-selector,重启 DSH。已写入 cordis.patch.yml 的档位与窗口会保留;插件曾自动备份最近 5 份 cordis.patch.yml.bak-better-selector-*,需要时可还原。

结尾

dsh-better-model-selector 用本机官方 pi-ai 目录重写每模型推理档位,并在模型选择器增加可切换的上下文长度行,避免「五档全开」和盲目写满窗口。安装前请核对 GitHub 源码与许可证;启用后以 [better-selector] 日志确认同步情况。

羽毛球分组比赛记分
小程序二维码

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

小夜