Skip to content

v0.4.1

Choose a tag to compare

@RobbsLuo RobbsLuo released this 10 Oct 06:55
· 221 commits to main since this release

新增

  • 管理台列表排序(Q75):所有列表(凭证 / 用户 / API Key / 审计 / 告警 / 模型目录 / 积分记录 / 账号切换 / 分组统计 / 请求明细)列头可点击排序。默认按请求数或时间降序,点一次用该列「首次点击方向」(数值列先降序、文本列先升序),再点在同一列升降序间切换,当前列以箭头 + aria-sort 标注。排序一律由后端完成,所有 GET 列表端点统一接受 sort(白名单键)+ order(asc/desc):未知键或非法方向回落端点默认、不报错,sort 是白名单键而非 SQL 列名,注入面为零。
  • 按凭证统计维度:分组统计新增「按凭证」,读明细表(usage_events,覆盖最近 90 天),凭证列显示渠道 icon + 昵称(无昵称回落 ID 前 12 位);凭证昵称来自共享池,仅 admin/operator 可见。

修复

  • 模型候选只信模型目录缓存列表(Q74):收窄渠道全不可用时直接 503,不再把请求逐个扇出到未登记该模型的渠道(此前会对 CodeBuddy 写下 6 小时起步的 (凭证, 模型) 负缓存,客户端拿到误导性的 400)。推翻 Q21 旧决策。
  • OpenCode Zen 门禁伪工具调用(Q73-adjacent):门禁注入的空壳伪 bash/read 命中时,改为改写为客户端同义工具(bash→shell/execute、read→read_file)原样透传,无同义工具才丢弃并记 WARNING;修复「模型老是自动结束回合」。
  • Anthropic 出口缓存 token:/v1/messages 流式与非流式补 cache_read_input_tokens(此前命中缓存的输入被吞,Claude Code 缓存统计恒 0)。
  • Responses text.format 映射:/v1/responses 的 text.format 正确映射到 chat response_format(json_schema 按官方形状展开),此前整块丢弃导致结构化输出失效。
  • 静态资源缓存:index.html 改 no-cache 每次回源,assets/* 改 immutable 永久缓存——修复「重新构建后浏览器加载旧 bundle」(新前端 + 旧后端的假故障)。

前端与运维

  • 模型列表页:客户端分页(20/50/100,默认 50)+ 容器内滚动 + 表头吸顶(3536 条从 7 万 DOM 节点降到千级、搜索按键从约 1s 降到 6–11ms);四项单价合并一列两行,上下文/输出与模态/能力列允许折行。
  • 任务与配置页:tab 紧凑模式 + 名称精简,十几个 tab 不再撑爆一行。
  • scripts/rollup_hourly.py:历史分组数据一次性重算(默认预览、写库前自动备份、幂等)。

升级

docker compose pull && docker compose up -d

无数据库 schema 变更(PRAGMA user_version 仍为 18)。镜像:ghcr.io/robbsluo/coding2api:v0.4.1(同时更新 :latest)。