Skip to content

v2026.10.23

Choose a tag to compare

@github-actions github-actions released this 23 Oct 02:43
· 111 commits to main since this release

版本概览

  • v2026.10.23 合并了经过兼容审查和完整验证的上游更新。
  • 已完成合并工作树的内容审查与冲突整合。21 个文本冲突文件均已消除冲突标记;本轮相对 origin/main 涉及 139 个文件,自 v2026.10.22 到候选内容累计涉及 177 个文件。保留兼容的上游功能、本项目渠道路由、按秒计费、日志权限和监控功能。

新增功能

  • 普通渠道与任务插件共同参与共享端点选路:共享 Responses、图片和视频端点先按渠道选择规则决定使用普通中继还是任务插件。普通渠道胜出时保留原请求,不先执行插件校验和改写;后续重试继续受对应渠道过滤条件约束。插件路径保留候选插件及原任务固定渠道逻辑。普通中继拒绝误用任务美元表达式,管理界面允许分别配置普通价格和插件覆盖价格。
  • 原生任务插件路由支持 multipart 请求:未按模型声明限定的原生提交路由允许 JSON 或 multipart,由插件解码器判断具体格式;限定模型的路由仍要求 JSON。移除单个文本字段额外的 1 MiB 限制,继续执行整体请求体、字段数量、文件数量、文件大小、名称及嵌套 multipart 限制。
  • 任务驱动接收客户端业务请求头:驱动上下文增加客户端请求头,排除 Authorization、Proxy-Authorization、Cookie、X-Api-Key、X-Goog-Api-Key 和 Mj-Api-Secret 等网关凭据头。渠道自己的上游鉴权及请求头覆盖机制继续生效。
  • 任务请求校验交由插件执行:删除宿主按请求成员名称递归套用用量限制的逻辑,避免将业务字段误认为计费字段;宿主继续校验插件返回的用量事实及单位边界。Kling 统一从实际发送请求所用的 metadata.duration 或顶层 duration 获取时长,并在发送和估算中使用相同结果。
  • OpenAI 12 小时缓存写入独立计价:增加 prompt_cache_options、缓存写入 TTL 明细和 cc12h 表达式变量,贯通 DTO 复制、用量合并、倍率结算、表达式结算、价格迁移、日志和前端展示。12 小时数量受缓存写入总量约束;未单独配置 cc12h 时按短效写入价格的两倍折算。gpt-6-astra 内置表达式增加对应价格,管理员已有覆盖继续优先。
  • 补齐 Claude 未拆分缓存写入计费:上游只报告缓存创建总量,或 5 分钟与 1 小时明细不完整时,将未标明部分归入短效写入。表达式未单列长效或短效写入变量时,按既定倍率并入对应兜底计价变量;上下文长度继续使用真实数量。
  • 保留客户端 JSON Schema 属性顺序:工具参数及相关 Schema 改用原始 JSON 承载,协议转换、模型控制、字段过滤以及参数复制和移动尽量保留嵌套对象原始顺序。Claude 工具追加和读取继续兼容;Ollama、DeepSeek、AWS 及相关转换调用点同步适配。relaykit 的相关 Go 字段类型发生变化。
  • 正确结束已交付的 Responses 流:成功写出完成事件后明确结束扫描;向上传递写入和刷新错误,避免将未交付内容视为完成。清理阶段关闭上游产生的读错误不再覆盖真实结束原因;只在满足已成功交付完成事件等条件时修正取消竞态。
  • 大体积流事件使用累计写入预算:将每次写入固定延长超时改为按累计字节量计算排空预算,兼顾大图片等流事件的慢速接收和停止读取客户端的超时回收。统一包装流响应写入器,移除分散调用旧 ExtendWriteDeadline 的方式。
  • 同步价格支持站点汇率调整:价格同步增加保持原价、乘汇率和除汇率选项,并可包含当前价格相同的模型。每次从原始报价重新计算,预览最终保存值;表达式只调整可识别的价格叶子,保留条件、图片数量和请求倍率。无效汇率、溢出或无法可靠调整的表达式明确报错。
  • 使用日志支持复制模型名称:日志模型标识及详情使用现有复制组件,便于复制请求模型和可见的模型信息;保留模型不匹配提示、详情入口以及本项目已有的权限过滤。
  • 高级自定义渠道保留请求体透传设置:高级自定义渠道始终展示透传配置,保存时保留管理员明确选择的 pass_through_body_enabled,不因渠道类型隐藏或丢弃设置;风险提示按渠道类型说明实际作用。
  • 语言包排序与新增文案同步:接入上游语言键排序及缓存 TTL、普通渠道定价、汇率调整等文案。七种语言均保留本项目新增键;逐键比较未发现本地键丢失或上游本轮翻译变化遗漏。

