Skip to content

v2.9.7

Choose a tag to compare

@github-actions github-actions released this 12 Sep 23:16
· 109 commits to main since this release

v2.9.7 聚焦 账号质量评估与订阅可观测性:新增 HTML 动画降智检测工作台(后台任务、提示词预设、SVG 导出)、Codex 订阅状态服务端跟踪与手动刷新、Ultra 档标记与筛选(#669)、号池一键刷新用量、测连 / 降智测试写入用量记录,以及定价页重构、16 套新主题与账号卡片视图;同时合入 @frank8ai 贡献的 Antigravity 图片输入修复(#667)。

Features

  • HTML 动画降智检测工作台(@james-6-23)。管理后台新增「降智检测」页(/admin/quality-test),用可编辑的 HTML / SVG 动画题目(默认「鹈鹕骑自行车」)对比所选账号、模型与思考强度的生成质量。检测作为服务端后台任务执行(POST /api/admin/accounts/:id/quality-test 返回 202),切换页面、刷新或关闭标签页不会取消;任务连同账号身份与订阅快照、模型、强度、提示词、状态、用量与生成内容保存在新表 quality_test_jobs,通过 GET /api/admin/quality-tests 分页查看、POST /api/admin/quality-tests/:id/cancel 取消。数据库唯一槽位把全部管理员、标签页与共享数据库实例的运行任务合计限制为 3 个,同一账号仅 1 个活动任务(名额满或重复返回 409,不排队);单次任务最多 10 分钟、生成内容不超过 1 MiB,正常关闭服务保存 interrupted 结果,进程崩溃遗留的任务在截止时间加 30 秒宽限后清理。思考强度按渠道构造(Codex / Responses / Grok 用 reasoning.effort,Claude 用原生 thinking + output_config.effort),沿用账号测连的代理、凭据、用量与冷却处理,不经过公共 /v1/* 的 Key 调度、计费与请求体规则。结果在隔离 iframe 中预览(GET /api/quality-test/preview 是无凭据、独立 CSP 的静态容器),源码视图先格式化再高亮,展示耗时 / 首段输出 / token 指标,可下载 HTML 或「导出 SVG 静态快照」(取当前最大可见 SVG,含脚本生成的路径与页面样式,上限 10000 元素 / 8 MiB)。提示词预设分内置 7 套(鹈鹕、模拟时钟、太阳系、弹跳小球、齿轮、城市夜景视差、汉字笔顺,随前端发布不落库)与自定义预设(新表 quality_test_prompts,GET / POST / PATCH / DELETE /api/admin/quality-test-prompts),创建任务可带 prompt_id 累计使用次数。检测记录以弹窗展示,?job=<id> 可直达结果;npm run test:svg 用 Playwright 真实浏览器回归 SVG 导出。不输出自动「降智评分」,指标仅供对比参考。

  • Codex 订阅状态服务端跟踪 + 手动刷新 + 续费时间列(#670,@james-6-23)。订阅同步元数据(subscription_checked_at / sync_state / source / error / last_known_status / renewal_detected_at / will_renew / grace_until)落在账号 credentials,不建表;服务端按配置时区的自然日计算业务状态(active / expiring_today / expired / grace_period / unknown),账号列表与详情响应新增 subscription 对象。此前付费 plan 头回来时陈旧到期时间被静默清空(issue #360 的不变式),用户看到的是空白,分不清「已续费」还是「没数据」;现在改为写入「已续费 · 待确认」状态并立即触发一次权威同步,宽限期内不清理。订阅接口改为 Codex CLI 身份优先、403 才回退浏览器伪装——实测人机验证是被 Origin / Referer / Chrome UA 触发的,同 IP 同令牌换 Codex 头直接 200,多数账号不再需要绑代理;仍被挑战的账号在前端提示「绑定代理后重试」。RT 轮换时令牌里更早的到期时间不再覆盖订阅接口给的权威值。新增 GET /api/admin/accounts/:id/subscription 与 POST …/subscription/refresh(每账号 30 秒限流,429 带 Retry-After),分页列表与批量选择器新增 subscription 筛选,列表投影补上订阅键,否则快照行全判未知。前端用共用 SubscriptionBadge 替换两份 ExpiryBadge:正常态显示 YYYY-MM-DD 续费,> 9 天绿 / 4–9 天黄 / ≤ 3 天红,过期显示已超时天数,悬停显示到期时间、最近查询、来源、同步状态、自动续期与失败原因,带刷新按钮;表格新增「续费时间」列与「订阅状态」筛选下拉。

  • Ultra 档标记与筛选(#669,@yy1105384898 报告)。Codex 客户端选 Ultra 时,线路上发出的 reasoning.effort 就是 xhigh,同时附带一条开启主动多代理委派的 <multi_agent_mode> developer 消息,网关记录的 xhigh 并非改写。现在网关按该标记判定 Ultra(最后一条为准,同回合续接帧按 turn_id 继承,6 小时进程内缓存),写入新列 usage_logs.ultra;用量页模型徽章加玻璃星空样式与说明 tooltip,「更多筛选」新增 Ultra 开关(?ultra=true|false,作为维度筛选会带动区间卡片),状态芯片补 500。

  • 号池一键刷新用量(@james-6-23)。POST /api/admin/accounts/batch-refresh-usage(账号页「管理 → 一键刷新用量」)刷新运行池中所有支持 WHAM 的 Codex 账号的 5 小时 / 周用量快照,覆盖全部分页,独立于搜索、筛选与勾选;无 Access Token、Agent Identity、第三方中转与其他渠道账号不参与。只查询 /backend-api/wham/usage,不刷新登录令牌,也不回退到消耗 Token 的 /responses 探针;失败保留原快照,单独的 WHAM 401 不判凭据失效。并发遵循 usage_probe_concurrency,单查询最多 15 秒;?stream=true 返回 start / progress / complete SSE 事件,同实例并发调用返回 409,客户端断开即取消,完成前使列表与分析缓存失效。

  • 测连与降智测试写入用量记录(@james-6-23)。Codex / Claude / Antigravity / Grok 四渠道的账号测连(connection_test)与降智检测任务(quality_test)现在从诊断对象投影一条用量日志(Claude 输入按未缓存 + 缓存读 + 缓存写口径),含思考强度、首段输出耗时与最后一条错误文案;拿不到响应记 598 / transport。用量页 Type 列按 internal_reason 显示「测试连接」/「降智测试」,不再是笼统的「内部请求」;测连弹窗补显示思考强度与首段输出耗时。

  • 模型定价页重构(@james-6-23)。拆出 PricingSyncPanel 负责官方来源同步(手动同步、定时同步开关与间隔提示、保留自定义价格、来源管理),价格列表支持来源 / 渠道筛选、费率表达式示意、逐模型展开编辑标准价 / 图片计费 / 高级费率(长上下文 · Priority)并可逐字段还原,显示输出 / 输入倍率与「保存全部包含筛选之外修改」的提示。

  • 16 套新主题与主题页重做(@james-6-23)。新增 8 套配色(Ocean 海盐蓝、Forest 松林绿、Lavender 薰衣草、Amber 琥珀金、Espresso 浓咖啡、Sakura 樱花粉、Mint 薄荷青、Midnight 午夜蓝)与 8 套网站风格(GitHub、Vercel、Google、Apple、Notion、Stripe、Spotify、Slack),网站风格会同步应用卡片、按钮与侧栏样式。主题页加入实时预览、浅色 / 深色 / 跟随系统说明与各风格界面特征提示,index.html 的无闪烁引导有测试覆盖。

  • 账号卡片视图刷新(@james-6-23)。Codex 账号列表的卡片布局改用独立样式,请求计数胶囊新增 card 形态,每张卡片提供详情 / 配置 / 用量入口与额度用量面板。

Fixes

  • Antigravity Responses 适配器支持用户消息与工具输出中的内联图片(#667,@frank8ai)。此前在 Antigravity 渠道用 Codex CLI 或 Responses API 调视觉模型时,用户消息里的 input_image / image_url 以及 function_call_output 中携带的图片(如浏览器 / computer-use 工具返回的截图)都会被适配器以「不安全支持的内容类型」拒绝。现在 data:<mime>;base64,... 图片会转成 Gemini inlineData,工具输出中的图片挂到 functionResponse.parts;非用户角色的图片与远程 URL 仍明确拒绝,两条路径都有单元测试。

Upgrade Notes

  • 数据库迁移:启动时自动为 SQLite / PostgreSQL 新建 quality_test_jobs、quality_test_prompts 两张表,并为 usage_logs 新增 ultra 布尔列(默认 false)。订阅状态元数据写在账号 credentials 内,无表结构变更。升级前按现有部署流程备份数据库。
  • 默认行为变化:订阅状态服务端计算、Codex 身份优先查订阅、Ultra 标记、测连 / 降智测试写用量日志均默认生效。降智检测的并发上限(3 个 / 单账号 1 个)是数据库槽位实现,多实例共享同一数据库时合并计数。测连与降智测试会消耗上游额度并出现在用量记录中,按 Type 可筛出。
  • 降智检测预览:GET /api/quality-test/preview 是公开的静态预览容器,不带凭据、不读用户数据,独立 CSP 不放宽管理后台的脚本限制;仍建议反代按现有规则保护 /admin。
  • 验证与升级建议:main 分支 CI(Go 测试、前端构建、CodeQL、安全扫描)全部通过;降智检测、订阅状态、Ultra 标记、测连用量记录在本地 PG + Redis 部署对真实上游实测通过;号池一键刷新用量、定价页重构、主题与卡片视图以单元测试 / 构建覆盖,UI 未逐项人工自查。需要订阅到期可视化、Ultra 用量区分或 Antigravity 视觉输入的部署建议升级。

致谢

  • @frank8ai — Antigravity Responses 适配器图片输入修复(PR #667)
  • @yy1105384898 — 报告 Ultra 档与用量日志推理等级不一致(#669)
  • @james-6-23 — 降智检测工作台、订阅状态跟踪、Ultra 标记、一键刷新用量、测连用量记录、定价页 / 主题 / 卡片视图重构

Full Changelog: v2.9.6...v2.9.7