Codex 桌面版无法定位 CLI 的排查与解决

1. 问题现象

启动 Codex 桌面版时出现类似错误:

Unable to locate the Codex CLI binary. Set CODEX CLI PATH or ensure the Electron resources include bin/codex.

中文含义是:桌面应用找不到 Codex CLI(二进制命令行程序)。应用因此无法启动终端代理、执行项目任务等依赖 CLI 的功能。

2. 问题原因

Codex 桌面版由 Electron(Windows 桌面应用框架)启动。启动时它需要找到随应用打包的 CLI:

Electron 安装目录\resources\codex.exe

应用通常会自动搜索该文件;如果自动搜索失败,就会提示设置 CODEX_CLI_PATH

常见原因包括:

  1. 应用更新后安装目录版本号变化,旧缓存仍指向旧目录。
  2. 通过旧快捷方式、开发版或残留安装目录启动了桌面应用。
  3. 应用包安装不完整,resources\codex.exe 确实不存在。
  4. CODEX_CLI_PATH 未设置、设置为空,或指向了错误文件。
  5. PowerShell 命令在括号内部被错误换行,导致变量没有成功赋值。

3. 推荐解决方法(PowerShell)

3.1 自动获取当前安装路径

完全退出 Codex 后,打开 PowerShell。下面每条命令请整行粘贴执行,不要在括号中间手动换行:

$cli = (Get-AppxPackage -Name OpenAI.Codex).InstallLocation + '\app\resources\codex.exe'

3.2 检查 CLI 是否存在

Test-Path $cli

预期结果:

True

如果返回 False,说明安装包中没有该文件,应直接执行“修复/重置/重新安装”(见第 5 节)。

3.3 设置用户级环境变量

[Environment]::SetEnvironmentVariable('CODEX_CLI_PATH', $cli, 'User')
$env:CODEX_CLI_PATH = $cli
Write-Host $env:CODEX_CLI_PATH

其中:

  • 第一条把变量持久保存到当前 Windows 用户环境变量中;
  • 第二条让当前 PowerShell 进程立即拥有该变量;
  • 第三条打印最终路径,便于确认设置成功。

设置完成后重新启动 Codex。若仍未生效,注销 Windows 账户并重新登录,因为已经运行的桌面程序不会自动读取新环境变量。

4. 验证环境变量

重新打开 PowerShell 后执行:

[Environment]::GetEnvironmentVariable('CODEX_CLI_PATH', 'User')

输出应为当前版本的完整路径,并以以下文件结尾:

\app\resources\codex.exe

也可以检查当前应用包路径:

Get-AppxPackage -Name OpenAI.Codex | Select-Object Name, Version, InstallLocation

5. 如果仍然无法启动

按以下顺序处理:

  1. 打开“设置 → 应用 → 已安装的应用 → Codex → 高级选项”。
  2. 点击“修复”,完成后重新启动 Codex。
  3. 如果无效,点击“重置”,然后再次设置 CODEX_CLI_PATH
  4. 仍无效时卸载 Codex,并从 Microsoft Store 重新安装最新版。
  5. 从开始菜单重新启动新安装的 Codex,不要使用旧桌面快捷方式。

重新安装或升级后,WindowsApps 目录中的版本号可能改变;此时重新执行第3节命令即可自动取得新路径。

6. 为什么不要直接复制或手动运行该文件

C:\Program Files\WindowsApps 是 Microsoft Store 应用的受保护目录。直接在普通 PowerShell 中运行其中的 codex.exe 可能出现“Access is denied”,这不代表应用内的 CLI 损坏,而是 Windows 的目录权限和应用容器限制。

不要手动复制、修改或删除 WindowsApps 中的文件,也不要把 CODEX_CLI_PATH 指向 npm 生成的 codex.cmd。桌面版应优先使用应用包内的 resources\codex.exe

7. PowerShell 换行注意事项

下面这种写法容易触发“表达式中缺少右 ‘)’”:

$cli = Join-Path (Get-AppxPackage -Name
OpenAI.Codex).InstallLocation 'app\resources\codex.exe'

原因是 PowerShell 在括号表达式尚未完整结束时,将换行解析成了不完整语句。建议使用第 3.1 节的单行写法,或者显式使用反引号续行。

8. 原理简述

Codex 桌面应用
      │
      ├─ 自动查找 Electron\resources\codex.exe
      │
      └─ 查找失败时读取 CODEX_CLI_PATH
                         │
                         └─ 指向随应用安装的 codex.exe

CODEX_CLI_PATH 是一个用户级 Windows 环境变量。桌面应用启动时读取它,并将其作为 CLI 的绝对路径;使用绝对路径可以绕过 PATH 搜索和旧安装目录缓存问题。

9. 官方参考

Logo

葡萄城是专业的软件开发技术和低代码平台提供商,聚焦软件开发技术,以“赋能开发者”为使命,致力于通过表格控件、低代码和BI等各类软件开发工具和服务,一站式满足开发者需求,帮助企业提升开发效率并创新开发模式。

更多推荐