dsh-model-tabs:爲大模型目錄增加兩級 Tab 的 DSH 客戶端插件

前言

DeepSeek Harness(DSH)的 composer 輸入框裏,模型選擇器已按提供商分組,但仍是一層平鋪列表:所有提供商的模型排在同一個可滾動區域。本機若掛接多個提供商、模型條目上百,要找某一個模型,往往得滾過多個分組頭和大量行。官方在模型數超過一定規模時會出搜索框,搜索能縮小範圍,但分組頭仍在同一長列表裏,視覺負擔不小。

社區插件 dsh-model-tabs(維護者 LINGTIAN303,分類:客戶端)在列表上方增加提供商 Tab + 模型系列 Tab 兩級篩選;目錄較小時保持官方平鋪樣式,不強行加控件。下面按「是什麼 → 能力 → 安裝 → 用法 → 設置與注意」說明。

這是什麼

dsh-model-tabs 是純客戶端 DSH 插件:接管 composer 輸入框裏 conversation.input.model 槽上的模型按鈕 UI(不是 /model 斜槓命令那條 popupSelect 鏈路)。它在模型菜單頂部疊兩層 Tab,先選提供商、再選該提供商下的模型系列,並與原有搜索框疊加過濾。模型系列的劃分規則內置一套最長前綴表,也可在設置頁用 JSON 覆蓋或追加。

插件在 SkillHub 目錄 與 GitHub 發佈;當前 package 版本 0.1.1,許可證 MIT。

核心功能

兩級 Tab 怎麼分

層級 分類鍵 作用
一級 Tab provider.id 先收斂到一個提供商
二級 Tab 模型名前綴族 再收斂到該提供商下的一個系列

兩級 Tab 都保留「全部」,默認停在「全部」,不打字也能先縮小範圍;搜索框仍可用,與 Tab 條件疊加。

系列識別流程(README 原文邏輯):

  1. 歸一化模型名:取最後一個 / 之後 → 去掉 : 後綴 → 小寫
  2. 按最長前綴命中內置規則表(如 deepseek、glm、kimi、qwen 等)
  3. 未命中則取模型名前導字母串;仍無則歸入「其他」

作者說明採用「最長前綴」而非「純首 token」,是爲避免同廠商模型被拆成多個單例族(例如部分 Qwen、hy 系列命名)。

僅在大目錄時啓用 Tab

與官方「模型夠多才出搜索」的思路一致,小目錄不出現 Tab 條,保持官方平鋪:

閾值 默認值 含義
totalModels 20 模型總數超過即啓用
perProvider 30 或單個提供商模型數超過即啓用

兩項閾值可在設置頁調整。

與官方選擇器的關係

  • 視覺對齊官方 ModelSelect.module.css 的尺寸、token、焦點環、菜單定位等,換裝後儘量不跳變。
  • /model 命令不受影響:走官方 commandUi,第三方暫無注入點。
  • 註冊槽時使用 priority: -1000(single 槽按 priority 升序取第一個);與同樣接管該槽的其他插件同一時刻只能留一個,見下文兼容說明。

其它能力

  • 菜單內保留與原生相近的推理等級相關 UI(與部分第三方 effort 插件存在替代關係)。
  • 無 Host 服務、無 HTTP、不讀寫文件;配置僅存瀏覽器 localStorage。
  • sessions / modelDirectories 不可用時靜默退讓,官方選擇器照常顯示。

安裝與啓用

任選一種方式安裝(<你的 profile> 換成實際 profile 名),裝完需重啓 DSH:

# 方式一:npm(預構建,免構建腳本授權)
dsh plugin --profile <你的 profile> add dsh-model-tabs

# 方式二:GitHub 源碼
dsh plugin --profile <你的 profile> add github:LINGTIAN303/dsh-model-tabs

# 方式三:本地開發
dsh plugin --profile <你的 profile> add "link:<本插件目錄絕對路徑>"

也可在 DSH 設置 → 插件 裏安裝。

適用環境與權限:插件以當前 DSH 進程在瀏覽器側運行;安裝前建議瀏覽倉庫源碼與 LICENSE。聲明兼容 DSH 0.2.1-rc.5(作者本機實測)、0.2.2-rc.1;package.json 要求 Node.js >= 22.12.0,DSH >= 0.2.1-rc.2 < 0.3.0。官方 README 寫明可能有破壞性變更,若官方調整 conversation.input.model 契約,插件需跟進。

典型用法

  1. 打開對話,點輸入框左下角模型按鈕。
  2. 進入模型列表;若目錄達到閾值,頂部出現提供商 Tab。
  3. 點某一提供商後,出現該提供商下的系列 Tab。
  4. 兩級均可點「全部」回到上一級全集。
  5. 鍵盤:← / → 在 Tab 間切換,↑ / ↓ 移動模型高亮,Enter 選中,Esc 逐級返回。

設置頁

路徑:設置 → 「模型 Tab」。

可配置:

  • 總模型數、單提供商模型數兩個生效閾值。
  • 族規則 JSON(overrides 數組):同 key 覆蓋內置規則,新 key 追加。示例:
[
  { "key": "deepseek", "label": "DeepSeek", "prefixes": ["deepseek", "ds"] },
  { "key": "my-family", "label": "我的系列", "prefixes": ["myfam"] }
]

提供「填入模板」「保存」「恢復默認」。配置鍵:localStorage['dsh-model-tabs.config']。

與其它插件、安全與兼容

槽位衝突(README 表格摘要):

插件 影響
@ayanehana/dsh-reasoning-effort 其推理等級 UI 不再上屏;功能由本插件推理等級面板覆蓋
@txc2768651338/dsh-effort-slider 依賴 DOM 掃描,找不到匹配行時無效果
dsh-client-ui-deepseek-model-label-1017 角標子槽與原生聲明衝突,可能拋 SlotOwnershipError

若需保留上述某一插件對模型按鈕的裝飾,可卸載本插件,只保留對方。

安全方面:不寫全局 CSS 選擇器(類名帶 mt- / mts- 前綴),不碰官方 /model 彈窗相關選擇器。

結尾

dsh-model-tabs 針對 composer 裏模型很多、滾動翻找成本高的情況,用可配置閾值的兩級 Tab 做分層收斂,小目錄仍用官方列表。族規則可 JSON 擴展,純前端存儲、無 Host 依賴。

  • 目錄頁:https://www.skillhub.cn/plugins/LINGTIAN303/dsh-model-tabs
  • 源碼與 README:https://github.com/LINGTIAN303/dsh-model-tabs

DSH 生態強調「一切皆插件」;SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係。選用插件時以倉庫說明與自身環境爲準即可。

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

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

小夜