Codex
把下方全部内容复制粘贴给终端里正在运行的 claude 或 codex,让它自己读步骤、自己动手把 Codex 接到 OpenMux。
你是一个跑在终端(macOS)或命令提示符(Windows)里的 AI 编程助手。用户想让你把 Codex CLI 的请求改走 OpenMux(一个兼容 OpenAI 协议的 API 中转网关),而不是走 OpenAI 官方默认地址。请你自己动手执行下面的命令,不要只是把命令打印出来给用户看。
第一步:如果还没装 Codex CLI,先装上
先检查——如果 codex --version 已经能跑,跳过这步。没装的话:
macOS / Linux(官方安装脚本,已实测端到端跑通——会重新导出一次 PATH,同一个终端窗口马上能用):
command -v codex >/dev/null 2>&1 || curl -fsSL https://chatgpt.com/codex/install.sh | CODEX_NON_INTERACTIVE=1 sh export PATH="$HOME/.local/bin:$PATH"
Windows——OpenAI 官方在 Windows 上没有一键安装脚本,只能用 npm(前提是已经装了 Node.js)。国内用户先切 npmmirror 镜像再装,否则大概率卡住:
npm config set registry https://registry.npmmirror.com npm install -g @openai/codex
安装包约 337 MB(平台二进制以 npm 可选依赖形式打包,安装全程不访问 OpenAI 原厂服务器)。
第二步:拿到 API Key
如果用户还没给,请他粘贴自己的 OpenMux API Key(以 om-sk-、om-sa- 或 om-ss- 开头)。如果他还没创建过,提示他去 openmux.ai/dashboard/keys 创建。
第三步:重要——单独设环境变量是没用的
跟大多数兼容 OpenAI 协议的客户端不一样,Codex CLI 会完全无视单独设置的 OPENAI_BASE_URL 环境变量。它只认通过 -c 命令行覆盖、或者写进 ~/.codex/config.toml 定义的自定义 provider。不要只是 export 一个 OPENAI_BASE_URL 就以为配好了,一定要走第四步验证。
第四步:选一种方式
方式 A——一次性,不改任何文件(适合快速验证):
先把 key 设成环境变量,再在命令行里加 -c 覆盖。先判断系统,用对应语法。
macOS/Linux(bash/zsh):
export OPENMUX_KEY="<用户的 key>" codex exec -c model_providers.openmux.base_url="https://openmux.ai/v1" -c model_providers.openmux.wire_api="responses" -c model_providers.openmux.env_key="OPENMUX_KEY" -c model_provider="openmux" "hi"
Windows(cmd.exe):
set OPENMUX_KEY=<用户的 key> codex exec -c model_providers.openmux.base_url="https://openmux.ai/v1" -c model_providers.openmux.wire_api="responses" -c model_providers.openmux.env_key="OPENMUX_KEY" -c model_provider="openmux" "hi"
方式 B——永久生效,交互式 `codex` 和 Codex 桌面版都能用:
编辑(或创建)~/.codex/config.toml,加入:
model_provider = "openmux" model = "gpt-5.4" [model_providers.openmux] name = "openmux" base_url = "https://openmux.ai/v1" wire_api = "responses" env_key = "OPENMUX_CODEX_KEY"
wire_api 必须精确等于 "responses"——Codex 不支持 "chat_completions"。model 必须显式指定,否则 Codex 会 fallback 到自带的默认值,该模型在 OpenMux 上可能不存在。
然后把 OPENMUX_CODEX_KEY 设成永久环境变量,这样重开终端不会丢,桌面版 App(不会继承 shell 会话变量)也能读到:
macOS——设到系统级,并让它能在重启后依然生效:
launchctl setenv OPENMUX_CODEX_KEY "<用户的 key>"
要在重启后依然生效,写一个 LaunchAgent:
KEY="<用户的 key>"
launchctl setenv OPENMUX_CODEX_KEY "$KEY"
PLIST=~/Library/LaunchAgents/com.user.openmux-env.plist
python3 -c "
import plistlib,pathlib
p=pathlib.Path('$PLIST'.replace('~',str(pathlib.Path.home())))
p.parent.mkdir(exist_ok=True)
plistlib.dump({'Label':'com.user.openmux-env','ProgramArguments':['/bin/launchctl','setenv','OPENMUX_CODEX_KEY','$KEY'],'RunAtLoad':True},open(p,'wb'))
"
launchctl load $PLIST 2>/dev/null || trueWindows(cmd.exe)——用 setx 设用户级永久变量。不要用 PowerShell,cmd 更稳:
setx OPENMUX_CODEX_KEY "<用户的 key>"
⚠️ setx 只对新开的窗口生效——设完关掉这个 cmd 窗口,重新开一个,再跑 codex。跑之前先确认 key 保存正确:
echo %OPENMUX_CODEX_KEY%
如果输出看起来被截断或者有重复内容,说明粘贴时出错——重新 setx 一次正确的 key。
Windows 上用 cmd 创建配置文件(PowerShell 的 here-string 语法容易静默出错):
mkdir "%USERPROFILE%\.codex" 2>nul ( echo model_provider = "openmux" echo model = "gpt-5.4" echo. echo [model_providers.openmux] echo name = "openmux" echo base_url = "https://openmux.ai/v1" echo wire_api = "responses" echo env_key = "OPENMUX_CODEX_KEY" ) > "%USERPROFILE%\.codex\config.toml"
验证写入:type "%USERPROFILE%\.codex\config.toml"
沙箱选择(仅 Windows): 首次运行 Codex 会弹出沙箱设置界面,选选项 2(非管理员沙箱)——选项 1 需要管理员权限,普通用户公司电脑通常没有,会卡在这一步。
第五步:验证
运行:
codex exec --skip-git-repo-check "hi"
(如果已经在一个受信任的 git 仓库里,可以去掉 --skip-git-repo-check)
如果收到文字回复,告诉用户配置完成。如果看到反复 "Reconnecting..." 或 401,依次检查:(1) wire_api 是不是 "responses";(2) env_key 里写的那个环境变量名下是否真的存了 key;(3) model_provider 是不是已经改成 "openmux",而不是还留着默认的 "openai"。
