前言¶
在 DSH 中,切換模型配置通常涉及手動調整默認模型和子代理設置。dsh-profile-switch 提供了一種機制,通過命名配置管理默認模型、思考級別和子代理覆蓋,這些配置綁定到工作區樹。它統一了 TUI 和 Web 界面的行爲,並在無頭模式下快速失敗。
插件介紹¶
dsh-profile-switch 是一個 DSH 插件,通過主機的 ask-user 流程支持交互式切換命名模型配置。它是一個單一實現,適用於 TUI 和 Web 界面,並設計爲在無頭模式下快速失敗並提供指引。該插件允許保存默認模型(含思考級別)和每個子代理的模型/思考覆蓋,將工作區上下文切換(如 work ↔ personal)變爲一個命令,而非多次 /model 調整。
安裝與啓用¶
安裝前請確保環境滿足以下要求:
* dsh 版本 >= 0.2.0-rc.2
* Node.js 版本 >= 22.19.0
使用以下命令安裝插件:
dsh plugin --profile <your-profile> add @aiwayds/dsh-profile-switch
核心功能¶
- 交互式切換:通過
/profile-switch和/profile-cfg命令在命名配置間切換。 - 多界面支持:一套邏輯同時適配 TUI 和 Web 界面。
- 無設置設計:無需配置頁面,所有數據通過命令行嚮導管理。
- 子代理覆蓋:支持爲特定子代理設置獨立的模型和思考級別。
- 無頭模式容錯:在無頭模式下,命令會快速失敗並給出直接編輯 JSON 文件的指引。
命令與用法¶
插件通過兩個核心命令管理配置:
/profile-switch¶
此命令用於將當前工作區樹綁定到一個命名配置。執行後,配置會按以下層級應用:
1. 實時默認模型:在 TUI 中通過 dsh-tui-pi 橋接實時切換,在 Web 中通過會話控制器切換。若無通道,則記錄爲下次會話的初始選擇。
2. 樹綁定:在工作區根目錄寫入 .dsh-profile 文件(最近的有效文件獲勝),確保該樹下的新會話自動加載該配置。
3. 子代理覆蓋:在運行時動態組合子代理的運行時模型和思考級別,而非寫入靜態文件。
執行此命令時,如果當前樹已綁定,列表中會顯示 (解除綁定此樹) 選項。
/profile-cfg¶
配置嚮導,提供以下操作菜單:
* new:新建配置,輸入名稱,選擇默認模型鏈,並配置子代理覆蓋。
* edit:編輯現有配置,顯示當前值並允許修改。
* save-current:保存當前實時選擇到新配置(或覆蓋現有配置),可選擇快照所有發現的代理基線。
* rename:重命名配置。
* delete:刪除配置(最後一個配置不可刪除)。
在嚮導中,模型選擇採用三步窄化鏈(提供者 → 模型 → 思考級別),選項實時從已安裝的 LLM 適配器讀取。
子代理與存儲¶
子代理覆蓋¶
子代理功能依賴 dsh-subagent-registry 插件。只有安裝了該插件,嚮導纔會顯示代理多選框。此時,你可以爲每個選定的代理單獨設置模型和思考級別。記錄的空值表示顯式繼承(繼承自代理文件),非空值則覆蓋文件中的設置。
存儲文件¶
~/.dsh/model-profiles.json:配置存儲文件。它是一個版本化的 JSON 文件(當前版本 1),包含配置列表和當前激活的配置名。文件具有自愈能力,損壞時會退化到內置的work/personal/other配置。<workspace>/.dsh-profile:樹綁定文件。僅包含一行配置名稱,支持註釋和空行。插件僅在解析爲單行時纔會覆蓋此文件,以防止覆蓋用戶手動裝飾的文件。
關係與兼容性¶
該插件與 dsh-tui-pi 存在深度集成:
* 實時切換:與提供 dshTuiModelSelection 橋接的 dsh-tui-pi 配合時,/profile-switch 可實時切換當前 TUI 會話的默認模型。
* 編輯共存:dsh-tui-pi 的 /agents 管理器也可以編輯相同的存儲文件和模式。
對於 TUI 用戶,建議使用 dsh-tui-pi >= 2.18.1 以確保最佳體驗。