song
|
7cb5444dbb
|
fix: update tests for group fallback
|
2026-02-03 16:48:52 +08:00 |
|
song
|
3bede6e65f
|
merge upstream main
|
2026-02-03 16:21:58 +08:00 |
|
song
|
2220fd18ca
|
merge upstream main
|
2026-02-03 15:36:17 +08:00 |
|
Wesley Liddick
|
6e54eda41f
|
Merge pull request #464 from touwaeriol/pr/antigravity-scope-ratelimit
feat(antigravity): 支持按配额域(scope)级别限流
|
2026-02-03 15:02:15 +08:00 |
|
liuxiongfeng
|
56949a58bc
|
feat(antigravity): 默认开启按配额域限流,避免整个账号被锁定
将 GATEWAY_ANTIGRAVITY_429_SCOPE_LIMIT 的默认值从关闭改为开启。
当 Gemini 模型触发 429 限流时,只会限制对应的配额域(gemini_text),
而 Claude 和 gemini_image 仍可继续使用,提高账号利用率。
|
2026-02-03 14:25:30 +08:00 |
|
liuxiongfeng
|
7d256879c5
|
feat(antigravity): map all gemini-2.5 to gemini-3 series
Antigravity 上游不再支持 gemini-2.5 系列,统一映射到 gemini-3:
- gemini-2.5-flash → gemini-3-flash
- gemini-2.5-flash-lite → gemini-3-flash
- gemini-2.5-flash-thinking → gemini-3-flash
- gemini-2.5-flash-image → gemini-3-pro-image
- gemini-2.5-pro → gemini-3-pro-high
- gemini-2.5-pro-preview → gemini-3-pro-high
- gemini-2.5-pro-exp → gemini-3-pro-high
|
2026-02-03 14:23:47 +08:00 |
|
liuxiongfeng
|
beb63cb152
|
feat(antigravity): map gemini-2.5-pro to gemini-3-pro-high
Add prefix mapping rules for gemini-2.5-pro variants:
- gemini-2.5-pro -> gemini-3-pro-high
- gemini-2.5-pro-preview -> gemini-3-pro-high
- gemini-2.5-pro-exp -> gemini-3-pro-high
|
2026-02-03 14:23:47 +08:00 |
|
song
|
3ecadf4aad
|
chore: apply stashed changes
|
2026-02-02 22:20:08 +08:00 |
|
song
|
0170d19fa7
|
merge upstream main
|
2026-02-02 22:13:50 +08:00 |
|
song
|
7ade9baa15
|
fix(gateway): 过滤 Gemini 请求中 parts 为空的消息
Gemini API 不接受 contents 数组中 parts 为空的消息,会返回 400 INVALID_ARGUMENT 错误。
添加 filterEmptyPartsFromGeminiRequest 函数在转发前过滤这类消息。
影响范围:ForwardGemini (antigravity) 和 ForwardNative (gemini)
|
2026-01-29 21:09:33 +08:00 |
|
song
|
5b787334c8
|
antigravity: 转发优先 daily
|
2026-01-28 11:17:39 +08:00 |
|
song
|
f761afb1ef
|
antigravity: 区分切换后重试次数
|
2026-01-28 00:01:03 +08:00 |
|
song
|
877c17251d
|
feat(group): 添加 MCP XML 注入开关
- Group 新增 mcp_xml_inject 字段,控制 Antigravity 平台的 MCP XML 协议注入
- 默认启用,可在分组设置中关闭
- 修复 GetByKeyForAuth 遗漏查询 mcp_xml_inject 字段导致认证缓存值始终为 false 的问题
|
2026-01-27 13:09:56 +08:00 |
|
song
|
fd0370c07a
|
Add invalid-request fallback routing
|
2026-01-23 22:24:46 +08:00 |
|
0xff26b9a8
|
4f0c2b794c
|
style: gofmt antigravity_gateway_service.go
|
2026-01-22 14:38:55 +08:00 |
|
0xff26b9a8
|
e756064c19
|
fix(antigravity): 修复非流式 Claude To Antigravity 响应内容为空的问题
- 修复 TransformGeminiToClaude 的 JSON 解析逻辑,当 V1InternalResponse
解析成功但 candidates 为空时,尝试直接解析为 GeminiResponse 格式
- 修复 handleClaudeStreamToNonStreaming 收集流式响应的逻辑,累积所有
chunks 的内容而不是只保留最后一个(最后一个 chunk 通常 text 为空)
- 新增 mergeCollectedPartsToResponse 函数,合并所有类型的 parts
(text、thinking、functionCall、inlineData),保持原始顺序
- 连续的普通 text parts 合并为一个,thinking/functionCall/inlineData 保持原样
|
2026-01-22 14:17:59 +08:00 |
|
song
|
207e09500a
|
feat(antigravity): 支持按模型类型配置重试次数
新增环境变量:
- GATEWAY_ANTIGRAVITY_MAX_RETRIES_CLAUDE
- GATEWAY_ANTIGRAVITY_MAX_RETRIES_GEMINI_TEXT
- GATEWAY_ANTIGRAVITY_MAX_RETRIES_GEMINI_IMAGE
未设置时回退到平台级 GATEWAY_ANTIGRAVITY_MAX_RETRIES
|
2026-01-21 20:48:36 +08:00 |
|
0xff26b9a8
|
71f8b9e473
|
refactor(antigravity): 提取并同步 Schema 清理逻辑至 schema_cleaner.go
主要变更:
1. 重构代码结构:
- 将 CleanJSONSchema 及其相关辅助函数从 request_transformer.go 提取到独立的 schema_cleaner.go 文件中,实现逻辑解耦。
2. 逻辑优化与修正:
- 参考 Antigravity-Manager (json_schema.rs) 的实现逻辑,修正了 Schema 清洗策略。
|
2026-01-21 12:08:16 +08:00 |
|
0xff26b9a8
|
da48df06d2
|
refactor(antigravity): 提取并同步 Schema 清理逻辑至 schema_cleaner.go
主要变更:
1. 重构代码结构:
- 将 CleanJSONSchema 及其相关辅助函数从 request_transformer.go 提取到独立的 schema_cleaner.go 文件中,实现逻辑解耦。
2. 逻辑优化与修正:
- 参考 Antigravity-Manager (json_schema.rs) 的实现逻辑,修正了 Schema 清洗策略。
|
2026-01-20 23:41:53 +08:00 |
|
song
|
549c134bb8
|
chore: gofmt antigravity gateway service
|
2026-01-20 19:16:43 +08:00 |
|
song
|
d206721fc1
|
feat: make antigravity max retries configurable
|
2026-01-20 19:12:19 +08:00 |
|
song
|
86d63f919d
|
feat(antigravity): 支持秒级 fallback 冷却时间
|
2026-01-20 11:38:40 +08:00 |
|
song
|
c43aa22cdb
|
feat(antigravity): 支持按映射模型计费
|
2026-01-20 11:02:08 +08:00 |
|
song
|
d1a6303e49
|
fix(antigravity): 修复 Claude 非流式响应丢失
|
2026-01-20 00:52:27 +08:00 |
|
song
|
8b071cc665
|
fix(antigravity): restore signature retry and base order
|
2026-01-17 22:50:50 +08:00 |
|
song
|
959f6c538a
|
fix(antigravity): remove thinking sanitation
|
2026-01-17 22:21:48 +08:00 |
|
song
|
217b3b59c0
|
fix(antigravity): drop MarkUnavailable
|
2026-01-17 21:59:32 +08:00 |
|
song
|
ec916a3197
|
fix(antigravity): remove signature retry
|
2026-01-17 21:56:57 +08:00 |
|
song
|
22eb72e0f9
|
fix(antigravity): restore url fallback behavior
|
2026-01-17 21:50:09 +08:00 |
|
song
|
07ba64c666
|
fix(antigravity): handle url-level 429 without failover
|
2026-01-17 21:37:32 +08:00 |
|
song
|
f22bc59fe3
|
fix(antigravity): route signature retry through url fallback
|
2026-01-17 21:15:33 +08:00 |
|
song
|
5e9f5efbe3
|
chore: log antigravity signature retry 429
|
2026-01-17 18:22:53 +08:00 |
|
song
|
a7a0017aa8
|
chore: gofmt antigravity gateway service
|
2026-01-17 18:22:43 +08:00 |
|
song
|
b9b4db3df5
|
Merge upstream/main
|
2026-01-17 18:00:07 +08:00 |
|
song
|
5a6f60a954
|
fix(antigravity): 区分 URL 级别和账户配额级别的 429 限流
- "Resource has been exhausted" → URL 级别限流,立即切换 URL
- "exhausted your capacity on this model" → 账户配额限流,重试 3 次(指数退避)后标记限流
|
2026-01-17 11:11:18 +08:00 |
|
song
|
31933c8a60
|
fix: 删除未使用的字段修复 lint 错误
|
2026-01-17 10:40:28 +08:00 |
|
song
|
78bccd032d
|
refactor(antigravity): 提取公共重试循环函数减少重复代码
- 新增 antigravityRetryLoop 函数统一处理 Forward 和 ForwardGemini 的重试逻辑
- 429 日志增加 base_url 字段便于调试
- 删除重复的 shouldRetryUpstreamError 方法
|
2026-01-17 10:28:31 +08:00 |
|
song
|
ac7503d95f
|
fix(antigravity): 429 时也切换 URL 重试
- 429 优先切换到下一个 URL 重试
- 只有所有 URL 都返回 429 时才限流账户并返回错误
- 与 client.go 中的逻辑保持一致
|
2026-01-17 02:14:57 +08:00 |
|
song
|
69c4b17a9b
|
feat(antigravity): 动态 URL 排序,最近成功的优先使用
- URLAvailability 新增 lastSuccess 字段追踪最近成功的 URL
- GetAvailableURLs 返回列表时优先放置 lastSuccess
- 所有 Antigravity API 调用成功后调用 MarkSuccess 更新优先级
|
2026-01-17 01:54:14 +08:00 |
|
song
|
34d6b0a601
|
feat(gateway): 账户切换次数和 Antigravity 限流时间可配置
- gateway.max_account_switches: 账户切换最大次数,默认 10
- gateway.max_account_switches_gemini: Gemini 账户切换次数,默认 3
- gateway.antigravity_fallback_cooldown_minutes: Antigravity 429 fallback 限流时间,默认 5 分钟
- Antigravity 429 不再重试,直接标记账户限流
|
2026-01-16 20:18:30 +08:00 |
|
song
|
2055a60bcb
|
fix(antigravity): 429 重试3次后限流账户
- 收到429后重试最多3次(指数退避)
- 3次都失败后调用 handleUpstreamError 限流账户
- 移除无效的 URL fallback 逻辑(当前只有一个URL)
|
2026-01-16 18:51:07 +08:00 |
|
song
|
cc892744bc
|
fix(antigravity): 429 fallback 改为 5 分钟并限流整个账户
- fallback 时间从 1 分钟改为 5 分钟
- fallback 时直接限流整个账户而非仅限制 quota scope
|
2026-01-16 18:09:34 +08:00 |
|
song
|
b4abfae4de
|
fix: Antigravity 测试连接使用最小 token 消耗
- buildGeminiTestRequest: 输入 "." + maxOutputTokens: 1
- buildClaudeTestRequest: 输入 "." + MaxTokens: 1
- buildGenerationConfig: 支持透传 MaxTokens 参数
|
2026-01-16 10:31:55 +08:00 |
|
IanShaw027
|
63711067e6
|
refactor(ops): 完善gateway服务ops集成
|
2026-01-14 14:30:00 +08:00 |
|
IanShaw027
|
060699c3b8
|
refactor(ops): 更新gateway服务集成ops功能
|
2026-01-14 12:40:49 +08:00 |
|
song
|
9a22d1a690
|
refactor: 提取 getOrCreateGeminiParts 减少重复代码
将两个 merge 函数中重复的 Gemini 响应结构访问逻辑提取为公共函数。
|
2026-01-13 13:25:55 +08:00 |
|
song
|
c9d21d53e6
|
fix: 修复 Antigravity 非流式响应文本丢失问题
Gemini 流式响应是增量的,需要累积所有 chunk 的文本内容。
原代码只保留最后一个有 parts 的 chunk,导致实际文本被空
text + thoughtSignature 的最终 chunk 覆盖。
添加 collectedTextParts 收集所有文本片段,返回前合并。
|
2026-01-13 13:04:03 +08:00 |
|
song
|
e1015c2759
|
fix: 修复 Antigravity 图片生成响应丢失问题
流式转非流式时,图片数据在中间 chunk 返回,最后一个 chunk 只有
finishReason,导致只保留最后 chunk 时图片丢失。
添加 collectedImageParts 收集所有图片 parts,并在返回前合并。
|
2026-01-13 12:58:05 +08:00 |
|
Wesley Liddick
|
0df7385c4e
|
Merge pull request #226 from xilu0/main
feat(gateway): 优化 Antigravity/Gemini 思考块处理 此提交解决了思考块 (thinking blocks) 在转发过程中的兼容性问题
|
2026-01-13 09:39:43 +08:00 |
|
xiluo
|
524d80ae1c
|
feat(gateway): 优化 Antigravity/Gemini 思考块处理
此提交解决了思考块 (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
|
2026-01-12 13:36:59 +00:00 |
|