功能改进

  • 接口与渠道选择:同一模型的共享端点不再由插件声明独占,实际执行路径由合格渠道竞争决定。普通渠道与任务渠道的计费表达式单位必须区分;不兼容配置会在提交前拒绝。原生插件上传增加 multipart 支持,整体请求体保护继续保留。
  • 缓存费用与用量日志:12 小时 OpenAI 缓存写入和未完整拆分的 Claude 缓存写入会按新规则结算,相关请求费用可能不同于旧实现。消费日志增加长效缓存明细,价格预览、旧倍率转换和表达式编辑同步识别这些类别。
  • 累计按秒任务计费:此前未发布的按秒计费更新改为读取插件标准化 seconds、resolution 事实,冻结提交时的基础价、分辨率价格表和分组倍率。完成时按有效实测值结算,显式零秒可全额退还,缺失或无效实测值保留预扣,失败任务沿原退款路径处理。旧 duration_field、resolution_field 请求字段选择方式退出编辑和读取流程;缺少必要用量事实的请求在提交前拒绝。
  • 累计站点状态与导航权限:站点状态页改用最近一小时最多 5,000 条实际请求日志,按请求 ID 去重并排除模型测试,展示分组的 5 分钟、30 分钟和 1 小时成功率及最近请求时间线;界面明确说明采样范围。智力测试、请求状态和官方状态可分别关闭,服务端对隐藏数据端点要求管理员权限;仪表盘原探测数据入口保留原访问策略。
  • 累计智力测试界面:每组保留最多 20 张最新结果卡片,保留分组切换和放大预览,移除此前的搜索及状态筛选控件。已访问的预览保留文档,通过暂停动画、计时器和查询减少离屏及滚动期间活动;继续使用不具备同源权限的 iframe 沙箱和禁止联网的 CSP。
  • 数据与兼容性:任务私有 JSON 增加可选按秒价格快照,结算时同步保存额度与计费事实;旧快照仍有兼容读取路径。新增请求状态查询通过 GORM 选择字段,并保留 ClickHouse 排序分支。本轮没有新增表结构迁移或调整 GORM、数据库驱动版本;三数据库和独立日志库验证交由外层执行。relaykit 工具参数字段改为 json.RawMessage,Go 调用方需同步适配。
  • 认证、权限和日志:登录、会话、PAT 和认证核心实现没有本轮累计改动。监控访问控制在服务端执行;任务驱动新增请求头上下文排除网关凭据。stream_status 完整采用上游公开字段及原始内容,渠道信息、上游请求 ID、中间重试日志和执行轨迹继续遵守现有权限边界。
  • 部署与发布:累计范围内未改变依赖版本、Docker 配置和发布工作流,继续沿用现有构建及发布前置检查。2026-10-20 的预约未被当作本次直接发布授权;发布说明需覆盖本轮更新、累计按秒计费和监控调整,并原样保留 risks 中已核实的六项既有限制。

