ๅฐ Codex Desktop ็่ฝๅไปฅ OpenAI ๆ ๅๅ่ฎฎๅฏนๅคๆด้ฒ๏ผๆ ็ผๆฅๅ ฅไปปๆ AI ๅฎขๆท็ซฏใ
ๅฟซ้ๅผๅง โข ๆ ธๅฟๅ่ฝ โข ๆๆฏๆถๆ โข ๅฎขๆท็ซฏๆฅๅ ฅ โข ้ ็ฝฎ่ฏดๆ
็ฎไฝไธญๆ | English
Codex Proxy ๆฏไธไธช่ฝป้็บงๆฌๅฐไธญ่ฝฌๆๅก๏ผๅฐ Codex Desktop ็ Responses API ่ฝฌๆขไธบ OpenAI ๆ ๅ็ /v1/chat/completions ๆฅๅฃใ้่ฟๆฌ้กน็ฎ๏ผๆจๅฏไปฅๅจ CursorใContinueใVS Code ็ญไปปไฝๅ
ผๅฎน OpenAI ๅ่ฎฎ็ๅฎขๆท็ซฏไธญ็ดๆฅไฝฟ็จ Codex ็ผ็จๆจกๅใ
ๅช้ไธไธช ChatGPT ่ดฆๅท๏ผ้ ๅๆฌไปฃ็ๅณๅฏๅจๆฌๅฐๆญๅปบไธไธชไธๅฑ็ AI ็ผ็จๅฉๆ็ฝๅ ณใ
ๆฌๆๅกๆด้ฒ CPA ๅ ผๅฎน็ฎก็็ซฏ็น๏ผ
GET /v0/management/codex-auth-urlPOST /v0/management/oauth-callbackGET /v0/management/auth-filesGET /v0/management/auth-files/download?name=...
/v0/management/codex-auth-url ๆฏๆฌก่ฏทๆฑ้ฝไผๅๅปบ็ฌ็ซ OAuth state ไธ PKCE ไธไธๆ๏ผ/v0/management/oauth-callback ไผไปๅฎขๆท็ซฏๆไบค็ redirect_url ่งฃๆ state ๅนถๆ state ๆฅๆพๅฏนๅบไธไธๆใstate ๆๅๆถ่ดนๅไผ็ซๅณๅ ้ค๏ผๅ ๆญคๅไธไธช callback ไธ่ฝ้ๅคๅฏผๅ
ฅใ
้ป่ฎค state TTL ไธบ 30 ๅ้๏ผๅฏ็จ็ฏๅขๅ้่ฐๆด๏ผ
CPA_OAUTH_STATE_TTL_MS=1800000ๅๅฎไพ้จ็ฝฒ้ป่ฎคไฝฟ็จๅ
ๅญ state storeใๅค็บฟ็จๅนถๅ่ฏทๆฑๅจๅ Node ่ฟ็จๅ
ๅฎๅ
จ๏ผๅฆๆ้จ็ฝฒไธบๅคๅฎไพ/ๅค่ฟ็จ/Zeabur ๅคๅฏๆฌ/PM2 cluster๏ผๅฟ
้กปไฝฟ็จๅ
ฑไบซ state store๏ผๆจ่ Redis๏ผ๏ผๅฆๅ callback ๅฏ่ฝ่ขซ่ทฏ็ฑๅฐๅฆไธไธชๅฎไพ่ๅบ็ฐ unknown_or_expired_stateใๅฝๅไปฃ็ ๅทฒๅฐ state store ๆฝ่ฑกไธบ CpaOAuthStateStore๏ผๆฅ Redis ๆถๅบไฝฟ็จ REDIS_URL ๆ CPA_STATE_REDIS_URL๏ผๅนถไฟ่ฏ consume(state) ๆฏๅๅญๆไฝ๏ผRedis GETDEL ๆ Lua๏ผใ
็ฎก็้ดๆไฟๆไธๅ๏ผ่ฏทๆฑ้ๅธฆ Authorization: Bearer <management-key> ๆ X-Management-Key: <management-key>ใ
git clone https://github.com/icebear0828/codex-proxy.git
cd codex-proxydocker compose up -d
# ๆๅผ http://localhost:8080 ็ปๅฝๆฐๆฎๆไน
ๅ้่ฟ volume ๆ ๅฐ๏ผdata/๏ผ่ดฆๅทใCookie๏ผๅ config/๏ผ้
็ฝฎๆไปถ๏ผใ
่ทจๅฎนๅจ่ฎฟ้ฎๆ็คบ๏ผๅฆๆๅ ถไป Docker ๅฎนๅจ๏ผๅฆ OpenClawใCursor Server ็ญ๏ผ้่ฆ่ฟๆฅ codex-proxy๏ผๅปบ่ฎฎไฝฟ็จๅฎฟไธปๆบ็ๅฑๅ็ฝ IP๏ผๅฆ
http://192.168.x.x:8080/v1๏ผ่้host.docker.internal๏ผไปฅ้ฟๅ Docker DNS ่งฃๆ้ฎ้ขใ
npm install # ๅฎ่ฃ
ๅ็ซฏไพ่ต + ่ชๅจไธ่ฝฝ curl-impersonate
cd web && npm install && cd .. # ๅฎ่ฃ
ๅ็ซฏไพ่ต
npm run dev # ๅผๅๆจกๅผ๏ผ็ญ้่ฝฝ๏ผ
# ๆ๏ผnpm run build && npm start # ็ไบงๆจกๅผไนๆฏๆ
pnpmๆbun๏ผๅฐไธๆนnpmๆฟๆขๅณๅฏใ
npm install # ๅฎ่ฃ
ๅ็ซฏไพ่ต
cd web && npm install && cd .. # ๅฎ่ฃ
ๅ็ซฏไพ่ต
npm run dev # ๅผๅๆจกๅผ๏ผ็ญ้่ฝฝ๏ผWindows ไธ curl-impersonate ๆไธๅฏ็จ๏ผ่ชๅจ้็บงไธบ็ณป็ป curl๏ผๆ Chrome TLS ไผช่ฃ ๏ผใๅปบ่ฎฎๆญ้ ๆฌๅฐไปฃ็ไฝฟ็จ๏ผๆ้่ฟ Docker / WSL ้จ็ฝฒไปฅ่ทๅพๅฎๆด TLS ไผช่ฃ ่ฝๅใ
# ๆๅผ http://localhost:8080 ไฝฟ็จ ChatGPT ่ดฆๅท็ปๅฝ๏ผ็ถๅ๏ผ
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "codex",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'- ๅฎๅ
จๅ
ผๅฎน
/v1/chat/completions๏ผOpenAI๏ผใ/v1/messages๏ผAnthropic๏ผๅ Gemini ๆ ผๅผ - ๆฏๆ SSE ๆตๅผ่พๅบ๏ผๅฏ็ดๆฅๅฏนๆฅๆๆ OpenAI SDK ๅๅฎขๆท็ซฏ
- ่ชๅจๅฎๆ Chat Completions โ Codex Responses API ๅๅๅ่ฎฎ่ฝฌๆข
- OAuth PKCE ็ปๅฝ โ ๆต่งๅจไธ้ฎๆๆ๏ผๆ ้ๆๅจๅคๅถ Token
- ๅค่ดฆๅท่ฝฎๆข โ ๆฏๆ
least_used๏ผๆๅฐไฝฟ็จไผๅ ๏ผๅround_robin๏ผ่ฝฎ่ฏข๏ผไธค็ง่ฐๅบฆ็ญ็ฅ - Token ่ชๅจ็ปญๆ โ JWT ๅฐๆๅ่ชๅจๅทๆฐ๏ผๆๆฐ้้ฟ้่ฏ๏ผ5 ๆฌก๏ผ๏ผไธดๆถๅคฑ่ดฅ 10 ๅ้ๆขๅค่ฐๅบฆ
- ้ ้ขๅฎๆถ็ๆง โ ๆงๅถ้ขๆฟๅฑ็คบๅ่ดฆๅทๅฉไฝ็จ้๏ผ้ๆต็ชๅฃๆปๅจๆถ่ชๅจ้็ฝฎ่ฎกๆฐๅจ
- ๅ ณ้ฎๆฐๆฎๅณๆถๆไน ๅ โ ๆฐๅข/ๅทๆฐ Token ็ซๅณๅ็๏ผไธไธขๅคฑ
- ็จณๅฎ่ฟๆฅ โ ่ชๅจๅฏน้ฝ Codex Desktop ่ฏทๆฑ็นๅพ๏ผCookie ๆไน ๅๅๅฐ้ๅค้ช่ฏ
- Web ๆงๅถ้ขๆฟ โ ่ดฆๅท็ฎก็ใ็จ้็ๆงใ็ถๆๆป่ง๏ผไธญ่ฑๅ่ฏญ
Codex Proxy
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โ Client (Cursor / Continue / SDK) โ
โ โ โ
โ POST /v1/chat/completions โ
โ POST /v1/messages (Anthropic) โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ Routes โโโโถโ Translation โโโโถโ Proxy โ โ
โ โ (Hono) โ โ OpenAIโCodex โ โ curl TLS โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโฌโโโโโโ โ
โ โฒ โ โ
โ โ โโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโโโโโโ Translation โโโโโโโโโโ โ
โ โ CodexโOpenAI โ SSE stream โ
โ โโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Auth โ โ Fingerprint โ โ Session โ โ
โ โ OAuth/JWTโ โ Headers/UA โ โ Manager โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Auto-Maintenance (update-checker + scripts) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
curl subprocess
(Chrome TLS)
โ
โผ
chatgpt.com
/backend-api/codex/responses
| ๆจกๅ ID | ๅซๅ | ่ฏดๆ |
|---|---|---|
gpt-5.3-codex |
codex |
ๆๆฐๆ่ฐ agentic ็ผ็จๆจกๅ๏ผ้ป่ฎค๏ผ |
gpt-5.2-codex |
โ | ไธไธไปฃ agentic ็ผ็จๆจกๅ |
gpt-5.1-codex-max |
codex-max |
ๆทฑๅบฆๆจ็็ผ็จๆจกๅ |
gpt-5.2 |
โ | ้็จๆ่ฐๆจกๅ |
gpt-5.1-codex-mini |
codex-mini |
่ฝป้ๅฟซ้็ผ็จๆจกๅ |
ๆจกๅๅ่กจไผ้ Codex Desktop ็ๆฌๆดๆฐ่ชๅจๅๆญฅใ
ๅจ็ป็ซฏ่ฎพ็ฝฎ็ฏๅขๅ้๏ผๅณๅฏ่ฎฉ Claude Code ้่ฟ codex-proxy ไฝฟ็จ Codex ๆจกๅ๏ผ
export ANTHROPIC_BASE_URL=http://localhost:8080
export ANTHROPIC_API_KEY=your-api-key
export ANTHROPIC_MODEL=claude-opus-4-6 # Opus โ gpt-5.3-codex๏ผ้ป่ฎค๏ผ
# export ANTHROPIC_MODEL=claude-sonnet-4-6 # Sonnet โ gpt-5.2-codex
# export ANTHROPIC_MODEL=claude-haiku-4-5-20251001 # Haiku โ gpt-5.1-codex-mini
claude # ๅฏๅจ Claude Code| Claude Code ๆจกๅ | ๆ ๅฐๅฐ Codex ๆจกๅ |
|---|---|
Opus (claude-opus-4-6) |
gpt-5.3-codex |
Sonnet (claude-sonnet-4-6) |
gpt-5.2-codex |
Haiku (claude-haiku-4-5-20251001) |
gpt-5.1-codex-mini |
ไนๅฏไปฅๅจๆงๅถ้ขๆฟ (
http://localhost:8080) ็ Anthropic SDK Setup ๅก็ไธญไธ้ฎๅคๅถ็ฏๅขๅ้ใ
Settings โ Models โ OpenAI API Base:
http://localhost:8080/v1
API Key๏ผไปๆงๅถ้ขๆฟ่ทๅ๏ผ:
your-api-key
~/.continue/config.json:
{
"models": [{
"title": "Codex",
"provider": "openai",
"model": "codex",
"apiBase": "http://localhost:8080/v1",
"apiKey": "your-api-key"
}]
}from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8080/v1",
api_key="your-api-key"
)
response = client.chat.completions.create(
model="codex",
messages=[{"role": "user", "content": "Hello!"}],
stream=True
)
for chunk in response:
print(chunk.choices[0].delta.content or "", end="")import OpenAI from "openai";
const client = new OpenAI({
baseURL: "http://localhost:8080/v1",
apiKey: "your-api-key",
});
const stream = await client.chat.completions.create({
model: "codex",
messages: [{ role: "user", content: "Hello!" }],
stream: true,
});
for await (const chunk of stream) {
process.stdout.write(chunk.choices[0]?.delta?.content || "");
}ๆๆ้
็ฝฎไฝไบ config/default.yaml๏ผ
| ๅ็ฑป | ๅ ณ้ฎ้ ็ฝฎ | ่ฏดๆ |
|---|---|---|
server |
host, port, proxy_api_key |
ๆๅก็ๅฌๅฐๅไธ API ๅฏ้ฅ๏ผ่งไธๆน่ฏดๆ๏ผ |
api |
base_url, timeout_seconds |
ไธๆธธ API ๅฐๅไธ่ฏทๆฑ่ถ ๆถ |
client |
app_version, build_number, chromium_version |
ๆจกๆ็ Codex Desktop ็ๆฌไธ Chromium ็ๆฌ |
model |
default, default_reasoning_effort |
้ป่ฎคๆจกๅไธๆจ็ๅผบๅบฆ |
auth |
rotation_strategy, rate_limit_backoff_seconds |
่ฝฎๆข็ญ็ฅไธ้ๆต้้ฟ |
tls |
curl_binary, impersonate_profile, proxy_url |
TLS ไผช่ฃ ไธไปฃ็้ ็ฝฎ |
ๅจ config/default.yaml ไธญ่ฎพ็ฝฎๅฎขๆท็ซฏ่ฎฟ้ฎไปฃ็ๆถไฝฟ็จ็ API Key๏ผ
server:
proxy_api_key: "pwd" # ่ชๅฎไนๅฏ้ฅ๏ผๅฎขๆท็ซฏ่ฏทๆฑๆถไฝฟ็จๆญคๅผ
# proxy_api_key: null # ่ฎพไธบ null ๅ่ชๅจ็ๆ codex-proxy-xxxx ๆ ผๅผ็ๅฏ้ฅ- ่ชๅฎไนๅฏ้ฅ๏ผ่ฎพ็ฝฎไธบไปปๆๅญ็ฌฆไธฒ๏ผๅฆ
"pwd"๏ผ๏ผๅฎขๆท็ซฏไฝฟ็จAuthorization: Bearer pwd่ฎฟ้ฎ - ่ชๅจ็ๆ๏ผ่ฎพไธบ
null๏ผไปฃ็ไผๆ นๆฎ่ดฆๅทไฟกๆฏ่ชๅจ็ๆไธไธชcodex-proxy-ๅ็ผ็ๅๅธๅฏ้ฅ - ๅฝๅๅฏ้ฅๅง็ปๆพ็คบๅจๆงๅถ้ขๆฟ๏ผ
http://localhost:8080๏ผ็ API Configuration ๅบๅ
| ็ฏๅขๅ้ | ่ฆ็้ ็ฝฎ |
|---|---|
PORT |
server.port |
CODEX_PLATFORM |
client.platform |
CODEX_ARCH |
client.arch |
HTTPS_PROXY |
tls.proxy_url |
| ็ซฏ็น | ๆนๆณ | ่ฏดๆ |
|---|---|---|
/v1/chat/completions |
POST | ่ๅคฉ่กฅๅ จ โ OpenAI ๆ ผๅผ๏ผๆ ธๅฟ็ซฏ็น๏ผ |
/v1/messages |
POST | ่ๅคฉ่กฅๅ จ โ Anthropic ๆ ผๅผ |
/v1/models |
GET | ๅฏ็จๆจกๅๅ่กจ |
/health |
GET | ๅฅๅบทๆฃๆฅ |
/auth/accounts |
GET | ่ดฆๅทๅ่กจ๏ผ?quota=true ๅซ้
้ข๏ผ |
/auth/accounts/login |
GET | OAuth ็ปๅฝๅ ฅๅฃ |
/debug/fingerprint |
GET | ่ฐ่ฏ๏ผๆฅ็ๅฝๅไผช่ฃ ๅคดไฟกๆฏ |
| ๅฝไปค | ่ฏดๆ |
|---|---|
npm run dev |
ๅผๅๆจกๅผๅฏๅจ๏ผ็ญ้่ฝฝ๏ผ |
npm run build |
็ผ่ฏ TypeScript ๅฐ dist/ |
npm start |
่ฟ่ก็ผ่ฏๅ็็ไบง็ๆฌ |
npm run update |
ๆๅจ่งฆๅๅฎๆดๆดๆฐๆตๆฐด็บฟ |
- Node.js 18+๏ผๆจ่ 20+๏ผ
- curl โ ็ณป็ป่ชๅธฆๅณๅฏ๏ผ
npm install่ชๅจไธ่ฝฝ curl-impersonate ่ทๅพๅฎๆด Chrome TLS ไผช่ฃ - ChatGPT ่ดฆๅท โ ๆฎ้ๅ ่ดน่ดฆๅทๅณๅฏ
- Docker๏ผๅฏ้๏ผ โ ๆจ่ไฝฟ็จ Docker ้จ็ฝฒ
- Codex API ไธบๆตๅผ่พๅบไธ็จ๏ผ่ฎพ็ฝฎ
stream: falseๆถไปฃ็ไผๅ ้จๆตๅผๆถ้ๅ่ฟๅๅฎๆด JSON - ๆฌ้กน็ฎไพ่ต Codex Desktop ็ๅ ฌๅผๆฅๅฃ๏ผไธๆธธ็ๆฌๆดๆฐๆถไผ่ชๅจๆฃๆตๅนถๆดๆฐๆ็บน
config/default.yamlไธญ็ๆณจ้ๅจ่ชๅจๆดๆฐๅไผไธขๅคฑ๏ผไฝฟ็จ็ปๆๅ YAML ๅๅ ฅ๏ผ
ๆฌ้กน็ฎ้็จ ้ๅไธ่ฎธๅฏ (Non-Commercial)๏ผ
- ๅ ่ฎธ๏ผไธชไบบๅญฆไน ใ็ ็ฉถใ่ช็จ้จ็ฝฒ
- ็ฆๆญข๏ผไปปไฝๅฝขๅผ็ๅไธ็จ้๏ผๅ ๆฌไฝไธ้ไบๅบๅฎใ่ฝฌๅฎใๆถ่ดนไปฃ็ใๅไธไบงๅ้ๆ
ๆฌ้กน็ฎไธ OpenAI ๆ ๅ ณ่ใไฝฟ็จ่ ้่ช่กๆฟๆ ้ฃ้ฉๅนถ้ตๅฎ OpenAI ็ๆๅกๆกๆฌพใ