Releases: james-6-23/codex2api
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
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 |
Documentation
v2.2.5
Codex 反代网关:Codex 模型映射与思考强度配置、账号配额保护、compact 请求识别、邮箱域名标签,以及账号池/计费稳定性修复
Features
- Codex 模型注册与思考强度 (#165):系统设置新增模型注册/思考强度配置,可从上游同步基础模型并配置带 reasoning effort 的模型列表
- Codex 模型重定向映射 (#189, #190):新增 Codex 模型之间的重定向映射,下游请求模型可映射到另一个 Codex 模型,同时保留请求的思考强度
- 账号配额自动暂停:支持按 5h/7d 用量阈值自动暂停账号调度,提供全局默认、单账号禁用、编辑账号设置和批量设置入口
- compact 请求识别:使用统计新增 compact 徽章,并在请求记录中展示模型/思考强度相关信息,便于区分压缩上下文请求
- 邮箱域名标签 (#191):账号管理自动解析邮箱域名,支持按域名筛选、显示封禁/总数统计,并可在账号管理界面显示或隐藏域名标签
- 配置示例更新:更新 Codex 配置示例,覆盖当前模型映射和思考强度配置方式
Fixes
- service tier 计费语义 (#183):拆分 requested / actual / billing service tier,避免上游 actual tier 与下游请求意图混用导致计费口径不清
- SQLite 与管理后台账号池稳定性 (#185, #186):优化账号用量窗口读取和 SQLite 访问路径,减少大账号池下简单查询被写入队列阻塞导致 503 的情况
- 账号状态与探测记录:更稳定地记录 unauthorized 错误,并降低账号列表批量渲染和状态更新的额外开销
- Refresh token 复用处理:复用 refresh token 现在按不可重试凭据错误处理,避免无效重试路径扩大异常影响
Installation
Docker (GHCR):
docker pull ghcr.io/james-6-23/codex2api:2.2.5
# 也可使用 latest tag
docker pull ghcr.io/james-6-23/codex2api:latestManual download:
从下方 Assets 选择对应平台的压缩包,使用 SHA256SUMS.txt 校验。
| Platform | Asset |
|---|---|
| Linux x86_64 | codex2api_2.2.5_linux_amd64.tar.gz |
| Linux arm64 | codex2api_2.2.5_linux_arm64.tar.gz |
| macOS x86_64 | codex2api_2.2.5_darwin_amd64.tar.gz |
| macOS arm64 | codex2api_2.2.5_darwin_arm64.tar.gz |
| Windows x86_64 | codex2api_2.2.5_windows_amd64.zip |
Documentation
Full Changelog: v2.2.4...v2.2.5
v2.2.4
Codex 反代网关:WS 上下文续接修复、首字超时重试优化、账号测试恢复、API 图片预览与 long context 计费明细
Features
- 调度器跳过 warm 层级 (#176):新增跳过 warm 健康层级的调度选项,适合希望账号维持 healthy 调度层级的场景
- API Reference 图片响应预览:
/v1/images/generations、/v1/images/edits等返回b64_json或图片 URL 时,调试面板会直接渲染图片预览,并保留原始 JSON 便于排查 - long context 计费明细 (#178):使用统计的成本 tooltip 会标注
Long context(输入 > 272,000)触发原因,并展示实际采用的输入 / 输出 / 缓存读取单价 - CHANGELOG 位置整理:项目变更记录移动到仓库根目录,便于 Release 和文档引用保持一致
Fixes
- WS 模式上下文续接 (#182):修复 WebSocket 模式下
previous_response_id对话上下文丢失的问题,保持响应续链一致性 - 首字超时重试 (#172):首 token 超时后按账号池轮次重试;账号池尝试完后会清理临时不可用标记再进入下一轮,减少单账号/少账号池时直接返回无可用账号的问题
- 封禁账号测试状态恢复:账号测试成功后会恢复先前因封禁测试留下的状态,避免成功测试后仍显示异常
- 批量账号测试边界:批量测试增加边界控制,避免重复/超量测试导致调度和状态统计不稳定
- 版本弹窗裁剪问题:版本提示弹窗改为 portal 渲染,避免被侧栏 overflow 裁剪
Installation
Docker (GHCR):
docker pull ghcr.io/james-6-23/codex2api:2.2.4
# 也可使用 latest tag
docker pull ghcr.io/james-6-23/codex2api:latestManual download:
从下方 Assets 选择对应平台的压缩包,使用 SHA256SUMS.txt 校验。
| Platform | Asset |
|---|---|
| Linux x86_64 | codex2api_2.2.4_linux_amd64.tar.gz |
| Linux arm64 | codex2api_2.2.4_linux_arm64.tar.gz |
| macOS x86_64 | codex2api_2.2.4_darwin_amd64.tar.gz |
| macOS arm64 | codex2api_2.2.4_darwin_arm64.tar.gz |
| Windows x86_64 | codex2api_2.2.4_windows_amd64.zip |
Documentation
Full Changelog: v2.2.3...v2.2.4
v2.2.3
Codex 反代网关 — 调度优化、运维可观测性增强、UI 体验打磨
Features
- 用量重置雷达:新增
/subscriptions页面,集中查看 Codex Reset Radar、RSS 事件与重置时间钩子;检测到「窗口关闭」信号后,后端会清理全部账号的旧冷却与用量缓存并自动跑一轮连接测试,使账号池立即对齐新的重置边界 - 批量操作流式进度:账号管理的批量刷新 / 批量测试 / 启停 / 锁定 / 重置等操作改为流式事件下发(
success / banned / rate_limited / failed),后台无需等整批完成即可看到逐个账号的进度 - Token 数字紧凑显示:系统设置中加入「使用统计数字格式」开关,开启后 token 数自动按 K / M 单位简写,方便看大量级
- 账号管理卡片视图:账号列表新增「卡片 / 表格」切换按钮,xl 屏卡片模式一行 5 个;选择会持久化在
localStorage - 状态徽章错误提示:账号管理列表中,鼠标悬停封禁(
unauthorized)/ 错误(error)状态徽章会弹出完整的上游错误信息 tooltip,样式与使用统计的状态码 tooltip 一致 - Anthropic
speed: fast透传 (#170):Anthropic 风格的speed: fast请求会映射为 Codex 上游的 priority 计费档,确保 fast 客户端拿到 fast 通道
Fixes
- 修复版本徽章按钮在 GitHub 最新版未拉到(被网络拦截 / 限流 / 仍在请求中)时点击没有反应的问题;现在始终可以点开弹窗,远端版本未知时显示「正在检查最新版本…」
- 修复首 token 超时与调度竞争被错误归并为「无可用账号 503」的问题(#167)
- 修复
/v1/responsesWebSocket 入站返回 404、以及CODEX_UPSTREAM_TRANSPORT=ws强制 WS 时上游 101 被误判为未知错误的问题(#171) - 修复 Anthropic 响应内容被改写、以及失活账号在探测里没有被标记的问题
- 修复 wham 用量窗口的分类逻辑:免费账号的 7d 主窗口不再被错认成 5h(按
limit_window_seconds而不是字段位置识别)
Installation
Docker (GHCR):
docker pull ghcr.io/james-6-23/codex2api:2.2.3
# 也可使用 latest tag
docker pull ghcr.io/james-6-23/codex2api:latestManual download:
从下方 Assets 选择对应平台的压缩包,使用 SHA256SUMS.txt 校验。
| Platform | Asset |
|---|---|
| Linux x86_64 | codex2api_2.2.3_linux_amd64.tar.gz |
| Linux arm64 | codex2api_2.2.3_linux_arm64.tar.gz |
| macOS x86_64 | codex2api_2.2.3_darwin_amd64.tar.gz |
| macOS arm64 | codex2api_2.2.3_darwin_arm64.tar.gz |
| Windows x86_64 | codex2api_2.2.3_windows_amd64.zip |
Documentation
Full Changelog: v2.2.2...v2.2.3
v2.2.2
v2.2.2
Highlights
- Productized the first-run admin setup path with clearer setup hints and admin authentication polish.
- Added runtime status reporting for service, database, cache, usage log writer, probes, account pool, image storage, and admin auth.
- Added configurable background image/video support with live glass opacity and blur controls.
- Raised MP4 dynamic wallpaper uploads to 40MB while keeping image uploads capped at 20MB.
- Added fast-mode and reasoning-effort quick-start snippets for supported client templates.
- Added structured Chinese and English GitHub issue templates.
Downloads
Release assets are available for Linux, macOS, and Windows. Use SHA256SUMS.txt to verify downloaded packages.
Full Changelog: v2.2.1...v2.2.2
v2.2.1
✨ 新增
主题设置中心 /theme
集中调整管理后台的明暗模式与视觉风格,所有切换实时生效、本地持久化、跨刷新保留。
- 明暗模式:浅色 / 深色,附 View Transition 圆形扩散过渡动画。
- 20 套精选配色,每套均提供 light / dark 双变体,可与明暗模式自由组合:
- 经典系:Classic Blue · Claude 暖杏 · ChatGPT 极简 · DeepSeek 科技 · Graphite · Aurora · Rose · Mono
- 编辑器系(VSCode 热门):One Dark Pro · GitHub Dimmed · Tokyo Night · Dracula · Monokai Pro · Nord · Catppuccin · Gruvbox
- 亮色系:Solarized Light · Quiet Light · Ayu Light · Noctis Lux
- 全局同步:主题状态提升到
ThemeProviderContext,侧栏底部的深色切换按钮与主题设置页双向实时联动。 - 侧栏深色切换:恢复并保留侧栏左下角的明暗切换按钮(含旋转动效)。
🔧 修复 / 改进
- 修复刷新后主题恢复为默认的问题:把主题恢复逻辑提到 React 挂载之上的 inline 脚本中,避免 React 首次渲染前的主题闪烁。
- CSP 收紧:通过 SHA-256 内联脚本哈希允许主题恢复脚本执行,整体
script-src保持'self',不再依赖'unsafe-inline'。 - 主题选择持久化至
localStorage(theme/color-theme),无需后端存储、按浏览器粒度。
📦 构建
- 工作流:
Releaseworkflow 自动构建 5 个平台二进制(linux/amd64, linux/arm64, darwin/amd64, darwin/arm64, windows/amd64)+SHA256SUMS.txt。
Full Changelog: v2.2.0...v2.2.1
v2.2.0
API Key Token 统计、零成本额度探测、侧栏动画优化与导出修复
本次版本聚焦运营侧数据可视化、账号额度探测成本、UI 体验以及导出兼容性。覆盖 #162、#163、#164。
API Keys 页新增 Token 用量统计 (#162)
/admin/api-keys 新增「Token 用量」tab,专门用于按 API Key 统计 token 消耗,不再局限于旧面板的 Top 3 / Top 8 简略排行。
后端
- 新增
GET /api/admin/usage/api-keys?start=&end= - 新增
database.APIKeyTokenStat:分列 input / output / cached / total token ListAPIKeyTokenStats(ctx, start, end)使用同一份 SQL 兼容 sqlite / postgres- 返回完整列表,不做后端 limit,前端负责搜索、排序和展示
前端
- 时间 chip:今日 / 本周 / 本月 / 自定义起止
- 搜索:按 key 名称或 masked key 片段过滤
- 表格列:请求数、Input Token、Output Token、Cached Token、Total Token、错误数、费用 (USD)
- 所有列支持点击排序;默认按
total_tokens DESC - 中英文 i18n 完整补齐
/wham/usage 零成本额度探测
发现 ChatGPT 后端真实存在:
GET https://chatgpt.com/backend-api/wham/usage
该接口返回结构化 JSON(plan_type、5h / 7d 用量百分比、reset_at、credits、spend_control),并且不消耗任何推理额度。
本版本将主动额度探测从「最小 /responses 请求」升级为:
- 优先调用
/backend-api/wham/usage(零成本) - 任意失败时 fallback 到原来的
/responses探针,保证兼容性
同步逻辑接入现有链路:
plan_type→Store.UpdateAccountPlanType- 5h 用量 →
SetUsageSnapshot5h - 7d 用量 →
PersistUsageSnapshot - Premium 5h 达 100% →
MarkPremium5hRateLimited
这样后台探测不会再因为刷新额度信息而消耗少量 token。
侧栏收起动画优化 (#163)
收起侧栏的过渡从硬切换改为编排式动画:
- 缓动曲线改为 Apple HIG 风格
cubic-bezier(0.32,0.72,0,1) - 容器宽度 / padding / gap 使用 380ms 软着陆
- 文字 opacity / translate 使用 200ms,展开时增加 150ms delay:容器先撑开,文字再滑入
- Brand 区拆成外层 max-width + 内层 opacity/transform,避免文字和容器抢空间
- ChevronLeft/Right 条件渲染改为单个 ChevronLeft 旋转 180°,视觉连续性更好
- 侧栏增加
overflow-hidden,过渡中间态文字不再露出
导出兼容性修复 (#164)
修复导出 JSON 里 account_id 为空的问题。
根因:新增账号时真实 ChatGPT account id 存在 chatgpt_account_id,但导出逻辑只读历史字段 account_id。
修复:
- 导出时优先读取
chatgpt_account_id - 空时 fallback 到历史字段
account_id - 与导入去重逻辑
GetAllChatGPTAccountIDs的顺序保持一致
同时将下载文件名改得更清晰:
cpa-<ts>-<n>.json→codex2api-<ts>-<n>.jsonrt-<ts>-<n>.txt→codex2api-rt-<ts>-<n>.txt
📋 HTTP 下复制 auth.json 修复
修复通过 HTTP 部署时「复制 auth.json」失败的问题。
navigator.clipboard.writeText() 在非安全上下文(HTTP、沙盒 iframe、部分浏览器)会抛 NotAllowedError。旧逻辑只做 feature check,没有 try/catch,导致异常直接传播,textarea fallback 永远不会执行。
现在:
- 现代 Clipboard API 抛错时自动 fallback 到
document.execCommand("copy") - fallback 增强:
pointer-events:none、focus({ preventScroll: true })、setSelectionRange - HTTP 部署也能复制 auth.json
兼容性
- 无 breaking change
- API Key Token 统计为新增端点,不影响旧接口
/wham/usage探测失败会自动 fallback/responses,不会影响已有账号探测稳定性- 升级:
git pull && docker compose restart
构建产物
- Linux: amd64、arm64
- macOS: amd64、arm64
- Windows: amd64
SHA256SUMS.txt 见附件。
v2.1.9
Toast 体验修复 + 一键清理限流逻辑修正
本次更新聚焦运营体验的两处具体问题:批量操作的 toast 提示稳定性,以及"一键清理限流"行为与前端筛选不一致的 bug。
Toast 通知系统重写
问题:批量测试账号等耗时操作完成后,右上角 toast 经常一闪而过、或完全看不到。
根因:每个页面都把 <ToastNotice> 渲染在 <StateShell> 的 children 内。任何 reload() 触发 loading=true,StateShell 切换到 spinner 视图就会 卸载整个 children 树,toast 随之消失。账号越多,loading 越久,toast 越是看不见。
修复:
- 新增全局
ToastProvider(context + 在 App 顶层渲染),toast 完全脱离任何页面 StateShell 的 mount 周期 - 默认显示时长
3000ms → 4500ms,长文案有充足读取时间;showToast(msg, type, ms)支持单次自定义 - 8 个页面(Accounts / APIKeys / Docs / ImageStudio / OperationsErrors / PromptFilter / Proxies / Settings / Usage)移除冗余
<ToastNotice>挂载 useToast()API 完全不变,77 处现有调用零修改即可生效handleBatchTest改用reloadSilently(),批量测试完成后页面不再短暂变 spinner
"一键清理限流"现在能真正清干净
问题:用户点击"一键清理限流"清不掉、且账号也没有锁定;但勾选全部限流账号 + 批量删除却能成功。
根因:CleanByRuntimeStatus("rate_limited") 这个函数本来是给自动清理(cron sweep)设计的,有两个语义裁剪:
- 显式跳过 premium 5h 限流——这些账号 5h 内会自然恢复,自动清理删了浪费
- 只匹配
RuntimeStatus()=="rate_limited",不含usage_exhausted(Free 7d 用尽时的状态)
但前端"限流"筛选包含更广的语义(5h / 7d / usage_exhausted / cooldown_reason),所以 UI 看到的"限流账号"和后端能清的对不上。手动点击 + 自动清理共用一个函数,把手动场景也卡死了。
修复:
- 新增
CleanRateLimitedManual()用于手动一键清理:- 匹配
rate_limited和usage_exhausted - 不跳过 premium 5h 限流(手动点击即用户明确意图)
- 锁定账号继续跳过(与其它清理流程一致)
- 删除事件 reason 标记为
manual_clean(区别于auto_clean)
- 匹配
CleanByRuntimeStatus行为完全保持不变,自动清理 sweep(runAutoCleanupSweep)路径继续按原逻辑运行- 配套单元测试
TestCleanRateLimitedManualClearsAllRateLimitFlavors:覆盖 premium 5h / usage_exhausted / 锁定账号 / 健康账号四种情况
兼容性
- 无 breaking change,所有接口字段、URL、行为对客户端透明
- 升级:
git pull && docker compose restart - 已启用
auto_clean_rate_limited的用户不受影响——后台清理路径完全没变,仍然保留 premium 5h skip
构建产物
- Linux: amd64、arm64
- macOS: amd64、arm64
- Windows: amd64
SHA256SUMS.txt 见附件。
v2.1.8
Fast 计费修复 + 移动端体验改进
本次更新主要修复 Fast/Priority 模式计费链路的两个关键 bug、移动端布局溢出,以及一些小幅打磨。涉及 #157、#158。
🚨 Fast / Priority 计费修复 (#158)
之前 fast 请求没有按照倍率计费,存在两层独立的 bug,本次一并修复:
Bug 1:fallback 倍率缺失
gpt-5.4-mini/gpt-5.4-nano等没有显式 priority 价表的模型,fast 请求按 base 价记账,未应用 2× 倍率- 现在
serviceTierCostMultiplier("fast"/"priority")返回2.0,与 sub2api 行为对齐
Bug 2:上游降级导致的计费旁路
- 客户端请求
service_tier=fast,上游 Codex 后端可能回service_tier=default(fast 通道未生效),resolveBillingServiceTier之前会让上游报告的 tier 覆盖客户端意图,导致 usage_log 按 base 计费 - 现在按 客户端意图 锁定计费 tier:只要请求里写了
fast/priority,就按 priority 计费,不被上游降级值掩盖
实测验证(gpt-5.4-mini,input=13 / output=5):
| Tier | 修复前 | 修复后 |
|---|---|---|
| default | $0.0000322500 | $0.0000322500 |
| fast | $0.0000322500 ❌ | $0.0000645000 ✅ (×2) |
gpt-5.5 / gpt-5.4 / gpt-5.3-codex 等有显式 priority 价表的模型走专属单价(如 gpt-5.5: 12.5 / 75 / 1.25,约 2.5× base),价目表本身未改动。
📱 移动端布局修复 (#157)
升级 2.1.7 后移动端出现的几处溢出 / 裁切问题:
- 账号页"额度重置概览 / 限流恢复"图表卡:
compact模式硬编码h-[430px]+ 底部94px行,移动端文字会被裁掉。改为lg:断点生效,移动端图表行 200px + 摘要卡 auto 自适应 - Layout / SecurityBanner / Accounts / Usage 在移动端横向溢出:补齐
min-w-0+overflow-hidden+break-words,sidebar 列宽用 CSS 变量传值避免 grid-template-columns 重排时的过渡断裂 - 顶栏站点名:从
max-w-[150px]改为min-w-0 flex-1 truncate,长站点名不再撑破布局
🆕 计费明细 tooltip 显示 Tier
成本明细悬浮窗末行新增一行"计费模式":
default请求 →Standardfast/priority请求 →⚡ Fast(琥珀色)
未显示倍率数字 —— 因为 gpt-5.5 这类显式 priority 价表的模型已经把加价计入单价(rate_multiplier=1),强行打 ×N 会误导用户。
⚙️ Structured Output Schema 兼容
/v1/chat/completions 的 response_format 转上游 text.format 时,给所有 type=object 节点(含根、嵌套、items、$defs、anyOf/oneOf/allOf)补 additionalProperties: false。Codex strict mode 要求此字段才能用 structured output。
🔧 其它打磨
- 重置后 plan 同步异步化(42d48a7):单个 / 批量重置不再阻塞等待上游 plan 探测,改为后台 goroutine(独立 15s 超时 +
context.Background()),N 个账号并发探测,前端立刻拿到响应 - PR #142 合并:账号重置时主动同步 Codex plan 类型,刷新
plan_type元数据 - 修复
auth/store.go一处中文乱码 log(之前是 GBK 误编码)
兼容性
- 无 breaking change,全部接口字段向下兼容
- 升级:
git pull && docker compose restart - 已部署用户:fast 计费修复会影响 fast 请求的扣费金额(按预期翻倍),如果你以前在依赖 fast 不收 2× 的行为,请提前通知用户
构建产物
- Linux: amd64、arm64
- macOS: amd64、arm64
- Windows: amd64
SHA256SUMS.txt 见附件。

