Skip to content

v0.5.0

Choose a tag to compare

@RobbsLuo RobbsLuo released this 16 Oct 06:37
· 158 commits to main since this release

新增

  • 侧栏数据提醒(导航角标):侧栏对应项上显示待办计数角标——凭证需重登/耗尽、未恢复告警、上次失败任务、异常上游源、待激活账号、本人将到期 Key、模型目录陈旧共 7 项,不点进去也能看到。单个聚合端点 GET /api/nav-badges 一次返回、侧栏 60s 轮询;按角色裁剪 payload(缺失 = 无权看),只数「待办」而非页面总数(如告警只数 resolved_at IS NULL)。
  • CodeArts 双账本:CodeArts 内置模型走积分账、福利模型走每日 token 池,两本账并行且健康度只看主账;credit_events.ledger 区分两本账,管理台按账本分开读。福利模型带 benefit 标记(渠道徽章打「福」标),Model.benefit 不能与 credit_rate == 0 混用。
  • 运维告警迟滞 + 恢复通知 + 人工处置:ALERT_FOR_TICKS / ALERT_CLEAR_TICKS 进入/恢复迟滞;恢复时写 resolved_at 并外推 status="resolved" webhook;告警页每行未恢复告警带「标记恢复」按钮(POST /api/alerts/{id}/resolve,admin + CSRF + 审计),用于规则已下线 / 误报等后台无法自动判定的情况。
  • 上游状态页聚合:把各模型 / 网关提供方的官方状态页(OpenCode Zen、Kilo、DeepSeek、Together、Moonshot、MiniMax、OpenAI、Anthropic)归一化后并排展示,回答「这个报错是上游整体挂了还是本服务的凭证 / 额度问题」。8 源 / 4 种解析器;只做解释、不参与选号 / 熔断;快照只存内存、重启归零。
  • 凭证级限额护栏:保留积分 / 每日 token / 每日 credit / 按模型四个可选护栏,判定在选号前完成,触顶的凭证不再参与对话流量。
  • 凭证在途上限:单账号并发请求数上限,占满的号不再参与选号,避免把单账号打进上游限流 / 封号。
  • 凭证运维标签:每条凭证可贴任意个标签,作为列表筛选的第四维(搜索 × 渠道 × 状态 × 标签)。标签只用于筛选与展示,不参与选号。
  • 凭证批量运维:POST /api/credentials/batch(probe / toggle / checkin / revive,一次最多 200 条),凭证页多选操作条;逐条隔离执行,toggle / revive 落一条汇总审计。
  • 后台任务手动触发:管理台「任务与配置」页每个任务卡片带「立即运行」(POST /api/tasks/{key}/run,admin + CSRF),绕过时点窗口但绕过不了开关。
  • Prometheus /metrics:默认开、不鉴权,零依赖 text 格式;禁高基数标签。
  • 统计增强:自定义时间范围(since/until 半开区间)、分组表延迟统计(均值 + P95)、明细钻取 + CSV 导出(公式注入防护)。
  • 多模态图片输入归一化:三个出口(chat / Responses / Anthropic)统一归一到 chat image_url,出站零改动(实测七渠道出站已原样透传)。
  • reasoning 档位映射 + 出站剥离思考:FORCE_DISABLE_THINKING / REASONING_EFFORT_MAP / ANTHROPIC_THINKING_EFFORTS 三项热更,默认全关——上游接受性未逐一实测,只给机制不给策略。
  • 窄屏表格转卡片:列多的表格(凭证 / 明细 / 模型列表等)在 <768px 由「一行 = 一张卡」呈现,DOM 不变、读屏语义与宽屏一致。
  • CC Switch 一键导入深链:API Key 管理页创建后生成 ccswitch:// 导入深链(claude / codex / opencode 三个目标)。
  • 列表统一分页:六个扁平列表接到同一套控件(页码文案、20/50/100、上下页),后端 LIMIT/OFFSET + total;用量明细保留游标分页。
  • 部署模板:frp 反向隧道(frpc / frps)+ nginx 模板 + launchd / systemd / newsyslog 单元,token 走独立 600 权限文件、配置不含机器特定值。

变更

  • Docker healthcheck 跟随 PORT:此前写死 8000,非默认端口的 docker run 部署永远不 healthy。
  • compose 透传 TZ 与 extra_hosts:容器内代理跑在宿主时须写 host.docker.internal。
  • Playground 布局重构:模型选择器独立面板,请求 / 响应并排。
  • 表格列按相关性重排:身份 → 状态 → 核心量化指标 → 次要元数据 → 时间 → 操作。
  • /healthz 语义:ready=0 时返回 503 unavailable(此前恒 200);/health 仍是纯存活探针恒 200。容器 healthcheck 应指 /health。
  • pacer 定值间隔向上抖动 25%:避免多实例 / 多账号在同一时刻撞上游。
  • CC Switch 行内导入 + 明细合并列 + 命中率列。

修复

  • 运维告警恢复不再永久卡住:AlertTask 启动时从库里未恢复的行重建「告警中」集合(此前该状态纯进程内,重启后历史告警永远等不到 resolve());resolve() 改为标记该 (rule, scope) 全部未恢复行(同一次故障的「提醒」行一起收尾,否则角标数 resolved_at IS NULL 永远清不干净)。
  • 会话 Cookie 的 Secure 按请求实际协议动态判定:同一实例 LAN(http) 与隧道(https) 双入口下,写死任一侧都会打断另一侧。
  • 流内业务错误暴露真实分类:CodeArts 业务错误内嵌在 HTTP 200 的 SSE 里,此前被分类器兜底成 upstream_protocol,真实类型(额度耗尽 / 请求无效 / 渠道错误)全被吞掉。
  • Atom 解析改用 defusedxml(bandit B314)。
  • 全量安全审查修复批次:/authorize 回调绑定改判 loginTraceID(撤掉 Origin/Referer 同源启发式)、告警 webhook SSRF 校验、上游错误体有界读取、出站文案不回上游原文 / 内部 URL、SQLite 写事务显式 BEGIN IMMEDIATE、迁移版本护栏、CSP 收紧等。
  • 前端:checkbox 触摸目标从 16px 扩到约 40×32;表单 label 与控件关联;dev proxy 不再吞 /api-keys;StatsPage 补上引用的 Pagination 组件。

升级

docker compose pull && docker compose up -d

镜像:ghcr.io/robbsluo/coding2api:v0.5.0(同时更新 :latest)。

升级注意:/healthz 在凭证池耗尽时改为返回 503;请确认容器 healthcheck 指向 /health(恒 200)。数据库 schema 从 v18 升至 v25(新增 credential_limits 表与索引;credentials 的 CodeArts 积分列 / tags、alert_events.resolved_at、credit_events.ledger、usage_events.request_id 等列),启动时自动幂等迁移(补列 + 建索引 + 删遗留表),老库直接升级无需手工操作。升级后必须重启后端。