Skip to content

perf(runtime): 复用已验证的健康启动环境 - #1907

Merged
jinghero merged 1 commit into
AUTO-MAS-Project:devfrom
jinghero:perf/bootstrap-environment-reuse
Nov 10, 2026
Merged

jinghero merged 1 commit into
AUTO-MAS-Project:devfrom
jinghero:perf/bootstrap-environment-reuse

Conversation

@jinghero

Copy link
Copy Markdown
Contributor

摘要

  • 运行环境健康时,完整初始化在真实检查后复用现有环境,减少重复准备等待;仅当当前 Runtime 明确公告支持时启用,旧版或未知能力保持原命令。
  • 复用已有 version 查询透传当前 exe 能力,排除旧备份污染,不增加查询进程;保留普通失败重试、重建、锁文件恢复与版本检查失败后的离线回退。
  • 配套 Runtime #34,新版 Runtime 发布后自动生效。

验证

  • 测试对象 e1c3bd942f3a157109e0223cc3d68507b612bee1。初始化、二进制替换、能力识别、更新与后端启动相关 85 项测试通过;Electron 编译、yarn typecheck、yarn format:check、yarn lint、锁定 Ruff 0.16.8 的全仓格式检查及 changelog 检查通过。
  • 已覆盖实际普通重试和锁文件恢复不启用复用、当前/备份能力相反、旧版与非法能力值、检查路径进度完成。pstack 规范与规格独立复审无剩余问题。
  • 配套 Runtime 的 Windows 本机真实 uv 五组交替,健康完整 bootstrap 中位数 7.46 秒 → 3.81 秒。此前两轮分别减少 4.15 秒、5.20 秒,存在网络波动;未将其当作整机启动或首次安装收益。

复核入口与边界

从 frontend/ 执行 yarn test electron/services/runtimeInitializationService.test.ts electron/services/runtimeBinaryService.test.ts electron/services/runtimeBinaryCapabilities.test.ts electron/services/runtimeUpdateService.test.ts electron/services/backendService.test.ts 可复核相关契约。真实 Runtime 副本和故障验收见配套 PR。现有浏览器 @init 流程不覆盖 Electron Runtime 引导,本次未用它代替该链路的证据;未运行账号、游戏或模拟器流程。

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 10, 2026 •

Copy link
Copy Markdown
Codex Review Summary: ✅ Completed

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-10T09:05:20.309497Z e1c3bd9 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions github-actions Bot added 模块: Runtime 按更新日志碎片自动设置 类型: 变更 按更新日志碎片自动设置 labels Nov 10, 2026

Copy link
Copy Markdown
Contributor Author

总体结论:可以合并

AUTO-MAS-Project/AUTO-MAS #1907

这版没有凭 Runtime 版本号猜能力,而是先问当前 exe 自己是否支持,再决定要不要复用健康环境。备份文件也不会抢答,dot酱核对下来没有确认的必须修改项喵。

二进制服务负责读取并透传能力,初始化服务负责选择命令;健康检查与实际环境准备仍由 Runtime 完成,后端是否就绪仍看 supervise 的 running 事件,没有把“准备完成”直接当成“后端启动成功”。

规范

未确认阻断项。能力只接受 version 响应中的布尔 true,属于本轮同步的局部状态;.old 备份查询不覆盖它,恢复或替换当前 exe 后会重新探测。复用了现有版本查询,没有另加探测进程或长期缓存。

初始化结果继续从真实命令完成处记录遥测,没有把进度条补齐算成多次成功。新增测试从公开同步入口进入,隔离进程边界,覆盖了当前/备份能力相反、旧版和非法值等情况;这份夹具确实能检查新增契约,不是只对着源码字符串找答案啦。

规格

未确认阻断项。新参数的启用条件 保留了对齐成功和明确能力确认;普通阶段重试、锁文件恢复不启用,重建仍走 repair。更新流程第 0 步失败后的整条重来,则重新执行正常 bootstrap 的能力判断;此前尚未进入环境准备。版本检查网络失败时继续使用原来的 --if-needed,没有混入新参数。

配套 Runtime #34 在发布本条评论前已合并,参数名与 version 字段也已核对一致。合并状态不代替本机能力判断:旧 Runtime 或未知能力继续走原流程,只有实际运行的 exe 确认支持才启用这条路径。这个兼容边界保留得清楚喵。

