01 / 001

先下载并安装 Codex

如果电脑里还没有 Codex,先完成安装再准备 API Key。Windows 和 macOS 用户可以从官方页面下载桌面应用;习惯终端或使用 Linux 的用户,可以安装 Codex CLI。两种方式都能使用后文的 ModelPort 配置。

安装完成后先启动一次:桌面版确认可以正常打开;CLI 用户在终端运行 codex --version。确认客户端已经就绪后,再继续创建密钥和配置 Provider。

macOS / Linux · 安装 Codex CLICODE
curl -fsSL https://chatgpt.com/codex/install.sh | sh
确认 Codex CLI 已安装CODE
codex --version
  • Windows / macOS:优先使用官方桌面应用下载页
  • macOS / Linux:也可以使用官方独立安装脚本安装 Codex CLI
  • 只从 OpenAI 官方页面或官方安装入口下载
下载 ChatGPT / Codex 桌面应用↗查看 Codex CLI 官方安装说明↗

02 / 001

安装完成后,创建 ModelPort API Key

ModelPort 是运行在 api.felixnode.com 的 AI API 网关。进入控制台后,先使用已有账号登录;截至本文更新,公开注册处于关闭状态,如果你还没有账号,需要联系站点管理员开通。

登录后进入「API Keys」,创建一枚新密钥。选择一个可用的 OpenAI 分组,填写便于识别的名称;有效期和额度按需要设置。创建完成后立即复制密钥,后面的示例统一把它放在 MODELPORT_API_KEY 环境变量里。

  • 列表里没有可用分组时,先联系管理员分配权限
  • 不要把 API Key 写进代码、Git 仓库、截图或公开日志
  • 怀疑密钥泄露时,立即在控制台撤销并重新创建
打开 ModelPort 控制台↗

03 / 001

先验证接口,再配置客户端

网关的 OpenAI 兼容基地址是 https://api.felixnode.com/v1。先在当前终端设置密钥,再请求 /models;模型列表可能随账号分组和服务配置变化,后续命令中的模型名应以这里的实际返回为准。

如果返回列表中包含 gpt-5.5,可以继续用第二条命令测试 Responses API。成功时会返回一段 JSON,其中包含模型输出;这一步通过后,再去配置 Codex,排错会简单很多。

macOS / Linux · 当前终端CODE
export MODELPORT_API_KEY="YOUR_API_KEY"
Windows PowerShell · 当前窗口CODE
$env:MODELPORT_API_KEY = "YOUR_API_KEY"
查看当前账号可用模型CODE
curl https://api.felixnode.com/v1/models \
  -H "Authorization: Bearer $MODELPORT_API_KEY"
发送一条 Responses API 请求CODE
curl https://api.felixnode.com/v1/responses \
  -H "Authorization: Bearer $MODELPORT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "input": "用一句话确认连接成功。"
  }'

不要把真实密钥直接写进命令示例或配置文件。环境变量只对当前终端会话生效;需要长期使用时,请交给你惯用的 shell 配置或系统密钥管理方式,并确认启动 Codex 的进程能读取到它。

04 / 001

把 ModelPort 接入 Codex

Codex 的用户级配置位于 ~/.codex/config.toml。请在这个文件里合并下面的内容,不要直接覆盖你已有的其他设置。ModelPort 继续使用 cmdme 作为兼容 Provider ID,确保已有配置和历史会话无需迁移。

控制台的「使用密钥」可以生成一份快速配置。这里改用独立的 MODELPORT_API_KEY 环境变量:它不会覆盖 Codex 内置 OpenAI 的登录凭据,切回 openai 时更干净。示例模型 gpt-5.5 也应替换成 /v1/models 对你的账号实际返回的模型 ID。

~/.codex/config.tomlCODE
model_provider = "cmdme"
model = "gpt-5.5"
model_reasoning_effort = "xhigh"
disable_response_storage = true

[model_providers.cmdme]
name = "ModelPort"
base_url = "https://api.felixnode.com/v1"
wire_api = "responses"
env_key = "MODELPORT_API_KEY"
env_key_instructions = "Set MODELPORT_API_KEY before starting Codex"

