Codex CLI 安装与配置
Codex CLI 安装与配置
适用场景:Windows 原生 PowerShell;本地 HTTP 代理
127.0.0.1:10809;SOCKS5 代理127.0.0.1:10808;希望 Codex 安装到非系统盘,便于重装系统后恢复。本文按我们实际走通的流程整理。示例中 Codex CLI 实测版本为
0.155.1,以后重新安装时版本可能更新。
0. 最终目录结构
建议把工具统一放在:
1
2
3
4
5
6
7
8
9
10
D:\Dev\Tools\
├── bin\
│ ├── codex-install.cmd
│ ├── codex-proxy.cmd
│ └── chatgpt-proxy.cmd
│
└── Codex\
├── bin\
│ └── codex.exe
└── home\
其中:
D:\Dev\Tools\bin:统一放启动脚本,并加入 PATH。D:\Dev\Tools\Codex\bin:Codex CLI 本体。D:\Dev\Tools\Codex\home:Codex 配置、登录状态、会话等本地数据。- 项目自己的
AGENTS.md应该放在 Git 仓库中,而不是放进CODEX_HOME。
官方参考:
1. 创建目录
在 PowerShell 中执行:
1
2
3
New-Item -ItemType Directory -Force "D:\Dev\Tools\bin"
New-Item -ItemType Directory -Force "D:\Dev\Tools\Codex\bin"
New-Item -ItemType Directory -Force "D:\Dev\Tools\Codex\home"
确认:
1
Get-ChildItem "D:\Dev\Tools"
2. 把统一工具目录加入 PATH
只需要把:
1
D:\Dev\Tools\bin
加入用户 PATH。
可以使用 Windows:
1
2
3
4
5
6
7
8
设置
→ 系统
→ 系统信息
→ 高级系统设置
→ 环境变量
→ 用户变量 Path
→ 新建
→ D:\Dev\Tools\bin
完成后重新打开一个 PowerShell,验证:
1
$env:Path -split ';' | Where-Object { $_ -eq 'D:\Dev\Tools\bin' }
期望:
1
D:\Dev\Tools\bin
不建议把每个工具自己的
bin都塞进 PATH。统一只暴露D:\Dev\Tools\bin,后续通过 wrapper 启动。
3. 确认代理工作正常
本机代理:
1
2
HTTP : 127.0.0.1:10809
SOCKS: 127.0.0.1:10808
先显式测试 HTTP 代理:
1
2
3
4
Invoke-WebRequest `
-UseBasicParsing `
-Uri "https://releases.openai.com/codex/channels/latest" `
-Proxy "http://127.0.0.1:10809"
期望:
1
StatusCode : 200
3.1 Windows PowerShell 的一个坑
仅设置:
1
2
$env:HTTP_PROXY="http://127.0.0.1:10809"
$env:HTTPS_PROXY="http://127.0.0.1:10809"
并不能保证 Windows PowerShell 5.1 的 Invoke-WebRequest 自动使用代理。
我们实际测试过:
1
2
3
Invoke-WebRequest `
-UseBasicParsing `
-Uri "https://releases.openai.com/codex/channels/latest"
仍然返回 403。
因此安装脚本中还需要显式配置 .NET 默认 WebProxy:
1
2
$proxy = New-Object System.Net.WebProxy("http://127.0.0.1:10809")
[System.Net.WebRequest]::DefaultWebProxy = $proxy
验证:
1
2
3
4
5
6
$proxy = New-Object System.Net.WebProxy("http://127.0.0.1:10809")
[System.Net.WebRequest]::DefaultWebProxy = $proxy
Invoke-WebRequest `
-UseBasicParsing `
-Uri "https://releases.openai.com/codex/channels/latest"
期望:
1
StatusCode : 200
4. 创建 Codex 安装脚本
创建:
1
D:\Dev\Tools\bin\codex-install.cmd
完整脚本见本文附录 A。
它负责:
- 配置安装进程自己的代理。
- 设置
CODEX_INSTALL_DIR。 - 设置
CODEX_HOME。 - 设置 PowerShell DefaultWebProxy。
- 调用官方
install.ps1。 - 安装失败时保留窗口,方便看报错。
官方安装脚本地址:
5. 执行安装
在 PowerShell 中:
1
codex-install
成功时会看到类似:
1
2
3
4
5
6
==> Installing Codex CLI
==> Detected platform: Windows (x64)
==> Resolved version: 0.155.1
==> Downloading Codex CLI
Codex CLI 0.155.1 installed successfully.
Start Codex now? [y/N]:
这里建议先按 Enter,选择默认 N。
因为我们还要配置正式的代理启动入口。
6. 验证 Codex 本体安装位置
直接执行:
1
D:\Dev\Tools\Codex\bin\codex.exe --version
实测:
1
codex-cli 0.155.1
如果当前 PowerShell 里直接输入 codex 找不到,不代表安装失败。官方安装器可能只更新了“未来 PowerShell 会话”的 PATH。
我们日常不依赖这个 PATH,而使用 codex-proxy.cmd。
7. 创建日常启动脚本
创建:
1
D:\Dev\Tools\bin\codex-proxy.cmd
完整脚本见本文附录 B。
它负责:
1
2
3
4
5
6
HTTP_PROXY
HTTPS_PROXY
ALL_PROXY
NO_PROXY
CODEX_HOME
VISUAL / EDITOR
然后启动:
1
D:\Dev\Tools\Codex\bin\codex.exe
7.1 验证 wrapper
1
codex-proxy --version
期望:
1
codex-cli 0.155.1
8. 第一次登录
运行:
1
codex-proxy
出现:
1
2
3
1. Sign in with ChatGPT
2. Sign in with Device Code
3. Provide your own API key
如果要使用 ChatGPT Plus / Pro 套餐包含的 Codex 用量,选择:
1
1. Sign in with ChatGPT
浏览器会打开 OAuth 登录页。
如果未自动打开,就复制终端给出的 https://auth.openai.com/... 地址到浏览器。
登录完成后回到终端,期望:
1
✓ Signed in with your ChatGPT account
OAuth 最后会回调
localhost。因此启动脚本中的:
1 NO_PROXY=localhost,127.0.0.1,.local应保留。
9. 不要在用户 Home 目录直接开始工作
如果你从:
1
C:\Users\ASUS
启动 Codex,它会问:
1
Do you trust the contents of this directory?
这时建议:
1
2. No, quit
因为这里不是工程仓库。
10. 在真正的 Git 仓库根目录启动
例如工程:
1
E:\Projects\projectOne
执行:
1
2
cd "E:\Projects\projectOne"
codex-proxy
再次看到:
1
Do you trust the contents of this directory?
这次选择:
1
1. Yes, continue
因为这里就是自己的工程仓库。
11. 配置 Windows Codex Sandbox
首次进入时可能看到:
1
2
3
1. Set up default sandbox (requires Administrator permissions)
2. Use non-admin sandbox
3. Quit
我们实际采用:
1
1. Set up default sandbox
允许一次 Windows UAC 管理员授权。
完成后:
1
2
Sandbox ready
Codex can now safely edit files and execute commands in your computer
11.1 Sandbox Service
安装完成后,任务管理器里可能长期存在:
1
codex-windows-sandbox-service.exe
查询:
1
2
3
4
Get-Service | Where-Object {
$_.Name -like '*codex*' -or
$_.DisplayName -like '*codex*'
} | Format-List Name,DisplayName,Status,StartType
我们实测得到:
1
2
3
4
Name : CodexSandboxService.OpenAI.Codex
DisplayName : ChatGPT
Status : Running
StartType : Automatic
这是正常 Windows Service,不是 CLI “没退出干净”。
日常不需要结束它,也不建议在任务管理器里强杀。
12. 验证 AGENTS.md 是否按层级加载
如果仓库结构类似:
1
2
3
4
5
6
projectOne\
├── AGENTS.md
├── Packages\
│ └── com.packagename.packagename\
│ └── AGENTS.md
└── ...
第一次正式工作前建议做一次只读验证:
1
2
3
4
5
6
7
8
9
不要修改任何文件。
告诉我以下目录适用了哪些 AGENTS.md 指令文件:
Packages/com.packagename.packagename
分别总结每一层 AGENTS.md 中你加载到的重要规则。
暂时不要分析代码库。
Codex 应该能够识别:
1
2
Root AGENTS.md
Package AGENTS.md
并说明“更具体的 Package 规则覆盖同事项下更通用的 Root 规则”。
13. 配置长 Prompt 外部编辑器
Codex TUI 中按:
1
Ctrl+G
可以打开外部编辑器。
如果提示:
1
Cannot open external editor: set $VISUAL or $EDITOR before starting Codex.
说明还没有配置编辑器。
我们使用 VS Code,并在 codex-proxy.cmd 中加入:
1
2
set "VISUAL=code --wait"
set "EDITOR=code --wait"
先确认:
1
Get-Command code -All
实测可找到:
1
D:\Program Files\Microsoft VS Code\bin\code.cmd
重启 Codex 后:
1
2
3
4
5
6
7
Ctrl+G
→ VS Code 打开 Codex 临时 .md 文件
→ 编辑 Prompt
→ Ctrl+S 保存
→ Ctrl+W 关闭临时标签
→ Prompt 返回 Codex TUI
→ 检查无误后 Enter 发送
--wait 必须保留,否则 Codex 可能认为编辑器已经提前结束。
官方参考:
14. 退出与恢复会话
正常退出可以使用 TUI 的退出命令;退出时 Codex 会显示 Session ID,例如:
1
2
To continue this session, run:
codex resume 01a0c86d-...
因为我们日常用 wrapper,所以恢复时:
1
codex-proxy resume
或者精确恢复:
1
codex-proxy resume <SESSION_ID>
例如:
1
codex-proxy resume 01a0c86d-2d03-70e1-87f8-862205e062c9
更完整的会话命令见《Codex CLI 常用命令与会话管理》。
15. 查看 Codex 用量
在 TUI:
1
/status
可以看到:
1
2
3
4
5
6
7
8
9
Model
Directory
Permissions
Agents.md
Account
Session
5h limit
Weekly limit
Luna Reserve Weekly limit
我们实测过:
1
2
3
5h limit: 100% left
Weekly limit: 93% left
Luna Reserve Weekly limit: 100% left
注意:
- Session 退出时显示的 token 数,不等价于套餐剩余比例。
- 套餐用量以
/status或 Usage 页面为准。 Luna Reserve Weekly limit是单独显示的 Luna 备用周额度,不应和主 Weekly limit 混为一个池。
16. 安装完成后的日常使用方式
进入工程:
1
cd "E:\Projects\projectOne"
启动:
1
codex-proxy
长 Prompt:
1
Ctrl+G
查看状态:
1
/status
恢复旧会话:
1
/resume
或 Shell:
1
codex-proxy resume
附录 A:codex-install.cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
@echo off
setlocal
set "CODEX_INSTALL_DIR=D:\Dev\Tools\Codex\bin"
set "CODEX_HOME=D:\Dev\Tools\Codex\home"
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$proxy = New-Object System.Net.WebProxy('http://127.0.0.1:10809');" ^
"[System.Net.WebRequest]::DefaultWebProxy = $proxy;" ^
"$env:CODEX_INSTALL_DIR='D:\Dev\Tools\Codex\bin';" ^
"$env:CODEX_HOME='D:\Dev\Tools\Codex\home';" ^
"$env:HTTP_PROXY='http://127.0.0.1:10809';" ^
"$env:HTTPS_PROXY='http://127.0.0.1:10809';" ^
"$env:ALL_PROXY='socks5://127.0.0.1:10808';" ^
"$env:NO_PROXY='localhost,127.0.0.1,.local';" ^
"irm 'https://chatgpt.com/codex/install.ps1' | iex"
set "EXIT_CODE=%ERRORLEVEL%"
echo.
echo ========================================
echo Codex installer exit code: %EXIT_CODE%
echo ========================================
echo.
if "%EXIT_CODE%"=="0" (
echo Installation command completed successfully.
) else (
echo Installation command reported an error.
)
echo.
pause
exit /b %EXIT_CODE%
附录 B:codex-proxy.cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@echo off
setlocal
set "HTTP_PROXY=http://127.0.0.1:10809"
set "HTTPS_PROXY=http://127.0.0.1:10809"
set "ALL_PROXY=socks5://127.0.0.1:10808"
set "NO_PROXY=localhost,127.0.0.1,.local"
set "CODEX_HOME=D:\Dev\Tools\Codex\home"
rem External editor used by Codex Ctrl+G.
set "VISUAL=code --wait"
set "EDITOR=code --wait"
"D:\Dev\Tools\Codex\bin\codex.exe" %*
附录 C:安装失败时的代理诊断
显式代理测试:
1
2
3
4
Invoke-WebRequest `
-UseBasicParsing `
-Uri "https://releases.openai.com/codex/channels/latest" `
-Proxy "http://127.0.0.1:10809"
默认 WebProxy 测试:
1
2
3
4
5
6
$proxy = New-Object System.Net.WebProxy("http://127.0.0.1:10809")
[System.Net.WebRequest]::DefaultWebProxy = $proxy
Invoke-WebRequest `
-UseBasicParsing `
-Uri "https://releases.openai.com/codex/channels/latest"
如果第一条 200、第二条未设置 DefaultWebProxy 时失败,说明 Windows PowerShell 没有自动采用 HTTP_PROXY/HTTPS_PROXY 环境变量。