前言¶
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 原文邏輯):
- 歸一化模型名:取最後一個
/之後 → 去掉:後綴 → 小寫 - 按最長前綴命中內置規則表(如 deepseek、glm、kimi、qwen 等)
- 未命中則取模型名前導字母串;仍無則歸入「其他」
作者說明採用「最長前綴」而非「純首 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 契約,插件需跟進。
典型用法¶
- 打開對話,點輸入框左下角模型按鈕。
- 進入模型列表;若目錄達到閾值,頂部出現提供商 Tab。
- 點某一提供商後,出現該提供商下的系列 Tab。
- 兩級均可點「全部」回到上一級全集。
- 鍵盤:
←/→在 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 / 幻方無官方從屬關係。選用插件時以倉庫說明與自身環境爲準即可。