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] 日誌確認同步情況。

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

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

小夜