Skip to content

[Bug] CLI 非 SEA 运行时无法定位 zcode-builtin.json:login 在 OAuth 授权完成后才报「无法定位 CLI ZCode Built-in Provider Config」 #855

Open

Description

@txw778899-netizen

提交前确认 · Pre-submission checklist

  • 我已搜索过现有 issue,确认这不是重复 / I searched existing issues and confirmed this isn't a duplicate.
  • 我已阅读 CONTRIBUTING.md / I've read CONTRIBUTING.md.

问题类别 · Category

账号 / 登录 · Account / Login

涉及的 Agent 框架 · Agent framework

ZCode Agent(自研)

严重程度 · Severity

阻塞使用 · Blocking (无法使用核心功能 / core function unusable)

复现频率 · Reproducibility

必现 · Always

问题描述 · Description

环境:ZCode Desktop 3.14.3(apps/zcode-cli@0.16.9,仓库 HEAD 29628c9),Windows 11 10.0.22631 x64。CLI 以非 SEA 方式运行:node "%LOCALAPPDATA%\Programs\ZCode\resources\glm\zcode.cjs"

现象:login 浏览器 OAuth 授权正常完成后,进程报错退出、凭据未落盘:

Error: 无法定位 CLI ZCode Built-in Provider Config:D:\...\resources\glm\provider\zcode-builtin.json, D:\Users\<user>\AppData\config\provider\zcode-builtin.json

logout / tui / app-server / agent-server 等所有 requiresProviderRuntime() 为 true 的非 SEA 入口同样受影响。桌面应用自身不受影响(它通过 ZCODE_BUILTIN_PROVIDER_CONFIG_FILE / ZCODE_PERSONAL_PROVIDER_CONFIG_FILE 环境变量显式注入路径,绕过了文件查找)。

根因(打包布局与解析候选不匹配)

  • packages/desktop/electron-builder.config.js:626-631:agent JS bundle 打包到 resources/glm,入口为 resources/glm/zcode.cjs
  • packages/desktop/electron-builder.config.js:594:内置 Provider 声明打包到 resources/config/provider/zcode-builtin.json
  • 而 apps/zcode-cli/packages/cli/src/provider-runtime-env.ts:148-152 的候选只有两个:
    1. entryDirectory/provider/zcode-builtin.json → resources/glm/provider/…(不存在)
    2. entryDirectory/../../../../../config/provider/… → %LOCALAPPDATA%\config\…(不存在)

实际文件只需从 resources/glm 上溯 1 级。五个 .. 是开发仓布局(apps/zcode-cli/packages/cli 深度)的假设,与 electron-builder 产物不符。

修复方案

  1. 解析器新增打包布局候选 resolve(entryDirectory, "../config/provider/zcode-builtin.json")(更稳健:从入口逐级上溯查找 config/provider/zcode-builtin.json,上限约 6 级);
  2. 打包对齐:electron-builder 将该文件同时复制到 glm/provider/zcode-builtin.json(命中候选 1),或在 prepare:agent-bundle 阶段直接产出;
  3. login 在打开浏览器前先做 Provider Runtime 预检,失败提前退出,不消耗授权码。

复现步骤 · Steps to reproduce

  1. 安装 ZCode 桌面版 3.14.3(Windows,默认安装路径)
  2. 终端执行 node "%LOCALAPPDATA%\Programs\ZCode\resources\glm\zcode.cjs" login(不注入桌面端的路径环境变量)
  3. 在浏览器完成 OAuth 授权
  4. CLI 报「无法定位 CLI ZCode Built-in Provider Config:…」,~/.zcode/v2/credentials.json 未更新,登录失败

期望表现 · Expected behavior

非 SEA 运行的 CLI 在桌面版安装布局下能定位到 resources/config/provider/zcode-builtin.json;login 在发起 OAuth 前完成 Provider Runtime 预检,失败则提前终止,不浪费用户授权。

实际表现 · Actual behavior

授权完成后报「无法定位 CLI ZCode Built-in Provider Config:<两个候选路径>」,credentials.json 未写入,必须重做整个授权流程(且不修复的话重做仍会失败)。

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

临时规避:把文件复制到入口旁即可恢复(应用更新会重建 resources/glm,需重新复制):

copy "%LOCALAPPDATA%\Programs\ZCode\resources\config\provider\zcode-builtin.json" "%LOCALAPPDATA%\Programs\ZCode\resources\glm\provider\zcode-builtin.json"

Activity

  1. github-actions commented on Sep 28, 2026

    @github-actions

    👋 感谢你的反馈,我们已经收到。

    • 维护者看到后会尽快回复你。
    • 状态保持为 status: 待评估,你可以随时补充信息。
    • 信息不全时我们会打上 needs: 更多信息 标签并 @ 你。

    👋 Thanks — we've received your issue.

    • A maintainer will get back to you as soon as we can.
    • Status stays at status: 待评估 (Triage); feel free to add context.
    • If we need more details, we'll add needs: 更多信息 and ping you.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions