Skip to content

v0.4.2

Choose a tag to compare

@RobbsLuo RobbsLuo released this 12 Oct 14:07
· 205 commits to main since this release

新增

  • CodeBuddy 国际版渠道(Q76,第七个 provider):接入 www.codebuddy.ai。与国内站同协议(同一 Keycloak realm copilot、同一组 /v2 / /v3 / billing 路径),故 src/provider/codebuddy/intl.py 只是 CodeBuddyProvider 的数据类子类,协议解析 / 凭证规范化 / 事件分类 / 刷新全部复用国内站代码,零复制。两站凭证可同时在池里、各走各的端点与 pacer。为什么不是「改 CODEBUDDY_API_ENDPOINT 切站点」:endpoint 是进程级单值,切过去会让存量国内站凭证全部打到国际站(额度错配 / 403)。白名单互不含——两站 Token 由不同网关签发,把国内站地址填进国际站端点在启动时抛错而非悄悄发出去。新增配置:CODEBUDDY_INTL_API_ENDPOINT / CODEBUDDY_INTL_ALLOWED_ENDPOINTS / CODEBUDDY_INTL_CHAT_MIN_INTERVAL(热更、默认 5s、独立 pacer)。
  • 模型能力排行(Artificial Analysis 指数):经 OpenRouter 公开接口抓取三项指数,在 Playground、模型列表页与 /v1/models 展示能力分。

变更

  • 模型目录改用 OpenRouter 单一数据源(Q55-Q57):把 models.dev 价格/元数据目录整体替换为 OpenRouter,一次抓取同时产出刊例价(成本估算)、明细元数据(「模型列表」页)与 Artificial Analysis 能力分,消除双数据源、双匹配口径、双后台任务。后台任务 price_catalog + benchmark_catalog 合并为 openrouter_catalog,配置 price_catalog_minutes / benchmark_catalog_minutes / models_dev_url 合并为 openrouter_catalog_minutes(默认 1440、下限 60)。已知取舍:目录从 3536 条缩到 451 条;space-bunny / doubao-seed-2.1-turbo / qwen3.8-max 失去刊例价(成本显示 —);family / open_weights / release_date 上游不提供(接口保留但恒为 null / false,页面不展示)。

修复

  • 模型合并:渠道内重名导致国际站被挤出:/v1/models 曾冒出 hy4-preview-codebuddy_intl / deepseek-v4.1-flash-codebuddy_intl 后缀条目。根因不在国际站,是既有合并逻辑的缺陷——上游把多个模型共用一个展示名是常态(CB 的 hy4-preview / hy4-preview-x 都叫「Hy4 preview」),一遇渠道内重名就退回渠道限定键,代价是这些模型在本渠道内断了跨渠道合并。改判据为「重名时若本渠道存在某个 id 归一后等于该 label key 的模型,就用这个归一键当合并键」。实测 /v1/models 从 41 条收敛到 39 条,裸名同时挂两站;-x / -sg 变体(真实不同的上游模型)仍各占一条。
  • 上下文压缩按实际服务渠道取窗口(Q60 修订):压缩点从 API 层移到 executor 选号后。同名模型跨渠道窗口不同(qoder 180K vs codebuddy 1M),min 口径把大窗口渠道的会话反复误裁,前缀不稳定击穿上游前缀缓存(实测命中率 96%+ 跌到 7–16%)。
  • OpenCode Zen 首次请求 503:403 FreeTierError 抖动在客户端内退避重试一次。
  • 国际站首条 system 强制:国际站网关要求 messages[0] 是 system prompt,否则整单 400 + 11128。仅国际站装配时开 require_leading_system,国内站出站 body 一个字节不变;判首条在 developer→system 归一之后,客户端自带 system 时不注入不覆盖。
  • 国际站签到与成长中心按渠道关闭:签到是渠道侧就没有该活动(active: false 且活动字段全空),保留只会让后台任务每 10 分钟失败一次并触发噪音告警;成长中心无法验证(整个 /v2/activity/* 前缀挂在网关认证插件后)且含不可逆动作。活跃上报照常启用——它打的 /v2/report 与成长中心不是同一路径,实测可用。
  • 管理台前端:Playground「当前选择」条渠道多时不再把右侧渠道指定控件挤下去;「请求量趋势」图例移到图表下方(与「按模型趋势」同口径);CodeBuddy 国际版凭证显示「活跃上报」入口(此前前端写死 provider === "codebuddy",后端能跑却看不到出口)。
  • 模型列表页:去掉「提供方」列与「模型数」指标卡(前者恒为 id 前缀、信息重复)。
  • 页头描述:去掉 max-w-4xl,与下方内容同宽同换行点。
  • 默认黑名单:补录三条上游已下架模型(hy4-preview-x / qwen3.8-flash / glyph-cluster)。

升级

docker compose pull && docker compose up -d

无数据库 schema 变更(PRAGMA user_version 仍为 18)。新增渠道需在管理台「添加凭证」里登录 CodeBuddy 国际版账号(或粘贴 JSON);已有的国内站凭证不受影响。镜像:ghcr.io/robbsluo/coding2api:v0.4.2(同时更新 :latest)。