1. 14 Jan, 2026 19 commits
  2. 12 Jan, 2026 21 commits
    • ianshaw's avatar
      d85288a6
    • ianshaw's avatar
      feat(gateway): 对所有请求(包括 Codex CLI)应用模型映射 · 3402acb6
      ianshaw authored
      - 移除 Codex CLI 的模型映射跳过逻辑
      - 添加详细的模型映射日志,包含账号名称和请求类型
      - 确保所有 OpenAI 请求都能正确应用账号配置的模型映射
      3402acb6
    • ianshaw's avatar
      fix(gateway): 修复 base_url 包含 /chat/completions 时路径拼接错误 · 7fdc25df
      ianshaw authored
      问题:
      - 当账号的 base_url 配置为 https://example.com/v1/chat/completions 时
      - 代码直接追加 /responses,导致路径变成 /v1/chat/completions/responses
      - 上游返回 404 错误
      
      修复:
      - 在追加 /responses 前,先移除 base_url 中的 /chat/completions 后缀
      - 确保最终路径为 https://example.com/v1/responses
      
      影响范围:
      - OpenAI API Key 账号的测试接口
      - OpenAI API Key 账号的实际网关请求
      
      Related-to: #231
      7fdc25df
    • ianshaw's avatar
      fix(gateway): 完善 max_output_tokens 参数处理逻辑 · fe6a3f42
      ianshaw authored
      根据不同平台和账号类型处理 max_output_tokens 参数:
      - OpenAI OAuth (Responses API): 保留 max_output_tokens(支持)
      - OpenAI API Key: 删除 max_output_tokens(不支持)
      - Anthropic (Claude): 转换 max_output_tokens 为 max_tokens
      - Gemini: 删除 max_output_tokens(由 Gemini 专用转换处理)
      - 其他平台: 删除(安全起见)
      
      同时处理 max_completion_tokens 参数,仅在 OpenAI OAuth 时保留。
      
      修复客户端(如 OpenCode)发送不支持参数导致上游返回 400 错误的问题。
      
      Related-to: #231
      fe6a3f42
    • xiluo's avatar
      feat(gateway): 优化 Antigravity/Gemini 思考块处理 · 524d80ae
      xiluo authored
      此提交解决了思考块 (thinking blocks) 在转发过程中的兼容性问题。
      
      主要变更:
      
      1. **思考块优化 (Thinking Blocks)**:
         - 在 AntigravityGatewayService 中增加了 sanitizeThinkingBlocks 处理,强制移除思考块中不支持的 cache_control 字段(避免 Anthropic/Vertex AI 报错)
         - 实现历史思考块展平 (Flattening):将非最后一条消息中的思考块转换为普通文本块,以绕过上游对历史思考块签名的严格校验
         - 增加 cleanCacheControlFromGeminiJSON 作为最后一道防线,确保转换后的 Gemini 请求中不残留非法的 cache_control
      
      2. **GatewayService 缓存控制优化**:
         - 更新缓存控制逻辑,跳过 thinking 块(thinking 块不支持 cache_control 字段)
         - 增加 removeCacheControlFromThinkingBlocks 函数强制清理
      
      关联 Issue: #225
      524d80ae
    • shaw's avatar
      fix: 修复反向代理下客户端 IP 获取错误 · 22ef9534
      shaw authored
      22ef9534
    • IanShaw027's avatar
      2d45e61a
    • IanShaw027's avatar
      feat(ops): 添加 count_tokens 错误过滤功能 · 345a965f
      IanShaw027 authored
      功能特性:
      - 自动识别并标记 count_tokens 请求的错误
      - 支持配置是否在统计中忽略 count_tokens 错误
      - 错误数据完整保留,仅在统计时动态过滤
      
      技术实现:
      - ops_error_logger.go: 自动标记 count_tokens 请求
      - ops_repo.go: INSERT 语句添加 is_count_tokens 字段
      - ops_repo_dashboard.go: buildErrorWhere 核心过滤函数
      - ops_repo_preagg.go: 预聚合统计中添加过滤
      - ops_repo_trends.go: 趋势统计查询添加过滤(2 处)
      - ops_settings_models.go: 添加 ignore_count_tokens_errors 配置
      - ops_settings.go: 配置验证和默认值设置
      - ops_port.go: 错误日志模型添加 IsCountTokens 字段
      
      业务价值:
      - count_tokens 是探测性请求,其错误不影响真实业务 SLA
      - 用户可根据需求灵活控制是否计入统计
      - 提升错误率、告警等运维指标的准确性
      
      影响范围:
      - Dashboard 概览统计
      - 错误趋势图表
      - 告警规则评估
      - 预聚合指标(hourly/daily)
      - 健康分数计算
      345a965f
    • yangjianbo's avatar
      fix(调度): 修复 outbox 空载写入并稳固回放测试 · 9622347f
      yangjianbo authored
      将 outbox payload 为空时写入 NULL
      避免事务因 JSON 解析错误中断
      调整回放测试为预置缓存后验证 last_used 更新
      
      测试: go test -tags=integration ./internal/repository
      9622347f
    • shaw's avatar
      fix(gateway): 修复 usage_logs 记录 IP 不正确的问题 · 8363663e
      shaw authored
      在 nginx 反向代理场景下,使用 ip.GetClientIP() 替代 c.ClientIP()
      以正确获取客户端真实 IP 地址
      8363663e
    • shaw's avatar
      fix(gateway): 修复 Claude Code 客户端检测和请求信息记录 · cf313d57
      shaw authored
      - 在 Messages 方法中调用 SetClaudeCodeClientContext 启用客户端检测
      - 修复 RecordUsageInput 未传递 UserAgent 和 IPAddress 的问题
      cf313d57
    • yangjianbo's avatar
      fix(调度): 修复流超时配置并补回放测试 · 8c1958c9
      yangjianbo authored
      删除前端未支持的 timeout_seconds 字段,避免类型检查失败
      新增调度 outbox 回放集成测试
      调整调度默认等待超时断言
      
      测试: make test
      8c1958c9
    • IanShaw027's avatar
      fix(ops): 修复Go代码格式问题 · e0cccf6e
      IanShaw027 authored
      e0cccf6e
    • yangjianbo's avatar
      fix(config): 提升粘性会话默认等待时长 · 202ec21b
      yangjianbo authored
      - 默认值调整为 120s
      - 同步示例配置与环境变量
      202ec21b
    • ianshaw's avatar
      fix(gateway): 自定义错误码触发停止调度 · 6dcb2763
      ianshaw authored
      - 修改 HandleUpstreamError 逻辑,启用自定义错误码时所有在列表中的错误码都会停止调度
      - 添加 handleCustomErrorCode 函数处理自定义错误码的账号停用
      - 前端添加 429/529 错误码的警告提示,因为这些错误码已有内置处理机制
      - 更新 EditAccountModal、CreateAccountModal、BulkEditAccountModal 的错误码添加逻辑
      6dcb2763
    • yangjianbo's avatar
      feat(scheduler): 引入调度快照缓存与 outbox 回放 · 3141aa51
      yangjianbo authored
      - 调度热路径优先读 Redis 快照,保留分组排序语义
      - outbox 回放 + 全量重建纠偏,失败重试不推进水位
      - 自动 Atlas 基线对齐并同步调度配置示例
      3141aa51
    • IanShaw027's avatar
      feat(ops): 集成实时流量API接口 · 62771583
      IanShaw027 authored
      - 添加实时流量handler处理逻辑
      - 注册实时流量路由
      - 扩展ops service接口定义
      62771583
    • IanShaw027's avatar
      feat(ops): 新增实时流量数据层 · 5526f122
      IanShaw027 authored
      - 添加实时流量repository层实现
      - 添加实时流量service层逻辑
      - 定义实时流量数据模型
      5526f122
    • ianshaw's avatar
      refactor(settings): 简化流超时配置,移除冗余字段 · 0c528095
      ianshaw authored
      - 移除 TimeoutSeconds 字段,超时判定由网关配置控制
      - 默认禁用流超时处理功能
      0c528095
    • ianshaw's avatar
      feat(gateway): 添加流超时处理机制 · 2a0758bd
      ianshaw authored
      - 添加 StreamTimeoutSettings 配置结构体和系统设置
      - 实现 TimeoutCounterCache Redis 计数器用于累计超时次数
      - 在 RateLimitService 添加 HandleStreamTimeout 方法
      - 在 gateway_service、openai_gateway_service、antigravity_gateway_service 中调用超时处理
      - 添加后端 API 端点 GET/PUT /admin/settings/stream-timeout
      - 添加前端配置界面到系统设置页面
      - 支持配置:启用开关、超时阈值、处理方式、暂停时长、触发阈值、阈值窗口
      
      默认配置:
      - 启用:true
      - 超时阈值:60秒
      - 处理方式:临时不可调度
      - 暂停时长:5分钟
      - 触发阈值:3次
      - 阈值窗口:10分钟
      2a0758bd
    • IanShaw027's avatar
      feat(ops): 后端添加指标阈值管理API · 7536dbfe
      IanShaw027 authored
      - 新增GetMetricThresholds和UpdateMetricThresholds接口
      - 支持配置SLA、延迟P99、TTFT P99、请求错误率、上游错误率阈值
      - 添加参数验证逻辑
      - 提供默认阈值配置
      7536dbfe