Skip to content

v4.21.0: 仪表盘全新 UI、账户生命周期管理与凭据安全加固

Choose a tag to compare

@github-actions github-actions released this 24 Sep 17:42
· 15 commits to main since this release

优化提升计划第 0 期(界面)+ 第 1 期 + 第 2 期,6 条任务线并行开发后合并。
零配置升级承诺:仪表盘默认渲染与 4.20.0 完全一致;除审计日志(minimal,仅元数据)与
健康检查(纯旁路日志)默认开启外,其余新功能全部默认关闭,API 行为不变。

可视化界面(Phase 0–2,21 人日计划的全量前置三期)

  • Phase 0(零感知):语义色板 CSS 变量收口(暗色默认视觉逐一对齐不变)、统一空状态与骨架屏、
    窄屏宽表横向滚动降级。
  • Phase 1(受益):概览页补「今日请求/成本」「活跃账号」卡片;账号卡片登录方式与 5h 额度徽标;
    概览页快捷刷新。
  • Phase 2(增强):用量表默认折叠的筛选栏 + 列头排序 + 行下钻详情;模型家族徽章;
    日志 level/模型/错误码结构化高亮。全部动态内容走 esc() 转义,新增 20 项 spa 测试(65 项前端测试全绿)。

架构(Phase 1 + Phase 2 存储/adapter 部分)

  • config.ts 859 → 547 行:OAuth/浏览器登录拆出 auth-browser.ts,SSRF 守卫拆出
    security-guard.ts(均 re-export 保持调用方零改动);types 按域拆 5 文件(index.ts 聚合 re-export)。
  • usage-store 后端接口化(UsageStorageBackend,默认 jsonl,文件格式逐字节不变,为 SQLite 预留)。
  • adapter.ts 964 行单类 → 组装式 5 模块(reasoning / request-translate / stream-encode /
    anthropic-response / usage-extract),92 个 SSE 快照逐字节钉住行为零变化;
    快照注入固定模型缓存保证跨环境可复现。
  • 明确不做(本轮):upstream Pipeline 编排(D)与路由去重(E)——按架构师建议后置,
    需配合绞杀者灰度单独一轮。

新功能(默认关闭 / 仅旁路)

  • 通道健康检查(默认 5 分钟探活,仅日志告警,绝不拦截请求):HEALTH_CHECK_INTERVAL_MS(0 关闭)。
  • Webhook 告警(默认关):WEBHOOK_URL + WEBHOOK_COST_USD / WEBHOOK_ERROR_RATE 阈值,
    每日每事件一次去重,fire-and-forget 不重试。
  • Prompt 版本管理(默认关):PROMPT_VERSIONS=on 启用 /api/prompts/*——保存自动快照、
    按时间戳回滚(回滚前当前内容同样先快照,历史不丢);目录穿越白名单防护。
  • 速率限制(默认关):RATE_LIMIT_RPM / RATE_LIMIT_TPM,60s 滑动窗口,超限 429 +
    Retry-After;错误码复用既有 RATE_LIMIT(429),零追加公共契约。
  • 模型访问控制(默认关):MODEL_ALLOWLIST / MODEL_BLOCKLIST,拒绝 403。
  • 审计日志(默认 on,minimal):只记 ts/route/model/tokens/status/duration 元数据,
    绝不记录消息正文;AUDIT_LOG=off 关闭。

修复

  • 删除 adapter 拆分暴露的死函数 anthropicImageToWire(拆分前即无调用的 private 方法)。

测试

  • 全量 601/602 通过(+188:spa 20、adapter 快照 92、健康检查 12、webhook 18、prompt 11、
    限速 13、模型控制 13、审计 10 等新测试);唯一失败为既有环境性用例(本机存在生产 .env)。
  • tsc --noEmit、eslint 零错误;6 分支合并零冲突(按文件域并行隔离)。