前言¶
在 DeepSeek Harness(DSH)裏切換模型,默認輸入框上的選擇器會把各來源下的模型平鋪在同一層菜單裏。來源一多、模型一長,查找和對比都不順手。社區插件 dsh-model-source-picker(維護者 BEAVER-awa,分類:模型推理)把交互改成 Provider-first:第一層放大展示 模型來源,點進來源後再選具體模型與推理強度,和「先定賬號/供應方、再定型號」的習慣更一致。
DSH 生態強調「一切皆插件」;目錄站在 skillhub.cn 等平臺展示社區作品,與 DeepSeek / 幻方無官方從屬關係。下文基於倉庫 README 與 package.json 覈實後的內容編寫。
這是什麼¶
dsh-model-source-picker 是僅作用於 客戶端 UI 的 bundle:佔用 conversation.input.model 座位,替換輸入框旁的模型選擇控件。它不修改 agent 循環、工具或提示詞,數據與 /model 命令共用同一套 modelDirectories 目錄,不自建 catalog、不額外發請求。
| 維度 | 說明 |
|---|---|
| 倉庫 | github.com/BEAVER-awa/dsh-model-source-picker |
| 當前版本(package.json) | 0.1.0 |
| 許可證 | MIT |
| 運行要求 | DeepSeek Harness ≥ 0.2.1(依賴 modelDirectories 服務);Node ≥ 22 |
與原生選擇器的差異¶
下面用表格概括 README 中的對比(事實以倉庫爲準)。
| 原生選擇器 | 本插件 | |
|---|---|---|
| 輸入框觸發器 | 圖標 + 模型名 | 來源名(如 TokenPlan)+ 模型名 + 推理強度 |
| 菜單第一層 | 各來源模型平鋪 | 來源列表(名稱放大、首字母徽標、模型數量、當前來源標記) |
| 菜單第二層 | 無 | 該來源下的模型(可搜索、當前項打勾、描述與推理檔數) |
| 推理強度 | 平鋪在菜單裏 | 第一層獨立一行,或帶推理檔模型的第三層 |
插件以 priority: -20 註冊,可蓋過官方選擇器(0)及 dsh-codex-subscription 的替換版(-10)。
核心交互¶
- 點擊來源 → 進入該來源的模型列表;左上角
‹ 模型來源或Esc返回上一層。 - 模型超過 6 個時出現搜索框,輸入即可過濾。
- 選中即生效,行爲與原選擇器一致:會話運行中仍可切換;被指派的子代理會話不顯示該控件(與原選擇器一致)。
樣式使用主題 token(--dsw-alias-*、--dsw-font-*),隨深淺色切換;菜單 portal 到 document.body,避免被停靠輸入框裁剪。文案走 model-source-picker 命名空間的 locale(中英);註冊失敗會打印 [model-source-picker] ... 並讓位,界面回落到原生選擇器而不崩潰。
安裝與啓用¶
在已配置 DSH CLI 的環境中,README 給出的安裝命令爲:
dsh plugin --profile desktop add github:BEAVER-awa/dsh-model-source-picker
安裝後若界面無變化,在插件管理器裏將 bundle 關掉再打開一次,或重啓應用——這比反覆刷新頁面更能刷新客戶端模塊圖(原因見下文「診斷」)。
注意: 插件隨當前 DSH 進程與用戶配置運行,安裝前請自行審閱 倉庫源碼 與 MIT 許可證,確認符合你的安全與合規要求。
典型用法¶
無需單獨配置文件:啓用 bundle 後,在會話輸入框旁打開模型控件即可。
- 打開控件,在第一層瀏覽或選中 模型來源(可見名稱、徽標、模型數、當前來源標記)。
- 進入第二層,在模型較多時用搜索框篩選,點選目標模型。
- 若模型帶推理檔位,按菜單中的第三層或第一層獨立行調整推理強度。
目錄數據通過 ctx.get('modelDirectories').directoryFor(sessionId) 與官方 store 的 load() / select() 同步,可選列表應與 /model 命令一致。
診斷、關閉與卸載¶
診斷: 作者在 shell.overlay 中註冊了佔位條目 model-source-picker-probe(不繪製 UI),僅用於證明 bundle 已在瀏覽器側加載。可在 Slots 檢查面板查看 shell.overlay 的 occupants 是否包含該項,以區分「模塊未送達」與「註冊被拒絕」。
關閉 / 卸載: 在插件管理器中禁用 bundle dsh-model-source-picker,或刪除 cordis.patch.yml 中對應的 insert 行後刷新頁面,即可回到原生選擇器。
實現要點(供排查參考)¶
- 客戶端邏輯在
lib/client.js;lib/index.js爲 Host 側佔位;cordis.patch.yml插入 bundle 行。 - 動態 client 僅獲得受限 ctx(
get/on/provide/effect),服務均通過ctx.get()讀取並判空,避免靜默不掛載卻難以排查。 package.json中dsh.client爲platform: web、immediately: true。
結尾¶
若你希望在大模型來源較多時 先收窄到某一供應方再選型號,dsh-model-source-picker 用兩級菜單和共用 modelDirectories 的方式,在不動 agent 核心的前提下改寫了輸入框模型選擇體驗。