问题与价值
多个 Provider 提供相同模型名称时,模型菜单把它们显示为相同文本。用户难以判断实际选择的服务商/模型 ID,可能选错账户或调用入口。
已复现
给 Composer 两条模型:provider-alpha/a 和 provider-beta/b,两者 name/label 均为 Shared model。打开菜单后两个条目都仅显示该名称,DOM 文本不包含任一 Provider。内部 onClick 使用正确 provider/id;这是身份不可辨识,而非已确认的后端路由错误。
代码
验收
- 同名模型在菜单中可通过可见的 Provider 与必要的 model ID 区分;选中状态也能检查实际身份。
- 辅助技术的可访问名称包含可区分身份,不只依赖图标或颜色。
- 长名称、窄屏、键盘选择不截断掉唯一身份信息。
- 预选模型与已有会话切换都继续使用准确的 provider/id;不更改默认模型、认证或配置持久化。
- 两个 Provider 同名模型的组件和真实浏览器选择回归通过。
建议 P2;这是 #348 的模型选择体验子任务,归入 #455,避免另起一套配置流程。
验证边界
源码基线:d6582f04d00dab7b14180a4dd352963384df8177,本机 Pi 0.85.1、单一 source-installed OpenPI。使用隔离 checkout 加入 React/jsdom 复现探针,bunx vitest run tests/web/app-render.spec.ts 16/16 通过,其中 3 条探针断言当前缺陷行为。未改生产代码、未向模型发送请求、未操作用户真实 Session。这里是组件级复现,不是完整真实浏览器或所有 Provider 的验收。
问题与价值
多个 Provider 提供相同模型名称时,模型菜单把它们显示为相同文本。用户难以判断实际选择的服务商/模型 ID,可能选错账户或调用入口。
已复现
给 Composer 两条模型:
provider-alpha/a和provider-beta/b,两者name/label均为Shared model。打开菜单后两个条目都仅显示该名称,DOM 文本不包含任一 Provider。内部 onClick 使用正确 provider/id;这是身份不可辨识,而非已确认的后端路由错误。代码
model.name。验收
建议 P2;这是 #348 的模型选择体验子任务,归入 #455,避免另起一套配置流程。
验证边界
源码基线:
d6582f04d00dab7b14180a4dd352963384df8177,本机 Pi 0.85.1、单一 source-installed OpenPI。使用隔离 checkout 加入 React/jsdom 复现探针,bunx vitest run tests/web/app-render.spec.ts16/16 通过,其中 3 条探针断言当前缺陷行为。未改生产代码、未向模型发送请求、未操作用户真实 Session。这里是组件级复现,不是完整真实浏览器或所有 Provider 的验收。