Web 游戏预检遇到 browser-ws-failed 时应清理 AGC 残留 Edge 并自动恢复 #584
Reference in New Issue
Block a user
Delete Branch "%!s()"
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?
问题概述
用户从首页点击“做游戏”时,Web 创建预检可能在浏览器启动阶段失败:
web-preflight-browser-failed:启动浏览器失败:browser-ws-failed该错误会直接阻断项目创建和首次生成。由于该链路是首次创作前置门禁,当前处理方式风险较高。
已确认事实
browser-ws-failed表示 Edge 进程在输出:DevTools listening on ws://127.0.0.1:<port>/devtools/browser/...之前退出、关闭 stderr 或发生 stderr 读取错误。
该错误码目前是合并分类,不能单独证明根因一定是残留 Edge 进程。
当前启动失败路径会尝试回收本次启动的浏览器进程树,并且已经对 WS/CDP 类瞬态失败增加了一次独立临时 Profile 重试。
现有
sweep_stale_browser_processes只在预检开始前执行一次,并受以下限制:ga-browser-*临时目录;因此,启动失败后仍可能存在未被确认回收的 AGC 无头 Edge;当前重试路径没有显式执行一次失败触发的定向清理。
期望行为
当 Web 预检遇到
browser-ws-failed、WS timeout 或 CDP connect failure 时:安全约束
不得直接执行全量
taskkill /IM msedge.exe,不得影响:只能清理能够通过以下信息证明归属的进程:
无法证明归属时必须保守跳过,并返回可行动诊断。
验收标准
browser-ws-failed后验证自动恢复成功;ready;相关代码
apps/ai-game-creator-shell/src-tauri/src/browser/process.rsapps/ai-game-creator-shell/src-tauri/src/browser/sweep.rsapps/ai-game-creator-shell/src-tauri/src/environment_check/web_creation.rsapps/ai-game-creator-shell/src/features/app-shell/homeWebPreflight.tsapps/ai-game-creator-shell/src/features/app-shell/useHomeProjectCreation.ts严重性
高优先级阻断问题。该故障发生在“做游戏”入口的不可重试前置链路,会阻止用户创建项目和开始首次生成。
原因与方案
当前 Web 游戏预检的浏览器启动失败路径虽然会尝试终止本轮 root,但不会在 WS/CDP 瞬态失败后执行一次独立的隔离 Profile 恢复;Windows 也没有在清理前确认 Job 子树已完全退出,因此 browser-ws-failed 可能直接阻断首次创建,残留进程还可能拖住临时 Profile。
本次计划:
修改范围:apps/ai-game-creator-shell/src-tauri/src/browser/process.rs、sweep.rs、Web 预检错误投影、首页预检展示和对应定向测试/文档。
实现与验证进度
已完成提交 2579c04c4:
已验证:浏览器定向 Rust 测试 51 passed;Web 预检 Rust 测试 9 passed;真实浏览器健康 smoke 1 passed;首页预检 Vitest 6 passed;AGC typecheck、编码检查、文档索引检查、Rust fmt 和 git diff --check 通过。