mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1890 字
5 分钟
Windows 同时使用正版 Codex App 与第三方 Codex CLI
2026-07-06

Windows 同时使用正版 Codex App 与第三方 Codex CLI#

1. 使用目标#

在同一台 Windows 电脑上同时运行两套互不干扰的 Codex:

  • 正版 Codex App:继续使用 OpenAI 官方账号和默认配置。
  • 第三方 Codex CLI:使用第三方 API、独立模型和独立配置。

实现方式是为第三方 Codex CLI 设置单独的 CODEX_HOME

正版 Codex App:%USERPROFILE%\.codex
第三方 Codex CLI:%USERPROFILE%\.codex-relay

CODEX_HOME 决定 Codex 从哪里读取配置、认证、会话、日志、技能和插件。只在第三方 CLI 的启动进程中设置它,就不会影响正版 Codex App。

不要把 CODEX_HOME 设置成 Windows 全局或用户级环境变量,否则以后启动的 Codex App、IDE 扩展或其他 Codex 工具也可能读取第三方配置。

2. 准备隔离目录#

打开 PowerShell,创建第三方 CLI 专用目录:

Terminal window
New-Item -ItemType Directory -Force "$env:USERPROFILE\.codex-relay" | Out-Null

这条命令的含义:

  • New-Item -ItemType Directory:创建文件夹。
  • -Force:文件夹已经存在时不报错。
  • $env:USERPROFILE:当前 Windows 用户的主目录,不需要填写真实用户名。
  • Out-Null:不显示创建结果,让终端输出更简洁。

最终需要以下文件:

%USERPROFILE%\
├── .codex\ # 正版 Codex 使用
├── .codex-relay\
│ ├── auth.json # 第三方 API Key
│ └── config.toml # 第三方模型配置
└── codex-relay.ps1 # 第三方 CLI 启动脚本

3. 配置 API Key#

创建:

%USERPROFILE%\.codex-relay\auth.json

内容如下:

{
"OPENAI_API_KEY": "<在这里填写第三方 API Key>"
}

填写时注意:

  • 只替换尖括号中的占位内容。
  • 保留英文双引号、冒号和花括号。
  • JSON 最后一项后面不能添加逗号。
  • 文件保存为 UTF-8 编码。
  • 不要把真实 API Key 提交到 Git、截图、聊天记录或公开教程中。

4. 配置第三方模型#

创建:

%USERPROFILE%\.codex-relay\config.toml

通用配置模板:

model_provider = "relay"
model = "<第三方实际支持的模型名称>"
[model_providers.relay]
name = "Relay API"
base_url = "https://relay.example.com/v1"
wire_api = "responses"
requires_openai_auth = true

需要根据第三方服务商文档修改:

  • model:第三方实际支持的模型 ID。
  • base_url:第三方 API 地址,是否包含 /v1 以服务商文档为准。
  • model_provider:自定义 Provider 标识;必须和 [model_providers.relay] 后缀一致。

其余配置说明:

  • wire_api = "responses":使用 Responses API。
  • requires_openai_auth = true:从当前 CODEX_HOME 下的 auth.json 读取 OPENAI_API_KEY

第三方服务不仅要支持普通文本对话,还应完整兼容 Responses API、流式输出和工具调用,否则 Codex 可能出现能聊天但不能正常操作工具的问题。

5. 创建启动脚本#

创建:

%USERPROFILE%\codex-relay.ps1

写入:

Terminal window
$ErrorActionPreference = "Stop"
$relayHome = Join-Path $env:USERPROFILE ".codex-relay"
$authFile = Join-Path $relayHome "auth.json"
if (-not (Test-Path -LiteralPath $authFile)) {
Write-Error "Auth file not found: $authFile"
exit 1
}
$auth = Get-Content -LiteralPath $authFile -Raw -Encoding UTF8 | ConvertFrom-Json
$apiKey = [string]$auth.OPENAI_API_KEY
if ([string]::IsNullOrWhiteSpace($apiKey) -or $apiKey -eq "<在这里填写第三方 API Key>") {
Write-Error "Set OPENAI_API_KEY in $authFile before starting Codex."
exit 1
}
$env:CODEX_HOME = $relayHome
codex @args

脚本执行逻辑:

  1. 定位当前用户主目录下的 .codex-relay
  2. 检查 auth.json 是否存在。
  3. 检查 API Key 是否为空或仍是占位符。
  4. 只为当前脚本进程设置 CODEX_HOME
  5. 启动 Codex CLI,并把命令行参数继续传递给 codex

脚本中的运行时提示使用英文,是为了兼容 Windows PowerShell 5.1 对无 BOM UTF-8 脚本的旧式解析行为。配置文件和笔记仍然可以使用 UTF-8 中文。

6. 启动第三方 Codex CLI#

6.1 指定项目目录启动#

Terminal window
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\codex-relay.ps1" -C "D:\Projects\ExampleProject"

参数含义:

  • -NoProfile:不加载 PowerShell 个人配置,减少环境干扰。
  • -ExecutionPolicy Bypass:仅为本次 PowerShell 进程允许执行脚本,不永久修改系统策略。
  • -File:指定启动脚本。
  • -C:指定 Codex CLI 的项目工作目录。

6.2 先进入项目再启动#

Terminal window
cd "D:\Projects\ExampleProject"
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\codex-relay.ps1"

