-
Notifications
You must be signed in to change notification settings - Fork 274
Releases: james-6-23/codex2api
v2.3.5
Codex 反代网关:默认按请求隔离上游身份(修复跨请求上下文污染)、坏 WS 连接异常后丢弃不复用、OpenAI 主动重置链路反爬与幂等加固、
TRUSTED_PROXIES可配置可信反代、账号在途请求数指示与 team 空间 id 展示等改进
Features
- 默认按请求隔离上游身份(#268):无显式会话的请求,其上游身份键(
prompt_cache_key+ Session/Conversation id)原本按下游 API Key 确定性派生,导致同一 API Key 的不同请求落到同一上游会话标识、跨请求上下文污染。现把「上游会话身份 / WS 8 槽连接池路由键 / 账号粘性」三者解耦:默认每个无会话请求获得唯一上游身份(isolated模式),连接池仍按 API Key 稳定路由(保住 8 槽复用与抗握手限流 503),账号粘性不变。如需回到旧的「按 Key 共享缓存」语义,可设CODEX_REQUEST_ISOLATION_MODE=per-api-key。 - 账号在途请求数指示:账号列表状态列新增蓝色药丸(呼吸圆点 + 在途请求数
active_requests),仅 >0 时显示并带中/英 tooltip,方便一眼看出哪些账号正在被使用、并发多少。 - 展示
chatgpt_account_id(team 空间 id):chatgpt_account_id是 team 计划下的空间(workspace)id,从 AT 的 JWT 解出,一个登录账号可加入多个空间;现以等宽小字在账号列表邮箱下方单行展示(过长省略号 + 悬停 tooltip),便于区分同邮箱的不同空间。 - OpenAI 主动重置次数链路加固与优化:wham/usage 与 reset/consume 改走 uTLS Chrome 指纹 transport(与
/responses网关一致),降低被 Cloudflare 拦截概率;consume 复用同一redeem_request_id作幂等键,刷新后重试不再重复消耗一次重置次数;账号级互斥锁消除「次数检查→消耗」的 TOCTOU 竞态;上游 401 自动刷新 token 后用同一幂等键重试一次;重置后那次 wham/usage 往返挪到后台异步执行以缩短响应路径;成功重置写入account_events审计记录。 TRUSTED_PROXIES可配置可信反向代理:#265 禁用了全部可信代理(默认更安全),但反代部署下会丢失真实客户端 IP(影响 IP 限流、审计日志、引导来源校验)。现支持通过TRUSTED_PROXIES(逗号分隔的 IP/CIDR 列表)按需开启;留空保持「不信任任何代理」的安全默认,非法配置在启动时直接报错。- 上游重置错误码中文化并保留原文:主动重置遇到上游拒绝时(如 business/credits_only 计划返回
rate_limit_not_resettable),把已知 code 翻译成中文说明并将上游原始 JSON 括在其后;未识别 code 回退上游原文,空 body 回退状态码。 - 1h 时间范围采样粒度:改为 1 分钟 ×ばつ 60 桶。
- 账号卡片布局优化。
Fixes
- 坏掉的上游 WS 连接异常后丢弃而非复用(Refs #267):强制 WebSocket 模式下,上游 WS 异常(close 1006/1009/1011、broken pipe、unexpected EOF)后,
WsResponse.Close()原先只移除 pending 并归还连接池,从不关闭底层 socket、也不从池中移除坏连接,结果坏连接被误判为可复用(CLOSE_WAIT 下 probe 写 Ping 仍成功的假阳性),导致后续请求首字变慢/断流,且 fd 长期滞留 CLOSE_WAIT。现读到非正常 read error 即标记连接损坏,Close()区分正常完成(归还复用)与异常终止(丢弃:关闭底层连接并用CompareAndDelete精确移出池)。 - 重置次数刷新独立于用量新鲜度:重置次数(
rate_limit_reset_credits.available_count)只由 wham/usage 探测刷新,但原先探测受用量快照新鲜度限制;由于正常/responses流量会通过响应头刷新用量快照(但其中不含重置次数),繁忙账号一直显得「新鲜」而从不触发 wham 探测,导致重置次数陈旧或无法被发现。现单独跟踪重置次数探测时间,并允许在 rate_limited 冷却与 premium 5h 限制期间执行零成本的纯 wham 探测。 - 禁用 Gin 默认可信代理(#265)。
- Codex 邀请账号下拉只显示一个账号:账号选择器原先预填并按选中账号邮箱过滤列表,导致打开下拉只匹配到选中账号;现打开/聚焦时显示全部符合条件的 Codex OAuth 账号,仅在用户主动输入时按文本过滤。
Contributors
感谢以下贡献者对本版本的贡献:
- @huangye123 — 禁用 Gin 默认可信代理(#265)
Installation
Docker
docker pull ghcr.io/james-6-23/codex2api:2.3.5
# or
docker pull ghcr.io/james-6-23/codex2api:latestManual Downloads
见下方 Assets,提供 Linux / macOS / Windows 的 amd64 与 arm64 预编译产物及 SHA256SUMS。
Assets 8
v2.3.4
Codex 反代网关:账号健康可视化与「自用模式」、Codex 主动重置额度、Prompt 检查审查 Key 与完整请求内容记录、本地 token 计数兼容端点,以及流式 cyber_policy 记录、失败图像用量统计、缓存计费等修复
Features
- 账号健康可视化与「自用模式」:账号管理列表/卡片新增「健康状态」条(基于最近请求成败按时间分桶着色),仪表盘在顶部卡片与使用统计之间新增系统级健康概览,时间跨度选择器提升为页面级共用;账号管理页新增「号池模式 / 自用模式」切换——自用模式以更高级的双列卡片呈现(头像、等高对齐、图标+文字操作区),首次升级按号池账号数自动选择模式。
- Codex 主动重置额度(#249):账号用量弹窗、列表徽章、桌面表格与卡片操作区均可查看剩余「主动重置次数」并一键重置(二次确认、消耗 1 次后刷新),复用现有 wham 上游链路,不走通用透传。
- Prompt 检查审查 Key(#257):本地规则命中后可选调用审查模型(OpenAI/Anthropic 兼容 moderation)复核,降低误杀;支持 base_url / 模型 / 超时 / fail-closed 配置。
- 拦截请求记录完整内容并可查询(#259):被拦截(block)的请求在「提示词过滤 → 日志」记录完整请求内容(不再只有 500 字预览,按 32K 截断)并纳入搜索;「使用统计」里 cyber_policy 报错可点击查看触发的完整请求内容。
- 本地 token 计数兼容端点(#238):新增
POST /v1/messages/count_tokens与POST /v1/responses/input_tokens,本地返回input_tokens估算,不转发上游、不消耗额度,避免 LiteLLM 等客户端探测时收到 404。 - Codex 推荐邀请功能(#260):新增 Codex 推荐邀请界面与批量邀请能力,并优化账号选择器(#264)。
- 按 OAuth 身份去重账号(#262):导入/新增账号时按 OAuth 身份去重,避免同一账号重复入池。
- 账号批量更新 API(#263):新增账号批量更新接口,支持批量调整调度等配置。
- 编辑 OAuth 账号授权配置与重新授权 UI(#250):支持在前端编辑已有 OAuth 账号的授权配置并重新授权。
- 外部异步图片任务接口(#254):新增外部异步图片生成任务 API。
- 后端流式转发性能优化(#252):优化流式转发链路性能。
Fixes
- 流式 cyber_policy 处罚未记录(#258):cyber_policy 封禁在 Codex 流式响应里以
response.failed(HTTP 200)下发,原先只有非 2xx 错误才写入prompt_filter_logs,导致流式场景下的 cyber_policy 在提示词过滤日志里看不到;现已在 4 条流式失败路径补齐记录。 - 失败图像请求用量未统计(#239):修复使用统计中不显示错误图像请求记录的问题。
/v1/messages缓存 token 重复计费(#253):Anthropic usage 扣除缓存命中 token,避免缓存部分被重复计费。- Claude Code 工具参数兼容清洗修正(#251):修正过宽的工具参数清洗导致的兼容问题。
- 升级 vite 修复 npm audit 高危(#261):前端依赖升级,修复 npm audit high 漏洞。
Contributors
感谢以下贡献者对本版本的贡献:
- @huangye123 — 失败图像请求用量统计(#239)、后端流式转发性能优化(#252)、外部异步图片任务接口(#254)、工具参数兼容清洗修正(#251)、编辑 OAuth 账号授权配置(#250)
- @jenfonro — 按 OAuth 身份去重账号(#262)、账号批量更新 API(#263)、邀请账号选择器优化(#264)
Installation
Docker
docker pull ghcr.io/james-6-23/codex2api:2.3.4
# or
docker pull ghcr.io/james-6-23/codex2api:latestManual Downloads
见下方 Assets,提供 Linux / macOS / Windows 的 amd64 与 arm64 预编译产物及 SHA256SUMS。
Assets 8
v2.3.3
Codex 反代网关:生图支持返回云存储链接、API Key Token 上限单位选择器,以及请求转发错误处理、WebSocket relay 稳定性、
tool_choice形态归一、缺失加密推理内容兼容、5h 用量新鲜度拆分等修复
Features
- 生图支持返回云存储链接(#240):配置了 S3 兼容对象存储且客户端请求
response_format=url时,/v1/images/generations会把每张生成图上传到对象存储并返回 1 小时有效的预签名链接,替代 base64 data URL;上传或签名失败时自动回退到 data URL,保证存储配置异常时接口不会硬失败。上传的图片会通过惰性创建的合成 job + asset 记录登记进后台图库,可在画廊/历史中查看,删除时连同 DB 记录与后端对象一并清理。 - API Key Token 上限单位选择器(#234):API Key 的 5h/7d Token 上限输入框新增单位选择(token / K / M / B),大额配额可用可读单位录入与展示,不必再填写原始 token 数。
Fixes
- 请求转发错误处理与成功统计修复(#246):为 OpenAI Responses
ttftGuard调用点增加显式 nil-safe 包装;处理 OpenAI/Codex compact 响应体读取失败并保留最终 502 错误;Codex compact 读取失败时同步 usage headers、成功时记录请求成功;改用json.Marshal构造 Anthropic stream error 的 SSE payload。 - WebSocket relay 稳定性修复(#247):优化
wsrelay的 executor、manager 与 session 处理,提升上游 WebSocket relay 长连接的稳定性。 tool_choice形态归一:缺失type、但带有function对象或顶层name的tool_choice现在按 OpenAI SDK 惯例归一为type:"function"并展平name,避免上游因形态不规范拒绝请求。- 兼容缺失的加密推理内容(#235):除
invalid_encrypted_content外,现在还能识别*.encrypted_content参数上的missing_required_parameter错误,缺失加密推理内容的请求会进入重试而非直接失败。 - 5h 用量新鲜度与 7d 拆分(#241):5h 用量快照改为持久化独立的
codex_5h_usage_updated_at时间戳,不再覆盖共享的codex_usage_updated_at,避免 5h 与 7d 用量新鲜度互相冲掉,修正 5h auto-pause 的新鲜度判断。 - 使用日志每页支持 500 条(#244):使用日志接口现在允许每页 500 条的分页大小。
- Read 参数清洗范围收窄(#245):收窄 Claude Code 工具参数清洗(Read pages sanitizer)的作用范围,修复过宽清洗导致 Read/Write 出错的问题。
Contributors
感谢以下贡献者对本版本的贡献:
- @huangye123 — API Key Token 上限单位选择器(#234)、请求转发错误处理与成功统计(#246)、WebSocket relay 稳定性(#247)、5h 用量新鲜度拆分(#241)、使用日志每页 500 条(#244)、Read 参数清洗收窄(#245)
- @gulang91-svg — 兼容缺失的加密推理内容(#235)与
tool_choice形态归一
Installation
Docker
docker pull ghcr.io/james-6-23/codex2api:2.3.3
# or
docker pull ghcr.io/james-6-23/codex2api:latestManual Downloads
见下方 Assets,提供 Linux / macOS / Windows 的 amd64 与 arm64 预编译产物及 SHA256SUMS。
Assets 8
v2.3.2
Codex 反代网关:分组筛选支持未分组/屏蔽分组、spark 模型生图工具注入修复、缺失 type 的工具定义兼容、usage log 写入失败重试与热路径性能优化
Features
- 分组筛选支持「未分组」与「屏蔽分组」(#229):账号页的分组筛选从单选下拉升级为三态筛选面板——每个分组可在「只看 → 屏蔽 → 取消」间切换,并新增「未分组」快捷项。账号较多时可以快速找出未分组或不属于某些分组的账号,全选后批量分组。表格视图的分组列改为默认显示。
Fixes
gpt-5.3-codex-spark不再被注入默认生图工具(#230):Responses 转换层此前会给普通文本请求自动注入 hostedimage_generation工具及桥接 instructions,而 spark 是纯文本模型,上游直接拒绝带 hosted 生图工具的请求,导致 HTTP 上游路径下 spark 文本请求必然失败。现在对 spark 跳过默认注入,用户显式自带的生图工具仍正常保留。- 缺失
type字段的工具定义不再导致请求失败(#219):部分客户端发送的工具定义省略type(或为null),此前被原样转发,上游对整个请求返回 400Unsupported tool type: None。现在 Chat Completions 与 Responses 两条路径都会按 OpenAI SDK 惯例将 function 形态的工具(嵌套function对象或顶层name)补全为type:"function";完全无法识别形态的工具被剔除而不是拖垮整个请求。 - usage log 写入失败回队列重试(#233):批量写入失败的 usage log 不再直接丢弃,而是放回缓冲区前部等待下轮 flush 重试;SQLite 与 PostgreSQL 均将日志插入与 API Key 配额更新放入同一事务,任一失败整体回滚,保证用量统计与配额数据一致。
- 降低 Redis token 刷新等待的 timer 分配(#231):
WaitForRefreshComplete改用可复用的 ticker + 超时 timer,替代每 200ms 轮询新建一个 timer(30 秒超时下最多约 150 个),减少刷新竞争场景下的堆分配与 GC 压力。
Performance
- 请求体单次读取复用(#232):
RequestSizeLimiter读取并校验请求体后直接缓存,后续中间件与所有 JSON 代理入口(responses / compact / chat completions / messages / images)复用缓存,热路径上最多减少约 2/3 的请求体重复 buffer 分配,降低大请求与高并发场景的内存峰值与 GC 压力。
Contributors
感谢以下贡献者对本版本的贡献:
- @huangye123 — usage log 写入失败回队列重试(#233)、请求体单次读取复用(#232)、Redis 刷新等待 timer 优化(#231)三个 PR
- @sailstudio — 报告 spark 模型生图工具注入问题并提供详细分析与修复方案(#230)
- @WEP-56 — 提出分组筛选「屏蔽分组」的功能建议(#229)
- @oneadms — 报告工具 type 缺失导致的
Unsupported tool type: None问题(#219)
Installation
Docker
docker pull ghcr.io/james-6-23/codex2api:2.3.2
# or
docker pull ghcr.io/james-6-23/codex2api:latestManual Downloads
见下方 Assets,提供 Linux / macOS / Windows 的 amd64 与 arm64 预编译产物及 SHA256SUMS。
Full Changelog: v2.3.1...v2.3.2
Contributors
Assets 8
v2.3.1
Codex 反代网关:分组/全局用量自动暂停阈值、API Key 并发限制、WS 模式 prompt cache 修复与高 RPM 连接复用
Features
- 分组与全局用量自动暂停阈值(#227):自动暂停阈值现在支持在系统设置中配置全局默认值、在分组弹窗中按分组配置,按「账号 > 分组 > 全局」优先级解析——账号有设置时用账号的,否则取所属分组中最小的非零阈值,再回退到全局默认。修改即时生效无需重启,三个层级统一校验取值范围。
- API Key 并发数限制(#226):每个 API Key 可通过
limits.max_concurrency限制同时进行中的请求数,超限请求在所有代理入口(responses、compact、chat completions、Anthropic messages、图像、WebSocket turn)返回 429 并附说明。不填或 0 表示不限制。 - 账号分组下拉多选绑定(#217、#222):分组与账号的绑定改为可搜索的下拉多选形式,不再出现新建分组被分配给所有账号的问题。
Fixes
- WS 模式 prompt cache 丢失修复(#202):自 v2.2.7 起,未携带显式会话标识的请求在 WS 上游路径会获得每请求随机的
stateless-连接 ID,并泄漏到prompt_cache_key与 WS 握手会话头中,导致 WS 模式下上游 prompt cache 永远无法命中(HTTP 模式不受影响)。现在 WS 与 HTTP 一致地注入按下游 API Key 派生的确定性 cache key,实测重复前缀场景缓存命中恢复到约 86% 的 input tokens。 - 高 RPM 下 WS 连接复用:无会话请求此前每个请求都新建一条 WS 连接,持续高压(约 200 RPM)会触发上游握手限流(
bad handshake→ 503)。现在此类请求在 (账号, cache key) 维度的 8 个槽位池内复用温热连接,槽位全忙时回退一次性连接。实测 200 RPM 从 128/200 成功提升到 200/200、零握手失败,延迟约降一半(p50 2288ms → 1303ms,首 token p50 231ms)。 - Codex CLI compact v2 输入兼容(#224):
/responses不再对 Codex CLI compact v2 载荷返回 400Invalid input type 'compaction_trigger'。 - OAuth 账号添加后立即探测用量:新添加的 OAuth 账号立即执行一次用量探测,不再等待下个周期。
- 账号表格滚动调整:修复管理台账号表格的滚动行为。
Installation
Docker
docker pull ghcr.io/james-6-23/codex2api:2.3.1
# or
docker pull ghcr.io/james-6-23/codex2api:latestManual Downloads
见下方 Assets,提供 Linux / macOS / Windows 的 amd64 与 arm64 预编译产物及 SHA256SUMS。
Full Changelog: v2.3.0...v2.3.1
Assets 8
v2.3.0
Codex 反代网关:账号回收站、中继账号路由修复、图像生成 WS 卡死修复与安全加固
Features
- 账号回收站:软删除的账号现在会进入回收站而不是直接消失。回收站中的账号可以一键恢复到调度池(无需重启)、恢复前测试连通性(429 / 额度限制会记为「限流」而非「失败」)、批量测试并可选「测试通过自动恢复」,支持按套餐类型筛选、搜索与分页;清空回收站需要输入确认文本,API 侧同样强制校验。
- 用量日志记录客户端 IP:用量记录现在会采集请求来源的客户端 IP,并在用量页面展示。
Fixes
/v1/messages与/v1/chat/completions支持中继账号(#181):这两个端点此前会过滤掉 OpenAI Responses(中继 API-KEY)账号,只有中继账号的部署在 Codex OAuth 账号限流后会返回 503「无可用账号」。现在与/v1/responses一致,中继账号可参与调度并走 HTTP 转发,附带两条链路的端到端测试。- 图像生成不再走 WebSocket 上游(#220):携带
image_generation工具的请求(包括自动注入的)强制走 HTTP;确实走 WS 的请求会剥离自动注入的图像工具、tool_choice与桥接指令,避免模型在 WS 流上自行生图导致大 base64 负载卡死流(用户自带的 instructions 保留)。 - 图像 SSE 保活:图像生成的 SSE 流在上游长时间无输出时保持心跳,不再因空闲被掐断。
- 账号限流状态同步:用量探测 / WHAM 检查观察到的限流状态会同步回运行时账号状态,调度决策与状态展示保持一致。
- 账号状态统计对齐:管理台账号状态汇总计数与列表筛选口径对齐。
Security
- 代码扫描加固:本地图片存储写入时拒绝含路径分隔符的文件名、读取/删除时拦截
..遍历段(存量相对路径 ref 不受影响);远程实例迁移与 sub2api 导入的 URL 强制完整 http/https 地址;站点 Logo 的 SVG 压缩改为循环剥离注释直到不动点,<!--无法通过拼接残留。
Installation
Docker
docker pull ghcr.io/james-6-23/codex2api:2.3.0
# or
docker pull ghcr.io/james-6-23/codex2api:latestManual Downloads
| Platform | Download |
|---|---|
| Linux amd64 | codex2api_2.3.0_linux_amd64.tar.gz |
| Linux arm64 | codex2api_2.3.0_linux_arm64.tar.gz |
| macOS amd64 | codex2api_2.3.0_darwin_amd64.tar.gz |
| macOS arm64 | codex2api_2.3.0_darwin_arm64.tar.gz |
| Windows amd64 | codex2api_2.3.0_windows_amd64.zip |
Verify downloads with SHA256SUMS.txt from this release.
Documentation
Assets 8
v2.2.9
Codex 反代网关:WS 大消息自动 HTTP 降级、账号导入与批量测试状态修复、代理测试与用量显示优化
Features
- 账号代理连通性测试(#212):新增账号、编辑账号、OAuth 链接生成、OpenAI Responses 账号配置中的代理地址现在可以直接测试连通性,并返回可达性、延迟、出口 IP 和位置。
- 用量范围与重置时间显示优化:仪表盘用量卡片现在会跟随当前选择的时间范围,不再固定显示"今日";账号列表中的配额重置时间精确到秒,并在 tooltip 中保留完整时间。
Fixes
- WebSocket 大消息自动降级(#214):上游 WS 在首包前出现
close 1009/message too big时,会自动改走 HTTP 完成本次请求,不再继续换账号用 WS 重试;日志错误类型标记为message_too_big。 - CPA/sub2api JSON 导入修复(#215):导入 JSON 时会识别冲突的重复 ChatGPT Account ID,凭据不同的账号不会再被误认为同一个账号,修复 CPA/sub2api 导出文件导入失败或账号被折叠的问题。
- 批量测试状态同步修复:批量连接测试现在会像单账号测试一样更新账号状态,覆盖
response.failed、unauthorized、普通上游错误和 usage-limit 结果;成功测试仍会恢复过期的 banned/cooldown 状态。 - 额度阈值调度修复(#216):达到配置用量阈值的账号在配额窗口仍有效时会保持不可调度,过期 reset 时间会被忽略,避免账号状态和调度资格出现不一致。
Installation
Docker
docker pull ghcr.io/james-6-23/codex2api:2.2.9
# or
docker pull ghcr.io/james-6-23/codex2api:latestManual Downloads
| Platform | Download |
|---|---|
| Linux amd64 | codex2api_2.2.9_linux_amd64.tar.gz |
| Linux arm64 | codex2api_2.2.9_linux_arm64.tar.gz |
| macOS amd64 | codex2api_2.2.9_darwin_amd64.tar.gz |
| macOS arm64 | codex2api_2.2.9_darwin_arm64.tar.gz |
| Windows amd64 | codex2api_2.2.9_windows_amd64.zip |
Verify downloads with SHA256SUMS.txt from this release.
Documentation
Full Changelog: v2.2.8...v2.2.9
Assets 8
v2.2.8
Codex 反代网关:账号导入与用量统计增强、批量测试判定修复、首字统计模式、WS/compact 请求记录加固
Features
- 账号用量详情增强:使用详情弹窗新增概览 / 明细 / 质量信号视图,支持按时间范围统计、模型维度按请求 / Token / 费用切换,并展示错误率、重试次数、平均首字、P95 响应、流式请求占比和 compact 请求占比。
- 批量导入 Refresh Token 体验优化:批量导入现在有进度反馈,并会触发/补齐用量采样,避免必须额外手动批量测试后才刷新用量数据。
- 首字统计模式设置(#207):系统设置新增严格 / 宽松首字模式,方便在真实内容首字和更宽松的流事件判定之间切换。
- 用量统计范围与显示增强(#203, #209, #210):统计页支持更灵活的时间范围,Token 数字可切换完整值,并在请求记录中显示 WS / Fast / compact 标记。
Fixes
- 批量测试与单账号测试一致(#194):批量测试先用 WHAM 预检用量,再解析真实短请求 SSE 终止事件;
response.failed、无输出和usage_limit_reached不会再把限流/失败账号误恢复为可用。 - 强制 WebSocket 记录修复(#205, #210):强制 WS 的请求现在会正确保存并展示
via_websocket,Fast 计费 tier 也会显示为独立标记。 - Responses compact 与 usage_limit 加固(#174, #201):API-key OpenAI Responses 账号支持
/v1/responses/compact,嵌套错误或 5xx 形态里的usage_limit_reached也会正确触发冷却/采样处理。 - Tier 计费策略保存修复(#206):
billing_tier_policy前端保存、后端归一化和数据库持久化保持一致。 - OAuth 授权链接与复制体验优化:OAuth 授权支持重新生成链接,并在 HTTP 管理后台环境下提供兼容复制路径。
- 生图与 WS 路由稳定性(#198):显式 image generation 请求在强制 WS 时绕回 HTTP,避免复用 WS 会话导致上下文串扰;
gpt-5.3-codex-spark调度过滤已加固。
Installation
Docker
docker pull ghcr.io/james-6-23/codex2api:2.2.8
# or
docker pull ghcr.io/james-6-23/codex2api:latestManual Downloads
| Platform | Download |
|---|---|
| Linux amd64 | codex2api_2.2.8_linux_amd64.tar.gz |
| Linux arm64 | codex2api_2.2.8_linux_arm64.tar.gz |
| macOS amd64 | codex2api_2.2.8_darwin_amd64.tar.gz |
| macOS arm64 | codex2api_2.2.8_darwin_arm64.tar.gz |
| Windows amd64 | codex2api_2.2.8_windows_amd64.zip |
Verify downloads with SHA256SUMS.txt from this release.
Documentation
Assets 8
v2.2.7
Codex 反代网关:WS 上游错误静默换号重试、OpenAI Responses compact 路由、模型/额度判断加固,以及安全扫描修复
Features
- WebSocket 静默重试控制(#195):新增
codex_ws_hide_upstream_errors、codex_ws_silent_retry_enabled、codex_ws_silent_max_retries三个系统设置。开启后,WS 上游在首 token 前遇到可恢复错误时会在服务端换账号、重建上游连接并继续等待,客户端连接不再立即收到上游失败帧。 - WS 错误隐藏与友好兜底:重试耗尽后,客户端只收到统一友好提示
上游服务临时繁忙,请稍后重试;原始上游错误仍保留在后端日志与用量记录中,方便排查。 - WHAM-only 用量探针控制:新增后台用量探针控制,支持优先/仅使用零额度成本的 WHAM 用量端点,减少探针走
/responses的额度影响。 - WebSocket 设置入口:管理后台的 WebSocket(Codex 上游)设置卡片新增静默重试、隐藏错误和最大重试次数控制。
Fixes
- WS 上游失败处理(#195):
usage_limit、429、5xx、读取错误、超时、EOF 等首包前失败会按配置静默换号重试,不再直接触发客户端反复 Reconnecting。 - Responses 路由和模型加固(#198):放宽本地 plan_type 约束,避免本地记录不准导致真实上游调用被提前拦截;同时加固
gpt-5.3-codex-spark等新 Codex 模型的 Responses 路由与 TTFT 判断。 - OpenAI Responses compact 路由:通过
base_url+api_key添加的 OpenAI Responses API 账号现在也能走/v1/responses/compact,不会再误发到 ChatGPT-only compact 路径。 - 额度耗尽识别:
usage_limit_reached即使包在response.error、response.status_details或 5xx 形态 payload 里,也会按账号额度耗尽处理。 - 账号工具栏布局:账号页搜索、筛选和操作按钮在窄屏下换行更稳定。
- 安全扫描修复:React Router 升级到 patched 版本,Go toolchain 提升到
1.26.4,修复 npm audit 与 govulncheck 报错;Docker 构建镜像也同步使用 Go1.26.4builder。
Installation
Docker (GHCR):
docker pull ghcr.io/james-6-23/codex2api:2.2.7
# 也可使用 latest tag
docker pull ghcr.io/james-6-23/codex2api:latestManual download:
从下方 Assets 选择对应平台的压缩包,使用 SHA256SUMS.txt 校验。
| Platform | Asset |
|---|---|
| Linux x86_64 | codex2api_2.2.7_linux_amd64.tar.gz |
| Linux arm64 | codex2api_2.2.7_linux_arm64.tar.gz |
| macOS x86_64 | codex2api_2.2.7_darwin_amd64.tar.gz |
| macOS arm64 | codex2api_2.2.7_darwin_arm64.tar.gz |
| Windows x86_64 | codex2api_2.2.7_windows_amd64.zip |
Documentation
Assets 8
v2.2.6
Codex 反代网关:Codex 上游 WebSocket 长连接模式、空闲连接保活、传输层调优与上游错误透传,配套 TLS 会话复用与账号查找优化
Features
- Codex 上游 WebSocket 模式:系统设置新增
codex_force_websocket开关,开启后对 Codex 上游的请求改走 WebSocket 长连接(复用wsrelay连接池),减少每次请求的 TLS/连接握手开销,更接近官方 CLI 体验。默认关闭,关闭时仍走原有 HTTP 路径;下游用普通https://.../v1/responses(或/v1/chat/completions)HTTP POST 发起的请求会被透明地转发为wss://上游连接,客户端无感。 - WS 空闲连接保活:新增
codex_ws_keepalive_enabled与codex_ws_keepalive_interval_sec(默认 60 秒),后台定期对已建立的空闲上游 WebSocket 连接发送 Ping 保活。保活不会发起新连接、不发送任何业务帧,零账号额度消耗,降低复用时的冷启动延迟。默认关闭。 - WS 请求徽章:用量日志中,走 WebSocket 的请求会在状态码与模型之间显示一个
ws小徽章,便于区分传输方式。 - WebSocket 设置独立卡片:将 WS 相关设置从拥挤的"调度策略"卡片中抽出,独立成全宽的"WebSocket(Codex 上游)"卡片。
- 内置 Codex CLI 版本升级:内置 Codex CLI 版本从
0.128.0升级到0.136.0,指纹更真实,并可使用更新的模型。
Fixes
- WS 上游错误透传:上游 WebSocket 错误帧现在会作为
response.failedSSE 事件透传给客户端并保留原始错误内容,不再被转成底层 read error 而表现为"空响应 / 卡 32-90 秒"这类难以排查的现象。任何上游错误(限流、模型不支持、参数错误)现在都能被客户端看到。 - WS 传输层健壮性:修复
wsrelay拨号器副本丢失NetDialContext导致 TCP KeepAlive 从未生效的隐藏 bug;为 48-91KB 的大上游帧设置 64KB 读写缓冲与共享写缓冲池;将忙连接的固定 10ms 自旋等待改为指数退避加最大等待超时;将读超时从 60 秒放宽到 120 秒,避免长推理 turn 被误判断开;并在 WS 路径静默回退 HTTP 时打印告警。 - TLS 会话复用:标准与 uTLS 传输现在共享
ClientSessionCache,重连走 TLS resumption(1-RTT),降低冷连接握手成本;同时调大MaxIdleConnsPerHost与IdleConnTimeout,并将 HTTP 服务改为显式ReadHeaderTimeout/IdleTimeout+ 优雅关闭(WriteTimeout保持 0,确保流式响应不被中途切断)。 - 账号查找 O(N) → O(1):内存账号池新增
DBID → 账号索引,会话粘性热路径与所有FindByID查找不再线性扫描账号列表。
Installation
Docker (GHCR):
docker pull ghcr.io/james-6-23/codex2api:2.2.6
# 也可使用 latest tag
docker pull ghcr.io/james-6-23/codex2api:latestManual download:
从下方 Assets 选择对应平台的压缩包,使用 SHA256SUMS.txt 校验。
| Platform | Asset |
|---|---|
| Linux x86_64 | codex2api_2.2.6_linux_amd64.tar.gz |
| Linux arm64 | codex2api_2.2.6_linux_arm64.tar.gz |
| macOS x86_64 | codex2api_2.2.6_darwin_amd64.tar.gz |
| macOS arm64 | codex2api_2.2.6_darwin_arm64.tar.gz |
| Windows x86_64 | codex2api_2.2.6_windows_amd64.zip |