把 Codex 配成一个保守、可回滚的双模型系统:
gpt-5.5保持为默认模型,继续走 Codex 官方openaiprovider。deepseek-v4-flash和deepseek-v4-pro通过本地 LiteLLM gateway 接入。- DeepSeek API Key 从 macOS Keychain 或环境变量读取,不写进 Git、
config.toml或模型目录。 - 安装前自动备份 Codex 配置,不删除
~/.codex、sessions、history 或聊天记录。 - 默认不把 DeepSeek 注入 Codex UI 模型选择器;当前 Codex 构建中,UI 选择自定义模型可能仍会走 ChatGPT/OpenAI 账号并报错。
从 GitHub 克隆后,复制到 Codex skills 目录:
git clone https://github.com/sunny314woo/codex-model-router.git
mkdir -p "$HOME/.codex/skills"
cp -R codex-model-router "$HOME/.codex/skills/"然后重启 Codex,让 Codex 重新发现这个 skill。
如果你已经在本地拿到了这个目录,也可以直接:
mkdir -p "$HOME/.codex/skills"
cp -R /path/to/codex-model-router "$HOME/.codex/skills/"不要把 API Key 写进 README、Git、config.toml、deepseek.yaml 或任何公开文件。
macOS 推荐使用 Keychain:
export DEEPSEEK_API_KEY="your_deepseek_api_key_here"
security add-generic-password -s codex-deepseek-api-key -a "$USER" -w "$DEEPSEEK_API_KEY" -U
unset DEEPSEEK_API_KEY临时测试也可以只用环境变量:
export DEEPSEEK_API_KEY="your_deepseek_api_key_here"环境变量方式适合手动测试;如果使用 launchd 后台服务,推荐 Keychain,因为 launchd 不一定继承你当前终端里的环境变量。
进入 skill 目录:
cd "$HOME/.codex/skills/codex-model-router"
python3 scripts/install.py --install-litellm如果你已经有 $HOME/.codex/litellm-venv,可以省略 LiteLLM 安装:
python3 scripts/install.py如果你想实验性地让 DeepSeek 出现在 Codex UI 模型列表里:
python3 scripts/install.py --experimental-ui-catalog注意:这只影响模型列表展示。当前测试过的 Codex 构建不会把 UI 里选中的自定义模型稳定绑定到自定义 provider。如果看到类似下面的错误,请改用 profile:
The 'deepseek-v4-flash' model is not supported when using Codex with a ChatGPT account.
只想手动测试、不安装 launchd 服务:
DEEPSEEK_API_KEY="your_deepseek_api_key_here" python3 scripts/install.py --no-launchd安装器会输出一个备份目录,例如:
$HOME/.codex/backups/codex-model-router-YYYYMMDDHHMMSS
请保留它,回滚会用到。
默认 Codex 仍然使用 GPT-5.5:
codex使用 DeepSeek Flash:
codex --profile deepseek-flash使用 DeepSeek Pro:
codex --profile deepseek-pro当前稳定用法是:不用重启 Codex app,但需要用不同的 Codex CLI session 来选择 provider。
| 场景 | 是否支持 | 说明 |
|---|---|---|
| 安装后用 CLI profile 调 DeepSeek | 支持 | 不需要重启;服务启动后直接运行 codex --profile deepseek-flash |
| 默认 GPT-5.5 和 DeepSeek 来回切 | 支持 | 分别运行 codex、codex --profile deepseek-flash 或 codex --profile deepseek-pro |
| 同一个桌面 UI 对话里切到 DeepSeek | 当前不可靠 | UI 可能只改 model,不改 model_provider,导致 ChatGPT 账号报错 |
| 同一个 Codex 对话中无缝从 GPT-5.5 切到 DeepSeek | 当前不支持 | Codex session 的 provider 需要在启动时确定 |
| 修改 skill/README 后让 Codex 发现 skill | 需要重启 Codex app | 这是 skill 发现机制,不是模型调用机制 |
如果你想“完全不重启、也不切换对话”,当前 Codex 官方 UI 还不能稳定做到。这个项目的可靠边界是:不重启,但用 profile 开一个对应模型的 CLI session。
检查本地 DeepSeek gateway 是否工作:
curl -fsS http://127.0.0.1:4000/v1/models验证默认 GPT-5.5:
printf '%s' 'Reply exactly: gpt-default-ok' | codex exec --strict-config --sandbox read-only --ephemeral --skip-git-repo-check -验证 DeepSeek Flash:
printf '%s' 'Reply exactly: deepseek-ok' | codex exec --profile deepseek-flash --strict-config --sandbox read-only --ephemeral --skip-git-repo-check -用安装器输出的备份目录恢复:
python3 scripts/rollback.py --backup-dir "$HOME/.codex/backups/codex-model-router-YYYYMMDDHHMMSS" --restart-service只停止 LiteLLM 服务:
launchctl bootout "gui/$(id -u)" "$HOME/Library/LaunchAgents/com.codex.deepseek-litellm.plist"回滚脚本不会修改 Codex sessions、history 或聊天记录。
当前测试过的 Codex 构建不会把模型目录里的自定义模型稳定绑定到自定义 provider。如果你在 UI 里选择 deepseek-v4-flash,Codex 可能仍然用 ChatGPT/OpenAI 账号发请求,并报:
The 'deepseek-v4-flash' model is not supported when using Codex with a ChatGPT account.
因此,可靠切换 DeepSeek 的方式是使用 profile:
codex --profile deepseek-flash
codex --profile deepseek-pro不要默认假设只在 UI 里点选 DeepSeek 就一定会切换到底层 DeepSeek provider,除非你在自己的 Codex 版本里验证过。
发布到 GitHub 前建议执行:
python3 /path/to/quick_validate.py .
python3 -m py_compile scripts/install.py scripts/rollback.py
if rg -q 'sk-[A-Za-z0-9_\-]{12,}' .; then echo "secret-like token found"; else echo "no secret-like token"; fi仓库里的 .gitignore 已经排除了常见敏感文件和本地 Codex 状态,但发布前仍建议人工确认一次。