前言¶
DeepSeek Harness(DSH)Web GUI 自帶的模型菜單通常只覆蓋官方或已配置好的服務商。若要在對話裏使用 OpenRouter、硅基流動、自建 OpenAI 兼容網關等列表外的模型,往往需要改 profile 配置或手寫 llm-pi-ai 條目,對日常在 GUI 裏切換模型的開發者不夠直觀。
下面介紹的 dsh-plugin-select-model(維護者 mhxy13867806343)在模型菜單底部增加「添加模型」與「管理已添加模型」入口:在界面裏選服務商、填 Key、從平臺或公共目錄拉模型清單,寫入 DSH 模型服務配置與憑據庫;管理彈窗裏還可以把當前對話切到已添加的模型,並高亮「使用中」的行。當前版本爲 v0.6.0,許可證 MIT。
這是什麼¶
一句話定位:給 DSH Web GUI 的模型菜單加一個出口——在原生推理等級等行之後多一行「添加模型」,點開後用彈窗接入第三方模型並落庫;同菜單下還有「管理已添加模型」,支持選擇、編輯、刪除。
插件由社區維護者 mhxy13867806343 發佈在 SkillHub 目錄頁 與 GitHub 倉庫。源碼需同時包含 Host 入口 index.js 與 UI 本體 client.js,無 npm 依賴。
核心功能¶
模型菜單注入¶
- 在模型根菜單底部(推理等級等原生行之後、帶分隔線)增加「添加模型」一行,樣式克隆原生菜單行,深淺色主題與鍵盤走查與相鄰行一致。
- 用
MutationObserver監聽菜單掛載,只在模型菜單打開時注入;菜單卸載時隨 DOM 消失,插件卸載時再兜底清理。
添加模型彈窗¶
點擊「添加模型」後關閉原生菜單,打開居中面板,包含:
- 第三方服務商網格:OpenAI、Anthropic、Google Gemini、DeepSeek、阿里雲百鍊、智譜、Moonshot、硅基流動、OpenRouter,以及「自定義(OpenAI 兼容)」。
- 字段:API Key、Base URL、模型名稱(可下拉搜索或手輸)。
- 底部:取消 / 添加模型。
模型列表按平臺實時獲取:切換服務商會清空上一平臺的模型選擇,並按協議請求 /models。三條通道按可信度降級:
- 填了平臺 Key → 平臺自己的
/models(瀏覽器直連優先,CORS 受限時走 Host 代理),狀態顯示「平臺實時 · N 個模型」。 - 沒填 Key → OpenRouter 公共目錄按廠商前綴過濾,狀態顯示「公共目錄 · N 個模型」。
- 都拿不到 → 內置常用型號;任何情況都可手動輸入模型 ID。
添加成功後寫入 llm-pi-ai 的 providers.<route>(api / baseURL / 模型列表),API Key 存入 DSH 憑據庫(credentials.set)。Gemini 會自動改用官方 OpenAI 兼容端點;Anthropic 走 anthropic-messages 協議。自定義服務商僅手動輸入,不請求平臺。
管理已添加模型¶
模型菜單在「添加模型」下方還有「管理已添加模型 N 個」。管理彈窗提供搜索、分頁(每頁 5 條),每行可:
- 選擇:調用
remote.session.selectModel,把當前對話切到該模型;成功後彈窗關閉,下一輪對話即用該模型;失敗時按錯誤碼提示(如session/model-unavailable、session/not-found)。 - 編輯:改顯示名 / 模型 ID / 地址,Key 留空則保持不變。
- 刪除:二次確認,同時移除配置與憑據。
當前正在用的模型行會主題色描邊並標「使用中」,按鈕變爲禁用的「已選擇」。高亮來自會話的 modelSelection 投影,刷新頁面或切回對話後仍與真實狀態一致。
Host 側能力¶
index.js 註冊同源路由 /api/select-model/*,用於 CORS 受限時的模型列表代理,以及添加、列出、刪除本插件寫入的 sel- 前綴服務商。模型查詢用的 Key 僅在內存中轉發,不寫日誌、不回顯。
未實現:連通性測試(README 能力表中標記爲未實現)。
安裝與啓用¶
前置條件:DSH Desktop 或帶 Web GUI 的 dsh web profile;倉庫內須同時有 index.js 與 client.js。
推薦:從本機目錄安裝¶
在 DSH 中通過插件管理器安裝,target 爲本倉庫絕對路徑:
plugin_manager({ action: "install_bundle", target: "/絕對路徑/dsh-plugin-select-model" })
裝完後一般無需手動刷新;本地目錄安裝爲軟鏈,客戶端 client.js 改動可走 HMR。若菜單未出現新行,再刷新一次 Web GUI。不要改倉庫內 package.json 或手動往 ~/.dsh/profiles/<profile>/node_modules/ 拷貝,以免卸載殘留。
開發注意:改 index.js(Host 半邊)後需重啓 DSH 纔會加載新模塊;依賴 Host 代理的 Anthropic 等,升級後需重啓纔會實時拉取。
驗證步驟¶
- 插件管理器列表可見「模型菜單 · 添加模型」標題、描述與圖標(來自
locale/*.json與icon.svg)。 - 任意對話打開模型菜單,底部出現「添加模型」。
- 點開彈窗,服務商網格與三個輸入框完整可讀;切換服務商時模型下拉清單隨之變化。
- 填寫 API Key 後,下拉可顯示「來自平臺 · 共 N 個模型」類狀態;選「自定義」則僅手輸。
- 「管理已添加模型」中點「選擇」後彈窗關閉、對話改用該模型;再打開時對應行高亮「使用中」。
- 超過 5 條時出現分頁與搜索;「確定」關閉彈窗。
典型用法¶
- 打開對話 → 模型菜單 → 添加模型。
- 選擇服務商(例如 OpenRouter 或 OpenAI),填寫 API Key 與 Base URL(若需要)。
- 在模型名稱下拉中選擇或搜索模型 ID,點擊 添加模型。
- 關閉並重新打開模型菜單,應出現該服務商分組下的新模型。
- 需要切換當前對話模型時:模型菜單 → 管理已添加模型 → 在某一行點 選擇;Toast 提示後下一輪即使用該模型。
非敏感草稿(服務商、地址、模型名)會保存在 localStorage;文案通過 ctx.locale.register 支持中英文,隨 DSH 語言切換。
適用場景與注意¶
適合誰:經常在 DSH Web GUI 裏換模型、需要快速接入多家第三方 API 或 OpenAI 兼容網關,又不想每次手改 profile 配置的開發者。
權限與安全:插件以當前 DSH 進程權限運行,會向配置的 Base URL 發起請求(含瀏覽器直連與 Host 代理);添加模型時 Key 寫入 DSH 憑據庫。安裝前應閱讀 源碼與 LICENSE,確認路由與憑據處理符合你的環境策略。Host 路由拒絕非 http/https URL,單次模型列表最多返回 500 條。
生態說明:DSH 採用「一切皆插件」思路;SkillHub 爲社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-plugin-select-model 把「接第三方模型」和「在當前對話裏選中它」收進模型菜單的兩條入口:添加時按平臺或公共目錄拉清單並落庫,管理時用 remote.session.selectModel 切換並持久高亮當前模型。需要細節與開發自檢(Client Inspect provider SelectModel)時,以倉庫 README 爲準。
- 目錄頁:https://www.skillhub.cn/plugins/mhxy13867806343/dsh-plugin-select-model
- GitHub:https://github.com/mhxy13867806343/dsh-plugin-select-model