1. 22 Feb, 2026 1 commit
    • yangjianbo's avatar
      fix(codex): 修复额度窗口过期展示并补齐高覆盖测试 · 10636d8a
      yangjianbo authored
      - 后端新增绝对重置时间字段计算(codex_5h_reset_at/codex_7d_reset_at)
      
      - 前端统一窗口解析逻辑:绝对时间优先,updated_at+seconds 回退,过期自动归零
      
      - 新增后端与前端单元测试,覆盖关键边界与异常场景
      10636d8a
  2. 14 Feb, 2026 4 commits
  3. 13 Feb, 2026 2 commits
    • yangjianbo's avatar
      fix(ops): 修复日志级别过滤并增强OpenAI错误诊断日志 · f96acf6e
      yangjianbo authored
      - 移除 warn 级别下 access info 的强制入库补写,确保运行时日志级别真实生效
      
      - 将 OpenAI fallback matched 与 passthrough 断流提示按需求降级为 info
      
      - 为 codex_cli_only 与 instructions required 场景补充请求诊断字段(含 User-Agent)
      
      - 出于安全考虑移除请求体预览,仅保留 request_body_size 与白名单头信息
      
      - 新增/更新回归测试,覆盖 Forward 入口到日志落库链路
      f96acf6e
    • yangjianbo's avatar
      feat: 完善日志 · 2459eafb
      yangjianbo authored
      2459eafb
  4. 12 Feb, 2026 8 commits
  5. 11 Feb, 2026 1 commit
    • yangjianbo's avatar
      fix(openai): 修复 OAuth 透传流式断开与压缩头问题 · a88bb868
      yangjianbo authored
      - 透传流式在客户端断开后继续 drain 上游并解析 usage,避免计费信息丢失
      
      - 阻断透传 accept-encoding,避免压缩响应影响 SSE/usage 解析
      
      - 阻断 proxy-authorization,避免透传代理鉴权信息
      
      - 补充回归测试:请求头阻断与断流后 usage 采集
      a88bb868
  6. 10 Feb, 2026 2 commits
    • yangjianbo's avatar
      feat(openai): 增加 OAuth 透传开关 · f1e884ce
      yangjianbo authored
      
      
      - 仅对 Codex CLI 且账号开启时走原样透传(只替换认证)
      
      - 透传模式禁用工具修正/模型替换,并旁路解析 usage 用于计费
      
      - 管理后台增加开关与文案,ops upstream error 记录 passthrough 标记
      Co-Authored-By: default avatarClaude Opus 4.6 <noreply@anthropic.com>
      f1e884ce
    • yangjianbo's avatar
      perf(backend): 使用 gjson/sjson 优化热路径 JSON 处理 · 58912d4a
      yangjianbo authored
      
      
      将 API 网关热路径中的 json.Unmarshal+json.Marshal 替换为 gjson 零拷贝查询和 sjson 精准写入:
      - unwrapV1InternalResponse 性能提升 22x(4009ns→182ns),内存分配减少 28.5x
      - unwrapGeminiResponse、extractGeminiUsage、estimateGeminiCountTokens、ParseGeminiRateLimitResetTime 改为接收 []byte 使用 gjson 提取
      - ParseGatewayRequest 的 model/stream/metadata/thinking/max_tokens 改用 gjson 类型安全提取
      - Handler 层(sora/openai)改用 gjson 提取字段、sjson 注入/修改字段,移除 map[string]any 中间变量
      - Sora Client 响应解析改用 gjson ForEach 遍历,减少内存分配
      - 新增约 100 个单元测试用例,所有改动函数覆盖率 >85%
      Co-Authored-By: default avatarClaude Opus 4.6 <noreply@anthropic.com>
      58912d4a
  7. 08 Feb, 2026 1 commit
    • erio's avatar
      feat: shuffle accounts within same sort group to prevent thundering herd · 1af06aed
      erio authored
      Add post-sort shuffle for accounts with identical (priority, loadRate,
      lastUsedAt) to break deterministic ordering when concurrent requests
      read the same scheduler snapshot. Applies to both Antigravity and
      OpenAI scheduling paths, plus the sortAccountsByPriorityAndLastUsed
      helper.
      
      Keeps upstream CallCount/ModelLoadInfo scheduling intact; shuffle is
      additive and only randomises within equivalent-rank groups.
      1af06aed
  8. 07 Feb, 2026 6 commits
  9. 06 Feb, 2026 1 commit
  10. 05 Feb, 2026 1 commit
    • shaw's avatar
      feat: 新增全局错误透传规则功能 · 39e05a2d
      shaw authored
      支持管理员配置上游错误如何返回给客户端:
      - 新增 ErrorPassthroughRule 数据模型和 Ent Schema
      - 实现规则的 CRUD API(/admin/error-passthrough-rules)
      - 支持按错误码、关键词匹配,支持 any/all 匹配模式
      - 支持按平台过滤(anthropic/openai/gemini/antigravity)
      - 支持透传或自定义响应状态码和错误消息
      - 实现两级缓存(Redis + 本地内存)和多实例同步
      - 集成到 gateway_handler 的错误处理流程
      - 新增前端管理界面组件
      - 新增单元测试覆盖核心匹配逻辑
      
      优化:
      - 移除 refreshLocalCache 中的冗余排序(数据库已排序)
      - 后端 Validate() 增加匹配条件非空校验
      39e05a2d
  11. 04 Feb, 2026 1 commit
  12. 03 Feb, 2026 3 commits
    • liuxiongfeng's avatar
      fix(openai): 统一 OAuth instructions 处理逻辑,修复 Codex CLI 400 错误 · 9a48b2e9
      liuxiongfeng authored
      - 修改 applyCodexOAuthTransform 函数签名,增加 isCodexCLI 参数
      - 移除 && !isCodexCLI 条件,对所有 OAuth 请求统一处理
      - 新增 applyInstructions/applyCodexCLIInstructions/applyOpenCodeInstructions 辅助函数
      - 新增 isInstructionsEmpty 函数检查 instructions 字段是否为空
      - 添加 Codex CLI 和非 Codex CLI 场景的测试用例
      
      逻辑说明:
      - Codex CLI + 有 instructions: 保持不变
      - Codex CLI + 无 instructions: 补充 opencode 指令
      - 非 Codex CLI: 使用 opencode 指令覆盖
      9a48b2e9
    • bayma888's avatar
      feat(api-key): add independent quota and expiration support · 6146be14
      bayma888 authored
      This feature allows API Keys to have their own quota limits and expiration
      times, independent of the user's balance.
      
      Backend:
      - Add quota, quota_used, expires_at fields to api_key schema
      - Implement IsExpired() and IsQuotaExhausted() checks in middleware
      - Add ResetQuota and ClearExpiration API endpoints
      - Integrate quota billing in gateway handlers (OpenAI, Anthropic, Gemini)
      - Include quota/expiration fields in auth cache for performance
      - Expiration check returns 403, quota exhausted returns 429
      
      Frontend:
      - Add quota and expiration inputs to key create/edit dialog
      - Add quick-select buttons for expiration (+7, +30, +90 days)
      - Add reset quota confirmation dialog
      - Add expires_at column to keys list
      - Add i18n translations for new features (en/zh)
      
      Migration:
      - Add 045_add_api_key_quota.sql for new columns
      6146be14
    • ducky's avatar
      feat(usage): add reasoning effort column · 53ee6383
      ducky authored
      53ee6383
  13. 02 Feb, 2026 1 commit
  14. 25 Jan, 2026 1 commit
  15. 20 Jan, 2026 2 commits
  16. 19 Jan, 2026 1 commit
  17. 17 Jan, 2026 1 commit
  18. 16 Jan, 2026 1 commit
  19. 15 Jan, 2026 2 commits
    • IanShaw027's avatar
      feat(openai): 添加Codex工具调用自动修正功能 · 539b41f4
      IanShaw027 authored
      实现了完整的Codex工具调用拦截和自动修正系统,解决OpenCode使用Codex模型时的工具调用兼容性问题。
      
      **核心功能:**
      
      1. **工具名称自动映射**
         - apply_patch/applyPatch → edit
         - update_plan/updatePlan → todowrite
         - read_plan/readPlan → todoread
         - search_files/searchFiles → grep
         - list_files/listFiles → glob
         - read_file/readFile → read
         - write_file/writeFile → write
         - execute_bash/executeBash/exec_bash/execBash → bash
      
      2. **工具参数自动修正**
         - bash: 自动移除不支持的 workdir/work_dir 参数
         - edit: 自动将 path 参数重命名为 file_path
         - 支持 JSON 字符串和对象两种参数格式
      
      3. **流式响应集成**
         - 在 SSE 数据流中实时修正工具调用
         - 支持多种 JSON 结构(tool_calls, function_call, delta, choices等)
         - 不影响响应性能和用户体验
      
      4. **统计和监控**
         - 记录每次工具修正的详细信息
         - 提供修正统计数据查询
         - 便于问题排查和性能优化
      
      **实现文件:**
      - `openai_tool_corrector.go`: 工具修正核心逻辑(250行)
      - `openai_tool_corrector_test.go`: 完整的单元测试(380+行)
      - `openai_gateway_service.go`: 流式响应集成
      - `openai_gateway_service_tool_correction_test.go`: 集成测试
      
      **测试覆盖:**
      - 工具名称映射测试(18个映射规则)
      - 参数修正测试(bash workdir、edit path等)
      - SSE数据修正测试(多种JSON结构)
      - 统计功能测试
      - 所有测试通过 
      
      **解决的问题:**
      修复了 OpenCode 使用 sub2api 中转 Codex 时,因工具名称和参数不兼容导致的工具调用失败问题。
      Codex 模型有时会忽略指令文件中的工具映射说明,导致调用不存在的工具(如 apply_patch)。
      现在通过流式响应拦截,自动将错误的工具调用修正为 OpenCode 兼容的格式。
      
      **参考文档:**
      - OpenCode 工具规范: https://opencode.ai/docs/
      - Codex Bridge 指令: backend/internal/service/prompts/codex_opencode_bridge.txt
      539b41f4
    • cyhhao's avatar
      c11f14f3