1. 24 Feb, 2026 1 commit
    • shaw's avatar
      fix: 修复日志重复输出及清理冗余迁移逻辑 · 980fc960
      shaw authored
      - logger: sinkCore 包装 tee core 时绕过了子 core 的 Check 级别过滤,
        导致每条日志同时写入 stdout 和 stderr,表现为启动日志重复显示。
        修复为正确委托 Check 给内部 tee core,sinkCore.Write 仅负责 sink 转发。
      - migration 054: 移除冗余的遗留列回填逻辑,migration 009 已完成数据迁移,
        直接删除遗留列即可。
      980fc960
  2. 16 Feb, 2026 1 commit
  3. 14 Feb, 2026 1 commit
    • shaw's avatar
      feat: 区分 Anthropic 5m/1h 缓存创建 token 的差异化计费 · a817cafe
      shaw authored
      Anthropic API 的 cache_creation 对象区分了 ephemeral_5m 和 ephemeral_1h
      两种缓存创建 token,1h 单价远高于 5m(如 claude-3-5-haiku: 5m=$1/MTok,
      1h=$6/MTok)。此前系统统一按 5m 单价计费,导致计费偏低。
      
      后端:
      - pricing_service: 加载 LiteLLM 的 cache_creation_input_token_cost_above_1hr
      - billing_service: GetModelPricing 启用分类计费(安全守卫 1h>5m),
        CalculateCost 按 5m/1h 分别计费,无明细时回退到 5m 单价
      - gateway_service: parseSSEUsage/handleNonStreamingResponse 用 gjson
        提取嵌套 cache_creation 对象的 ephemeral_5m/1h_input_tokens
      - antigravity_gateway_service: extractSSEUsage/extractClaudeUsage 同步提取
      - usage_log: 修复 GORM column tag 确保写入正确的数据库列
      - 新增迁移 054: 删除 GORM 自动生成的重复列
      
      前端:
      - 使用记录 tooltip 展示 5m/1h 缓存创建明细(带彩色 badge 区分)
      - 表格单元格缓存写入数值旁显示 1h 标识
      a817cafe