前言¶
在 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 以确保最佳体验。