ChatGPT Codex代理
跑 克劳德代码 在你的 ChatGPT Plus/Pro订阅 --零工作流程更改。
这是什么?
该代理允许Claude Code与ChatGPT的Codex后端而不是Anthropic的API进行对话。 你继续使用 claude 与之前完全相同——相同的UI、相同的斜线命令、相同的MCP工具——而推理由GPT提供。
Claude Code ──POST /v1/messages──> chatgpt-codex-proxy ──POST /codex/responses──> ChatGPT
cd chatgpt-codex-proxy
npm install && npm run build
# Login with your ChatGPT account (browser opens)
npm run login
# Start the proxy
npm run dev然后在另一个终端中:
export ANTHROPIC_BASE_URL=http://127.0.0.1:19080
export ANTHROPIC_API_KEY=dummy # value is unused; variable must be set
claude就是这样。Claude Code现在正在GPT上运行。
可选:shell助手
将此添加到 .zshrc/.bashrc 为了快速 gpt 别名:
gpt() {
emulate -L zsh
local proxy_port="${CHATGPT_CODEX_PROXY_PORT:-19080}"
local token="${ANTHROPIC_AUTH_TOKEN:-${ANTHROPIC_API_KEY:-dummy}}"
export ANTHROPIC_BASE_URL="http://127.0.0.1:${proxy_port}"
export ANTHROPIC_AUTH_TOKEN="$token"
export ANTHROPIC_API_KEY="${ANTHROPIC_API_KEY:-$token}"
export API_TIMEOUT_MS="${API_TIMEOUT_MS:-90000}"
export PASSTHROUGH_MODE="${PASSTHROUGH_MODE:-true}"
unset CLAUDE_CONFIG_DIR
echo "Using local Codex proxy on :${proxy_port}"
claude "$@"
}MCP刀具注射
Claude Code的MCP工具通常对非Claude后端不可见。这个代理弥合了这一差距。
Claude Code chatgpt-codex-proxy ChatGPT Codex API
│ tools: [Edit, Bash, ...] │ tools: [Edit, Bash, ... │
│ (deferred: stitch, qmd, ...) │ + mcp__stitch__* │
│ │ + mcp__qmd__* ] │
│ ──────────────────────────────>│ ──────────────────────────────> │它是如何工作的:
- 启动时:读取
~/.claude.json→mcpServers - 运行MCP握手(
initialize→tools/list)对于每个已启用的服务器 - 在代理进程的生命周期内在内存中缓存模式
- 在每一个
/v1/messages请求:将缓存的工具附加到Codextools数组 - 当GPT调用工具时:Claude Code收到
tool_use响应,执行真正的MCP调用,并通过代理将结果发送回
两个HTTP(type: http)和stdio(command)支持MCP服务器。
配置 --set PROXY_MCP_SERVERS 在 .env:
# Specific servers (names must match keys in ~/.claude.json)
PROXY_MCP_SERVERS=stitch,linear
# All servers registered in ~/.claude.json
PROXY_MCP_SERVERS=all
# Disabled (default)
PROXY_MCP_SERVERS=启动日志:
[mcp-registry] connecting to: stitch, linear
[mcp-registry] stitch: 8 tools loaded
[mcp-registry] linear: 6 tools loaded
[mcp-registry] ready: 14 total MCP tools配置
.env 设置
cp .env.example .env模型映射
默认情况下(PASSTHROUGH_MODE=true)代理将Claude Code直接发送的任何模型名称转发给Codex。集 PASSTHROUGH_MODE=false 启用自动Claude→ 食品法典制图:
| 克劳德模型 | Codex模型 |
|---|---|
claude-sonnet-4-20250514 | gpt-5.2-codex |
claude-3-5-sonnet-20241022 | gpt-5.2-codex |
claude-3-haiku-20240307 | gpt-5.3-codex-spark |
claude-3-opus-20240229 | gpt-5.3-codex-xhigh |
| (回退) | gpt-5.2-codex |
每个家庭的覆盖范围:
ANTHROPIC_DEFAULT_HAIKU_MODEL=gpt-5.3-codex-spark
ANTHROPIC_DEFAULT_SONNET_MODEL=gpt-5.2-codex
ANTHROPIC_DEFAULT_OPUS_MODEL=gpt-5.2-codex可用的Codex型号
| 模型 | 努力 | 备注 |
|---|---|---|
gpt-5.4 | 高 | 旗舰(2026) |
gpt-5 | 高 | |
gpt-5-codex | 高 | 针对代理编码进行了优化 |
gpt-5-codex-mini | 中等 | |
gpt-5.3-codex | 高 | |
gpt-5.3-codex-xhigh \[UNK\]去\[UNK\]\[UNK\] | ||
gpt-5.3-codex-medium | 中等 | |
gpt-5.3-codex-low | 低 | |
gpt-5.3-codex-spark | 低速 | 速度优化,>1000tok/s |
gpt-5.2-codex | 高 | 代理默认值 |
gpt-5.2-codex-xhigh \[UNK\]去\[UNK\]\[UNK\] | ||
gpt-5.2-codex-medium | 中等 | |
gpt-5.2-codex-low | 低 | |
gpt-5.1-codex | 高 | |
gpt-5.1-codex-max \[UNK\]去\[UNK\]\[UNK\] | ||
gpt-5.1-codex-mini | 中等 |
简写别名: gpt-5.3 → gpt-5.3-codex, gpt-5.2 → gpt-5.2-codex, gpt-5.1 → gpt-5.1-codex
努力控制
Claude Code的努力滑块只影响原生Claude模型——当使用GPT模型时,它不包括在API请求中。通过以下方式控制推理工作:
方法1——型号名称后缀 (推荐)
export ANTHROPIC_DEFAULT_SONNET_MODEL="gpt-5.3-codex-xhigh" # xhigh
export ANTHROPIC_DEFAULT_HAIKU_MODEL="gpt-5.3-codex-spark" # low方法2——全局覆盖
PROXY_DEFAULT_EFFORT=high优先: thinking.budget_tokens 需要的→ 型号名称后缀/表→ PROXY_DEFAULT_EFFORT → medium
CLI命令
| 命令 | 描述 |
|---|---|
npm run login | OAuth登录(浏览器) |
npm run logout | 删除已存储的令牌 |
npm run status | 显示身份验证状态 |
npm run dev | 启动开发服务器(热重新加载) |
npm run start | 启动生产服务器 |
API兼容性
| 能力 | 支持 | 备注 |
|---|---|---|
| 基本聊天 | ✅ | |
| 流媒体 | ✅ | 上海证券交易所 |
| 多圈 | ✅ | |
| 系统提示 | ✅ | 映射到 instructions |
| 工具调用 | ✅ | 完整的工具使用/工具结果周期 |
| 图像输入 | ⚠️ | 有限 |
| 温度 | ❌ | Codex后端不支持 |
| 最大令牌数 | ❌ | Codex后端不支持 |
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
PORT | 19080 | 服务器端口 |
PROXY_JSON_LIMIT | 20mb | JSON正文大小限制 |
CODEX_BASE_URL | https://chatgpt.com/backend-api | 法典API基本URL |
PASSTHROUGH_MODE | true | false 启用克劳德→Codex模型映射 |
ANTHROPIC_DEFAULT_HAIKU_MODEL | - | Haiku请求的Codex模型 |
ANTHROPIC_DEFAULT_SONNET_MODEL | - | Sonnet请求的Codex模型 |
ANTHROPIC_DEFAULT_OPUS_MODEL | - | Opus请求的Codex模型 |
PROXY_DEFAULT_EFFORT | _(自动)_ | low / medium / high / xhigh |
PROXY_MCP_SERVERS | _(残疾)_ | all 或以逗号分隔的服务器名称 ~/.claude.json |
故障排除
# Health check
curl -fsS http://127.0.0.1:19080/health
# Port in use
lsof -tiTCP:19080 -sTCP:LISTEN -nP
# Passthrough test
gpt --model gpt-5.2
# Mapping mode test
PASSTHROUGH_MODE=false gpt --model claude-sonnet-4-20250514
# Recent logs
tail -n 120 /tmp/chatgpt-codex-proxy.log
# Tool calling smoke test
python3 scripts/tool_calling_smoke.py --base-url http://127.0.0.1:19080 --model gpt-5.2项目结构
chatgpt-codex-proxy/
├── src/
│ ├── index.ts # Entry point
│ ├── server.ts # Express server
│ ├── cli.ts # CLI commands
│ ├── auth.ts # OAuth login
│ ├── routes/
│ │ └── messages.ts # /v1/messages endpoint
│ ├── transformers/
│ │ ├── request.ts # Anthropic → Codex
│ │ └── response.ts # Codex → Anthropic
│ ├── codex/
│ │ ├── client.ts # Codex API client
│ │ └── models.ts # Model mapping
│ ├── mcp/
│ │ ├── config.ts # Read ~/.claude.json MCP server configs
│ │ ├── client.ts # HTTP + stdio MCP clients
│ │ └── registry.ts # Tool schema cache (singleton)
│ ├── types/
│ │ └── anthropic.ts # Types
│ └── utils/
│ └── errors.ts # Error handling
├── .env.example
├── package.json
├── tsconfig.json
└── README.md安全
专为 仅限个人本地机器使用.
npm run dev # binds to localhost only
export ANTHROPIC_BASE_URL=http://127.0.0.1:19080如果部署到服务器:添加身份验证、限制CORS、添加速率限制、将令牌文件权限设置为 600,添加监控。
不要绑定到 0.0.0.0 除非你已经实现了上述所有内容。
许可证
麻省理工学院
