两个供应商提供同名模型时,聊天框模型 pill 始终显示同一家来源,不跟随显式选择
- Dominant language
- TypeScript
- Stars
- 2.7k
- Forks
- 395
- Avg merge
- 21h 48m
- Merged PRs (30d)
- 776
Description
**提交人**: eanzhao
**客户端版本**: 0.1.73
---
## 现象
当两个已连接的供应商提供同名模型(相同模型 id 与显示名)时,聊天输入框右下角的模型 pill 不跟随用户的显式来源选择:无论在选择器里选哪一家,pill 展示的名称/图标始终是同一家来源的拷贝。
具体场景:同时接入 Kimi 官方预设的两个供应商(中国版 kimi.ai 与国际版 kimi.com),两者都提供 "kimi k3"。在模型选择器里选择 kimi.ai 的那个模型后,pill 仍显示 kimi.com 的那个;反向选择也一样,始终只显示其中一家。
## 已确认的事实
- 新建任务草稿与进行中的任务里都能复现。
- 模型选择面板里的选中高亮是正确的(选中的行就是实际选的那行),选择状态本身没有丢。
- 实际请求按选中的来源正确路由,仅 pill 的显示解析认错了来源。
## 影响
同名模型跨来源时(不同来源价格、计费、额度归属不同),用户无法从 pill 确认当前任务实际使用哪家供应商;显示与事实不符,容易误导。
## 复现步骤
1. 同时连接两个提供同名模型的供应商(例如 Kimi 官方预设 CN + Global,两者都有 "kimi k3")。
2. 在聊天输入框的模型选择器中,显式选择其中一家来源下的该模型。
3. 观察输入框右下角的 pill:展示的名称/图标仍是另一家来源的拷贝,与本次选择无关。
## 调查线索(未经实机验证的推测)
- `apps/desktop/src/renderer/components/new-chat/ModelSelector.tsx` 的 trigger 名称解析(约 3386–3402 行):`currentModel` 先按 `currentProviderId + agentKind` 查 `getModel(routeProvider, modelId, agentKind)`,未命中时兜底为 `visibleModels.find((m) => m.id === modelId)`——这是只按模型 id、不区分供应商的扁平查找,永远命中同一家拷贝。
- 面板选中高亮走的是带 providerId 的 `entryMatchesModelId`(`unifiedModelSelection.ts`),与 pill 显示的解析口径不一致,可以解释「高亮正确、pill 显示错误」的分裂现象。
- 图标解析(`triggerModelIcon`,按解析出的路由来源取条目)可能同样受该兜底路径影响,建议一并核对。
---
## 提交时的任务环境
仅代表提交时快照,不一定是故障环境。OS 来自提交客户端本机,不含 SSH 远端主机;Harness / 模型来自当前任务。与运行环境无关的反馈可忽略本段。
**版本区域**: CN
**OS**: darwin arm64 (25.5.0)
**Harness**: Claude Code
**Model ID**: ` k3 `
**界面语言**: zh-CN
Contributor guide
Research direction
Start in apps/desktop/src/renderer/components/new-chat/ModelSelector.tsx around lines 3386–3402 and trace the currentModel fallback, then compare it with provider-aware matching in unifiedModelSelection.ts. Verify that the pill name and icon follow the explicitly selected provider when two providers share a model ID, for both new drafts and in-progress tasks.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- desktop, frontend
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100