验证情况

已读取当前提交的实际 CI 日志:前端 57 个文件、307 项测试通过,包含新增能力识别与初始化用例;Windows pytest 1805 通过、Ubuntu 1766 通过。格式、renderer 类型检查和 Windows 验证包构建通过,构建流程也执行了 Electron 的 build:main 编译。

dot酱仅静态审查并读取 CI,没有自行运行项目或 Runtime,也没有独立实测性能。配套 PR 的耗时数据不能代替本 PR 的真实安装环境验收,更不代表首次安装或整机启动收益。

规范轴 0 项确认问题,规格轴 0 项确认问题。可以合;实际提速仍以支持该能力的 Runtime 和健康环境条件为前提。

—— dot酱把兼容分支也核过敬上 🐾

@jinghero
jinghero merged commit 3bc9ac4 into AUTO-MAS-Project:dev Nov 10, 2026
9 checks passed
@github-actions github-actions Bot mentioned this pull request Nov 13, 2026
3 tasks
ClozyA added a commit that referenced this pull request Nov 13, 2026
## Release v5.9.0-beta.1

由「准备发版」工作流生成。这是唯一允许修改 `CHANGELOG.md` 与版本号的 PR,合并后请手动运行「构建并发布应用程序」。

合并前请在本 PR 里完成:

