dsh-model-picker:給 dsh web GUI 換一個雙欄模型選擇面板

前言

用 dsh web GUI 做智能體開發時,模型選擇器是高頻交互點。默認實現是單列長滾動的分組列表,提供商和模型一多,定位一個目標要滾很久,也沒有跨提供商的搜索。DSH 的理念是「一切皆插件」,composer 的模型選擇座位同樣可以由插件頂替。下面介紹的 dsh-model-picker 就是做這件事的。

這是什麼

dsh-model-picker 爲 dsh web GUI 的模型選擇器提供增強面板:左側提供商欄 + 右側模型列表,兩側獨立滾動,支持跨提供商搜索,替代默認的單列長滾動分組列表。由 Sanqi-normal 維護,MIT 許可證,當前版本 1.0.2。

核心功能

  • 左欄按提供商縱向排列,獨立滾動,帶模型計數徽章;右欄顯示當前提供商的模型,同樣獨立滾動——幾十個提供商、上百個模型也能順暢瀏覽
  • 默認選中當前模型所屬的提供商,點擊任意提供商即切換
  • 頂部搜索框跨提供商匹配提供商名 / 模型名 / 描述,大小寫不敏感;結果帶提供商名,點選即切換
  • 保留推理檔位切換(當前模型支持時顯示在底部),以及加載 / 錯誤 / 重試 / 空態
  • 與內置 /model 彈層共享同一份模型目錄(ctx.modelDirectories),任一處切換另一處立即同步,composer 的模型阻塞邏輯不受影響
  • 界面跟隨系統深淺色主題,文案中英文自動切換

工作原理

插件以持久化 bundle 的方式接入:package.json 裏的 dsh.bundle.patch 指向 cordis.patch.yml,由 dsh plugin add 的 reconcile 自動加入 profile 的 dsh.profile.bundles 層。

Client 半(lib/client.js)通過 exports["./client"] + dsh.client 被 web 前端加載,註冊到 composer 的 conversation.input.model 座位(priority -1,頂替默認實現);數據複用內置 ui-model-selection 的 ctx.modelDirectories 每會話目錄(session.models / session.selectModel),不引入第二份狀態——這也是面板和 /model 彈層能即時同步的原因。

Host 半(lib/host.js)是空實現:Node 側 loader 以包根入口導入它,瀏覽器專屬的 lib/client.js 只在 ./client 導出下被 web 端加載,因此 Host 半無網絡請求、無持久化狀態。兩個入口在 exports 中分開聲明:

"exports": {
  ".": "./lib/host.js",
  "./client": "./lib/client.js"
}

安裝與啓用

推薦從 npm registry 安裝,無 git 克隆 / prepare 腳本步驟:

dsh plugin --profile web add dsh-model-picker

也可以從 GitHub 源碼安裝:

dsh plugin --profile web add github:Sanqi-normal/dsh-model-picker

源碼安裝會執行包內 prepare 腳本,如被 pnpm 攔截,把提示的包名加入 profile 的 pnpm-workspace.yaml 的 allowBuilds 後重試。

安裝後重啓 web 服務生效:

pnpm dsh web

環境要求:Node ^22.19.0 || >=24.0.0;peerDependencies 爲 react ^18.2.0、@deepseek-ai/cordis、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-slots。

日常使用

1、打開任意會話,點擊 composer 工具行右端的模型選擇器(發送按鈕左側)。

2、左欄點擊提供商,右欄隨之切換該提供商的模型;右欄點擊模型即選中,當前模型帶 ✓ 標記。

3、頂部輸入關鍵詞,右欄切換爲跨提供商搜索結果;點擊左側任意提供商即退出搜索並切換。

4、當前模型支持推理檔位時,菜單底部出現檔位按鈕(含「提供方默認」)。

適用場景與注意事項

適合在 web GUI 裏維護多個提供商、上百個模型,需要快速瀏覽或搜索切換的場景;也適合希望面板選擇與 /model 彈層保持一致、不引入第二份狀態的場景。

注意以下幾點:

  • 需要 web profile 已裝載 @deepseek-ai/dsh-client-ui-model-selection(web-app 內置,通常已存在);缺失時選擇器座位保持空置,回退安全
  • 動態安裝後需重啓 web 服務生效,與所有 profile bundle 一致
  • 僅影響 composer 的模型選擇座位;/model 彈層保持原樣,但與面板共享同一份當前選擇
  • 插件以當前 dsh 進程權限運行,安裝前建議檢查源碼與許可證

小結

dsh-model-picker 把默認的單列長滾動列表換成雙欄面板加跨提供商搜索,複用內置模型目錄,不引入第二份狀態,Host 半也沒有網絡請求和持久化開銷,屬於安裝即用的界面增強插件。

插件目錄頁:https://www.skillhub.cn/plugins/Sanqi-normal/dsh-model-picker
GitHub 倉庫:https://github.com/Sanqi-normal/dsh-model-picker

(目錄頁爲社區獨立站點,與 DeepSeek / 幻方無官方從屬關係。)

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

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

小夜