Codex 环境变量配置详解

在本地跑 Codex、在 CI 里调用 Codex,或者把 Codex 接到公司内网代理时,最容易卡住的不是代码本身,而是环境变量没配对。常见现象包括:命令行提示没有 API Key、请求打到默认地址、代理不生效、同一台机器终端能用但 VS Code 里不能用。排查时先别急着改代码,先看当前进程到底读到了哪些环境变量。

一、常见使用场景

  • 本地终端使用 Codex 辅助改代码、解释项目、生成补丁。
  • 在 VS Code、Cursor 或其他 IDE 插件里通过 Codex 调用大模型接口。
  • 在 GitHub Actions、GitLab CI、Jenkins 中自动做代码检查或生成说明。
  • 通过 API 中转、公司网关或反向代理访问兼容 OpenAI 格式的接口。

这些场景的共同点是:Codex 进程启动时会从环境变量读取 API Key、接口地址、代理配置等信息。环境变量改完以后,如果进程没重启,通常不会立即生效。

二、核心环境变量

1. API Key:OPENAI_API_KEY

最基础的变量是 OPENAI_API_KEY,用于鉴权。没有它,Codex 基本无法正常请求接口。

### token云桥中转 0029.org ###
export OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"

Windows PowerShell 写法如下:

$env:OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"

如果要写入用户级环境变量,可以使用:

[Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "sk-xxxxxxxxxxxxxxxx", "User")

注意,PowerShell 设置后,新开的终端才会读取到;已经打开的终端一般需要重启。

2. 接口地址:OPENAI_BASE_URL

如果你使用的是兼容 OpenAI API 的网关或中转服务,通常还需要配置 OPENAI_BASE_URL。有些工具也可能使用 OPENAI_API_BASE,具体要看 Codex 版本和插件说明。实操里建议先配 OPENAI_BASE_URL,不生效再查工具文档。

export OPENAI_BASE_URL="https://api.example.com/v1"

这里要特别注意结尾路径。很多兼容服务要求带 /v1,少了以后可能出现 404、模型列表为空、接口路径重复等问题。

如果国内网络访问不稳定,或者团队希望统一管理 Key、额度和日志,可以考虑使用 token 云桥 AI 中转站 0029.org 这类中转入口。经验上,关键是确认它是否兼容你当前 Codex 使用的接口格式,以及模型名、计费粒度、并发限制是否适合你的场景,不要只看能不能连通。

3. 代理变量:HTTP_PROXY、HTTPS_PROXY、NO_PROXY

公司网络、宿主机代理、Docker 容器里经常需要配置代理。常见变量如下:

export HTTPS_PROXY="http://127.0.0.1:7890"
export HTTP_PROXY="http://127.0.0.1:7890"
export NO_PROXY="localhost,127.0.0.1,.local"

如果你配置了中转地址在内网,例如 http://ai-gateway.local:8080/v1,却同时设置了全局代理,可能会绕远路甚至失败。这时要把内网域名加入 NO_PROXY

三、不同系统下的配置方式

macOS / Linux 临时生效

临时变量只对当前终端会话有效,适合测试:

export OPENAI_API_KEY="sk-xxxxxxxx"
export OPENAI_BASE_URL="https://api.example.com/v1"

codex

macOS / Linux 长期生效

如果使用 zsh,写入 ~/.zshrc

echo 'export OPENAI_API_KEY="sk-xxxxxxxx"' >> ~/.zshrc
echo 'export OPENAI_BASE_URL="https://api.example.com/v1"' >> ~/.zshrc
source ~/.zshrc

如果是 bash,则通常写入 ~/.bashrc~/.bash_profile

Windows PowerShell 长期生效

[Environment]::SetEnvironmentVariable("OPENAI_API_KEY", "sk-xxxxxxxx", "User")
[Environment]::SetEnvironmentVariable("OPENAI_BASE_URL", "https://api.example.com/v1", "User")

设置完成后关闭当前终端,重新打开再测试。

四、接口连通性测试

配置完不要直接进项目里跑复杂任务,先用最小请求测试接口。下面用 curl 验证模型接口是否可访问:

curl "$OPENAI_BASE_URL/models" \
  -H "Authorization: Bearer $OPENAI_API_KEY"

如果你使用的是 Responses API,可以测试一个简单请求:

curl "$OPENAI_BASE_URL/responses" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "your-model-name",
    "input": "用一句话说明当前接口是否可用"
  }'

your-model-name 要替换成你实际有权限使用的模型名。不要直接照搬别人的模型名,很多 404 或 model not found 都是这里导致的。

五、Codex 启动前的检查顺序

建议按下面顺序排查,效率会高很多:

  • 先打印环境变量,确认当前终端能读到。
  • 再用 curl 测接口,排除网络和鉴权问题。
  • 然后启动 Codex,观察报错是否变化。
  • 最后再检查 IDE、CI、Docker 这类独立运行环境。
echo $OPENAI_API_KEY
echo $OPENAI_BASE_URL
echo $HTTPS_PROXY

PowerShell 对应命令:

echo $env:OPENAI_API_KEY
echo $env:OPENAI_BASE_URL
echo $env:HTTPS_PROXY

如果终端里变量正常,但 IDE 插件不正常,通常是 IDE 启动时没有继承 shell 环境。macOS 上从 Dock 启动的应用尤其常见。可以尝试从终端启动 IDE,或者在插件自己的配置项里单独填写 Key 和 Base URL。

六、CI / Docker 中的配置注意事项

CI 里不要把 Key 写死在仓库文件中,应放到 Secrets。以 GitHub Actions 为例:

env:
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
  OPENAI_BASE_URL: ${{ secrets.OPENAI_BASE_URL }}

Docker 运行时可以通过 -e 传入:

docker run --rm \
  -e OPENAI_API_KEY="$OPENAI_API_KEY" \
  -e OPENAI_BASE_URL="$OPENAI_BASE_URL" \
  your-image:latest

如果容器里访问宿主机代理,127.0.0.1 指的是容器自己,不是宿主机。Docker Desktop 下可以尝试使用 host.docker.internal

七、常见问题

1. 报 401 或 unauthorized

优先检查 Key 是否复制完整、是否包含多余空格、是否使用了错误账号的 Key。CI 中还要确认 Secret 名称没有写错。

2. 报 404 或 model not found

重点看 OPENAI_BASE_URL 是否带 /v1,模型名是否在当前服务可用列表中。中转服务和官方接口的模型命名不一定完全一致。

3. 请求超时

按顺序检查网络、代理、DNS、接口稳定性。不要一上来就怀疑 Codex,本地到接口的链路不稳定时,Codex 只是把错误暴露出来。

4. 改了变量仍不生效

重启终端、重启 IDE、重启后台服务。环境变量通常在进程启动时读取,运行中的进程不会自动感知你修改了系统变量。

总结

Codex 环境变量配置的核心就是三类:OPENAI_API_KEY 负责鉴权,OPENAI_BASE_URL 负责接口入口,HTTP_PROXY / HTTPS_PROXY 负责网络链路。配置时先做最小化 curl 测试,再放到 Codex、IDE 或 CI 里跑,能少走很多弯路。遇到问题按“变量是否读到、接口是否可达、模型名是否正确、运行环境是否继承变量”的顺序排查,基本能定位到具体环节。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