Windows 版 Codex 更新后,有一种比较特殊的启动故障:
点击 Codex 图标后,桌面上没有任何窗口,但打开任务管理器,却能够看到一个或多个ChatGPT.exe进程正在运行。
有时候结束进程重新打开仍然如此,甚至重启 Windows、修复应用或者重新安装之后,问题依然可能再次出现。
这种情况和普通的“程序完全无法启动”并不一样。
因为从 Windows 的角度来看,应用进程其实已经创建,只是在初始化过程中没有成功进入正常的界面阶段。
近期在 Codex 的公开 issue 中,也出现了多起类似 Windows 启动异常,包括:
ChatGPT.exe已运行但没有界面;MainWindowHandle一直为0;%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node下不断生成.staging-*;runtime 中部分文件没有被完整复制;
node.exe存在,但node_repl.exe等文件缺失。没有 Codex 主窗口;
没有托盘图标;
有时放一段时间又突然能打开。
如果你也遇到了类似问题,可以按照下面的顺序检查。
1. 先确认是不是“进程启动了,但窗口没创建”
右键开始菜单,打开Windows PowerShell(管理员)打开 PowerShell,执行:
Get-Process ChatGPT -ErrorAction SilentlyContinue | Select Id, ProcessName, Responding, MainWindowHandle, MainWindowTitle如果看到类似:
Responding : True MainWindowHandle : 0 MainWindowTitle :说明ChatGPT.exe已经运行,但 Codex 主窗口没有成功创建。
这类情况通常不是程序完全没启动,而是卡在后续初始化过程。
顺便检查一下安装包状态:
Get-AppxPackage -Name OpenAI.Codex | Select Name, Version, Status, InstallLocation正常情况下:
Status : Ok如果这里已经异常,可以优先尝试 Windows 的“应用修复”或者重新安装。
2. 更新之后打不开,可以先关闭 Codex 内置 updater
部分启动问题可能和 Codex 自己的更新初始化有关,有时会卡在 Codex 自己的 in-app updater / Sparkle 更新逻辑上。
可以尝试关闭 Codex 内置 updater,让 Microsoft Store 负责更新。
可以执行:
[Environment]::SetEnvironmentVariable( "CODEX_SPARKLE_ENABLED", "false", "User" )检查是否生效:
[Environment]::GetEnvironmentVariable( "CODEX_SPARKLE_ENABLED", "User" )如果返回:
false说明已经设置成功。
设置后建议重新登录 Windows 或者重启电脑一次。
不过需要注意:
如果这样操作之后依旧打不开,就继续检查下面这个问题。
3. 重点检查 cua_node 是否一直卡在.staging-*
打开目录:
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node如果里面出现大量类似:
.staging-xxxxxxxxxxxxxxxx-AbCd12 .staging-xxxxxxxxxxxxxxxx-XyZ789 .staging-xxxxxxxxxxxxxxxx-KLm456而且每启动一次 Codex,就会多出一个新的.staging-*文件夹,那么很可能是 Codex 自带的cua_noderuntime 没有复制完整。
可以使用:
$root = "$env:LOCALAPPDATA\OpenAI\Codex\runtimes\cua_node" Get-ChildItem $root -Directory -Force | Where-Object { $_.Name -like ".staging-*" } | Sort-Object LastWriteTime -Descending | Select-Object -First 5 | ForEach-Object { [PSCustomObject]@{ Name = $_.Name NodeExe = Test-Path "$($_.FullName)\bin\node.exe" NodeRepl = Test-Path "$($_.FullName)\bin\node_repl.exe" Manifest = Test-Path "$($_.FullName)\manifest.json" } }如果经常看到:
NodeExe : True NodeRepl : False Manifest : False基本可以判断:
runtime 只复制了一部分,Codex 每次启动都在重新尝试,但一直无法完成。
4. 手动复制完整 runtime
先关闭 Codex:
Get-Process ChatGPT -ErrorAction SilentlyContinue | Stop-Process -Force找到 Codex 当前安装目录:
$pkg = Get-AppxPackage OpenAI.Codex $src = Join-Path $pkg.InstallLocation "app\resources\cua_node"然后从.staging-*文件夹名称里找到当前 runtime ID。
例如:
.staging-8e7585fc8f35ed57-AbCd12那么 runtime ID 就是:
8e7585fc8f35ed57注意,不同 Codex 版本的 ID 可能不同,不要直接照抄。
创建目标目录:
$dst = "$env:LOCALAPPDATA\OpenAI\Codex\runtimes\cua_node\8e7585fc8f35ed57" New-Item -ItemType Directory -Force -Path $dst | Out-Null然后执行:
& xcopy.exe "$src\*" "$dst\" /E /I /H /Y /G这里比较关键的是:
/G它可以处理部分受保护或加密来源文件复制到普通目标目录时的问题。
复制完成以后检查:
[PSCustomObject]@{ NodeExe = Test-Path "$dst\bin\node.exe" NodeRepl = Test-Path "$dst\bin\node_repl.exe" Manifest = Test-Path "$dst\manifest.json" }正常应该全部为:
True True True然后重新打开 Codex 即可。
最后总结
如果 Windows Codex 更新后出现:
任务管理器里有 ChatGPT.exe 但是桌面没有任何窗口可以重点检查两个地方:
CODEX_SPARKLE_ENABLED以及:
%LOCALAPPDATA%\OpenAI\Codex\runtimes\cua_node尤其是当cua_node目录里不断出现新的.staging-*,同时node_repl.exe或manifest.json缺失时,很可能就是 runtime 部署失败。
这种情况下,比起不断卸载重装,直接检查并修复cua_node往往更有效。
另外不建议随意修改:
C:\Program Files\WindowsApps的所有权和权限,通常没有必要,而且容易引入新的 Windows Store 应用问题。