为什么要用 Codex.app?
Codex.app 是 OpenAI 出品的 AI 编程助手,对标 Cursor / Claude Code。选它的理由很简单:
- 原生 Responses API --- 不依赖 Chat Completions,工具调用、推理链路更稳定
- MCP + 插件体系 --- 内置文件系统、浏览器、文档、电子表格等能力,生态开放
- 本地优先 ---
~/.codex/config.toml一份配置即可切换任何兼容模型
一句话:Cursor 的体验 + Claude Code 的可配置性 + 开放的模型接入能力。
原理
DeepSeek 不直接兼容 OpenAI Responses API。Moon Bridge 在本地起一个代理,自动做协议翻译:
arduino
Codex.app → 127.0.0.1:38440 → Moon Bridge → api.deepseek.com → DeepSeek
前置依赖
先装三个东西:
bash
# 1. Go 1.25+
brew install go
# 2. Node.js 18+(通常已有)
node --version
# 3. Codex CLI(配置链路要用)
npm install -g @openai/codex
快速配置(3 步)
第一步:克隆 & 编译 Moon Bridge
bash
git clone https://github.com/ZhiYi-R/moon-bridge.git
cd moon-bridge
git reset --hard 4dd578afb25a5389c3f658390ac49a6190efcf52
go build -o /usr/local/bin/moonbridge ./cmd/moonbridge
第二步:写配置文件
在 moon-bridge/ 目录下创建 config.yml,只改 api_key:
yaml
mode: "Transform"
server:
addr: "127.0.0.1:38440"
models:
deepseek-chat:
context_window: 128000
max_output_tokens: 8192
providers:
deepseek:
base_url: "https://api.deepseek.com/anthropic"
api_key: "sk-你的DeepSeek-API-Key" # ← 改成你的 key
offers:
- model: deepseek-chat
routes:
moonbridge:
model: deepseek-chat
provider: deepseek
第三步:生成 Codex 配置 & 启动
bash
# 启动 Moon Bridge(后台运行)
moonbridge --config config.yml &
# 等 2 秒确认它已启动
sleep 2
# 生成 Codex 配置
moonbridge --config config.yml \
--print-codex-config moonbridge \
--codex-base-url "http://127.0.0.1:38440/v1" \
--codex-home "$HOME/.codex" \
> "$HOME/.codex/config.toml"
# 验证
curl -s http://127.0.0.1:38440/v1/models
看到返回 "moonbridge" 就说明链通了。
打开 Codex.app 就能用
配置写入 ~/.codex/config.toml 后,Codex.app 启动时自动读取,不需要额外操作。
终端验证:
bash
cd /任意项目目录
CODEX_HOME="$HOME/.codex" codex --cd "$PWD"
# 问一句 "你好,介绍一下你自己" 确认模型正常响应
日常使用
每次开机后,先启动 Moon Bridge:
bash
moonbridge --config /你的路径/moon-bridge/config.yml &
然后正常打开 Codex.app 即可。
想开机自启的话,把这行加到
~/.zshrc或者用launchctl做个守护进程。
快速排障
| 现象 | 检查 |
|---|---|
connection refused |
moonbridge 进程没启动,或者端口不是 38440 |
401 |
config.yml 里的 api_key 不对 |
| Codex 里看不到模型 | ~/.codex/config.toml 没有正确生成,重跑第三步 |
重启 Mac 后 moonbridge 找不到 |
二进制在 /tmp 里被清了,用 go build -o /usr/local/bin/moonbridge |