配置、安全与排错

Codex WSL2 安装、配置与常见问题

Codex WSL2 使用教程,说明原生 Windows 与 WSL2 的选择、安装、项目目录、VS Code、代理和连接异常排查。

编辑:Codex Guide 编辑 最后更新:

Codex 可以原生运行在 Windows 的 PowerShell 环境,也可以让代理运行在 WSL2 的 Linux 环境。需要 Linux 工具链、仓库本来就在 WSL2,或原生 Windows 沙箱受策略限制时,再选择 WSL2。

::: tip 当前支持边界 官方文档说明:当前 Codex 的 Linux 沙箱需要 WSL2;WSL1 从 Codex 0.115 起不再支持。桌面应用切换代理环境后需要重启才会生效。 :::

原生 Windows 和 WSL2 怎么选

场景建议环境
仓库在 C:\,主要使用 PowerShell 和 Windows 工具原生 Windows
仓库在 Linux home,依赖 bash、apt 或 Linux 工具链WSL2
需要 Windows 原生沙箱原生 Windows
团队开发环境统一使用 LinuxWSL2
需要最佳 Windows 原生 App 与沙箱体验原生 Windows

不要在同一个项目中频繁切换环境并分别维护两套配置,否则容易出现 PATH、文件权限、换行符和认证状态不一致。

安装 WSL2

以管理员身份打开 PowerShell 或 Windows Terminal:

wsl --install

按 Windows 提示重启,然后检查:

wsl --status
wsl --list --verbose

确认发行版的 VERSION 是 2。如果 WSL 已安装但状态异常,可以先更新:

wsl --update
wsl --shutdown

在 WSL2 内安装 Codex CLI

进入 WSL:

wsl

在 Linux shell 中运行官方安装脚本:

curl -fsSL https://chatgpt.com/codex/install.sh | sh
codex --version
codex

Windows 中安装的 codex 和 WSL 中安装的 codex 是两个运行环境。应分别检查命令路径和版本。

项目应该放在哪里

如果代理本身运行在 WSL2,建议把仓库放在 Linux home,例如:

mkdir -p ~/code
cd ~/code
git clone https://github.com/your/repo.git

长期在 /mnt/c/... 处理大型仓库可能遇到较慢的 I/O、权限或符号链接问题。Windows 可以通过 \\wsl$\<发行版>\home\<用户> 访问 WSL 文件。

如果继续使用 Windows 原生代理,则更适合把项目保存在 Windows 文件系统,再从 WSL 通过 /mnt/<drive>/... 访问。

桌面应用切换到 WSL

  1. 打开 Codex/ChatGPT 桌面应用设置。
  2. 把代理环境从 Windows native 切换为 WSL。
  3. 完全重启应用。
  4. 重新打开项目并确认终端路径。

集成终端和代理环境是两个独立选项。终端显示 WSL 不代表代理一定运行在 WSL,反之亦然。

在 VS Code 中使用

安装 VS Code 的 WSL 扩展后,在 WSL 项目目录运行:

code .

确认 VS Code 状态栏显示 WSL: <发行版>,并在集成终端运行:

echo $WSL_DISTRO_NAME
which codex

如果找不到 Codex,说明它没有安装到当前 WSL 发行版,或安装目录没有加入 WSL 的 PATH

WSL 配置和认证为什么不一致

Windows 原生 Codex 通常使用:

%USERPROFILE%\.codex

WSL 内 CLI 默认使用:

~/.codex

因此两边不会自动共享 config.toml、认证缓存和会话。可以分别配置;确实需要共享时,再按照 Windows 应用官方文档 设置 CODEX_HOME。共享前应理解权限和密钥暴露边界。

WSL 登录失败

  1. 在 WSL 内运行 which codexcodex --version,确认调用的是 Linux 版本。
  2. 明确使用 ChatGPT 登录还是 API Key 登录。
  3. 浏览器登录完成后,确认回调返回的是当前 WSL 中的 Codex。
  4. 检查 WSL 网络和系统时间。
  5. 不要把 Windows 的 auth.json 直接复制到公开或多用户 Linux 环境。

如果 Windows CLI 能登录而 WSL 不能,优先比较两边的网络、CODEX_HOME 和凭据位置,而不是重复注册账号。

WSL 代理不生效

先在 WSL 内单独验证网络,不要只看 Windows 浏览器能否访问:

curl -I https://chatgpt.com
env | grep -i proxy

Windows 系统代理不一定自动传入 WSL。代理地址还要考虑 WSL 的网络模式和监听范围。不要把包含用户名、密码或 API Key 的代理配置粘贴到公开日志。

reconnecting 或环境读取异常

按顺序检查:

  1. wsl --list --verbose 是否显示发行版正在使用 WSL2。
  2. WSL 内 which codexcodex --version 是否正常。
  3. 项目路径是否真实存在于当前发行版。
  4. Windows 与 WSL 是否各自使用了不同配置或 API Key。
  5. 代理是否只在 Windows 生效,WSL 内无法联网。
  6. 更新 WSL 后执行 wsl --shutdown,再重新启动桌面应用。

大型仓库卡顿时,优先把项目从 /mnt/c 移到 ~/code,再比较速度。

Native Windows 和 WSL2 不要混用哪些东西

  • 不要在同一终端里混用 Windows 与 Linux 的 codex 路径。
  • 不要让两个环境同时写同一个配置文件或认证缓存。
  • 不要在 /mnt/c~/code 各保留一份不清楚哪个是最新的仓库。
  • 不要假设 Windows 系统代理、证书和环境变量会自动进入 WSL。

选择一个主环境完成安装、配置和验证;只有确实需要另一套工具链时再切换。

官方参考

参考资料