Update the desktop version, approved bilingual release notes, and synchronized English and Chinese feature matrices for the 0.12.0 candidate. Release preparation now runs local tests, type checks, and lint without a local production build, then requires the main-branch CI build before tagging. The package matrix uses a native Windows arm64 runner and validates managed Python on every target without adding extra license files to the desktop package.
7.5 KiB
工具执行环境功能进度
文档信息
| 项目 | 内容 |
|---|---|
| 文档类型 | 功能进度 |
| 状态 | 已实施,发布候选 CI 验收中 |
| 版本 | 0.4 |
| 日期 | 2026-09-02 |
| 关联入口 | 工具执行环境 |
当前结论
本机工具执行环境的生产链路已经进入源码。“能力与工具”现在显示 Skills、MCP、
工具执行环境 三个真实 Tab;Main 统一解析托管或自定义 Node/Python,并把不可变 PATH
快照应用到新启动的本机 Runtime 与 stdio MCP。Windows x64 已完成真实托管 Node 和原生
地址托管 Python 安装验证。
六个 OSS 镜像对象已发布并公开回读验证。托管 Python 继续按需下载,Desktop 发行包不额外
带入许可证文件。标准六平台打包任务已改用目标架构原生 Runner,并在打包前执行托管 Python
的真实安装、SSL、pip 和 venv 探针;0.12.0 候选仍需通过这组 CI 才能完成对应跨平台验收。
已完成
设置、迁移和界面
- Shared 严格设置、候选、诊断、进度、IPC 和 Preload 契约。
- Application Settings v10;全新用户默认托管环境和原生地址。
- v1-v9 分别执行真实 Node/Python 3 探测的一次性迁移;无有效候选时选择托管环境。
- 用户/系统 PATH、活动 venv/Conda、
CONDA_ENVS_PATH、Conda/pyenv/nvm 和常见安装 位置,以及已保存自定义路径候选的规范化、去重、版本及架构诊断。 - 自定义解释器保存前真实验证;无效新选择不持久化,已保存失效路径不回退。
- “自定义环境”始终可进入;不隐式采用首个候选,取消文件选择不改设置,验证错误在 对应工具卡内显示。
- “能力与工具”统一入口及三个水平 Tab,MCP 原内层页签保持不变。
- 工具下载源、Node.js、Python、候选、诊断、安装进度、取消和删除界面。
- 工具卡只展示真实工具诊断;未接入具体能力证据前不显示固定的能力依赖占位状态。
- 使用
PageTabs、应用通知、就地操作错误、删除确认和具名进度条。
托管 Node 与进程注入
- 使用 Electron-as-Node 提供
node,使用同一 Node 和打包 CLI 提供npm、npx。 - 自定义 Node 只使用同安装位置且验证成功的 npm/npx,不与托管 CLI 混用。
- 每次配置生成不可变 shim 目录;已有进程继续持有原 PATH,新进程读取新快照。
- OpenCode、Continue、DeepSeek Harness 和本机通用/精选 stdio MCP 接收工具 PATH。
- 工具 PATH 不修改
process.env,不进入普通终端或远程 Host。 - 解释器探针使用过滤后的环境,不接收模型凭据、GoodBuddy 或 Factory 内部变量。
托管 Python
- 锁定 CPython 3.13.15 的 Windows/macOS/Linux x64/ARM64 六平台目录、大小和 SHA-256。
- 用户选择的原生地址或 OSS 镜像在任务开始时冻结,同一次任务不回退。
- HTTPS、重定向 Host、大小、SHA-256、取消和部分文件清理。
- NuGet ZIP 与 Astral TAR 的 payload 限定、路径穿越防护、展开上限和安全链接处理。
- GoodBuddy-owned 暂存安装、发布、失败清理、更新保留和删除。
python、python3、pip同源,pip固定使用所选 Python 的-m pip。- 发布前真实验证 Python 3.13.15、架构、标准库、SSL、pip,并创建和执行临时 venv。
- 取消恢复原状态且不显示为安装失败;退出时取消并等待安装清理。
待完成验收
- 发布六个平台/架构的字节完全相同 OSS 镜像对象并公开回读校验。
- 确认托管 Python 保持按需下载,Desktop 发行包不额外带入许可证文件。
- Windows ARM64、macOS x64/ARM64、Linux x64/ARM64 原生 CI 安装、SSL、pip、venv 探针;工作流已接线,等待
0.12.0候选运行结果。 - 最低 Windows/macOS/glibc 支持矩阵和 Windows NuGet 签名核验。
- 真实 JavaScript/Python SKILL 成果及 Node/Python stdio MCP 调用。
- 自定义 Node/Python 在产品 UI 中的真实选择和任务执行。
- 更新或删除托管 Python 时,使用现有本机 Runtime/MCP 生命周期协调受影响进程。
当前阻塞项
- 当前机器只能原生验证 Windows x64。其余五个平台必须由对应原生 CI 执行,不能用本机 mock 代替。
已验证证据
2026-09-02 完整实现
-
发布准备确认不把按需下载的托管 Python 许可证文件加入 Desktop
extraResources、解包 校验或 Portable ZIP 必需文件,避免该额外资源改变现有编译和打包路径。 -
六平台打包矩阵在
npm ci后先断言 Runner 架构,再执行GOODBUDDY_RUN_LIVE_TOOL_ENVIRONMENT=1的托管 Python 安装探针;Windows arm64 改用windows-11-vs2026-arm原生 Runner。发行资源与目录聚焦测试47/47通过。 -
npm run typecheck通过。 -
npm run lint通过。 -
npm run build通过,Main、Preload 和 Renderer 生产 bundle 成功。 -
工具环境聚焦测试通过:契约、设置迁移、解析/shim、服务、下载、解压、安装、IPC、 Preload、Runtime/MCP 注入、Renderer 和发行资源校验。
-
Windows x64 真实托管 Node:Electron Node
24.18.0、npm11.19.0、npx11.19.0。 -
GOODBUDDY_RUN_LIVE_TOOL_ENVIRONMENT=1真实下载官方 NuGet、校验摘要、解压、安装并 验证 CPython3.13.15、SSL、pip 和 venv,1/1通过;临时安装已清理。 -
隔离 Electron 生产 bundle 自动化确认三个 Tab 均可见;“诊断全部”显示托管 Node
24.18.0、npm/npx11.19.0。隔离进程和用户数据已清理。 -
第一次全量测试发现 3 个确定性夹具/兼容失败,修复后聚焦复跑
25/25通过。第二次暴露 2 个App.test.tsx设置导航时序问题,修正为按可访问名称点击并等待设置中心。 -
最终
npm test通过:3465通过、51跳过;完整App.test.tsx为157/157通过。 -
使用本机受控 Aliyun 凭据将六个已验证上游工件原样上传到
goodbuddy/tool-artifacts/python/3.13.15/<sha256>/<filename>,总计142,251,693字节。随后从目录中的六个公开 OSS URL 全量下载,逐个验证字节数和 SHA-256,全部一致。 -
修复无候选时禁用“自定义环境”的死路交互,并扩展 venv/Conda/常见安装位置探测; 聚焦 Main/Renderer/Settings 测试
95/95通过,最终npm test为3477通过、51跳过,类型检查、功能文件定向 Lint 和生产构建通过。仓库全量 Lint 当前被并行App.tsx的两个 React Compiler memoization 错误阻塞,与工具执行环境文件无关。 -
隔离 Electron 实机确认“自定义环境”始终可进入,展开和刷新不会保存来源;在 64 项以上 PATH 的机器上优先发现活动
<user>\miniconda3\python.exe,真实诊断为 Python3.13.13 · amd64,刷新后持久设置仍为managed。
2026-09-02 菜单阶段
- 完成“能力与工具”一级菜单及 Skills/MCP Tab,并修复可滚动 Flex 布局将页签压缩为零
高度的问题;加入
flex: 0 0 auto回归约束。
进度维护要求
- 只有真实源码和生产路径完成后才能勾选对应实施项。
- 测试失败时保留未完成状态并记录失败原因。
- 每次更新记录日期、实际命令、结果和外部阻塞。
- 不在本文件复制未来设计,需求变化回写 PRD/UI/技术设计。