
一教程定位 Codex 能否稳定完成开发任务很大程度上取决于本地开发环境是否统一、可重复、可测试。在 Windows 11 中常见的开发环境问题包括Node.js 安装在 Windows项目却运行在 WSL Git 在 Windows 和 WSL 中分别使用不同账号 项目放在 C 盘Linux 工具访问速度较慢 Docker 同时安装在 Windows 和 WSL命令发生冲突 Python 包全部安装到系统环境 Codex CLI 找不到项目使用的 Node、Python 或 Docker VS Code 打开的不是 WSL 工作区 终端、IDE 和 Codex 使用不同的配置文件本篇的目标是建立一套统一结构Windows 11 ├── ChatGPT 桌面应用 / Codex ├── VS Code ├── Windows Terminal └── Docker Desktop │ │ WSL2 Integration ▼ WSL2 Ubuntu ├── Git ├── Node.js / npm ├── Python / venv ├── Codex CLI ├── Docker CLI └── 项目源码Codex CLI 官方支持 Windows 11 通过 WSL2 使用Docker Desktop 官方也建议在 WSL2 开发时把项目代码存放在 Linux 文件系统中并通过 WSL Integration 使用 Docker。([GitHub][1])二教程信息 目标读者Codex 初学者、Windows 开发人员预计时长1.52 小时难度等级★☆☆操作系统Windows 11推荐 LinuxUbuntu WSL2三学习目标 完成本篇后你应该能够安装并检查 WSL2安装 Ubuntu 开发环境在 WSL 中配置 Git使用 NVM 管理 Node.js配置 Python 虚拟环境在 WSL 中安装 Codex CLI安装 Codex IDE 扩展安装并使用 Windows 桌面应用中的 Codex配置 Docker Desktop WSL2 集成在 VS Code 中打开 WSL 项目完成一次 Codex 环境验证排查 Windows 与 WSL 路径、权限和命令冲突第一部分环境架构设计四推荐架构 ️推荐将工具按以下方式安装。安装在 WindowsWindows TerminalVisual Studio CodeChatGPT 桌面应用Docker Desktop浏览器安装在 WSL2 UbuntuGitNode.jsnpmPythonpipCodex CLI项目依赖项目源码通过 Docker Desktop 提供dockerdocker composeDocker EngineBuildKit容器网络镜像存储这样可以让Codex CLI Git Node.js Python Docker CLI 项目源码全部运行在接近 Linux 服务器的环境中。五为什么不建议全部装在 Windows 完全使用 Windows 原生环境并非不可行但在以下项目中容易遇到差异Docker 项目Linux Shell 脚本Node.js 后端Python 后端Java 微服务Kubernetes 与 HelmCI/CD 脚本依赖 chmod、grep、sed、awk 的项目典型问题包括⚠️注意路径分隔符不同文件权限不同Shell 命令不同换行符不同软链接行为不同大小写敏感性不同开发环境和 Linux 服务器不一致WSL 可以直接在 Windows 上运行 Linux 工具和 Bash 命令不需要维护完整传统虚拟机。Microsoft 当前为 Windows 11 提供了wsl --install一键安装方式。([Microsoft Learn][2])第二部分安装和检查 WSL2六安装前检查 按下Win R输入winver确认操作系统为 Windows 11。然后打开任务管理器任务管理器 → 性能 → CPU确认虚拟化已启用如果显示未启用需要进入 BIOS/UEFI 开启Intel VT-x AMD-V SVM Mode Virtualization Technology不同电脑名称可能不同。七安装 WSL ⚙️以管理员身份打开 PowerShellwsl --install该命令会启用 WSL 组件启用虚拟机平台安装 WSL 内核默认安装 Ubuntu执行完成后重启 Windows。Microsoft 官方当前推荐通过该命令安装 WSL。([Microsoft Learn][2])如果只显示帮助信息先查看可用发行版wsl --list --online安装 Ubuntuwsl --install -d Ubuntu如果下载停在0.0%wsl --install --web-download -d Ubuntu八更新 WSL 重新启动后打开普通 PowerShellwsl --update设置默认使用 WSL2wsl --set-default-version 2查看发行版wsl --list --verbose预期NAME STATE VERSION * Ubuntu Stopped 2如果 Ubuntu 显示版本 1wsl --set-version Ubuntu 2设置默认发行版wsl --set-default Ubuntu九初始化 Ubuntu 从开始菜单打开Ubuntu首次启动时需要创建Linux 用户名Linux 密码例如Username: developer设置密码时终端不会显示字符这是正常现象。⚠️注意该用户不是 Windows 用户该密码不是 Windows 登录密码该用户将拥有自己的 Linux Home 目录进入后检查whoami pwd uname -a预期目录类似/home/developer十更新 Ubuntu 软件包 执行sudo apt update sudo apt upgrade -y安装基础工具sudo apt install -y \ git \ curl \ wget \ ca-certificates \ build-essential \ unzip \ zip \ jq \ tree \ ripgrep \ python3 \ python3-pip \ python3-venv检查git --version curl --version python3 --version jq --version rg --version第三部分项目目录设计十一项目应该放在哪里 ✅推荐/home/developer/projects创建目录mkdir -p ~/projects cd ~/projects⚠️注意不建议长期把活跃项目放在/mnt/c/Users/用户名/Desktop/mnt/c/Users/用户名/Documents/mnt/d/projectsDocker 官方建议 WSL2 开发时把项目代码放在 Linux 发行版的文件系统中以获得更好的文件访问和容器开发体验。([Docker Documentation][3])✅推荐~/projects/city-snapshot-platform⚠️注意不推荐放在/mnt/c/project/city-snapshot-platform十二Windows 如何访问 WSL 文件 在 Windows 文件资源管理器地址栏输入\\wsl$然后进入Ubuntu → home → developer → projects也可以在 WSL 中执行explorer.exe .这会使用 Windows 文件资源管理器打开当前 Linux 目录。⚠️注意不要频繁使用 Windows 编辑器直接修改 WSL 内部系统文件/etc/usr/var项目文件建议通过 VS Code WSL 模式编辑。第四部分配置 Git十三安装检查 ✅Ubuntu 中已经通过apt安装 Git。检查git --versionGit 官方建议 Debian/Ubuntu 系统通过包管理器安装 Git。([Git][4])十四配置 Git 用户 执行git config --global user.name 你的姓名 git config --global user.email 你的邮箱例如git config --global user.name Shengjie He git config --global user.email shengjieexample.com设置默认分支git config --global init.defaultBranch main设置拉取策略git config --global pull.ff only设置换行符git config --global core.autocrlf input查看git config --global --list推荐结果user.nameShengjie He user.emailshengjieexample.com init.defaultbranchmain pull.ffonly core.autocrlfinput十五配置 SSH Key 在 WSL 中生成ssh-keygen -t ed25519 -C 你的邮箱直接按回车默认路径为~/.ssh/id_ed25519建议为私钥设置密码。启动 Agenteval $(ssh-agent -s)添加私钥ssh-add ~/.ssh/id_ed25519查看公钥cat ~/.ssh/id_ed25519.pub把公钥添加到GitHubGitLabGitee企业 Git 服务器测试ssh -T gitgithub.com或者ssh -T gitgitlab.company.com⚠️注意不要提交~/.ssh/id_ed25519私钥永远不应放入 Git 仓库。十六克隆项目 cd ~/projects git clone gitgitlab.company.com:team/city-snapshot-platform.git cd city-snapshot-platform检查git status git branch --show-current git remote -v第五部分配置 Node.js十七为什么使用 NVM 不同项目可能要求Node.js 18Node.js 20Node.js 22Node.js 24直接使用系统级 Node.js容易发生版本冲突。NVM 可以安装多个 Node.js 版本按项目切换版本使用 .nvmrc 固定版本设置默认 Node.jsNVM 官方支持 Linux 和 Windows WSL。([GitHub][5])十八安装 NVM 执行curl -o- \ https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh \ | bash重新加载终端配置source ~/.bashrc检查command -v nvm nvm --version如果没有输出关闭 Ubuntu 终端后重新打开。十九安装 Node.js LTS ⚡执行nvm install --lts设置默认版本nvm alias default lts/*检查node --version npm --versionCodex CLI 通过 npm 安装因此Node.js必须能在当前 WSL Shell 中正常运行。二十项目固定 Node.js 版本 进入项目cd ~/projects/city-snapshot-platform查看当前版本node --version创建.nvmrcnode --version .nvmrc之后进入项目执行nvm use其他团队成员可以执行nvm install nvm useNVM 会向上查找.nvmrc并使用其中声明的 Node.js 版本。([GitHub][5])二十一配置 npm 国内源可选网络访问 npm 官方源较慢时可以临时设置npm config set registry https://registry.npmmirror.com检查npm config get registry恢复官方源npm config set registry https://registry.npmjs.org企业项目更推荐使用NexusArtifactoryVerdaccio企业 npm 私服⚠️注意不要在未经团队确认的情况下提交个人.npmrc。第六部分配置 Python二十二检查 Python python3 --version pip3 --versionUbuntu 中建议保留系统 Python不要直接删除或覆盖。每个 Python 项目应建立独立虚拟环境。二十三创建虚拟环境 进入项目cd ~/projects/city-snapshot-platform创建python3 -m venv .venv激活source .venv/bin/activate检查which python python --version pip --version路径应类似/home/developer/projects/city-snapshot-platform/.venv/bin/pythonPython 官方建议使用venv创建彼此隔离的项目环境常用目录名为.venv且虚拟环境不应提交到 Git。([Python documentation][6])二十四升级虚拟环境中的 pip ⬆️python -m pip install --upgrade pip安装项目依赖pip install -r requirements.txt退出环境deactivate在.gitignore中加入.venv/ __pycache__/ *.pyc第七部分安装 Codex CLI二十五在 WSL 中安装 确认node --version npm --version安装 Codexnpm install -g openai/codex检查codex --versionCodex 官方提供 npm 全局安装方式官方仓库也将Windows 11 via WSL2列为支持的运行环境。([OpenAI Help Center][7])二十六登录 Codex 进入项目cd ~/projects/city-snapshot-platform启动codex选择Sign in with ChatGPT浏览器会打开登录页面。登录后在 Codex 中执行/status检查当前目录认证状态运行模式模型Git 仓库Codex 可使用 ChatGPT 账号登录CLI、IDE 和桌面应用可以共享同一 Codex 账号能力。([OpenAI Help Center][8])二十七更新 Codex CLI ⬆️执行codex --upgrade也可以npm install -g openai/codexlatest更新后检查codex --version二十八第一次环境验证 ✅在项目根目录启动codex输入请只检查当前开发环境不修改任何文件。请执行并汇总当前操作系统和工作目录。Git 版本与当前分支。Node.js 和 npm 版本。Python 和 pip 版本。Docker 和 Docker Compose 版本。当前项目是否为 Git 仓库。当前是否有未提交修改。项目中可用的测试、构建和启动命令。无法运行的命令要明确说明原因。此时 Docker 还未配置完成允许 Codex 如实报告 Docker 不可用。第八部分安装 VS Code 与 WSL 扩展二十九安装 VS Code 在 Windows 安装 Visual Studio Code。安装完成后打开 PowerShellcode --version如果无法识别code重新启动终端或重新安装 VS Code并确保加入 PATH。三十安装 WSL 扩展 在 Windows PowerShell 执行code --install-extension ms-vscode-remote.remote-wsl也可以在 VS Code 扩展市场搜索WSL Publisher: MicrosoftVS Code 的 WSL 扩展允许 Windows 上的编辑器连接 WSL并在 Linux 环境中执行扩展、终端、调试和开发工具。([Visual Studio Code][9])三十一从 WSL 打开 VS Code Ubuntu 中执行cd ~/projects/city-snapshot-platform code .VS Code 左下角应显示WSL: Ubuntu打开终端Terminal → New Terminal检查pwd which node which python3 which git路径应该来自 Linux/home/developer/... /home/developer/.nvm/... /usr/bin/python3 /usr/bin/git如果显示C:...说明当前不是WSL 工作区。第九部分安装 Codex IDE 扩展三十二安装官方扩展 在 VS Code 中搜索Codex – OpenAIs coding agent Publisher: OpenAI扩展标识为OpenAI.chatgpt也可以执行code --install-extension OpenAI.chatgpt官方 Codex 扩展支持 VS Code并兼容 Cursor、Windsurf 等多数 VS Code 派生编辑器。扩展可以使用打开文件和选中代码作为上下文也可以委派云端任务。([OpenAI Help Center][8])三十三在 WSL 工作区启用扩展 ⚙️在 VS Code 打开Extensions找到 Codex 扩展。如果出现Install in WSL: Ubuntu点击安装。不同扩展的执行位置可能不同关键是确保当前项目窗口左下角显示WSL: Ubuntu然后使用 ChatGPT 账号登录。三十四IDE 验证任务 ✅在项目中打开package.json或README.md在 Codex 面板输入请分析当前打开的文件并说明文件用途。关键配置。可能使用的启动命令。可能使用的测试命令。不要修改文件。确认 Codex 可以读取当前 WSL 项目。第十部分安装 Windows 桌面应用三十五当前桌面应用形态 截至 2026 年 7 月Codex 已集成到新的 ChatGPT 桌面应用中支持 Windows 和 macOS。应用中可以在ChatGPT、Work与Codex之间切换功能正在逐步向符合条件的账号开放。([OpenAI Help Center][10])如果账号暂时没有桌面 Codex 入口不影响使用Codex CLICodex IDE 扩展Codex Cloud三十六安装桌面应用 下载并安装 Windows ChatGPT 桌面应用。启动后使用 ChatGPT 账号登录从左上角选择 Codex添加本地项目选择项目文件夹或 Git 仓库Codex 官方入门流程是登录 ChatGPT 选择本地文件夹或 Git 仓库 创建第一个任务([OpenAI][11])三十七桌面应用和 WSL 项目的选择 WSL 项目路径为\\wsl$\Ubuntu\home\developer\projects\city-snapshot-platform在桌面应用中选择项目时优先选择对应 WSL 路径。如果桌面应用提供 Agent Environment 选项选择WSL Ubuntu不同版本的桌面应用界面可能略有不同。首次使用时建议用简单只读任务验证请只分析当前项目不修改文件。确认当前项目根目录。当前 Git 分支。项目主要语言。可用测试命令。是否能访问 Node.js 和 Python。第十一部分安装 Docker Desktop三十八为什么使用 Docker Desktop 推荐在 Windows 安装 Docker Desktop并使用WSL2 Backend。⚠️注意不要同时在 Ubuntu 中另外安装docker-cedockerdcontainerdDocker 官方明确建议使用 Docker Desktop WSL2 Backend 前移除直接安装在 WSL 发行版中的 Docker Engine 或 Docker CLI避免冲突。([Docker Documentation][12])三十九安装 Docker Desktop 安装最新 Docker Desktop for Windows。普通个人开发推荐使用默认的Per-user 安装方式。Docker 官方当前将 Per-user 安装列为多数用户的推荐方式并默认使用WSL2 Backend。([Docker Documentation][13])安装完成后启动 Docker Desktop。进入Settings → General确认Use the WSL 2 based engine部分版本默认开启不会显示该选项。四十启用 Ubuntu 集成 进入Settings → Resources → WSL Integration开启Enable integration with my default WSL distro Ubuntu点击Apply RestartDocker 官方说明启用 WSL Integration 后可以直接在对应 Linux 发行版中使用docker命令。([Docker Documentation][12])四十一检查 Docker ✅Ubuntu 中执行docker version docker compose version docker info测试docker run --rm hello-world查看容器docker ps如果项目有 Compose 文件docker compose config四十二Docker 基础验证 创建测试目录mkdir -p ~/projects/docker-check cd ~/projects/docker-check创建compose.yamlservices: web: image: nginx:alpine ports: - 18080:80启动docker compose up -d访问curl http://127.0.0.1:18080查看docker compose ps清理docker compose down第十二部分建立统一项目环境四十三推荐项目基线文件 项目根目录建议包含AGENTS.mdREADME.md.gitignore.editorconfig.gitattributes.nvmrc.env.examplePython 项目还可包含requirements.txtpyproject.toml四十四.gitignore# Environment .env .env.* !.env.example # Node.js node_modules/ npm-debug.log* pnpm-debug.log* yarn-error.log* # Python .venv/ __pycache__/ *.pyc .pytest_cache/ .mypy_cache/ .ruff_cache/ # IDE .vscode/settings.local.json .idea/ # OS .DS_Store Thumbs.db # Build dist/ build/ coverage/ # Secrets *.pem *.key *.p12 *.jks四十五.gitattributes⚙️* textauto eollf *.bat text eolcrlf *.cmd text eolcrlf *.ps1 text eolcrlf *.sh text eollf *.yml text eollf *.yaml text eollf *.json text eollf作用Shell 脚本统一 LFWindows 批处理统一 CRLF降低 Windows/WSL 换行符冲突四十六.editorconfigroot true [*] charset utf-8 end_of_line lf insert_final_newline true indent_style space indent_size 2 trim_trailing_whitespace true [*.py] indent_size 4 [*.md] trim_trailing_whitespace false [*.{bat,cmd,ps1}] end_of_line crlf第十三部分完整环境自检四十七自检脚本 创建mkdir -p ~/bin nano ~/bin/check-dev-env.sh内容#!/usr/bin/env bash set -u PASS0 FAIL0 check_command() { local command_name$1 if command -v ${command_name} /dev/null 21; then printf [PASS] %-15s %s\n \ ${command_name} \ $(command -v ${command_name}) PASS$((PASS 1)) else printf [FAIL] %-15s not found\n ${command_name} FAIL$((FAIL 1)) fi } echo System uname -a printf User: %s\n $(whoami) printf Home: %s\n ${HOME} printf PWD: %s\n $(pwd) echo echo Commands check_command git check_command node check_command npm check_command python3 check_command pip3 check_command codex check_command docker check_command jq check_command rg check_command code echo echo Versions git --version 2/dev/null || true node --version 2/dev/null || true npm --version 2/dev/null || true python3 --version 2/dev/null || true codex --version 2/dev/null || true docker --version 2/dev/null || true docker compose version 2/dev/null || true code --version 2/dev/null | head -n 1 || true echo echo Git if git rev-parse --is-inside-work-tree /dev/null 21; then printf Branch: %s\n $(git branch --show-current) git status --short else echo Current directory is not a Git repository. fi echo echo Result printf PASS%s\n ${PASS} printf FAIL%s\n ${FAIL} if [ ${FAIL} -gt 0 ]; then exit 1 fi授权chmod x ~/bin/check-dev-env.sh运行~/bin/check-dev-env.sh四十八预期结果 至少应通过gitnodenpmpython3pip3codexdockerjqrgcode如果项目没有使用 Python可以保留 Python 基础环境不需要安装项目依赖。第十四部分使用 Codex 验证整个环境四十九创建验证仓库 ️mkdir -p ~/projects/codex-environment-lab cd ~/projects/codex-environment-lab git init npm init -y cat README.md EOF # Codex Environment Lab This repository is used to verify the Windows 11, WSL2, VS Code, Node.js, Python, Docker and Codex environment. EOF git add README.md package.json git commit -m chore: initialize environment lab五十启动 Codex ▶️codex输入请检查当前开发环境不要修改任何文件。需要验证当前工作目录位于 WSL Linux 文件系统而不是 /mnt/c。当前目录是 Git 仓库。Git、Node.js、npm、Python、Codex、Docker 和 Docker Compose 可用。输出各工具版本。执行 git status。执行 docker info但不要创建或删除容器。检查 README.md 内容。最后给出已通过项目失败项目修复建议五十一合格结果 ✅Codex 应能够确认当前路径位于 /home/...Git 仓库可用Node.js 可用Python 可用Docker Desktop WSL Integration 正常Docker Compose 可用README.md 可读取没有修改文件执行后检查git status工作区应保持干净。第十五部分常见问题排查五十二wsl --install无法执行 ❌以管理员方式运行 PowerShell。执行wsl --status wsl --update查看发行版wsl --list --online手动安装wsl --install -d Ubuntu如果仍然失败检查Windows Update虚拟化Virtual Machine PlatformWindows Subsystem for Linux五十三Ubuntu 显示 WSL1 查看wsl -l -v转换wsl --set-version Ubuntu 2设置默认wsl --set-default-version 2五十四nvm: command not found❓执行source ~/.bashrc检查grep -n NVM_DIR ~/.bashrc正常应包含export NVM_DIR$HOME/.nvm [ -s $NVM_DIR/nvm.sh ] \. $NVM_DIR/nvm.sh关闭终端后重新打开。五十五codex: command not found❓检查 npm 全局目录npm config get prefix npm bin -g 2/dev/null || true重新安装npm install -g openai/codexlatest检查command -v codex codex --version确认 Codex 是在 WSL 中安装而不是只安装在 Windows PowerShell 中。五十六VS Code 终端使用的是 Windows 检查 VS Code 左下角是否显示WSL: Ubuntu关闭当前窗口在 Ubuntu 中执行cd ~/projects/项目目录 code .终端检查uname -a pwd which node五十七Docker 命令不可用 ❓确认 Docker Desktop 正在运行。检查wsl -l -vDocker Desktop 中打开Settings → Resources → WSL Integration开启 Ubuntu然后Apply RestartUbuntu 中重新执行docker version五十八Docker 与 WSL 内 Docker 冲突 ⚠️检查which docker ps aux | grep dockerd⚠️注意如果此前在 Ubuntu 中安装过 Docker Engine可能与 Docker Desktop 冲突。按照 Docker 官方建议使用 Docker Desktop WSL2 Backend 时不应同时维护一套直接安装在 WSL 内的 Docker Engine。([Docker Documentation][12])五十九项目在/mnt/c中运行很慢 移动项目mkdir -p ~/projects cp -a /mnt/c/projects/city-snapshot-platform \ ~/projects/或者重新克隆cd ~/projects git clone 仓库地址然后使用code ~/projects/city-snapshot-platform六十Git 文件全部显示被修改 通常由换行符造成。检查git config --global core.autocrlfWSL 推荐git config --global core.autocrlf input项目增加.gitattributes* textauto eollf⚠️注意不要在未确认内容前直接提交所有换行符变化。六十一Python 安装包污染系统环境 ⚠️⚠️注意不要执行sudo pip install ...正确方式python3 -m venv .venv source .venv/bin/activate python -m pip install -r requirements.txt六十二Codex 桌面应用找不到 WSL 工具 先确认项目是以 WSL 环境打开。检查桌面应用中的Project PathAgent EnvironmentIntegrated Terminal首次配置时不要同时在 Windows 和 WSL 中安装两套不同版本的项目依赖。✅推荐Windows 只安装桌面工具WSL 安装 Git、Node、Python、Codex CLI 和项目依赖第十六部分一小时练习六十三练习一完成环境安装 ️要求WSL2 Ubuntu 正常运行Git 正常Node.js 正常Python 正常Codex CLI 正常Docker 正常VS Code WSL 正常Codex IDE 扩展正常六十四练习二克隆项目 ️cd ~/projects git clone 项目地址 cd 项目目录执行git status nvm use || true python3 --version docker compose config || true六十五练习三让 Codex 检查项目 ️提示词请只分析当前项目不修改任何文件。输出操作系统和当前路径。项目技术栈。Git 当前分支和状态。Node.js 要求。Python 要求。Docker 与 Compose 配置。安装依赖命令。启动命令。测试命令。当前环境缺失项。六十六练习四检查环境隔离 ️Node.jsnvm ls node --versionPythonpython3 -m venv .venv source .venv/bin/activate which python deactivateDockerdocker context show docker version docker compose version第十七部分验收标准六十七本篇验收清单 ✅完成后应达到Windows 11 虚拟化已开启WSL2 已安装Ubuntu 运行在 WSL2项目存放在 ~/projectsGit 用户信息已配置SSH Key 已配置Node.js 使用 NVM 管理项目包含 .nvmrcPython 使用 .venvCodex CLI 安装在 WSLCodex CLI 可以登录VS Code 已安装 WSL 扩展VS Code 工作区显示 WSL: UbuntuCodex IDE 扩展可以读取项目Windows 桌面应用可以打开 CodexDocker Desktop 使用 WSL2 BackendDocker Desktop 已启用 Ubuntu Integrationdocker 与 docker compose 可在 WSL 中执行Codex 可以检查完整开发环境第十八部分本篇总结六十八核心结论 Windows 负责桌面工具WSL2 负责开发工具链项目源码优先放在 Linux 文件系统Git、Node、Python、Codex CLI 安装在 WSLNode.js 使用 NVM 管理版本Python 使用 venv 隔离项目依赖VS Code 必须以 WSL 模式打开项目Docker Engine 由 Docker Desktop 提供不要同时在 WSL 中再运行一套 Docker EngineCodex 桌面应用、IDE 和 CLI 可以组合使用环境验证必须基于真实命令而不是只看安装界面推荐最终结构Windows 11 ├── ChatGPT 桌面应用 ├── VS Code ├── Windows Terminal └── Docker Desktop │ ▼ WSL2 Ubuntu ├── ~/projects ├── Git ├── NVM Node.js ├── Python .venv ├── Codex CLI └── Docker CLI / Compose