v0.7.0
多租户访问密钥、用量趋势、Webhook 告警、质量感知调度、一键备份、Responses API,以及发布前审查中确认的正确性修复。
升级须知
- 启动会把可读的
enc:v1:重加密为enc:v2:(api_keys、access_keys、meta.admin_token)。迁移成功后,这些记录需要key_encryption.secret与key_encryption.salt才能解密。请勿再按 v0.6.0 文档假设「历史 v1 永久只靠 secret 恢复」。盐文件仍与 DB 分开备份;盐丢失后启动会生成新盐,旧enc:v2:(含已迁移行)永久不可读。 GATEWAY_TOKEN与库中同值访问密钥时,优先走访问密钥鉴权。 过期 / 配额 / 模型白名单 / 日志归属会生效。仅存在于环境变量、库中无对应行的 legacy token 仍可作为无租户回退。- 管理台「设置」新增备份与恢复面板(配置包 JSON + 在线 DB 快照)。DB 快照不含 secret/salt。
新增
- 多租户访问密钥:过期时间、生命周期 Token 配额、模型白名单、请求日志
access_key_id归属;总览页可管理。 - 按天用量统计:
daily_usage汇总、/admin/api/usage/*、仪表盘近 30 天趋势图。 - Webhook 告警:Key 自动禁用、池耗尽、探测失败尖峰;支持 generic / 飞书 / 企微 / Telegram。
- 质量感知调度:候选 Key 按 Laplace 平滑成功率排序;可选 per-key
max_inflight并发上限。 - 一键备份 / 恢复:配置包导出导入(端点、上游 Key、映射、访问密钥、运行时设置)+ 在线
VACUUM INTO数据库快照。 - OpenAI Responses API:
/v1/responses一等公民;usage 同时识别 chat 与 Responses 字段方案;不对 Responses 注入stream_options。 enc:v1→enc:v2启动迁移:可读历史密文在 Open 时重封装。
修复
- 盐文件创建竞态(
O_EXCL)、空盐 fatal、环境 Token 错误面、CORSVary: Origin、设置Apply串行持久化。 - 管理台
renderSeq:慢请求不再覆盖新结果;滚动恢复与登录序号修正。 - 访问密钥优先于 legacy
GATEWAY_TOKEN,避免种子密钥绕过租户控制。 - 容量类失败不计入
fail_count,避免共享 worker 限流污染成功率排序;排序改为真实 Laplace(s+1)/(s+f+2)。 - Webhook:并发 POST 上限与 dedupe 映射硬顶淘汰,防止多 Key / 多 model 风暴。
- 备份导入:零值
expires_at视为无过期;端点 URL 与 Key/映射查找统一NormalizeBaseURL。 - Responses:资源路径(retrieve/cancel/delete)在模型白名单下不再因空 model 误 403。
/v1/responses端到端测试按生产约定使用base_url…/v1。
变更
- 候选排序与容量记账语义见上;Webhook 在超并发时可能丢弃告警并打 WARN(告警仍为 best-effort)。
- README 功能表、管理 API、盐/备份说明与 v0.7 行为对齐。
Full Changelog: v0.6.0...v0.7.0