修复Mac客户端随包Codex与插件资源缺失 #417
Reference in New Issue
Block a user
Delete Branch "fix/mac-bundled-runtime"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
关联
Refs #406
本 PR 补齐 Mac 客户端的随包运行依赖,是「添加 mac 构建管线」的客户端前置工作;不新增 CI/Jenkins 管线,不自动关闭 Issue。
原因与前后变化
原先只有 Windows 在构建时 stage Codex 与插件资源,运行时的内置 Codex 路径和清单平台也写死 Windows。Mac 虽然能生成约 28 MiB 的 DMG,但依赖开发机全局 Codex,缺少安装后独立使用需要的资源。
本次:
@openai/codex@0.147.0原生包,检查元数据的版本、目标和布局。.app/Contents/Resources/coding-agent/mac-native/查找内置程序,完整性和版本验证后优先使用;保持已有外部安装回退语义。15.0声明(随包 zsh 的实际要求);拒绝把单架构 Codex 资源用于 universal 发布构建。本地测试
.app约 324 MiB,DMG 约 139 MiB;安装包未纳入 Git,也未上传发布。已验证
cargo test --locked --manifest-path apps/ai-game-creator-shell/src-tauri/Cargo.toml --bin genarrative-ai-game-creator-shell agent::codex_cli:: -- --test-threads=1:14 通过,1 个真实认证用例按原配置跳过。node --test apps/ai-game-creator-shell/scripts/build-release.test.mjs:21 通过。node --test apps/ai-game-creator-shell/scripts/cargo-features.test.mjs:2 通过,包含 Windows 默认编辑器 feature。npm run ai-game-creator-shell:typecheck、编码、文档索引、定向脚本 ESLint 和 diff 检查通过。.app构建成功;临时复制品限制 PATH、隔离 HOME 后,内置 Codex、rg、zsh 可启动,正式 AGC 仅被未登录门禁拒绝,app-server 初始化成功,移走 code-mode host 后正式入口拒绝。hdiutil创建并通过完整性校验(Tauri 自带 DMG 包装脚本在本机失败,未掩盖该差异)。最低系统版本声明是在上述用户测试包之后补齐;最终配置门禁和 Rust 定向测试已重跑,尚未重新分发带该声明的 Mac 包。
Windows 待验证(草稿保持)
陶泥儿_0.1.69_x64-setup.exe);最后 Tauri 更新签名因本机未配置TAURI_SIGNING_PRIVATE_KEY未完成,该签名环境问题不纳入本 PR 验证结论。coding-agent/win-x64/文件、清单与插件资源,版本与摘要通过。未覆盖与发布边界
Review 结论:暂不建议合并
发现以下问题,建议修复后再合并:
P1:显式
--target的 macOS 发布链路仍会误用 Windows 渠道文件:
apps/ai-game-creator-shell/scripts/build-release.mjs(约 16-18、331-357、382-390 行)。buildTauriBuildArguments(['--target', 'aarch64-apple-darwin'])可以生成正确的 macOS 参数,但runTauriBuild()、版本读取、产物选择等后续逻辑仍使用默认的releaseTarget=x86_64-pc-windows-msvc。实测 macOS target 参数正确,但隐式渠道仍是dev-win,应为dev-mac。这可能导致 macOS 构建写入 Windows updater endpoint,并在生成更新清单时寻找 Windows
.exe产物。建议让 target 在入口处解析后贯穿构建、渠道选择、版本读取、产物选择和清单生成全链路,并增加显式 macOS target 的回归测试。P2:macOS staging 会分发 Cocos 插件,但没有对应 native adapter
涉及:
apps/ai-game-creator-shell/src-tauri/build.rs(约 313-321 行)apps/ai-game-creator-shell/scripts/cargo-features.mjs(约 20-23 行)apps/ai-game-creator-shell/src-tauri/src/plugin_host.rs(约 940-956、1553-1563 行)macOS staging 会复制 Cocos 插件清单、入口和面板,但默认不启用
cocos-editorfeature。PluginHost 仍可能在 Cocos 项目中展示或启动该插件,后续 RPC 会落到“未知编辑器适配器”。建议明确 macOS 的 Cocos 支持策略:要么补齐 macOS native adapter,要么在 staging/插件发现层屏蔽该插件,避免分发不可用能力。P2:权威更新文档与当前单架构实现冲突
文件:
docs/technical/【技术方案】AGC客户端更新检查与下载-2026-08-31.md(约 78、81、93、130 行)。文档仍要求
universal-apple-darwin,但本 PR 的代码拒绝 universal,仅支持 Apple Silicon/Intel 单架构。请同步更新权威文档,明确当前支持的架构、target、产物命名及 updater manifest 规则,或调整实现与文档保持一致。已验证
node --test apps/ai-game-creator-shell/scripts/build-release.test.mjs:21 passednpm run ai-game-creator-shell:typecheck:通过npm run check:encoding:通过npm run check:doc-index:通过git diff --check:通过尚未验证边界
Windows NSIS 实际构建/安装、macOS GUI/登录/Provider/Cocos 原生桥接尚未验证;此外当前 CI 尚未全部完成,PR 仍为 Draft。
补充验证:Windows 本地构建已成功生成 NSIS 安装包,产物路径为:
apps/ai-game-creator-shell/src-tauri/target/x86_64-pc-windows-msvc/release/bundle/nsis/陶泥儿_0.1.69_x64-setup.exe构建仅在最后的签名步骤停止,原因是当前环境检测到公钥但没有私钥:
这属于本地签名环境配置问题,与本 PR 的代码变更无关;安装包本身已生成。