提交前确认 · Pre-submission checklist
问题类别 · Category
账号 / 登录 · Account / Login
涉及的 Agent 框架 · Agent framework
ZCode Agent(自研)
严重程度 · Severity
阻塞使用 · Blocking (无法使用核心功能 / core function unusable)
复现频率 · Reproducibility
必现 · Always
问题描述 · Description
环境:ZCode CLI 0.16.9(apps/zcode-cli@0.16.9,仓库 HEAD 29628c9),Windows 11。
账号事实:BigModel Individual Coding Plan 有效(桌面端经 account:bigmodel-individual-coding-plan 正常使用);Z.AI 侧无对应权益/余额。桌面端 ~/.zcode/v2/coding-plan-cache.json 明确标记 builtin:bigmodel-coding-plan: available、builtin:zai-coding-plan: coding_plan_not_entitled。
现象:zcode login(chat.z.ai OAuth)成功后,CLI 把 defaultModelSelection 写死为 Z.AI 侧的 account:zai-individual-coding-plan/GLM-5.3。此后所有 headless 全新会话都打到 https://api.z.ai/api/anthropic 并失败:
ProviderBusinessError: [1113][Insufficient balance or no resource package. Please recharge.]
providerId: 'account:zai-individual-coding-plan'
同一账号在桌面端一切正常——权益在 bigmodel 侧,CLI 却只往 zai 侧发请求。
同时观察到:登录流程确实在 ~/.zcode/v2/provider_config.json 里为 account:bigmodel-individual-coding-plan 写入了 providerRules(modelOrder 含 GLM-5.3/GLM-5.3-Flash/GLM-5.3-FlashX),但没有为它写入任何 access 凭据——注册表里存在一个「不可选」的 Provider,resolveInitialModelSelection 静默跳过它,回退到写错的 zai 默认。两层机制各自正常,叠加结果必错。
根因(packages/bootstrap/src/auth-login.ts)
-
createOAuthClient(约 :366-373):providerId: options.providerId ?? "zai" —— 登录客户端固定 zai 品牌;
-
persistStandaloneCodingPlanConnection(约 :325-364):按登录品牌解析唯一 Provider 后,无条件持久化默认选择:
await repository.saveConfiguredDefault({ providerId, modelId }); // :355
整条链路没有查询权益状态(哪个品牌真正持有 coding plan)。resolveStandaloneCodingPlanProvider(standalone-account-provider-runtime.ts:67-80)只按 family 从 Built-in Config 选模板,与权益无关。
修复方案
- 登录完成后查询双品牌 coding plan 权益(桌面端已有同款机制,见 ~/.zcode/v2/coding-plan-cache.json 的 entryStatus),从 available 的品牌中选择默认;都可用时 zai 优先(保持现行为),仅 bigmodel 可用时选 bigmodel;
- 或暴露 zcode login --provider zai|bigmodel,双品牌均有权益时交互询问;
- saveConfiguredDefault 前对所选组合做权益断言或轻量预检,避免把必然失败的组合持久化为默认值;
- 一致性:为 account:* Provider 写 providerRules 的同时确保 access 凭据就绪,否则跳过该规则,避免「注册了但永远不可选」的半状态。
相关反馈:#837(CLI 无头执行无法使用 bigmodel.cn Coding Plan)、#839([1113] 报错的使用问题视角)、#842(provider_config.json 校验降级)。本 issue 提供源码级根因与修复方案。
复现步骤 · Steps to reproduce
- 使用「bigmodel 侧有 Individual Coding Plan、zai 侧无权益」的账号执行 zcode login,完成 OAuth
- 检查 ~/.zcode/v2/provider_config.json:config.defaultModelSelection 为 {"providerId":"account:zai-individual-coding-plan","modelId":"GLM-5.3"}
- 执行 zcode -p "hi" → [1113] Insufficient balance or no resource package(api.z.ai)
- 同一账号桌面端正常
期望表现 · Expected behavior
登录完成后,defaultModelSelection 应指向实际持有权益的品牌侧 coding plan;被写入的每个账号 Provider 要么配齐 access 凭据,要么不写入。
实际表现 · Actual behavior
zcode -p "…" 每次报 [1113] Insufficient balance or no resource package(providerId: account:zai-individual-coding-plan);CLI 登录后完全不可用,与桌面端同账号行为不一致。
ZCode 版本 · ZCode version
3.14.3(apps/zcode-cli 0.16.9)
设备 / 系统 / 浏览器 · Device / OS / Browser
Windows 11 Pro 10.0.22631 x64
截图 / 录屏 / 日志 · Screenshots / Recordings / Logs
相关:#837、#839、#842。
提交前确认 · Pre-submission checklist
问题类别 · Category
账号 / 登录 · Account / Login
涉及的 Agent 框架 · Agent framework
ZCode Agent(自研)
严重程度 · Severity
阻塞使用 · Blocking (无法使用核心功能 / core function unusable)
复现频率 · Reproducibility
必现 · Always
问题描述 · Description
环境:ZCode CLI 0.16.9(apps/zcode-cli@0.16.9,仓库 HEAD 29628c9),Windows 11。
账号事实:BigModel Individual Coding Plan 有效(桌面端经 account:bigmodel-individual-coding-plan 正常使用);Z.AI 侧无对应权益/余额。桌面端 ~/.zcode/v2/coding-plan-cache.json 明确标记 builtin:bigmodel-coding-plan: available、builtin:zai-coding-plan: coding_plan_not_entitled。
现象:zcode login(chat.z.ai OAuth)成功后,CLI 把 defaultModelSelection 写死为 Z.AI 侧的 account:zai-individual-coding-plan/GLM-5.3。此后所有 headless 全新会话都打到 https://api.z.ai/api/anthropic 并失败:
同一账号在桌面端一切正常——权益在 bigmodel 侧,CLI 却只往 zai 侧发请求。
同时观察到:登录流程确实在 ~/.zcode/v2/provider_config.json 里为 account:bigmodel-individual-coding-plan 写入了 providerRules(modelOrder 含 GLM-5.3/GLM-5.3-Flash/GLM-5.3-FlashX),但没有为它写入任何 access 凭据——注册表里存在一个「不可选」的 Provider,resolveInitialModelSelection 静默跳过它,回退到写错的 zai 默认。两层机制各自正常,叠加结果必错。
根因(packages/bootstrap/src/auth-login.ts)
createOAuthClient(约 :366-373):providerId: options.providerId ?? "zai" —— 登录客户端固定 zai 品牌;
persistStandaloneCodingPlanConnection(约 :325-364):按登录品牌解析唯一 Provider 后,无条件持久化默认选择:
await repository.saveConfiguredDefault({ providerId, modelId }); // :355
整条链路没有查询权益状态(哪个品牌真正持有 coding plan)。resolveStandaloneCodingPlanProvider(standalone-account-provider-runtime.ts:67-80)只按 family 从 Built-in Config 选模板,与权益无关。
修复方案
相关反馈:#837(CLI 无头执行无法使用 bigmodel.cn Coding Plan)、#839([1113] 报错的使用问题视角)、#842(provider_config.json 校验降级)。本 issue 提供源码级根因与修复方案。
复现步骤 · Steps to reproduce
期望表现 · Expected behavior
登录完成后,defaultModelSelection 应指向实际持有权益的品牌侧 coding plan;被写入的每个账号 Provider 要么配齐 access 凭据,要么不写入。
实际表现 · Actual behavior
zcode -p "…" 每次报 [1113] Insufficient balance or no resource package(providerId: account:zai-individual-coding-plan);CLI 登录后完全不可用,与桌面端同账号行为不一致。
ZCode 版本 · ZCode version
3.14.3(apps/zcode-cli 0.16.9)
设备 / 系统 / 浏览器 · Device / OS / Browser
Windows 11 Pro 10.0.22631 x64
截图 / 录屏 / 日志 · Screenshots / Recordings / Logs
相关:#837、#839、#842。