01 / 001
先下载并安装 Codex
如果电脑里还没有 Codex,先完成安装再准备 API Key。Windows 和 macOS 用户可以从官方页面下载桌面应用;习惯终端或使用 Linux 的用户,可以安装 Codex CLI。两种方式都能使用后文的 ModelPort 配置。
安装完成后先启动一次:桌面版确认可以正常打开;CLI 用户在终端运行 codex --version。确认客户端已经就绪后,再继续创建密钥和配置 Provider。
curl -fsSL https://chatgpt.com/codex/install.sh | shcodex --version- Windows / macOS:优先使用官方桌面应用下载页
- macOS / Linux:也可以使用官方独立安装脚本安装 Codex CLI
- 只从 OpenAI 官方页面或官方安装入口下载
02 / 001
安装完成后,创建 ModelPort API Key
ModelPort 是运行在 api.felixnode.com 的 AI API 网关。进入控制台后,先使用已有账号登录;截至本文更新,公开注册处于关闭状态,如果你还没有账号,需要联系站点管理员开通。
登录后进入「API Keys」,创建一枚新密钥。选择一个可用的 OpenAI 分组,填写便于识别的名称;有效期和额度按需要设置。创建完成后立即复制密钥,后面的示例统一把它放在 MODELPORT_API_KEY 环境变量里。
- 列表里没有可用分组时,先联系管理员分配权限
- 不要把 API Key 写进代码、Git 仓库、截图或公开日志
- 怀疑密钥泄露时,立即在控制台撤销并重新创建
03 / 001
先验证接口,再配置客户端
网关的 OpenAI 兼容基地址是 https://api.felixnode.com/v1。先在当前终端设置密钥,再请求 /models;模型列表可能随账号分组和服务配置变化,后续命令中的模型名应以这里的实际返回为准。
如果返回列表中包含 gpt-5.5,可以继续用第二条命令测试 Responses API。成功时会返回一段 JSON,其中包含模型输出;这一步通过后,再去配置 Codex,排错会简单很多。
export MODELPORT_API_KEY="YOUR_API_KEY"$env:MODELPORT_API_KEY = "YOUR_API_KEY"curl https://api.felixnode.com/v1/models \
-H "Authorization: Bearer $MODELPORT_API_KEY"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。
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 指定的环境变量提供。
05 / 001
在 ModelPort 与 OpenAI 间切换
只针对新会话时,最直接的做法是修改 ~/.codex/config.toml 顶层的 model_provider。写成 cmdme 就走 ModelPort;写成 openai 就回到 Codex 内置的 OpenAI Provider。
修改后重新启动 Codex,并确认启动进程已经读到相应的认证信息。切到 ModelPort 前要设置 MODELPORT_API_KEY;切到 openai 时使用 Codex 原有的 OpenAI 登录。
model_provider = "cmdme"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 之间自动选择另一方。
curl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- statuscurl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- cmdme --launchcurl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- openai --launchcurl --proto '=https' --tlsv1.2 -fsSL https://api.felixnode.com/tools/codex-provider/run | bash -s -- toggle --launchcurl --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/;任一步骤失败都会尝试回滚。
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 占用的历史目录,以及无法识别的数据结构
08 / 001
常见错误与安全检查
401 或 403 通常意味着环境变量没有被当前进程读取、密钥已失效,或账号没有对应分组权限;先在同一个终端重新请求 /v1/models。404 时检查 base_url 是否准确停在 /v1,避免漏写或重复拼接。
模型不存在时不要猜名称,重新读取 /v1/models 并替换配置。切换器提示进程占用时,保存工作并彻底退出所有 Codex 客户端后再试;不要跳过占用检查。
- 先用 /v1/models 区分认证问题和模型问题
- 只在受信任的设备上保存 MODELPORT_API_KEY
- 定期撤销不再使用的密钥,并给不同设备使用不同密钥
- 切换前保留工具生成的备份,确认会话正常后再清理