简体中文 · English
将 DeepSeek 真正地接入 Codex 中。Codex 做总指挥,自动选择 Flash / Pro , 把便宜的大量阅读交给 Flash ,把难问题交给 Pro ,并且最终由 Codex 验收。
先看结果
| 主控不变 | 双 Agent 分工 | 结果可证明 |
|---|---|---|
不修改 config.toml,父模型、Provider 和 ChatGPT 登录保持原样 |
Flash 负责快速只读探索,Pro 负责深度推理与实现 | callback 、线程数据库元数据、随机 challenge marker 三重验收 |
这不是 daemon 、proxy 、MCP Server 或第二套 Agent runtime 。它是一组受管的 Codex 原生配置:两个 Agent 、一个模型目录、一个明文交接 Hook 、一个运行时 路由 Skill 和一个事务化管理器。
快速开始
要求:Node.js/npm 、Python 3.9+、至少启动过一次的 ChatGPT Desktop ( Codex ) 或已经安装 Codex CLI ,以及 DeepSeek API Key 。
1. 安装 Plugin
ChatGPT Desktop (推荐)
只安装了 ChatGPT Desktop 的用户不需要在系统终端运行 codex。打开 Desktop
中的 Codex ,新建任务,然后直接发送:
请安装这个插件:
https://github.com/TheBlindM/codex-deepseek-router
Codex Agent 会检查仓库中的 .agents/plugins/marketplace.json 并发起安装;出现
插件确认页面时点击 Install plugin。安装完成后用 ⌘Q( macOS )或完全退出
应用( Windows ),重新打开并新建任务。
仅安装 Desktop 时,系统终端出现 command not found: codex 属于正常情况;
这不影响 Agent 在 Desktop 中安装插件。也可以在 Plugins 页面找到
DeepSeek Router 后手动点击安装。
Codex CLI
只有在系统终端执行 codex --version 成功时才使用下面的命令:
codex plugin marketplace add TheBlindM/codex-deepseek-router
codex plugin add codex-deepseek-router@deepseek-router
这里的 deepseek-router 是仓库提供的 Marketplace 名称,定义在
.agents/plugins/marketplace.json,不是需要用户自行替换的占位符。
Plugin 会同时提供管理 Skill 、路由 Skill 与原生 Hook ,不需要手动写入全局
~/.codex/hooks.json。
更新或卸载
| 环境 | 更新 | 卸载 |
|---|---|---|
| ChatGPT Desktop | 把上面的 GitHub 地址再次交给 Codex Agent ,并要求“更新并重新安装这个插件”;或在 Plugins 页面卸载后重新安装 | 在 Plugins → Installed 中打开插件并选择卸载 |
| Codex CLI | 依次运行 codex plugin marketplace upgrade deepseek-router 和 codex plugin add codex-deepseek-router@deepseek-router |
运行 codex plugin remove codex-deepseek-router@deepseek-router |
无论使用哪种方式,安装或更新后都应完全重启 Desktop/CLI ,并打开新任务, 让新的 Skill 、Hook 和工具生效。更多通用说明见 OpenAI Plugins 文档。
2. 在 Codex 中完成配置
重启 Codex 、打开新任务,然后说:
请帮我安装并配置 codex-deepseek-router 。
Skill 会先检查状态。缺少凭据时,Codex 会索要 API Key ,并只通过标准输入 交给管理器;密钥不会进入命令参数、配置文件或聊天回显。
3. 审查并验收
- 重启 Codex 或打开新任务,在原生 Plugin Hook UI 中 Review/Trust 。
- 让 Codex 运行真实路由测试; Flash 与 Pro 必须分别通过。
- 若当前版本没有自动显示 Review Prompt ,再在交互式 CLI 使用
/hooks。
以后可以直接说:
用 DeepSeek 子 Agent 评审这个仓库。
它如何工作
用户任务
│
├─ 模态门:TEXT_ONLY / VISION_TRANSLATABLE / VISION_CRITICAL
├─ 敏感数据门:密钥与敏感内容留在 Codex
├─ 模型路由:Flash / Pro / 不委托
└─ 策略路由:FAST / REACT / SPEC / DEEP
│
▼
stage → SubagentStart Hook → DeepSeek 子 Agent
│
▼
原生 callback → 元数据与 marker 验证 → Codex 整合
谁来做什么
| 路由目标 | 适合 | 边界 |
|---|---|---|
deepseek_flash |
搜索、枚举、日志、抽取、代码地图、大量阅读 | 只读;输出修改提案,不直接改文件 |
deepseek_pro |
根因、架构、并发、安全、复杂评审和跨模块实现 | 可写工作区;负责需要深度推理的落地 |
| Codex 父 Agent | 琐碎任务、敏感内容、关键视觉判断、最终验证与整合 | 始终保留主控权 |
Flash 可以返回带 Evidence Packet 的 ESCALATE_TO_PRO; Pro 从已有证据继续,
不重新扫描整个仓库。FAST / REACT / SPEC / DEEP 为有边界的决策合同,不是
额外的模型或运行时。
安装内容与安全边界
管理器会:
- 同时安装
deepseek-flash.toml与deepseek-pro.toml; - 在
~/.codex/models.json同时注册两个模型; - 由 Plugin 提供
skills/与hooks/hooks.json; Hook 通过PLUGIN_ROOT定位文件,不依赖 cwd 或用户绝对路径; - setup 只配置凭据、Agent 、模型目录与显式路由所需的本地运行时;
- 使用系统凭据库保存 Key ,并在任何步骤失败时完整回滚;
- 永远不修改父任务的
config.toml,也不伪造 Hook 信任状态。
macOS 通过同一个 Python 进程身份调用 Security.framework 读写 Keychain ;
status/doctor 只检查条目是否存在,不解密 Key ,也不会为一次状态检查
重复触发钥匙串授权。所有面向用户的回复跟随用户当前使用的语言。
DeepSeek 子 Agent 只接收文本。截图、图片和视频必须先由 Codex 转成文字事实;
关键视觉判断不会委托。Windows Agent 通过用户环境变量
DEEPSEEK_API_KEY 认证,设置后需要完全重启 Codex 。
管理命令
| 命令 | 作用 |
|---|---|
status |
只读检查运行时、Agent 、模型目录、凭据与 Hook |
setup |
幂等、事务化地安装全部组件 |
test |
分别执行 Flash 与 Pro 的真实原生派发验收 |
repair |
在父模型升级、Codex 更新或配置漂移后恢复 |
migrate |
精确移除旧 Skill-first 全局 Hook ,不触碰其它 Hook |
disable |
记录停用意图; Plugin Hook 由 Codex/Plugin 管理 |
uninstall |
删除本项目拥有的内容;默认保留 API Key |
doctor |
诊断环境、Hook 信任与 handoff 状态 |
所有命令支持 --json 与 --codex-home。退出码:0 表示
ready/configured ,2 表示需要人工处理,3 表示超时,1 表示意外失败。
git clone https://github.com/TheBlindM/codex-deepseek-router.git
cd codex-deepseek-router
python3 scripts/codex_deepseek_router.py status --json
只通过 stdin 配置 Key:
printf '%s\n' '<你的 key>' | python3 scripts/codex_deepseek_router.py setup --api-key-stdin --json
完成 Codex 原生 Plugin Hook 审查(若未出现提示,再用 CLI /hooks)后运行真实验收:
python3 scripts/codex_deepseek_router.py test --json
test 会分别证明两个角色使用正确的 model_provider、model 与 agent role ,
并验证每个子 Agent 返回独立的随机 marker 。Flash 通过不代表 Pro 通过。