问题修复

  • 统一端点使用普通渠道或插件:用户继续使用既有 API;管理员可让普通渠道和匹配的任务插件参与同一端点选路,并分别配置价格。插件业务校验不会提前改写最终交给普通渠道的请求。
  • 缓存与任务费用:缓存按真实总量及 TTL 明细结算;任务按提交时冻结的价格和插件有效实测事实调整。日志展示相应缓存、时长和分辨率信息,原有预扣、补扣与退款边界继续生效。
  • 流式响应与结构化输出:大事件允许按传输量获得写入时间预算;已成功交付的完成事件不会再被清理阶段误判为断连。工具和结构化输出请求尽量保持客户端 Schema 属性顺序。
  • 管理界面:管理员可按站点汇率预览并调整同步价格,可编辑普通及插件价格,可持续配置高级自定义渠道透传;日志中可复制模型名称。无法可靠调整的表达式保留人工处理入口并提示原因。
  • 站点状态和智力测试:站点状态依据实际请求展示分组健康情况;管理员控制三个公开栏目及登录要求。智力测试按组展示最新结果,滚动、离屏或页面隐藏时暂停预览活动,放大查看继续可用。
  • 日志可见性:用户可见完整上游 stream_status;其他渠道诊断、上游请求链、中间重试和执行轨迹仍按本项目既有角色权限返回。公开请求状态只输出汇总和时间线,不输出请求 ID。

移除与调整

  • controller/relay.go、relay/channel/openai/helper.go、relay/helper/common.go、relay/helper/stream_scanner.go:接入上游统一写入预算和完成事件处理,移除旧 ExtendWriteDeadline 调用及吞掉 Responses 写入错误的包装;保留本项目输出标记、Claude ping 语义、错误事件格式和原有响应头控制。
  • types/price_data.go、service/text_quota_test.go:合并两套字段和用例,保留 SecondPriceSnapshot、缓存监控统计断言及新增 12 小时缓存写入结算断言,没有择一删除。
  • web/src/features/channels/components/drawers/channel-mutate-drawer.tsx、web/src/features/channels/lib/channel-form.ts:保留明确的布尔设置序列化,采用上游始终展示透传字段和按渠道类型提示的行为,避免编辑后丢失既有配置。
  • web/src/features/pricing/lib/billing-expression/visual.ts、web/src/features/system-settings/models/tier-price-fields.tsx、web/src/features/system-settings/models/visual-billing-document-editor.tsx:统一为 imageCount,保留整个价格树的数量乘法、原始表达式片段及新增分支括号处理,同时加入 cc12h 编辑和标签;保留双方相关回归用例并复核左右乘数及新增、替换分支场景。
  • web/src/features/system-settings/models/model-pricing-sheet.tsx:同时保留分辨率价格状态和 ordinaryPricingModel 状态;普通价格切换时先保留插件继承表达式,按秒编辑及原有预览继续存在。
  • web/src/features/system-settings/models/upstream-ratio-sync-helpers.ts、web/src/features/system-settings/tests/pricing-sync.test.tsx:保留小额价格显示处理和原同步用例,合入汇率调整上下文、原始报价重算、最终价格预览及新增回归场景。
  • web/src/i18n/locales/en.json、web/src/i18n/locales/fr.json、web/src/i18n/locales/ja.json、web/src/i18n/locales/ru.json、web/src/i18n/locales/vi.json、web/src/i18n/locales/zh-TW.json、web/src/i18n/locales/zh.json:按上游相对共同祖先的逐键变化合并并执行国际化同步,保留所有本地键;最终七种语言均可解析,未发现本地键或上游本轮翻译变化丢失,临时脚本已清理。
  • 已知限制:DeepSeek 固定工作日峰谷价格不识别中国法定节假日,管理员可按实际价格政策配置覆盖。
  • 已知限制:大型日志表建立联合索引可能产生耗时、资源消耗与锁竞争,升级时需安排合适的迁移窗口。
  • 已知限制:缓存用量仅从升级后开始记录,历史数据不回填;跨升级时间范围的缓存统计不代表完整历史用量,界面保留相应提示。
  • 已知限制:旧面板令牌在首次迁移后的三十天窗口结束后失效,这是上游迁移设计;需迁移至 PAT,重启不会重置退役期限。
  • 已知限制:Responses custom tool 经 Chat function 转换后,grammar 保留为描述提示,不能保证原协议的语法强约束。
  • 已知限制:Sobek 切换到 moejs 后,第三方插件仍可能需要适配;本轮未改变该运行时迁移影响。

自上次正式发布以来的累计提交

  • c92bb66 chore: save local changes before upstream sync
  • b8b5c53 fix: use plugin usage facts for per-second task billing

本次候选包含上述已合并但尚未正式发布的更新,以及本报告审查的新增变更。