cd 用于切换 PowerShell 当前工作目录。没有使用 -C 时,Codex 默认把当前目录作为工作目录。

6.3 执行一次性任务#

Terminal window
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\codex-relay.ps1" exec -C "D:\Projects\ExampleProject" "分析工程结构,先不要修改文件"

这种方式不会进入交互界面,任务完成后自动退出,适合脚本、检查和简单分析。

7. 第一次启动时选择沙箱#

新的 .codex-relay 第一次启动时,Codex CLI 可能要求选择 Windows 沙箱:

1. Set up default sandbox (requires Administrator permissions)
2. Use non-admin sandbox (higher risk if prompt injected)
3. Quit

推荐选择:

1. Set up default sandbox

操作步骤:

  1. 使用方向键选中第 1 项。
  2. 按 Enter 确认。
  3. Windows 弹出管理员权限确认时选择“是”。

默认沙箱能更好地隔离文件和网络访问。第 2 项不需要管理员权限,但隔离能力较弱。

这只是新 CODEX_HOME 的首次初始化,不代表 Codex CLI 或项目内工具需要重新安装。

8. 项目级技能是否需要重新安装#

通常不需要。

如果技能、代理或工作流安装在项目内部,例如:

项目根目录\
├── .agents\skills\
├── .codex\agents\
├── .trellis\
└── AGENTS.md

那么正版 Codex App 和第三方 Codex CLI 打开同一个项目时,都可以读取这些项目级文件。

隔离 CODEX_HOME 后,不会自动共享的是用户级内容:

  • 全局 Codex 配置
  • 官方账号登录状态
  • 全局技能和插件
  • 会话历史
  • 项目信任记录
  • 沙箱初始化状态

如果某个工具安装在 %USERPROFILE%\.codex\skills%USERPROFILE%\.codex\plugins,第三方 CLI 默认看不到它。此时应根据工具的安装方式,单独安装到 .codex-relay,或有选择地迁移相关目录,不要直接复制官方认证文件。

9. 如何区分两套 Codex#

正版 Codex App#

正常打开 Windows Codex App,不设置额外环境变量。它继续使用:

%USERPROFILE%\.codex

第三方 Codex CLI#

始终通过以下脚本启动:

%USERPROFILE%\codex-relay.ps1

它使用:

%USERPROFILE%\.codex-relay

不要执行下面的命令:

Terminal window
setx CODEX_HOME "$env:USERPROFILE\.codex-relay"

setx 会持久修改用户环境变量,可能导致以后启动的 Codex App、IDE 扩展或其他 Codex 工具误用第三方配置。

10. 验证隔离是否成功#

启动第三方 CLI 后检查界面顶部显示的模型和工作目录:

model: <第三方模型名称>
directory: <当前项目目录>

也可以先执行一个只读测试任务:

分析当前项目的目录结构,只读取文件,不要修改代码。

同时保持正版 Codex App 正常运行。如果 App 仍然使用官方账号,而 CLI 显示第三方模型,说明隔离成功。

11. 常见问题#

11.1 提示没有填写 API Key#

检查:

%USERPROFILE%\.codex-relay\auth.json

确认 OPENAI_API_KEY 已替换为真实 Key,并且 JSON 格式正确。

11.2 返回 401 或 Unauthorized#

可能原因:

  • API Key 填写错误、过期或余额不足。
  • 第三方服务要求不同的认证字段。
  • 当前账号没有目标模型的访问权限。

11.3 返回 404 或模型不存在#

检查 config.toml 中的:

model = "<第三方实际支持的模型名称>"
base_url = "https://relay.example.com/v1"

模型名称和 API 地址必须与第三方文档完全一致。

11.4 能对话,但工具调用失败#

第三方接口可能只实现了基础文本对话,没有完整兼容 Responses API、流式传输或工具调用。需要向服务商确认 Codex CLI 兼容性。

11.5 PowerShell 禁止运行脚本#

使用:

Terminal window
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\codex-relay.ps1"

这里的 Bypass 仅对本次新启动的 PowerShell 进程生效,不会永久修改系统执行策略。

11.6 第三方 CLI 找不到全局技能或插件#

这是 CODEX_HOME 隔离后的正常现象。项目级技能仍会读取;全局技能或插件需要单独安装到 .codex-relay,或在确认没有认证、配置冲突后有选择地迁移。

12. 安全提醒#

  • 发送给第三方 API 的提示词、代码和文件内容可能经过第三方服务器。
  • 不要向不可信服务发送私钥、密码、证书、客户数据或未公开源码。
  • 不要公开或提交 auth.json
  • 不要把 .codex-relay 放进项目 Git 仓库。
  • 不要在公开教程中填写真实用户名、项目路径、公司名、中转域名和 API Key。
  • 大幅修改代码前,先要求 Codex 说明修改逻辑并等待确认。

13. 最终使用速查#

启动第三方 Codex CLI:

Terminal window
powershell -NoProfile -ExecutionPolicy Bypass -File "$env:USERPROFILE\codex-relay.ps1" -C "D:\Projects\ExampleProject"

使用正版 Codex App:

直接正常打开 Codex App。

两者能够同时运行,是因为它们分别使用 .codex-relay.codex

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Windows 同时使用正版 Codex App 与第三方 Codex CLI
https://risukio.com/posts/windows-codex-app-third-party-cli/
作者
Risukio
发布于
2026-07-06
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录