opencodex
为 OpenAI Codex 和 Claude Code 提供通用 LLM 代理,支持任意模型一键切
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
为 OpenAI Codex 和 Claude Code 提供通用 LLM 代理,支持任意模型一键切
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否有这样的烦恼:手里有 Claude Code 和 OpenAI Codex 两款顶级 AI 编程工具,却想用 DeepSeek 的价格优势或 Grok 的创意能力,却被平台绑定卡得死死的?OpenCodex 正是为解决这个痛点而生的开源项目——它是一个通用 LLM 提供商代理,让你在已有的 AI 编程工具中无缝切换到任何大语言模型,而无需等待官方支持。
OpenAI Codex 和 Claude Code 都是当前最强大的 AI 编程工具。Codex 由 OpenAI 提供,专为代码补全和生成优化;Claude Code 则由 Anthropic 打造,以深度推理和安全性著称。然而,当你想要体验 DeepSeek 的性价比、Gemini 的多模态能力,或者用 Ollama 在本地跑模型时,这些工具的官方绑定就成了一道高墙。
开发者 lidge-jun 敏锐地捕捉到了这个需求,设计出 OpenCodex 作为中间代理层。它模拟 OpenAI 的 API 接口,让 Codex 认为自己在和 OpenAI 通信;同时它也适配 Claude Code 的协议,让 Claude Code 能将请求路由到任何配置的 LLM 提供商。关键是——原始工具的 UI、分发机制和更新完全不受影响,用户无需修改任何配置,开箱即用。
OpenCodex 的核心架构围绕适配器模式(Adapter Pattern)构建,源码中 src/adapters/ 目录是关键。
图1:OpenCodex 架构图——Codex CLI 通过本地代理路由到任意 LLM 提供商
每个提供商对应一个独立的适配器模块:anthropic.ts 处理 Anthropic 格式,google.ts 处理 Google Gemini,azure.ts 处理微软 Azure OpenAI,cursor.ts 处理 Cursor IDE 的特殊协议,openai-chat.ts 和 openai-responses.ts 分别处理 OpenAI 传统聊天补全和新版 Responses API。适配器接口(src/adapters/base.ts)统一了请求转换和响应归一化逻辑,使得新增一个提供商只需实现对应适配器,无需改动核心路由层。
路由决策发生在 src/router.ts 中。项目支持多种路由策略:按模型前缀匹配提供商、按配额和 key 状态 failover(src/providers/key-failover.ts)、按地区选择最优节点(如 src/providers/alibaba-region-startup.ts 处理阿里云国际版)。模型 ID 通过 src/providers/slug-codec.ts 的编解码层进行处理,支持虚拟模型映射(如将 gpt-5.6-luna-medium 映射到实际请求的 DeepSeek 模型)。
服务器层基于 Bun HTTP 构建(src/server/),支持 WebSocket(ws-bridge.ts),原生处理 SSE(Server-Sent Events)流式响应,并通过 relay.ts 和 relay-eager.ts 实现请求转发。OAuth 集成(src/oauth/)支持 GitHub Copilot 的认证传输(src/providers/github-copilot-transport.ts)。
项目采用 TypeScript 作为主力开发语言,配置文件 tsconfig.json 设置了 strict: true 严格模式和 moduleResolution: bundler。构建工具选用了 Bun 而非 Node.js——这不仅体现在 package.json 的 engines: ">=18" 约束,更体现在源码中大量使用 Bun.sleepSync() 等 Bun 专有 API,以及 src/lib/bun-runtime.ts 和 src/lib/bun-stream-caps.ts 对 Bun 运行时特性的深度适配。
核心依赖包括:@modelcontextprotocol/sdk(支持 MCP 协议)、@bufbuild/protobuf(Protocol Buffers)、zod(运行时类型验证)。测试框架也基于 Bun 原生 test runner(bun test)。
图2:Claude Code 通过 opencodex 路由到任意模型,状态栏显示 gpt-5.6-luna-medium
OpenCodex 的功能远不止简单的请求转发。它支持:
src/providers/key-failover.ts 在一个 API key 达到限额时自动切换到备用 key,无需人工干预。src/providers/quota.ts 实时追踪各提供商的用量。src/lib/windows-secret-acl.ts 将 API key 安全存储在 Windows 凭证管理器中,macOS 和 Linux 分别使用 Keychain 和 Secret Service API。bun scripts/privacy-scan.ts 扫描代码中的潜在隐私泄露。src/codex/inject.ts 注入代理后,会在代理退出时自动恢复原始 Codex 配置,防止状态残留。src/config.ts 的 renameAtomicFile 使用「写入临时文件再 rename」的模式,确保并发写入(如 ocx stop 和代理自身 shutdown handler 同时执行)不会留下半写状态。
图3:Codex App 内置模型选择器保持不变,用户感知不到代理层的存在
安装 opencodex 仅需一行 npm 命令:
npm install -g @bitkyc08/opencodex
ocx start
启动后,本地代理默认监听 localhost:10100,并附带一个 Web Dashboard。配置文件位于 ~/.opencodex/config.json,支持多提供商配置,包括默认提供商、API key、base URL 等参数。如果配置文件损坏(如被手动破坏的 JSON),opencodex 会自动将其备份并回退到默认配置,不会静默丢失用户数据。
{
"port": 10100,
"defaultProvider": "anthropic",
"providers": {
"anthropic": {
"adapter": "anthropic",
"baseUrl": "https://api.anthropic.com",
"apiKey": "sk-..."
},
"deepseek": {
"adapter": "openai-chat",
"baseUrl": "https://api.deepseek.com",
"apiKey": "sk-..."
}
}
}
OpenCodex 并非没有局限。首先,这不是一个 Web 服务,它是纯 CLI 工具包,不支持 Docker 一键部署,对于习惯容器化运维的团队来说增加了上手成本。其次,Bun 作为运行时虽然在 macOS/Linux 上表现出色,但 Windows 支持仍依赖 WSL 或原生 Bun for Windows,在某些环境下的稳定性有待验证。
另外,代理层不可避免地引入了额外的网络延迟——每一次请求都要先到达本地代理,再转发到目标提供商。对于延迟敏感的实时交互场景(如通过 Claude Code 进行长时间的任务规划),这种间接路由可能带来可感知的响应变慢。
OpenCodex 的出现反映了一个更大的趋势:AI 工具生态正在从「单一平台绑定」走向「协议抽象层」解耦。类似于 Web 开发中数据库抽象层(如 SQLAlchemy)让应用不依赖特定数据库,OpenCodex 通过适配器模式让 AI 编程工具不再被特定模型提供商锁定。这对推动 LLM 市场充分竞争、降低用户迁移成本具有积极意义。
从 GitHub 数据看,该项目已获得超过 5000 颗 stars,贡献者活跃,版本迭代频繁(最新稳定版 v2.7.42),多语言文档齐全(支持中、英、韩、日、俄),说明其用户基础扎实,并非昙花一现的项目。随着 Claude Code、Codex CLI 等 AI 编程工具的普及,这类代理工具的需求只会持续增长。