Codex with ChatGPT
English | 简体中文
ChatGPT 负责思考,Codex 负责干活。
解决什么问题
ChatGPT 付费订阅的网页版额度大量闲置,Codex 却在消耗紧张的 API 额度做 规划和 Review。本项目把"思考"交给你已付费的网页版 ChatGPT,Codex 只负责 执行。不用 API Key、不搞逆向代理——官方网页 + 只读 MCP 桥接。
这是什么
把 ChatGPT 网页版变成 Codex 编码会话的"规划与审查大脑",而执行权完全保留在 Codex 手里。你的仓库永远不会被上传——ChatGPT 通过一条安全的、OAuth 保护的 只读 MCP 连接,按需读取当前工作区里它真正需要的那几行代码。
一段话安装(纯小白专用)
不懂 git、Node、终端?完全不需要懂。把下面这段话原样复制给你的编码 Agent(Codex),然后去倒杯咖啡:
请帮我完整安装并配置 Codex with ChatGPT,全程自动,我是不懂技术的小白,
所有事情你自己做:
1. 环境自检:需要 git 和 Node.js ≥ 20,缺什么就自动安装
(macOS 用 Homebrew,Windows 用 winget),同时安装 cloudflared。
2. 下载:把 https://github.com/XiaoDuoYa/codex-with-chatgpt 克隆到
~/codex-with-chatgpt(已存在就 git pull 更新)。
3. 构建:在该目录里执行 corepack pnpm install 和 corepack pnpm build。
4. 安装 Skill:把仓库里的 skill/SKILL.md 复制到
~/.codex/skills/codex-with-chatgpt/SKILL.md,并把文件中
"The codex-with-chatgpt checkout lives at:" 那一行的路径改成实际克隆路径。
5. 首次配置:按 SKILL.md 里的 first-time setup 流程执行
(运行 c2c setup,用内置浏览器打开 ChatGPT 配置连接器并输入配对码)。
全程只用内置浏览器,禁止打开任何第三方浏览器。
6. 只有遇到需要我登录(ChatGPT / Cloudflare)、验证码或两步验证时才叫我,
而且一次只告诉我一个动作。
7. 完成后给我看 ✓ 清单,并确认文件读取测试通过。我不懂 MCP、OAuth、
Tunnel、端口这些词,不要向我解释;出了问题先自己修。
更新:Skill 每天自动检查一次 GitHub,有新版本会自动更新并继续任务, 无需任何操作;也可以随时对 Codex 说"更新 Codex with ChatGPT"。
安装 → 配置 → 使用(手动版)
- 安装 Codex Skill:把
skill/复制到~/.codex/skills/codex-with-chatgpt/。 - 对 Codex 说:"使用 Codex with ChatGPT 完成首次配置。"
- 之后正常使用:"使用 Codex with ChatGPT,帮我实现 XXX。"
说明书到此结束。你不需要知道 MCP、OAuth、Tunnel、端口、localhost 是什么—— Codex 会自动完成所有配置,你只会看到:
Codex with ChatGPT
✓ 当前项目已识别
✓ Workspace Bridge 已启动
✓ 安全连接已建立
✓ ChatGPT 已连接
✓ 文件读取测试通过
Ready.
唯一可能需要你动手的步骤:登录 ChatGPT(如果要用固定域名,再登录一次 Cloudflare)。新仓库还会请你在 ChatGPT 里建一次项目(合集):名字用仓库名,记忆选「仅限项目记忆」。侧栏如果没有「项目」,把鼠标放在「聊天」上,点右边三个点,选「按项目整理」。之后对话都从合集页开,不用回首页。已经在用的仓库默认还是原来的一条长对话,除非你说要改成 Project。
可选的固定域名
默认公网地址是临时的,桥重启后会变。Codex 会删掉这个项目的 ChatGPT 插件再按新地址加回去。
如果你有 Cloudflare 账号,并且域名已经加在 Cloudflare 上,首次配置时(老用户则在下一次编码时问一次)会问你要不要用固定域名,例如 c2c-<项目>.你的域名。选是的话,浏览器里授权一次 Cloudflare 即可。之后重启一般不用再改插件。没有账号、不想用、登录失败:继续用临时地址,功能一样,只是修复更慢。
凭证放在系统目录,不进项目。
工作原理
┌───────────────────────────┐
│ ChatGPT 网页版 │
│ 推理 / 规划 / 审查 │
└──────────┬──────────▲─────┘
│ │
MCP │ │ Computer Use
数据面 │ │ 控制面(消息 < 1 KB)
▼ │
┌─────────────────────┐
│ C2C Bridge │ 仅监听本机回环地址
│ 只读 MCP │ OAuth 2.1 + 一次性配对码
│ OAuth + 配对 │ Cloudflare Quick Tunnel
│ Tunnel 管理 │
└──────────┬──────────┘
│ 只读
▼
┌─────────────────────┐ ┌─────────────────────┐
│ 本地工作区 │◀─────────│ Codex Harness │
└─────────────────────┘ 编辑/git │ Shell / 测试 / 修复 │
└─────────────────────┘
- 控制面(Computer Use):Codex 与 ChatGPT 之间只交换极小的结构化
[C2C]状态消息——INIT → PLAN → EXECUTED → REVIEW → DONE。绝不粘贴 diff、日志 或文件内容。 - 数据面(MCP):ChatGPT 缺什么自己拉什么,共 9 个只读工具:
workspace_info、list_directory、read_file、search_workspace、git_status、git_diff、test_status、execution_summary、execution_output。 - 独立审查:Codex 执行完毕后,ChatGPT 通过 MCP 亲自检查真实的 git diff 和测试记录——绝不因为 Codex 说"测试全过"就直接相信。
安全模型(简版)
- 从构造上只读:服务端根本不存在写文件/删除/Shell/提交类工具,任何提示 注入都无法启用它们。
- 一个工作区 = 一道边界:每个令牌绑定单一工作区;路径校验基于规范化
realpath(symlink、
../、绝对路径逃逸全部被拦截并有测试覆盖)。 - 敏感文件永不外泄:
.env*、密钥、SSH、各类凭据默认拒绝 (.env.example放行);.c2cignore可追加自定义规则。 - 知道 URL 不等于有权限:公网 MCP 端点强制 OAuth 2.1(PKCE S256、动态 客户端注册、refresh token 轮换)。无令牌:401;令牌属于别的工作区:403。
- 模型永远接触不到长期凭据:唯一会出现在浏览器里的秘密是一次性配对码 (5 分钟有效、限 5 次尝试、限速、用后即毁)。
完整威胁模型:docs/security.md
开发者
pnpm install
pnpm build # 产出 dist/,暴露 c2c 命令
pnpm test # vitest:146 个测试(路径安全、OAuth、配对、MCP 端到端)
c2c setup # 一条命令:Bridge + 隧道 + 配对码
c2c sandbox-allow # 把本地设置目录加入 Codex 沙箱白名单(macOS / Windows)
c2c status / doctor / pair / unpair / logs / stop
环境要求:Node.js >= 20、git;公网连接需要 cloudflared
(自动检测,Skill 会替你安装)。
目录结构
src/
bridge/ 本机回环 HTTP 服务、端口自动恢复、管理 API
mcp/ 9 个只读工具、无状态 Streamable HTTP
auth/ OAuth 2.1(PKCE、动态注册、refresh 轮换、吊销)
pairing/ 一次性配对码(CSPRNG、TTL、限速)
workspace/ 路径收敛、敏感文件策略、搜索、git
tunnel/ TunnelProvider 抽象 + Cloudflare Quick Tunnel
execution/ 审查闭环所需的执行记录
process/ 守护进程生命周期
cli/ c2c 命令行
skill/ Codex Skill(真正的 UX 层)
tests/ 单元 + 集成测试
docs/ 架构 / 协议 / 安全 / 故障排查
状态与声明
V1。已端到端验证:Bridge、OAuth + 配对、公网隧道、ChatGPT 连接器配置、 零操作首次配置体验。
非官方社区项目,与 OpenAI 无关联,未获其背书。