Skip to content

v3.1.2

Choose a tag to compare

@github-actions github-actions released this 27 Oct 20:39
· 77 commits to main since this release

v3.1.2 重点修复 官方价格同步列错位导致的本地计费异常(#835),同时完善实时配额、Antigravity 调度、Claude/Codex 协议兼容和请求安全边界。

Features

  • Codex WebSocket 配额实时更新到调度器与账号页(#800、#801,@DeliciousBuding)。 持久连接的配额随每轮帧到达,旧逻辑只等 WHAM 探针,自动暂停和页面显示可能滞后。现在各代理入口消费 codex.rate_limits 与 codex.response.metadata,也接收终态后的连接级更新;用量、套餐和积分经过排序后更新,迟到帧不能回滚新状态,更长的真实限流或认证冷却不会被缩短。写库在后台合并,默认 30 秒,跨阈值、变化 5 个百分点或满额时提前持久化。账号页通过轻量 live 接口更新。回归覆盖终态后帧、锁争用、SQLite 写锁、调度和认证后的 live 接口;这些是合成上游验证。

  • Antigravity 自动刷新配额并避开已耗尽账号(#806、#817,@ggg17226)。 旧目录刷新会给旧配额附上新时间,缺失比例也可能被解释为零;部分模型档位共享上游模型却没有共享冷却。现在配额刷新独立平滑派发,默认每 60 分钟一轮,缺失值保留未知,确认耗尽的 5h/周窗口参与选号、亲和和重试门禁。绑定续链被门禁阻止时返回 429,新会话可按原规则借用健康账号。新会话评分考虑负载、配额压力和近期限流,公共模型、共享模型及 Gemini 家族冷却联动。更新有凭据代际和清除纪元保护,后台提供“清除配额事实”。回归覆盖调度、并发写入、过期观测和双数据库路径;贡献者另提供了 PostgreSQL + Redis 测试主机的错峰刷新、认证恢复和快照落库记录,本次发版未重复真实账号巡检。

  • API Key 可启用指定账号的外部调度模式(#831,@zjm54321 提出)。 上层服务需要自行决定账号时,可打开默认关闭的 external_scheduler,在 Responses HTTP/SSE、Chat Completions、Messages 请求中传 X-Codex2API-Account-ID。请求只在该账号执行,内部换号、重试及账号级调度限制不再代替外部决策;仍检查授权、管理员禁用、凭据状态和 Key 级限额,并回传执行账号及失败尝试的上游状态。尚未支持指定账号的执行入口会明确拒绝。本版未实现该 Issue 提议的 API Key 只读 Admin 查询权限,也未开放外部调度 Key 的下游 WebSocket、compact 或 Images 执行。 新增回归覆盖准入、账号固定、失败不换号和不支持入口。

  • 可选的 Codex Multi-Agent v2 第三方子模型明文兼容(#802、#803,@DeliciousBuding)。 原生加密子任务无法由第三方子模型读取。实验开关 CODEX_MULTI_AGENT_V2_COMPAT=true 在符合条件的官方 Codex 客户端/原生账号请求上改写协作工具,HTTP 和 WebSocket 回包还原工具名,必要时补齐明文标记。默认关闭;开启后所有匹配子任务都走明文,不能按子模型区分,也不解密旧密文,子网关仍需兼容。贡献者记录了 GPT v2 父到 DeepSeek 子的派发、followup 和工具调用验收;send_message 只有协议回归,本次发版未重跑真实多模型联调。详见 docs/CODEX_MULTI_AGENT_V2_COMPAT.md。

  • 统一 Codex 出站证明并修正 ChatGPT Live 会话(#827,@bxb1337)。 HTTP、Responses WebSocket、Live 建连和 sideband 共用服务端按最终 User-Agent 生成的 attestation,外部和账号自定义证明头不能覆盖。Linux 身份不发证明,Windows 使用平台状态,macOS 在具备原生条件时尝试 DeviceCheck;Live 不再因 Linux/Docker 缺少 Mac 组件被本地直接拒绝。会话冻结身份和证明,sideband 使用修正后的 OAuth 地址。新建 auto/Codex Key 默认允许 Live,显式关闭和已有选择保留。协议、转发和 Key 配置回归已覆盖;Mac 真机 token 生成及真实上游完整语音通话尚未验证,错误状态封装不代表硬件证明通过。

  • Antigravity 账号支持 ID 列、排序与标签页内记忆(#836、#837,@eshao731)。 桌面表格和手机卡片可显示 ID,支持跨页排序,并在当前浏览器标签页内保留所有排序选择;恢复默认排序会清除记录。前端回归覆盖存储、无效值和默认回退,本次前端测试全部通过。

Fixes

  • 官方价格不再把输出价和缓存写入价写入错误字段(#835,@MenghuiZhang 报告;#812,@ifThink404;#818,@bxb1337)。 官方价格表调整列顺序并增加缓存写入列后,v3.1.1 的固定下标解析会同时污染缓存读取、输出及长上下文/Fast 价格,并非仅交换两个字段。现在按 HTML 命名列读取,补充页面内嵌模型及长上下文组件数据,验证数值、单位、缓存关系和必要档位;缺价时按模型依次回退 LiteLLM、models.dev、项目定价及内置规则,自定义价始终优先。Daybreak 别名继承基础模型,Cyber 与 Sol 默认价分开,导出的分档计费表达式也修正了倍率括号。同一份重排表格回归在 v3.1.1 失败、#812 修复后通过;当前解析测试与真实官方来源同步到临时 SQLite 的测试通过。 后者核对 9 个模型条目、保留自定义价和成本计算,不接触现有计费数据库。

  • models.dev 补入 Google,Antigravity 思考档位继承基础定价(#834,@yanhao98)。 原先遗漏 Google 第一方条目,且裸模型未出现在定价页,部分请求落入占位价。现在导入 Gemini 条目、展示逻辑裸模型、补充默认指导价,并在没有独立覆盖时继承基础模型价格。回归覆盖供应商过滤、变体覆盖优先级和管理列表。

  • Claude Code 到 Codex 的会话、上下文、工具和搜索映射更完整(#796,@Dominic485649)。 会话身份不一致、结构化历史丢失、工具完成参数不全会破坏续轮;原 hosted WebSearch 也可能被 Codex 上游拒绝。现在保留支持的文档、搜索/浏览器历史、redacted thinking、初始推理摘要和工具引用,补齐完成参数,优先保留 128 项容量内必须使用的工具。原生 Codex WebSearch 改走官方独立搜索,再将结果交回模型,累计各轮用量;中转账号仍转发 hosted search。贡献者提供了真实 gpt-6-luna JSON/SSE 搜索与域名过滤验证,本次发版未重复模型调用。独立搜索不支持显式 user_location / blocked_domains,会报错;最多执行 8 次搜索并遵守 max_uses。

  • Responses WebSocket 支持中断并修复中断后续链竞态(#829,@bxb1337)。 旧入口拒绝 response.interrupt,终态后的取消回调还可能误关可复用连接。现在校验控制字段后路由到当前上游租约,保留确认和终态顺序,处理迟到、重复、跨流和 30 秒确认超时;合法的零输出中断终态不会变成重试。模拟上游回归覆盖两类 WebSocket 出站及同连接继续请求。HTTP/SSE-only 上游仍返回不支持中断,response.append / response.steer 仍不支持;本次未进行真实上游中断联调。

  • Codex/GPT 非流式生图不再发送 HTTP 102(#695,@Anbool 报告;#832,@bikeread)。 贡献者在 Nginx HTTP/2 下游、本地假上游条件下复现了 102 导致的 PROTOCOL_ERROR。生成与编辑接口现在等待最终 JSON/状态,不发中间 102 或提前 200;流式 SSE 保活保留。网络级回归覆盖 generations、JSON/multipart edits、错误和取消;贡献者的隔离 Nginx 对照通过,本次未调用真实图片模型。Grok 图片及其他非流式接口沿用原有行为。

  • 账号模型同步修复能力快照缺失(#816,@bikeread 报告;#819,@wille2creo)。 共享 Key 的能力取交集会因某个账号缺快照而丢失上下文窗口、推理档位等字段,旧同步按钮只更新模型目录。显式账号同步、导入预热和抽样目录刷新现在保存对应账号及凭据代际的快照,旧代际响应不能污染新凭据。回归覆盖保存与代际拒绝;全渠道刷新仍按套餐抽样,需修复整组时应逐账号同步。

  • Responses 放行原生 configuration_update 输入(#822,@bxb1337)。 本地类型白名单漏项导致合法请求在转发前返回 invalid_input_type;已补入允许类型并通过 API 校验回归。

  • 降智检测跳过禁用账号,并按目标渠道启用新账号(#814、#830,@10373064 报告;#795,@skyswordw)。 自动检测不再继续领取已禁用账号;切换分组策略只默认启用目标渠道的新账号。旧的跨渠道冲突会在页面列出,可关闭冲突账号的检测后保存,账号业务开关和历史保留。SQLite/PostgreSQL 触发器与配置并发回归覆盖这些路径。默认糖果题补上禁止工具/联网及正确回复文案,已有保存题库不会自动覆盖。

  • Antigravity 套餐白名单使用稳定标识(#810,@Blueman3112 报告)。 展示名与白名单键不一致曾导致可用账号被排除。现在从 entitlement tier 推导稳定套餐键,保留显示名,套餐变化刷新路由缓存,页面提供对应套餐筛选;后端和前端回归覆盖匹配行为。

  • 窗口用尽自动重置不再被零 applicability 提示阻止(#823、#824,@eshao731)。 Business Pro Lite 可能有可用券但返回 applicable_available_count=0。现在仍要求实时 7d 已满且 available_count>0,由上游 consume 决定是否接受;锁、幂等键及 5 分钟冷却保留。回归覆盖零 applicability 与无可用券;贡献者验证了手动 consume,但尚无其新自动扫描线上触发的记录。

  • HTTP 代理目标不可达时正确尝试 IPv6(#833,@yanhao98)。 HTTP 网关 502/504 等错误原先不能触发仅 SOCKS 特征匹配的回退,还可能误判代理本身失效。现在归类目标连接失败并走既有 IPv6 echo 回退。模拟 HTTP 代理端到端回归通过,贡献者另提供纯 IPv6 Resin 节点实测记录。

  • 收紧资源、认证与凭据边界(#804,@DeliciousBuding)。 请求内存按实际读取计费,缓存、SSE、上游消息和下游 WebSocket 设定上限;RPM/RPD 改为进程内原子准入,批量生图按执行次数计量。管理认证失败按 IP 阻断,OAuth 会话先认领再兑换,自助账号待审核信息与凭据一起提交;重复输入字段和超大图片尺寸明确拒绝。HTTPS 代理验证 TLS 后 CONNECT,代理凭据和日志脱敏,管理响应禁止缓存,容器相对日志落到 /app/logs。合成 HTTP/WS 与数据库故障回归覆盖这些路径,真实模型最大媒体/工具事件兼容性尚未验证。Go 升至 1.26.10,Vite 升至 8.3.5,并更新相关依赖。

Upgrade Notes

  • 价格修复需要重新同步。 从 v3.1.1 升级后,在“模型定价 → 价格同步”执行官方价同步并检查警告、回退来源及受影响档位。已有自定义价会继续保留;若它本身错误,应手动修正或清除对应覆盖后再同步。修复不自动重算或退款历史错误扣额,请按原始 token 和正确档位另行核对。本地金额错误不等于上游订阅额度扣费规则发生变化。
  • 数据库与数据保留。 本版复用现有账号、配置和任务表,扩展 Antigravity 配额 JSON/纪元元数据,并自动更新 SQLite/PostgreSQL 的账号 outbox 与降智检测触发器;无需手工删表或重建数据。已有降智检测选择和历史保留,旧跨渠道冲突需在页面处理,旧糖果题需手动修改。
  • 默认行为变化。 Codex WS 配额摄入默认开启;Antigravity 自动配额刷新、配额门禁及 Fresh 亲和加权默认开启。新建 auto/Codex Key 默认允许 Live,旧 Key 保留原选择。Multi-Agent 明文兼容和外部调度均默认关闭。容器工作目录改为 /app,自定义相对路径部署应核对挂载位置。
  • 资源与认证限制。 下游 WebSocket 每 Key 最多 64 条、全局 4096 条,匿名访问另限每 IP 16 条;SSE 单行及 Grok 聚合事件上限 8 MiB,上游 WebSocket 解压后单消息 32 MiB,相关聚合成功 JSON 64 MiB。显式图片单边最多 16384、总像素最多 4000 万。管理认证在 10 分钟内失败 5 次会阻断该 IP 10 分钟,期间正确密钥也返回 429,共享出口需留意。RPM/RPD 原子准入是进程内语义,不是跨副本共享限额;异步生图 202 只表示接收,执行时仍可能受限。
  • 非流式生图超时。 Codex/GPT 图片请求不再靠 102 保活,需给客户端和反向代理足够的等待/空闲超时;长任务可使用已有异步图片任务接口。
  • 逃生阀。 CODEX_WS_USAGE_FRAME_INGEST=false 关闭 WS 配额摄入,CODEX_WS_USAGE_FRAME_PERSIST_SECONDS 调整落库间隔;Antigravity 设置中 quota_refresh_enabled=false 只关闭配额后台轮询,quota_gate_enabled=false 暂停配额门禁;ANTIGRAVITY_BALANCED_AFFINITY=false 并重启关闭 Fresh 加权。关闭 CODEX_MULTI_AGENT_V2_COMPAT 并重启可恢复原生协作协议;外部调度与 Live 均可在对应 API Key 中关闭。
  • 开发依赖遗留项。 GitHub 的 6 项 Dependabot 告警均指向 frontend/pnpm-lock.yaml 中旧的 Vite 8.3.2。Release/Docker 工作流使用 npm ci 和已更新到 Vite 8.3.5 的 package-lock.json;本次 npm 安全门禁通过。使用 pnpm 的开发环境仍需同步锁文件,不应把正式构建通过理解为仓库所有锁文件告警已清零。
  • 建议升级。 使用官方价格同步、Claude Code 映射、Antigravity 或非流式 Codex 生图的部署建议升级;对外开放的管理入口也应采用本版安全加固。源码构建需 Go 1.26.10 或更新版本。
  • 本次验证范围。 本地前端 411 项测试、类型检查、正式构建及 go test ./...、git diff --check 通过;发布前源码提交的 GitHub CI(含 race 分片、PostgreSQL 兼容和静态检查)与 Security Scan 通过。#835 已完成旧版/修复版对照及临时 SQLite 实网价格同步。本地 PostgreSQL + Redis 2004 源码容器已重建启动,健康检查和管理页均返回 200(本地构建标识为 dev)。本次没有把模型生成、Live、Mac DeviceCheck、生产账单纠正或全量真实上游联调计作已验证。

致谢

Full Changelog: v3.1.1...v3.1.2