zyycnandCodex fd749ea8f8 fix(dispatch): isolate cross-account replay state
Track connection transcripts by the actual response account and sanitize typed Responses output state before replaying across accounts.

Rebuild target auth, Cookie, installation metadata, and turn state boundaries, fail closed on malformed turn metadata, and persist only target-account state after replay.

Co-authored-by: Codex <noreply@openai.com>
2026-07-16 23:18:26 +08:00
2026-07-16 16:07:55 +08:00
2026-07-16 02:22:13 +08:00
2026-07-15 12:20:00 +08:00
2026-07-15 12:27:27 +08:00

Codex Proxy RS

Codex Proxy RS

基于 Rust 的高性能 Codex 多账号网关代理

CI Release GHCR MIT

快速开始 · 客户端接入 · 运维 · 部署文档 · 架构

Note

只支持 OpenAI Responses API,不提供 /v1/chat/completions。

能力

领域 实现
协议 Responses HTTP、SSE、官方 WebSocket
传输 会话级 WebSocket 池、共享 HTTP/2 后备
调度 智能调度、额度优先、轮询、粘滞
故障处理 额度、认证、封禁、模型与传输故障切换
身份 账号身份隔离、稳定 installation ID、会话拓扑透传
管理 账号、客户端 Key、模型别名、运行设置与在线更新
遥测 Token、费用、缓存、TTFT、延迟与错误

快速开始

需要 Docker Engine 与 Docker Compose Plugin。

1. 准备

git clone https://github.com/zyycn/codex-proxy-rs.git
cd codex-proxy-rs

mkdir -p .runtime/data .runtime/logs
install -d -m 0750 .runtime/postgres .runtime/redis
cp deploy/config.example.yaml deploy/config.yaml
sudo chown "$(id -u):10001" deploy/config.yaml
chmod 0640 deploy/config.yaml

分别执行三次:

openssl rand -hex 24

将结果写入 deploy/config.yaml:

配置 约束
x-cpr.database.password 48 位十六进制
x-cpr.redis.password 48 位十六进制
x-cpr.admin.default_password 至少 12 位,不能包含 $

Linux 需要允许容器组写入运行目录:

sudo chown -R "$(id -u):10001" .runtime/data .runtime/logs
chmod 0770 .runtime/data .runtime/logs

2. 启动

docker compose -f deploy/compose.yaml config --quiet
docker compose -f deploy/compose.yaml pull
docker compose -f deploy/compose.yaml up -d --no-build
curl -i http://127.0.0.1:8080/healthz

204 No Content 表示应用、PostgreSQL 与 Redis 均可用。管理端地址: http://127.0.0.1:8080。

3. 初始化

  1. 使用 admin@cpr.local 与初始密码登录。
  2. 添加 Codex 账号并执行连接测试。
  3. 创建 sk_... 客户端 Key。
  4. 复制 Codex CLI 配置,或导入 CCSwitch。

Note

admin.default_password 只在首次创建管理员时生效。

完整部署、权限和密码轮换规则见 deploy/README.md。

客户端接入

配置 值
Base URL http://127.0.0.1:8080/v1
API Key 管理端创建的 sk_...
鉴权 Authorization: Bearer <client-api-key>
curl http://127.0.0.1:8080/v1/models \
  -H 'Authorization: Bearer <client-api-key>'

curl http://127.0.0.1:8080/v1/responses \
  -H 'Authorization: Bearer <client-api-key>' \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "<model-id>",
    "input": "Reply with pong.",
    "stream": false
  }'
API 路由
路由 用途
POST /v1/responses JSON 或 SSE
GET /v1/responses Responses WebSocket
POST /v1/responses/review Review
GET /v1/models 模型列表
GET /v1/models/catalog 模型目录
GET /v1/models/{model_id} 模型详情

所有 /v1/* 路由都需要客户端 API Key。

运维

# 升级
docker compose -f deploy/compose.yaml pull codex-proxy-rs
docker compose -f deploy/compose.yaml up -d --no-build

# 日志
docker compose -f deploy/compose.yaml logs -f codex-proxy-rs

# 从源码构建
docker compose -f deploy/compose.yaml build codex-proxy-rs
docker compose -f deploy/compose.yaml up -d

Important

.runtime/ 保存数据库、Redis、身份密钥和日志。删除该目录会永久清除运行状态。

Compose 默认只绑定 127.0.0.1。公网接入应使用 HTTPS 反向代理,转发 WebSocket upgrade 与真实客户端 IP;不要暴露 PostgreSQL 或 Redis。

文档

S
Description
基于 Rust 的低风控、高性能、自托管多账号透明代理网关
Readme Apache-2.0
45 MiB
Languages
Rust 90%
Vue 5.7%
TypeScript 3.7%
PLpgSQL 0.4%
Ruby 0.1%