在 Windows 上使用 ChatGPT 桌面应用与 Codex
Windows 版安装、原生沙箱与 WSL2 的取舍、编辑器与集成终端设置、该装哪些开发工具,以及 PowerShell 执行策略、Git 检测、CODEX_HOME 共享这几个真实会遇到的问题。
适用平台
- ChatGPT 桌面应用(Windows)
官方文档怎么说
Windows 版 ChatGPT 桌面应用支持 worktrees、定时任务、Git 功能、内置浏览器、文件预览、插件和技能等核心工作流。
ChatGPT desktop app for Windows它使用 PowerShell 和 Windows 沙箱原生运行在 Windows 上,也可以配置为在 WSL2 中运行。
ChatGPT desktop app for Windows命令行安装方式为 winget install --id 9PLM9XGG6VKS -s msstore。
ChatGPT desktop app for Windowsagent 在 PowerShell 中运行时支持原生 Windows 沙箱,在 WSL2 中运行 agent 时使用 Linux 沙箱;要在任一模式下应用沙箱保护,需要在发送消息前选择 composer 下方的 Ask for approval。
ChatGPT desktop app for Windows官方警告以 full access 模式运行 Codex 意味着它不受项目目录限制,可能执行导致数据丢失的非预期破坏性操作。
ChatGPT desktop app for Windows可以选择 Open 的默认应用(如 Visual Studio、VS Code 或其他编辑器),并按项目覆盖该选择;已经为某项目从 Open 菜单选过其他应用时,该项目级选择优先。
ChatGPT desktop app for Windows集成终端可选 PowerShell、Command Prompt、Git Bash 或 WSL;该变更只对新的终端会话生效。
ChatGPT desktop app for Windows默认情况下应用使用 Windows 原生 Codex agent,即在 PowerShell 中执行命令;需要从 WSL 文件系统添加项目时可以点击 Add new project 或按 Ctrl+O,然后在文件资源管理器窗口中输入 \\\\wsl$\\。
ChatGPT desktop app for Windows若继续使用 Windows 原生 agent,官方建议把项目存放在 Windows 文件系统上,并在 WSL 中通过 /mnt/<drive>/... 访问,这比直接从 WSL 文件系统打开项目更可靠。
ChatGPT desktop app for Windows要让 agent 本身在 WSL2 中运行,需在 Settings 中把 agent 从 Windows native 切换为 WSL 并重启应用,变更在重启前不生效。
ChatGPT desktop app for WindowsWSL1 支持到 Codex 0.114;从 0.115 起 Linux 沙箱改用 bubblewrap,不再支持 WSL1。
ChatGPT desktop app for WindowsWindows 应用使用与 Windows 原生 Codex 相同的 Codex home 目录,即 %USERPROFILE%\\.codex。
ChatGPT desktop app for Windows需要 Codex 以提升权限运行命令时,应以管理员身份启动 ChatGPT 桌面应用本身,Codex agent 会继承该权限级别。
ChatGPT desktop app for Windows
Windows 版不是"精简版"
先澄清一个常见顾虑:Windows 版 ChatGPT 桌面应用支持的是核心工作流,官方列出的包括 worktrees、定时任务、Git 功能、内置浏览器、文件预览、插件和技能。
它原生运行在 Windows 上,使用 PowerShell 和 Windows 沙箱,也可以配置为在 WSL2 中运行。
安装可以走 Microsoft Store,也可以走命令行:
winget install --id 9PLM9XGG6VKS -s msstore
企业环境下的安装与更新有单独的部署文档。
第一个决策:agent 跑在哪
这是 Windows 上最重要的一个配置项,因为它决定命令在什么环境里执行。
默认:Windows 原生 agent。 命令在 PowerShell 中运行,使用原生 Windows 沙箱。即便如此,应用仍然可以在需要时通过 wsl CLI 处理位于 WSL2 中的项目。
可选:WSL2。 打开 Settings,把 agent 从 Windows native 切换为 WSL,然后重启应用——官方特意强调,变更在重启前不生效。项目在重启后应保持原位。
一个版本相关的事实要记住:WSL1 支持到 Codex 0.114。从 0.115 起 Linux 沙箱改用 bubblewrap,因此不再支持 WSL1。
还有一点容易混淆:集成终端和 agent 是分开配置的。你可以让 agent 跑在 WSL,同时终端仍然用 PowerShell;也可以两边都用 WSL,看你的工作方式。
沙箱:有一个必须手动做的动作
这一条值得单独强调,因为它不是默认自动生效的。
官方原文的意思很明确:agent 在 PowerShell 中运行时支持原生 Windows 沙箱,在 WSL2 中运行时使用 Linux 沙箱;要在任一模式下应用沙箱保护,需要在发送消息给 Codex 之前,选择 composer 下方的 Ask for approval。
配套的警告也不含糊:以 full access 模式运行意味着 Codex 不受你的项目目录限制,可能执行导致数据丢失的非预期破坏性操作。官方建议保留沙箱边界,用 rules 做定向例外;或者根据你的审批与安全配置,把审批策略设为 never,让 Codex 在不请求提升权限的前提下尝试解决问题。
项目放在哪个文件系统上
这是 Windows + WSL 组合里最容易踩坑的地方,官方给了明确建议。
如果你打算继续用 Windows 原生 agent:把项目存放在 Windows 文件系统上,并在 WSL 中通过 /mnt/<drive>/... 访问。官方直说这比直接从 WSL 文件系统打开项目更可靠。
确实需要从 WSL 文件系统添加项目时:点击 Add new project 或按 Ctrl+O,在文件资源管理器窗口中输入 \\wsl$\,然后选择你的 Linux 发行版和目标文件夹。
相关的一个已知问题:从 \\wsl$ 打开的项目可能检测不到 Git。官方给的最可靠的变通办法,正是上面那条——把项目放在原生 Windows 盘上,在 WSL 中通过 /mnt/<drive>/... 访问。
配置你的开发环境
默认编辑器 —— 为 Open 选一个默认应用,比如 Visual Studio、VS Code 或其他编辑器。可以按项目覆盖这个选择;如果你已经为某个项目从 Open 菜单选过别的应用,那个项目级选择优先。
集成终端 —— 视你装了什么,选项包括 PowerShell、Command Prompt、Git Bash 和 WSL。注意这个变更只对新的终端会话生效:如果已经开着一个集成终端,重启应用或开一个新对话,新的默认终端才会出现。
开发工具 —— 官方列出 Codex 配合得最好的几样,以及它们各自的用处:
- Git —— 驱动桌面应用里的评审面板,让你检查或回退改动。
- Node.js —— agent 常用来更高效地完成任务。
- Python —— 同上。
- .NET SDK —— 想构建原生 Windows 应用时有用。
- GitHub CLI —— 驱动应用里 GitHub 相关的功能。
用 winget 一次装齐:
winget install --id Git.Git
winget install --id OpenJS.NodeJS.LTS
winget install --id Python.Python.3.14
winget install --id Microsoft.DotNet.SDK.10
winget install --id GitHub.cli
装完 GitHub CLI 之后运行 gh auth login,应用里的 GitHub 功能才会启用。需要其他 Python 或 .NET 版本,把包 ID 换成对应版本即可。
三个会真的遇到的问题
PowerShell 执行策略挡住命令。 如果你以前没在 PowerShell 里用过 Node.js 或 npm 这类工具,或者 Codex 为你创建了 PowerShell 脚本,可能会看到类似这样的报错:
npm.ps1 cannot be loaded because running scripts is disabled on this system.
常见修复是:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
官方同时建议在更改策略之前先查阅微软的执行策略指南,了解细节和其他选项。
需要提升权限。 如果你需要 Codex 以提升权限运行命令,正确做法是以管理员身份启动 ChatGPT 桌面应用本身——安装后在开始菜单里找到应用,选择"以管理员身份运行",Codex agent 会继承该权限级别。
WSL 里的 CLI 不共享登录状态。 Windows 应用使用与 Windows 原生 Codex 相同的 Codex home 目录:%USERPROFILE%\.codex。如果你还在 WSL 里跑 Codex CLI,那个 CLI 默认使用 Linux 主目录,因此不会自动共享配置、缓存的认证或会话历史。两条解决路径:
- 把 WSL 的
~/.codex与%USERPROFILE%\.codex在文件系统上同步。 - 或者在 WSL 中把
CODEX_HOME指向 Windows 的 Codex home:
export CODEX_HOME=/mnt/c/Users/<windows-user>/.codex
想在每个 shell 里都生效,写进 WSL 的 shell 配置文件,比如 ~/.bashrc 或 ~/.zshrc。
本地环境脚本
如果你的本地环境用的是 npm 脚本这类跨平台命令,可以为所有平台保留一份共享的 setup 脚本或 actions。需要 Windows 专属行为时,再创建 Windows 专属的 setup 脚本或 actions。
有一个执行位置的区别值得记住:actions 在你的集成终端所用的环境中运行,而本地 setup 脚本在 agent 环境中运行——agent 用 WSL 就是 WSL,否则是 PowerShell。
实际操作
- 安装 ChatGPT 桌面应用;命令行方式为在 PowerShell 中执行 winget install --id 9PLM9XGG6VKS -s msstore。
- 决定 agent 运行在哪里:默认 Windows 原生(PowerShell + Windows 沙箱),或在 Settings 中切换为 WSL 并重启应用。
- 在发送消息前选择 composer 下方的 Ask for approval,以应用沙箱保护。
- 设置默认编辑器(Open 菜单)与集成终端(PowerShell / Command Prompt / Git Bash / WSL)。
- 安装常用开发工具:Git、Node.js、Python、.NET SDK、GitHub CLI。
- 安装 GitHub CLI 后运行 gh auth login,以启用应用中的 GitHub 功能。
Windows 步骤
- 安装:winget install --id 9PLM9XGG6VKS -s msstore
- 开发工具:winget install --id Git.Git、winget install --id OpenJS.NodeJS.LTS、winget install --id Python.Python.3.14、winget install --id Microsoft.DotNet.SDK.10、winget install --id GitHub.cli(需要其他 Python 或 .NET 版本时改成对应的包 ID)。
- PowerShell 执行策略报错(例如 npm.ps1 cannot be loaded because running scripts is disabled on this system)时,常见修复是 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned;更改策略之前请先查阅微软的执行策略指南。
- 需要提升权限时,在开始菜单找到应用并选择以管理员身份运行。
- 与 WSL 共享配置和登录状态:把 WSL 的 ~/.codex 与 %USERPROFILE%\.codex 同步,或在 WSL 中设置 export CODEX_HOME=/mnt/c/Users/<windows-user>/.codex(想在每个 shell 生效就写进 ~/.bashrc 或 ~/.zshrc)。
手机步骤
使用案例
- 在 Windows 上第一次装好并配置 Codex 开发环境。
- 项目在 WSL 里,需要决定 agent 用原生还是 WSL,以及项目该放在哪个文件系统上。
- 排查 npm 脚本被 PowerShell 执行策略挡住的问题。
常见错误
- 在 Settings 里把 agent 切成 WSL 之后不重启应用。官方明确说明变更在重启前不生效。
- 用 Windows 原生 agent,却把项目直接放在 WSL 文件系统里。官方建议项目放在 Windows 文件系统上,在 WSL 中通过 /mnt/<drive>/... 访问。
- 没装 Git 就期待评审面板能用。
- 直接用 full access 图省事。官方对此有明确的数据丢失警告。
- 以为在 WSL 里跑的 Codex CLI 会自动共享 Windows 应用的配置和登录状态。
常见问题
- 原生 Windows 还是 WSL2,怎么选?
- 默认是 Windows 原生 agent,命令在 PowerShell 中运行,使用原生 Windows 沙箱;应用仍然可以在需要时通过 wsl CLI 处理位于 WSL2 中的项目。想让 agent 本身跑在 WSL2 里,在 Settings 中把 agent 从 Windows native 切换为 WSL 并**重启应用**。注意 WSL1 支持到 Codex 0.114,从 0.115 起 Linux 沙箱改用 bubblewrap,不再支持 WSL1。
- 项目放在哪个文件系统上?
- 如果你打算继续用 Windows 原生 agent,官方建议把项目存放在 Windows 文件系统上,并在 WSL 中通过 /mnt/<drive>/... 访问——这比直接从 WSL 文件系统打开项目更可靠。确实要从 WSL 文件系统添加项目时,点击 Add new project 或按 Ctrl+O,在文件资源管理器窗口中输入 \\\\wsl$\\,然后选择你的 Linux 发行版和目标文件夹。
- 沙箱怎么才算真的生效?
- 官方写得很直接:agent 在 PowerShell 中运行时支持原生 Windows 沙箱,在 WSL2 中运行时使用 Linux 沙箱;**要在任一模式下应用沙箱保护,需要在发送消息前选择 composer 下方的 Ask for approval**。
- npm 在 PowerShell 里报"running scripts is disabled"怎么办?
- 这是执行策略问题,官方说明如果你以前没在 PowerShell 里用过 Node.js 或 npm 这类工具,或者 Codex 为你创建了 PowerShell 脚本,就可能遇到。常见修复是 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned;官方同时建议在更改策略之前先查阅微软的执行策略指南了解细节和其他选项。
- WSL 里的 Codex CLI 能和 Windows 应用共享登录状态吗?
- 不会自动共享。Windows 应用使用 %USERPROFILE%\\.codex 作为 Codex home,而 WSL 里的 CLI 默认使用 Linux 主目录。要共享,官方给了两条路:把 WSL 的 ~/.codex 与 %USERPROFILE%\\.codex 在文件系统上同步,或者在 WSL 中设置 CODEX_HOME 指向 Windows 的 Codex home。
官方来源
这些是本教程对照核验的官方页面。需要厂商的原始措辞时请直接查阅。
- ChatGPT desktop app for Windows
https://learn.chatgpt.com/docs/windows/windows-app.md