Appearance
功能规格说明:/model 命令
创建日期:2026-04-16
用户场景与测试 (必填)
用户故事:交互式切换模型(优先级:P1)
作为 CLI 用户,我希望输入 /model 并从列表中选择不同的 AI 模型,以便我可以在不重启的情况下更改后续交互的模型。
验收场景:
- 假设用户输入
/model并按下 Enter,则ModelSelectorUI 组件出现,列出所有已配置的模型。 - 假设模型列表已显示,当用户使用 Up/Down 方向键导航并按下 Enter 时,则所选模型成为活动模型,选择器关闭。
- 假设模型列表已显示,当用户按下 Escape 时,则选择器关闭而不更改模型。
- 假设模型列表已显示,则当前活动模型以绿色标记
(current),光标▶指示焦点项。
用户故事:模型选择在会话中持久化(优先级:P1)
作为 CLI 用户,我希望所选模型在会话的其余时间保持活动状态,以便所有后续 AI 交互使用我选择的模型。
验收场景:
- 假设用户已通过
/model选择了新模型,则ConfigurationService更新活动模型,后续 AI 调用使用新模型。 - 假设用户已选择新模型,则
onModelChange回调触发,以便 UI 和状态栏反映更新的模型。
用户故事:发现可用模型(优先级:P2)
作为 CLI 用户,我希望看到配置中有哪些可用模型,以便我知道可以切换到哪些选项。
验收场景:
- 假设模型在
settings.json(用户和项目级别)和环境变量中已配置,则getConfiguredModels()聚合所有来源,ModelSelector显示它们。 - 假设已配置的模型列表发生变化(如配置重新加载后),则
onConfiguredModelsChange回调触发,模型列表被刷新。
用户故事:Webview 端 /model 菜单切换模型(优先级:P1)
作为 IDE/桌面端用户,我希望输入 /model 后通过列表菜单切换模型(与 CLI 对齐),以便在对话中快速切换当前会话使用的模型,而无需打开设置对话框手工填写模型名。该命令只切换 agent 模型,不涉及 fast model。
为什么是这个优先级:目前 webview 三端无法像 CLI 一样一览并选择已配置的模型(原配置弹窗已随设置页迁移删除),只能通过配置文件手工修改。
独立测试:配置多个模型后,输入 /model、键盘导航选择一个模型并确认,验证该会话后续交互使用新模型。
验收场景:
- 假设存在活跃会话,当用户在输入框输入
/model并确认,则输入框上方弹出模型选择菜单,完整列出所有已配置的模型(来源与 CLI 一致:settings.json 的model标量、models字段全部键、WAVE_MODEL环境变量),列表未返回期间显示加载状态;/model同时出现在斜杠命令弹窗的「系统指令」分组中(VS Code、JetBrains、桌面三端一致)。 - 假设模型菜单已打开,当用户按 ↑/↓ 键时,则高亮项在列表中移动并自动滚动到可见区域;当用户按 Enter 时,则高亮模型成为该会话的活动模型,菜单关闭。
- 假设模型菜单已打开,当用户用鼠标点击某个模型项时,则与按 Enter 效果一致;当用户按 Esc 或点击菜单外部时,则菜单关闭且不更改模型。
- 假设模型列表已显示,则当前活动模型所在行带有勾选图标标记,且默认高亮该项。
- 假设用户通过菜单选择了新模型,则该会话后续 AI 交互使用新模型;选择同时持久化到 settings.json 顶层
model字段(与 CLI/model语义一致),此后新建的会话也使用该模型;fast model 不受影响。 - 假设没有配置任何模型,当用户打开
/model菜单时,则菜单显示空状态提示「没有已配置的模型」,用户可按 Esc 关闭。 - 假设桌面端分屏存在多个并行会话,当用户在一个会话中切换模型时,则仅该会话的 agent 改用新模型,其他进行中的会话不受影响。
- 假设agent 正在流式输出,当用户通过
/model切换模型时,则允许切换,进行中的输出继续使用原模型,新模型自下一次交互生效。
边界情况
- 只配置了一个模型怎么办? 选择器仍然打开但显示单个项。
- 没有配置模型怎么办? 选择器显示空列表或提示没有可用模型的消息。
- webview 切换模型后如何确认当前活动模型?
/model菜单勾选标记显示最新活动模型。