model_provider 和自定义 model_providers 属于用户级配置;项目目录里的 .codex/config.toml 不能替代这里的 Provider 定义。wire_api 使用 responses,密钥由 env_key 指定的环境变量提供。

查看 Codex 官方配置参考↗

05 / 001

在 ModelPort 与 OpenAI 间切换

只针对新会话时,最直接的做法是修改 ~/.codex/config.toml 顶层的 model_provider。写成 cmdme 就走 ModelPort;写成 openai 就回到 Codex 内置的 OpenAI Provider。

修改后重新启动 Codex,并确认启动进程已经读到相应的认证信息。切到 ModelPort 前要设置 MODELPORT_API_KEY;切到 openai 时使用 Codex 原有的 OpenAI 登录。

使用 ModelPort(兼容 ID:cmdme)CODE
model_provider = "cmdme"
切回内置 OpenAICODE
model_provider = "openai"

手动修改只足够处理新会话。已经存在的对话还可能在会话元数据、逐轮设置和本地索引中保留旧 Provider;要连同历史会话一起切换,请使用下一节的切换器。

06 / 001

用切换器迁移现有 Codex 会话

先运行只读的 status,确认当前 Provider 和待处理范围。status 可以在 Codex 打开时执行;但运行 cmdme、openai 或 toggle 之前,必须退出 Codex Desktop、CLI 和 IDE 插件中的所有 Codex 进程,避免它们同时写入本地历史。cmdme 是 ModelPort 为兼容旧配置保留的命令名。

命令里的 --launch 表示迁移成功后启动 Codex CLI。如果你使用桌面版,去掉 --launch,切换完成后再手动打开桌面应用。toggle 会在 ModelPort 与 OpenAI 之间自动选择另一方。

只读检查当前状态CODE
curl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- status
切到 ModelPort,并启动 Codex CLICODE
curl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- cmdme --launch
切回内置 OpenAI,并启动 Codex CLICODE
curl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- openai --launch
在两个 Provider 之间自动切换CODE
curl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- toggle --launch
切换后从指定项目启动CODE
curl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- cmdme --launch -- -C /path/to/project

远程脚本会在本机执行。第一次使用前如果希望先审阅内容,可以按下一节的方式下载到临时文件,阅读后再运行。

07 / 001

先审阅脚本,以及它会修改什么

更谨慎的用法是先下载固定入口、用 less 阅读,再从本地文件执行 status。真正切换时,工具会统一修改用户配置、活动与归档会话的 Provider 元数据、逐轮设置,以及 state_5.sqlite 中的线程 Provider 索引。

它不会改写对话正文、模型名称、标题、排序或项目目录。写入前会检查结构和进程占用,并把相关文件备份到 ~/.codex/provider-migration-backups/;任一步骤失败都会尝试回滚。

下载、审阅,再做只读检查CODE
curl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run -o /tmp/codex-provider-run
less /tmp/codex-provider-run
bash /tmp/codex-provider-run status
  • 会修改:顶层 model_provider、会话 Provider 元数据、逐轮设置、本地线程索引
  • 不会修改:对话内容、模型名、标题、顺序和项目路径
  • 会备份:受影响的配置、数据库和迁移字段清单
  • 会拒绝:仍被 Codex 占用的历史目录,以及无法识别的数据结构
查看 Provider 切换器入口↗

08 / 001

常见错误与安全检查

401 或 403 通常意味着环境变量没有被当前进程读取、密钥已失效,或账号没有对应分组权限;先在同一个终端重新请求 /v1/models。404 时检查 base_url 是否准确停在 /v1,避免漏写或重复拼接。

模型不存在时不要猜名称,重新读取 /v1/models 并替换配置。切换器提示进程占用时,保存工作并彻底退出所有 Codex 客户端后再试;不要跳过占用检查。

  • 先用 /v1/models 区分认证问题和模型问题
  • 只在受信任的设备上保存 MODELPORT_API_KEY
  • 定期撤销不再使用的密钥,并给不同设备使用不同密钥
  • 切换前保留工具生成的备份,确认会话正常后再清理
ModelPort↗Codex Configuration Reference↗
END OF NOTE 001