makecindy / makecindy/cindy

两个供应商提供同名模型时,聊天框模型 pill 始终显示同一家来源,不跟随显式选择

Open
#4,123 1 comment 0 reactions 0 assignees View on GitHub
bug
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.