前言¶
在 DeepSeek Harness(DSH)裏,llm-pi-ai 會爲每個自定義提供商維護一份顯式 models 數組;對話底部的模型選擇器讀的就是這份列表。提供商一多、模型一多,選擇器裏會出現大量暫時用不到的條目,只能在一長串名字裏找。若直接改 YAML 刪掉某條模型,既要動配置、又要記原條目長什麼樣,恢復也不方便。下面介紹的 dsh-model-toggle(維護者 wangnian886)在 設置 → 模型 頁底部增加「模型開關」面板:對每個模型的「隱藏 / 顯示」一鍵操作,隱藏後該模型立刻從對話選擇器消失,需要時再恢復,不必手改 providers 表。
這是什麼¶
dsh-model-toggle 是 DSH 社區插件,分類爲模型推理。它在設置頁的模型區域掛載 UI,針對 profile 裏 config.providers 中的自定義 llm-pi-ai 提供商,爲每個模型提供隱藏或顯示;隱藏不等於刪配置備份,完整模型條目會寫入 profile 目錄下的 dsh-model-toggle.archive.json,顯示時再合併回對應提供商。插件以當前 DSH 進程權限運行,安裝前建議自行查看 GitHub 倉庫 源碼與 MIT 許可證。社區目錄頁:SkillHub 插件頁(獨立站點,與 DeepSeek / 幻方無官方從屬關係)。
核心功能¶
- 設置頁「模型開關」面板:每個自定義提供商的每個模型一行,右側「隱藏」或「顯示」按鈕。
- 對話選擇器聯動:隱藏後該模型立即從對話底部模型選擇器消失;顯示後合併回該提供商模型列表末尾(原順序不保留)。
- 兩道護欄:不能隱藏某提供商的最後一個可見模型(
llm-pi-ai要求每條 route 至少保留一個模型條目);不能隱藏 DSH 當前默認模型——需先在選擇器裏切換到其他模型再隱藏。 - 卸載 / 禁用自動還原:卸載或禁用插件時,會把所有已隱藏模型合併回原提供商;卸載命令也會觸發還原。
- 與 dsh-model-pro 共存:兩者寫同一張 providers 表;模型 Pro 的批量替換可能把已隱藏模型帶回來,以本面板「顯示」狀態爲準重新隱藏即可。
- 邊界:內置 DeepSeek 系提供商無配置面,不在面板中出現;只管理
cordis.patch.yml裏config.providers內的自定義提供商。
安裝與啓用¶
需要 DSH 0.2(@deepseek-ai/dsh-typert-protocol ≥ 0.2.0-rc.1)。插件爲純 ESM JavaScript,無構建步驟。
# 從 GitHub 源安裝
dsh plugin --profile <你的 profile> add wangnian886/dsh-model-toggle
# 或裝預構建的 Release 包(免 allowBuilds 授權,不需要 git)
dsh plugin --profile <你的 profile> add https://github.com/wangnian886/dsh-model-toggle/releases/latest/download/dsh-model-toggle.tgz
--profile 填正在使用的 profile 名(Web GUI 默認 web,本機桌面版爲 desktop)。裝完後刷新網頁,在 設置 → 模型 頁底部應出現「模型開關」面板。
卸載(同時自動還原所有已隱藏模型):
dsh plugin --profile <你的 profile> remove dsh-model-toggle
典型用法¶
- 刷新網頁(客戶端模塊僅在頁面加載時掛載)。
- 打開 設置 → 模型,滾到頁底「模型開關」面板。
- 點擊某行「隱藏」→ 該模型從對話選擇器消失;點擊「顯示」→ 條目按存檔原樣合併回列表末尾。
隱藏當前會話正在使用的模型前,請先把會話切到其他模型。歸檔文件損壞時插件會拒絕一切隱藏操作(fail-closed),面板可能提示存檔錯誤;整份回退可在插件管理裏禁用本插件,還原成功後 dsh-model-toggle.archive.json 會被清空。
機制簡述¶
隱藏時從 llm-pi-ai 的 models 數組摘除條目,完整條目存入 dsh-model-toggle.archive.json(結構 { version: 1, hidden: { [route]: [modelEntry…] } }),不寫 DSH 內置配置分區,以繞開 volatile 鍵與 replace 語義等校驗限制。顯示時按原條目寫回。面板同一時刻只允許一個操作在途,避免併發寫亂序。
故障排查¶
- 面板未出現:確認已刷新網頁;插件管理裏
dsh-model-toggle爲 enabled 且 active。 active Service "modelToggle" is unavailable:宿主側未正確構造ModelToggleRuntime服務實例,屬實現/加載問題,可重載插件或重啓 DSH。settings service is not available:宿主狀態異常,重載插件或重啓 DSH。
結尾¶
若你希望在 DSH Web 設置裏精簡對話模型列表、又保留隨時恢復的能力,dsh-model-toggle 提供按模型粒度的隱藏與顯示,並與卸載還原、默認模型/末模型護欄配合,避免把 route 配成非法空列表。