代码代理服务

允许Claude Code通过ChatGPT的Codex后端运行代码,无需更改现有工作流程。

  • by insightflo
  • TypeScript
  • 本地部署
  • 44 星标
  • 更新于
在 GitHub 查看 insightflo/chatgpt-codex-proxy

使用说明

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
             <──Anthropic response──                       <──Codex SSE response──

何时使用此

情况 此代理有帮助吗?
人为配额用尽/费率受限 ✅ 使用一个环境变量切换到GPT
想在不离开Claude Code的情况下尝试GPT模型 ✅ 相同的工作流程,不同的后端
让ChatGPT Plus/Pro处于空闲状态并想使用它 ✅ 无API关键成本
需要MCP工具(缝合、线性等)来处理GPT ✅ 唯一能桥接此问题的代理
需要为其他客户端提供与OpenAI兼容的端点 使用 ChatMock 相反
需要Ollama兼容性 使用 ChatMock 相反

为什么是这个,而不是ChatMock或类似的工具

ChatMock 类似的项目公开了一个与OpenAI/Ollama兼容的API-非常适合通用客户端,但你必须完全放弃Claude Code。

此代理 专为Claude Code构建:

  • 工作流程无变化 — claude 命令、键绑定、CLAUDE.md、斜线命令,所有操作不变。
  • MCP工具跨越边界 --Claude Code的MCP服务器(Stitch、Linear、Chrome DevTools等)通常仅可用于Claude的后端。此代理读取 ~/.claude.json 在启动时,连接到MCP服务器,并将它们的工具模式注入到每个GPT请求中。GPT获得了与克劳德相同的工具访问权限。
  • 并行工具调用安全 --代理检测变异工具(编辑、写入、删除、Bash)并自动禁用 parallel_tool_calls 以防止不安全的并发文件操作。
  • Claude模型名称传递 --使用 --model claude-sonnet-4-20250514 像往常一样;代理会自动将其映射到正确的Codex模型。或者在直通模式下直接使用GPT模型名称。

示例会话

特性

  • Anthropic消息API兼容(POST /v1/messages)
  • OAuth 2.0登录-没有API密钥,只有您的ChatGPT订阅
  • 完整的请求/响应转换(Anthropic↔ 食品法典委员会)
  • SSE流媒体
  • 克劳德→ 带有env覆盖的Codex模型映射
  • MCP刀具注射 (见下文)

快速启动

git clone <repo-url>
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__*  ]       │
   │ ──────────────────────────────>│ ──────────────────────────────> │

它是如何工作的:

  1. 启动时:读取 ~/.claude.json → mcpServers
  2. 运行MCP握手(initialize → tools/list)对于每个已启用的服务器
  3. 在代理进程的生命周期内在内存中缓存模式
  4. 在每一个 /v1/messages 请求:将缓存的工具附加到Codex tools 数组
  5. 当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 除非你已经实现了上述所有内容。

许可证

麻省理工学院