zai-org / zai-org/feedback

[Bug] 3.10.2 (macOS arm64) 同族多 provider 同名模型:切换通道后旧会话报"模型已不可用",子代理模型绑定写死通道不跟随切换

Open
#452 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

priority: P2
Dominant language
No language data
Stars
22
Forks
1
PR merge metrics
No merged PRs in 30d

Description

环境

  • ZCode Desktop 3.10.2,macOS(Apple Silicon)
  • 模型通道:bigmodel family 下同时启用三个 provider:builtin:bigmodel(API Key)、builtin:bigmodel-coding-plan(Coding Plan)、builtin:bigmodel-start-plan(Start Plan),三者模型名完全相同(GLM-5.3 / GLM-5.3-Flash / GLM-5-Turbo)

问题概述

同族多 provider 并存且模型同名时,模型身份解析有三处体验问题(推测同一根因:模型选择按 providerId + modelId 成对存储,但 UI 与默认行为没有把 provider 归属暴露给用户):

  1. 模型选择器不区分 provider 归属。三个通道的模型在下拉里名字完全一样,用户无法知道所选条目属于哪个通道;切换 family 选中通道后,同名选择实际指向了另一个 provider 的模型。
  2. 切换通道后旧会话恢复失败。旧会话保存的 qualified model id(如 builtin:bigmodel/GLM-5.3)在切换后的注册表中解析不到,resume 报错「当前会话使用的模型已不可用,请从当前模型列表中选择一个可用模型后继续」,用户感知为"选了 Flash 没生效,自动变回 5.3"或"无法选模型"。日志中可见切换窗口期推送给 workspace 的 provider registry 一度为空(providerCount: 0),以及「历史 session 模型已不可用,拒绝按默认模型恢复」。
  3. 子代理模型绑定写死 provider,不跟随 family 切换,且计费跟绑定走agents-state.jsonbuiltInModelOverridescustom:<providerId>:<modelId> 形式钉死当时通道。主会话切到 API Key 通道后:① 绑定不迁移,自然预期是"切换通道后子代理跟随新通道的同名模型";② 无任何 UI 提示绑定仍指向旧通道;③ 子代理流量计费跟随绑定而非当前选中通道——主会话在 API Key、子代理却持续消耗 Coding Plan 额度,用户不可见也不可控。

复现步骤

  1. 同族配置两个 provider(如 API Key + Coding Plan),模型名相同;
  2. 会话 A 在通道 X 下选择 GLM-5.3-Flash 并对话;
  3. 在设置中把 family 选中通道切换到通道 Y;
  4. resume 会话 A → 报「当前会话使用的模型已不可用」;此时新建会话的同名选择会解析到通道 Y;
  5. 查看子智能体模型绑定 → 仍指向通道 X;派发子代理时额度从通道 X 扣减。

期望行为

  • 模型选择器在多 provider 同名时展示归属(分组或后缀),选中值可见通道;
  • 子代理绑定提供「跟随当前通道/默认」选项,或在 family 选中通道变化时提示迁移既有绑定;
  • provider 切换完成后,旧会话给出一次性、可一键迁移的提示,而不是直接拒绝恢复;
  • 消除切换窗口期的空 registry(providerCount: 0)状态。

实际行为

  • resume 报错 当前会话使用的模型已不可用,请从当前模型列表中选择一个可用模型后继续。resolveRuntimeModelForV4 FAIL,2026-09-01 单日 18 条,时间与通道切换操作窗口吻合;停止切换后不再出现)
  • 子代理绑定保持旧通道并静默按旧通道计费。

(日志引用已去除会话 ID、凭证与账号信息。)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the provider switch with same-named models and inspect agents-state.json, the workspace provider registry, and the resolveRuntimeModelForV4 failure. Check the model selector and resume flow against the reported behavior. Done means provider ownership is visible, old sessions have a migration path, sub-agent bindings can follow the selected channel, and the registry does not become empty during switching.

Written by the indexing model from the issue text.

Assessment

Tech stack
macos
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.