- [ ] 「本次亮点」够不够:合并前给碎片加 `highlight: true` 就会自动进这一类,现在也可以直接在
`CHANGELOG.md` 新版本段里把条目挪过去
- [ ] 有 3
个提交改了用户可见代码但没带碎片(清单见[运行摘要](https://github.com/AUTO-MAS-Project/AUTO-MAS/actions/runs/43347223103)),若用户可见就在新版本段里补一条
- [ ] 改完运行 `python scripts/changelog.py sync` 并提交

### 体积

- 首行 JSON 2371 / 18000 字符,带 1 个版本段
- 本版 40 条,最长的几条:
- 78 字(变更)【设置】自启与静默启动可独立设置,静默时直接进入托盘,关闭可选退出或托盘,最小化保留任务栏。 (#1928) by
@he0119 by @1w1w11w1
- 76 字(修复)【MAA】MAA 更新失败时统一检查安装健康;资源半更新自动重装,官方本体失败保留标记并提示使用官方修复入口 (#1909)
by @youngslin
- 75 字(变更)【模拟器】ModAVD 全部改由 modavd 命令行控制,移除自带的直控和更新器,不再支持无命令行的旧根目录
(#1918) by @qiyinxi
- 64 字(修复)【主页】调整任务台版本主线的 UI,并让版本更新倒计时更清楚 (#1926) by
@TyrannosaurusGodofWar
- 64 字(破坏性变更)【调度】重构任务调度与范围选择,完善日志恢复、独立触发、队列附加动作及电源收尾。 (#1845) by
@DLmaster361

自 `v5.8.0` 以来的改动:

### ⚠️ 破坏性变更

- 【调度】重构任务调度与范围选择,完善日志恢复、独立触发、队列附加动作及电源收尾。 (#1845) by @DLmaster361

### ✨ 新增

- 【M9A】新增 MAS 登录 B 服:处理隐私协议并选择已保存账号后交给 M9A 运行 (#1882) by @Douya36
- 【ok-ww】支持脚本逐账号或批量切号、显示失败原因并补跑未完成账号 (#1890) by @AthenaHibou
- 【ok-nte】支持按日配置日常计划,并可在详细配置中调整当天任务。 (#1921) by @AthenaHibou
- 【调度】在日志末尾显示预下载方式和进度,支持独立配色与连续渐变(仅公测) by @youngslin
- 【设置】支持调整自定义光标的显示大小。 (#1904) by @Douya36

### 🔧 变更

- 【调度】统一各脚本账号编辑页的页头和基本信息布局 by @Craun718
- 【模拟器】魔改 AVD 改名为 ModAVD,界面、提示和日志统一用新名称 (#1898) by @qiyinxi
- 【模拟器】ModAVD 全部改由 modavd 命令行控制,移除自带的直控和更新器,不再支持无命令行的旧根目录 (#1918) by
@qiyinxi
- 【设置】统一主要页面的标题、间距、卡片层次和日志按钮外观 (#1893) by @1w1w11w1
- 【设置】浅色主题改为中浅灰画布配纯白卡片,补回分隔线与卡片边缘层次 (#1855) by @beichen24a1
- 【设置】自启与静默启动可独立设置,静默时直接进入托盘,关闭可选退出或托盘,最小化保留任务栏。 (#1928) by @he0119 by
@1w1w11w1
- 【Runtime】加快运行环境健康时的启动准备 (#1907) by @jinghero

### 🐛 修复

- 【MAA】MAA 更新失败时统一检查安装健康;资源半更新自动重装,官方本体失败保留标记并提示使用官方修复入口 (#1909) by
@youngslin
- 【MAA】修复保存配置时修改被误判未保存并丢弃的问题 (#1930) by @jinghero
- 【end】MaaEnd 安装异常时统一恢复事务,并安全修复可信身份的损坏本体 (#1913) by @youngslin
- 【HSR】为 M7A 与 SRA 更新中断后的未完成回滚添加用户确认恢复入口 (#1915) by @youngslin
- 【HSR】修复 SRA 使用自建下载站时无法下载安装更新的问题。 (#1945) by @youngslin
- 【bgi】修复正式版安装资源尚未就绪时自动更新失败的问题 (#1901) by @youngslin
- 【ok-ww】修复直接启动游戏时无法覆盖默认资源档位的问题 (#1925) by @AthenaHibou
- 【ok-ww】修复新版脚本启动后不执行每日任务的问题 (#1940) by @AthenaHibou
- 【ok-ww】修复新版启动器不触发游戏更新及停服维护时反复重试的问题 (#1934) by @1w1w11w1
- 【ok-ww】修复鸣潮和异环更新重启后自动切号失败的问题。 (#1933) by @AthenaHibou
- 【ok-nte】修复仅开启任务后关闭时无法关闭游戏及启动器的问题。 (#1920) by @AthenaHibou
- 【BAAH】损坏的托管安装须由用户明确选择官方完整包修复,禁止绕过校验运行 (#1908) by @youngslin
- 【奇想盒】修复后端安装中断后无法自主确认恢复的问题 (#1905) by @youngslin
- 【SRC】修复原生安装中断后无法自主选择安全恢复的问题 (#1906) by @youngslin
- 【主页】调整任务台版本主线的 UI,并让版本更新倒计时更清楚(仅公测) (#1926) by @TyrannosaurusGodofWar
- 【调度】修复停止任务后脚本及更新子进程残留、项目持续占用和结果未保存的问题 (#1892) by @youngslin
- 【调度】统一配置表单、卡片间距与状态颜色,优化队列列宽和配置说明 (#1927) by @AthenaHibou
- 【模拟器】修复启动模拟器时 adb 命令执行不了却只提示超时、看不到原因的问题 (#1894) by @miaojiuqing
- 【模拟器】手动停止任务时不再把 ModAVD 模拟器连同任务一起强制结束 (#1919) by @qiyinxi
- 【工具】修复 MCP 查询全部托管失败及可空参数被错误拒绝的问题 (#1895) by @HarcoChen
- 【设置】修复模拟器管理和调度中心卡片外侧阴影显示不一致 (#1897) by @1w1w11w1
- 【设置】FluxDown 自动识别强制优先选择 MAS 内的文件夹。 (#1948) by @youngslin
- 【更新】统一脚本安装恢复入口及队列结束时的下载异常汇总 (#1916) by @youngslin
- 【Runtime】修复回退旧版后再次升级时无法启动的问题 (#1889) by @jinghero
- 【Runtime】修复后端启动异常退出却被误判为正常结束的问题 (#1929) by @jinghero
- 【Runtime】修复临时启动失败后反复停留在失败页的问题 (#1938) by @jinghero
- 【Runtime】修复初始化时依赖安装已成功却被误报为失败的问题。 by @ClozyA

Co-authored-by: ClozyA <133191303+ClozyA@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

模块: Runtime 按更新日志碎片自动设置 类型: 变更 按更新日志碎片自动设置

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant