Releases: lbjlaq/Antigravity-Manager
Releases · lbjlaq/Antigravity-Manager
Antigravity Tools v4.1.31
- [推荐项目] 支持新成员 Antigravity-Tools-LS: 专为 AI 协议设计的语言服务器,提供极致的开发辅助与调试体验。
- [核心修复] 稳定企业切换与多 OAuth 客户端认证 (PR #2330):
- 多客户端支持: 引入了对多 OAuth-client 的支持与
oauth_client_key跟踪机制,支持主动切换。 - 企业模式增强: 加格了企业模式切换时的预检(检测
project_id),并优化了失败提示。 - 状态显示优化: 改进了需要验证 (Verification Required)、风险 (Risk)、受限 (Rate Limited) 等异常账号状态的 UI 显示。
- API 访问回退: 为
fetchAvailableModels接口添加了 Sandbox -> Daily -> Prod 的自动回退路径,在遇到 429 或 5xx 错误时自动尝试备选环境。
- 多客户端支持: 引入了对多 OAuth-client 的支持与
- [代理修复] 修复使用 Gemini v1internal 协议时的 400 错误 (PR #2356):
- 冲突避让: 解决了
v1internal协议不支持同时使用googleSearch和functionDeclarations的限制。 - 智能注入: 现在当请求中包含函数定义时,代理将自动跳过 Google 搜索工具的注入,确保请求成功率。
- 冲突避让: 解决了
- [代理修复] 标准化 Gemini SSE 错误格式,防止 IDE 崩溃 (Issue #2371):
- 格式规范化: 将 Gemini 处理器的流式错误输出包装为标准 OpenAI
choices格式,彻底解决了 IDE 解析器因TypeError导致的 UI 冻结问题。 - 连接自愈: 为 SSE 流添加了标准的
data: [DONE]终止符,并优化了错误状态下的存储路径探测逻辑。
- 格式规范化: 将 Gemini 处理器的流式错误输出包装为标准 OpenAI
Antigravity Tools v4.1.29
- [重要提醒] 谷歌风控与第三方工具使用风险:
- [核心功能] 账号感知的动态模型重映射与回退 (PR #2286):
- 动态回退逻辑: 解决了由于不同账号对 Gemini Pro 模型层级(如
high/low)访问权限不一致导致的404/400报错问题。系统现在会根据选中账号的实际权限,在同系列模型间自动执行平滑回退(例如:gemini-3.1-pro-high->gemini-3.1-pro-low-> 默认层级)。 - 账号权限实时校验: 在请求进入处理器前,动态通过账号文件数据校验目标模型的可用性,实现真正意义上的“账号感知”调度。
- 重映射优先级优化: 确立了
API 弃用规则 > 账号感知回退 > 用户自定义映射 > 系统默认映射的科学优先级链条。 - 文档同步: 新增了
docs/model-remapping-logic.md,完整记录了复杂的重映射逻辑流程。
- 动态回退逻辑: 解决了由于不同账号对 Gemini Pro 模型层级(如
- [核心修复] Windows CLI 探测增强与路径扫描优化 (PR #2298):
- 路径主动扫描: 引入了对
APPDATA、LOCALAPPDATA以及NVM_HOME等路径的自动扫描机制,确保即使 CLI 未正确配置在系统PATH中也能被精准识别。 - 脚本处理优化: 改进了 Windows 环境下
.cmd和.bat脚本的调用方式,解决了直接执行无法稳定获取版本号的问题。 - 执行安全加固: 新增了路径安全性校验逻辑,通过绝对路径检查与危险字符过滤,有效防范命令注入风险。
- 路径主动扫描: 引入了对
- [持续集成] 引入 GitHub Actions CI 工作流 (PR #2298):
- 自动化质量控制: 构建了基础的 CI 流水线,涵盖 Rust 代码格式化检查、静态分析以及跨平台编译测试,提升了代码合规性与交付稳定性。
Antigravity Tools v4.1.28
- [重要提醒] 谷歌风控与第三方工具使用风险:
- 由于谷歌加强风控,第三方工具会违反服务条款而被暂停使用 Antigravity、Gemini CLI 或 Gemini Code Assist。
- 使用第三方软件、工具或服务访问 Antigravity、Gemini CLI 或 Gemini Code Assist(例如,使用 OpenClaw 和 Antigravity OAuth)违反了适用的条款和政策。此类行为可能导致您的帐户被暂停或终止。
- 申诉链接: 如果您认为帐户被误封,请通过 此链接 进行申诉。
- [后续规划] 关于未来版本更迭:
- 我们计划在后续推送新版本,届时可能会将“账号切换”与“反代代理”功能解耦为独立的模块或工具。
- 由于作者近期工作繁忙,发布可能会有延迟,感谢理解。
- 欢迎关注公众号 Ctrler 或 TG 频道 获取最新动态。
- 请谨慎使用本项目。
- [核心修复] 全系列模型限流锁定修复 (Fix Issue #2209):
- 统一归一化逻辑: 修复了 Claude 和 Gemini 系列模型在发生 429 (Too Many Requests) 错误时,由于限流 Key 未归一化导致负载均衡器无法识别锁定状态的问题。
- 熔断器联动增强: 确保即使在禁用"额度保护"的情况下,内置熔断器也能通过归一化后的模型 ID(如
claude,gemini-3-flash等)精确拦截已耗尽账号,消除 90s 的无效等待。
- [核心修复] Gemini 系列模型 adaptive 模式下错误注入
thinkingLevel导致 400 报错 (Fix Issue #2208):- 根因定位: 4.1.27 引入的自适应识别逻辑将
gemini-3.1-pro-high/gemini-3.1-pro-low等 Gemini 系列模型误判为支持thinkingLevel,而thinkingLevel是 Vertex AI Claude 原生协议专有参数,Gemini 系列底层走 v1internal 协议,仅接受thinkingBudget,导致请求被 Google API 拒绝并返回400 INVALID_ARGUMENT。 - 条件收窄: 将注入
thinkingLevel的触发条件从contains("gemini-3")修正为contains("claude"),确保thinkingLevel仅在 Claude 协议路径下注入,Gemini 系列模型在 adaptive 模式下统一回落到安全的thinkingBudget: 24576。 - 零附带损伤: OpenAI 协议与 Gemini 原生协议路径本身无此问题,本次修复仅针对 Claude 协议映射器,影响范围最小。
- 根因定位: 4.1.27 引入的自适应识别逻辑将
- [核心修复] 修复 Claude Code 4.1.27+ 联网搜索 (Internal Tool) 失效问题 (Issue #2224):
- 混合工具支持: 克服了 Gemini v1internal API 对
googleSearch与自定义functionDeclarations同时使用的限制。 - 智能感知注入: 重构了工具注入引擎,实现在 Gemini 2.0+ 和 3.0 系列模型上自动同时开启内置搜索与自定义开发者工具。
- 多协议对齐: 本次修复同步覆盖了 OpenAI 和 Gemini Native 协议,确保全协议栈在高性能模型下的联网能力一致性。
- 后向兼容: 针对旧版 Gemini 1.5 模型保留了自动排他转换逻辑,规避 400 错误。
- 混合工具支持: 克服了 Gemini v1internal API 对
- [核心修复] gemini-3-flash / gemini-3.1-flash 函数调用时缺少 thought_signature 导致 400 报错 (Fix Issue #2167):
- 根因定位: 三个协议映射器(OpenAI / Claude / Gemini 原生)的模型识别逻辑均未将
gemini-3-flash系列纳入 "thinking 模型" 范畴,致使在首次函数调用(无 Session 签名缓存)时,thoughtSignature字段未被注入,Google v1internal API 返回400 INVALID_ARGUMENT。 - OpenAI 协议: 新增
is_gemini_flash_thinking判断变量,在functionCall构建阶段,当 Session 缓存为空时自动注入哨兵值skip_thought_signature_validator。 - Claude 协议: 将
gemini-3-flash/gemini-3.1-flash加入target_model_supports_thinking识别列表;无签名时 flash 模型不再强制禁用 thinking,改为依赖现有哨兵注入路径(build_contentsL1249-1256),保留模型思考能力。 - Gemini 原生协议: 在
wrap_request的functionCall处理块中,当 Session 缓存为空时对 flash 模型补充哨兵 fallback,覆盖首次调用场景。 - 零附带损伤: flash 模型不触发
thinkingConfig注入逻辑,不影响非思考类请求的正常路径;顺带修复了test_wrap_request_with_signature单元测试中session_id参数位置错误的既有 Bug。
- 根因定位: 三个协议映射器(OpenAI / Claude / Gemini 原生)的模型识别逻辑均未将
- [核心修复] Token 统计时区偏差修复 (Fix Issue #2214):
- 自动时区贴合: 将 Token 统计的基准时间从标准时间 (UTC) 切换为系统本地时间 (Local Time)。
- 全球多时区支持: 引入了 SQLite
'localtime'转换机制。无论用户身处全球何处,统计图表的时间轴都将自动与其系统时钟对齐,彻底解决了北京时间或其他非 UTC 时区下的数据错位问题。
Antigravity Tools v4.1.27
- [核心优化] 代理配置初始化与工具图片保留修复 (Issue #2156):
- 补全默认配置: 修复了
ProxyConfig默认初始化时缺失global_system_prompt、proxy_pool和image_thinking_mode字段导致的编译失败问题。 - 模式匹配完善: 补充了
OpenAIContentBlock枚举匹配中的未知类型兜底分支 (_ => {}),消除非穷尽匹配的编译警告/错误。 - 图片无条件保留: 移除冗余的
preserve_tool_result_images开关,现已强制保留tool_result中的图片数据结构,转为大模型支持的inlineData结构,大幅简化逻辑。
- 补全默认配置: 修复了
- [功能增强] 修改 docker-compose.yml 的配置 (PR #2185):
- 命名空间更新: 将构建的默认镜像名称从
antigravity-manager更新为lbjlaq/antigravity-manager。 - 环境变量占位符: 为环境变量添加了带默认值的占位符语法,允许用户通过宿主机的环境变量或
.env文件来灵活覆盖默认配置。
- 命名空间更新: 将构建的默认镜像名称从
- [核心修复] OpenCode thinking budget 参数全面兼容 (Issue #2186):
- 架构支持:解决了 Vercel AI SDK (
@ai-sdk/anthropic) 配合 OpenCode 使用时,因原生蛇形命名budget_tokens导致系统无法启动并抛出AI_UnsupportedFunctionalityError: 'thinking requires a budget'的问题。 - 双字段输出:在向 OpenCode / Claude CLI 等外部客户端同步模型配置时,自动同时输出标准的
budget_tokens与小驼峰的budgetTokens字段。 - 服务端适配:后端配置解析器现已原生支持这两种命名变体。
- 架构支持:解决了 Vercel AI SDK (
- [核心修复] 解决免费账号配额耗尽后的无限重试与路由死锁问题 (Issue #2184):
- 问题根源:修补了 Google API
fetchAvailableModels接口在特定负载下无法正确返回remainingFraction的缺陷。由于缺失project标识,导致接口错误地为已耗尽配额(HTTP 429)的账号返回1.0(100%),进而导致智能路由算法将请求持续分配给不可用账号,引发长时间重试及配额显示错误。 - 负载修复:修改配额刷新请求,在负载中精准注入正确的
{"project": project_id}结构。恢复了配额信息的准确感知,并在未破坏原生字段(如supportsThinking)的前提下实现了接口完全兼容。 - 自愈恢复:通过读取真实配额,系统现已能够实时识别免费账号的耗尽状态并将其可用度置为 0%,无缝触发多账号自愈轮询(Smart Status Self-healing),解决请求受阻与长等待问题。
- 问题根源:修补了 Google API
- [核心修复] 解决首页 Gemini 绘图平均配额显示为 0 的问题 (Issue #2160):
- 匹配更新:将 Dashboard 中的绘图模型匹配逻辑从硬编码的
gemini-3-pro-image更新为包含最新的gemini-3.1-flash-image。 - 配置同步:在
modelConfig.ts中补全了新版绘图模型的 UI 定义,确保图标和标签正常渲染。
- 匹配更新:将 Dashboard 中的绘图模型匹配逻辑从硬编码的
- [核心功能] 全协议动态模型规格 (Model Specs) 集成 (Issue #2176):
- 动态引擎:实现了“动态优先、静态兜底”的规格引擎,优先识别 API 返回的
max_output_tokens等硬限额数据。 - 静态资源:引入
model_specs.json集中管理 30+ 种模型的默认参数,彻底告别映射器中的硬编码逻辑。 - 协议注入:统一了 OpenAI、Claude 和 Gemini 协议处理器对 Token 限额的注入方式,增强了跨版本兼容性。
- 动态引擎:实现了“动态优先、静态兜底”的规格引擎,优先识别 API 返回的
- [核心修复] 深度解决 Claude -> Gemini 3 路径下的 400 INVALID_ARGUMENT 异常:
- 自适应识别:修正了自适应模式逻辑,确保映射后的 Gemini 3 模型能正确使用
thinkingLevel支持,而非失效的 budget 逻辑。 - 冲突规避:实现了参数排他性检查,在开启分级思维时自动剥离不兼容的
thinkingBudget。 - Token 溢出保护:为
maxOutputTokens自动提升补齐逻辑增加了65536的模型硬上限保护,根除参数越界导致的请求失败。
- 自适应识别:修正了自适应模式逻辑,确保映射后的 Gemini 3 模型能正确使用
Antigravity Tools v4.1.26
- [功能增强] 优化配额刷新逻辑,支持同步禁用账号:
- 逻辑放宽: “刷新所有”和“批量刷新”现在不再跳过标记为
disabled或proxy_disabled的账号。 - 自动恢复: 允许通过刷新操作尝试重新激活因 Token 过期或临时错误而被禁用的账号,提升了多账号管理的灵活性。
- 逻辑放宽: “刷新所有”和“批量刷新”现在不再跳过标记为
- [核心修复] 修复 Windows 系统下后台任务导致 cmd 黑框闪烁的问题:
- 静默执行: 通过为
std::process::Command封装注入CREATE_NO_WINDOW标志,解决了在 Windows 端应用底层组件(如版本探测、重启更新等)调用系统命令时引发的命令行窗口一闪而过的视觉干扰,确保全过程无边框静默执行。
- 静默执行: 通过为
Antigravity Tools v4.1.25
- [核心功能] 动态画图模型与新架构支持:
- 动态解析: 移除了针对
gemini-3-pro-image的硬编码限制。通过新增的clean_image_model_name智能清洗后缀(如-4k,-16x9),全面兼容如gemini-3.1-flash-image等任意未来新增的画图模型。 - 配额自适应: 优化了
normalize_to_standard_id,使用image关键词宽泛匹配,确保新模型也能正确触发配额保护机制。
- 动态解析: 移除了针对
- [核心功能] 聊天接口 (Chat Completions) 画图拦截支持:
- 跨界融合: OpenAI 和 Claude 协议的对话流现在能智能探测画像生成意图。当使用带有
image的模型名时,系统会将常规文本生成请求静默转移给高级画图引擎。 - 流式回显: 生成完成后,通过 Markdown 格式(
)以 SSE 流式返回图片链接,完美适配所有支持 Markdown 的聊天客户端。
- 跨界融合: OpenAI 和 Claude 协议的对话流现在能智能探测画像生成意图。当使用带有
- [核心修复] 彻底修复画图重定向 404 与参数穿透失效:
- 404 移除: 移除了底层调用中残留的旧模型硬编码,根除因模型信息不一致导致的 404 Not Found 崩溃及账号受损。
- 精准参数继承: 修复了未传参数时系统强制塞入默认
1024x1024的行为。现在,如果模型名带有后缀(如gemini-3-pro-image-16x9-4k),后台会严格优先解析后缀分辨率进行穿透绘图。
Antigravity Tools v4.1.24
- [功能调整] 禁用自动预热调度程序,保留手动预热:
- 变更说明: 为了减少不必要的后台资源占用,本版本已注释掉自动预热(Smart Warmup)的后台调度逻辑。
- 设置隐藏: 设置页面中的“智能预热”配置项已隐藏。
- 手动保留: 账号管理页面的手动预热功能保持不变,仍可正常使用。
- 恢复指引: 如果您需要自动预热功能,可以自行拉取本项目源代码,在
src-tauri/src/lib.rs中取消start_scheduler的注释并解除Settings.tsx中相关 UI 的注释后重新编译使用。
- [核心修复] 智能版本指纹选择与启动 Panic 修复 (Issue #2123):
- 问题根源: 1)
constants.rs中的KNOWN_STABLE_VERSION硬编码了低版本号,当本地 IDE 检测失败时回退该版本作为请求头,导致 Google 拒绝 Gemini 3.1 Pro 模型。2) 新增的远端版本网络调用直接在LazyLock初始化(Tokio 异步上下文)中执行,导致Cannot block the current thread严重崩溃。 - 修复方案: 1) 引入"智能最大版本"策略
max(本地版本, 远端版本, 4.1.24),始终取最高值。2) 将网络探测逻辑移至独立 OS 线程并配合mpsc通道,安全避开异步运行时限制。保证无论本地版本新旧,指纹均不低于上游要求,且应用能稳定启动。
- 问题根源: 1)
- [核心修复] 动态模型 maxOutputTokens 限额系统 (替代 PR #2119 硬编码方案):
- 问题根源: 部分客户端发送的
maxOutputTokens超过模型物理上限(如 Flash 限制 64k),导致上游返回 400 错误。 - 三层限额架构:
- 第一层(动态优先): 实时读取账号
quota.models数据。 - 第二层(静态默认表):
model_limits.rs内置已知限额(如 Flash 65536)。 - 第三层(全局兜底): 默认 131072。
- 第一层(动态优先): 实时读取账号
- 实现细节: 在
wrap_request()中注入裁剪逻辑,确保请求参数合法。
- 问题根源: 部分客户端发送的
Antigravity Tools v4.1.23
- [安全增强] 优化与原生对齐应用层与底层特征指纹,提升请求稳定性与防拦截能力。
- [核心修复] 将 v1beta thinkingLevel 转换为 v1internal thinkingBudget (PR #2095):
- 问题根源: OpenClaw、Cline 等客户端发送 v1beta 格式的
thinkingLevel字符串("NONE"/"LOW"/"MEDIUM"/"HIGH")到generationConfig.thinkingConfig。当 AGM 通过 Google v1internal API 代理请求时,Google 会因为 v1internal 仅接受数字型thinkingBudget而拒绝请求,返回400 INVALID_ARGUMENT。 - 修复方案: 在
wrap_request()的现有 budget 处理逻辑之前,新增一个早期转换步骤:检测thinkingLevel字符串,将其映射为对应的数字thinkingBudget(NONE→0,LOW→4096,MEDIUM→8192,HIGH→24576),然后删除thinkingLevel字段并写入thinkingBudget,确保下游所有 budget 处理逻辑(预算封顶、maxOutputTokens调整、自适应检测)都能看到正确的数值预算。 - 测试: 已验证 OpenClaw 发送
thinkingLevel: "LOW"到gemini-3.1-pro-high(Gemini 原生协议),请求现返回200 OK,不再报 400 错误。
- 问题根源: OpenClaw、Cline 等客户端发送 v1beta 格式的
- [核心修复] 账号数据损坏与后台任务无限循环修复 (PR #2094):
- 问题根源: 当用户在设置中输入过大的刷新间隔值(如 999999999)时,
interval * 60 * 1000超过 JS 引擎 32 位有符号整数上限2,147,483,647ms,浏览器会将setInterval延迟静默截断为 1ms,导致前端每秒触发数千次refreshAllQuotas/syncAccountFromDb请求,进而引发多线程并发写同一[uuid].json文件,造成字节流交错、JSON 尾部残留,账号数据永久损坏。 - 原子文件写入 (
account.rs):save_account改为先写入 UUID 后缀的临时文件,再通过fs::rename(POSIX)/MoveFileExW(Windows)原子替换目标文件,与已有的save_account_index保持一致,从根本上消除并发写导致的 JSON 损坏。 - setInterval 溢出保护 (
BackgroundTaskRunner.tsx): 对refresh_interval和sync_interval两个定时器的延迟参数加上Math.min(..., 2147483647)上界限制,防止超过 INT32_MAX 后被浏览器截断为 1ms 无限循环。 - 输入验证 (
Settings.tsx): 将refresh_interval和sync_interval输入框的max属性从60更新为35791(35791 min × 60000 < INT32_MAX),并在onChange中添加NaNfallback(默认为 1)及范围夹紧[1, 35791],从源头阻断非法值输入。
- 问题根源: 当用户在设置中输入过大的刷新间隔值(如 999999999)时,
- [核心优化] OAuth 换票专属:剔除 JA3 指纹与动态 User-Agent 伪装:
- 纯净请求: 仅针对
exchange_code(首次授权)和refresh_access_token(静默续期)的换票请求,移除了底层网络库的 Chrome JA3 指纹伪装,恢复标准纯净的 TLS特征。 - 动态 UA: 换票时自动提取编译时版本号 (
CURRENT_VERSION) 构建专属的User-Agent(如vscode/1.X.X (Antigravity/4.1.23)),以匹配纯净 TLS 链路。
- 纯净请求: 仅针对
- [功能增强] API 反代页面与设置页模型列表全面接入动态模型数据:
- 问题根源: "API 反代 → 支持模型与集成"列表与"模型路由中心"的目标模型选择下拉框,以及"设置 → 固定配额模型"列表,此前均仅从静态
MODEL_CONFIG读取硬编码模型信息,导致账号实际下发的动态新模型(如GPT-OSS 120B、Gemini 3.1 Pro (High)等)无法出现在这些列表中。 - 修复方案:
- 重构
useProxyModelsHook:以账号quota.models动态数据为第一优先数据源,聚合所有账号里所有模型的display_name(为主展示名称)和name(为模型 ID);MODEL_CONFIG仅作为图标/分组的样式补充,以及无账号数据时的静态兜底。 - 新增自动懒加载逻辑:
ApiProxy页面本身不调用fetchAccounts,现在 Hook 内部检测到 store 为空时自动触发,保证动态模型在任意导航路径下均可正常展示。 - 重构
PinnedQuotaModels组件:采用同等策略,从useAccountStore拉取全账号动态模型,并修复了已固定的 "thinking" 类型模型显示"未知"的问题,改为优先展示其真实display_name。
- 重构
- 去重优化: 所有列表均基于模型原始
name(小写)去重,并额外过滤掉-thinking后缀的 MODEL_CONFIG 静态别名条目(这类变体已由账号数据中的supports_thinking标记覆盖)。
- 问题根源: "API 反代 → 支持模型与集成"列表与"模型路由中心"的目标模型选择下拉框,以及"设置 → 固定配额模型"列表,此前均仅从静态
Antigravity Tools v4.1.22
- [重要提醒] 2api 风控风险提示:
- 由于近期的谷歌风控原因,使用 2api 功能会导致账号被风控的概率显著增加。
- 强烈建议: 为了确保您的账号安全与调用稳定性,建议减少或停止使用 2api 功能。目前更原生、更稳定的 gRPC (
application/grpc) 或 gRPC-Web (application/grpc-web) 协议代理支持仍在积极测试中,如果您有相关的测试经验或想法,非常欢迎联系讨论,也欢迎您建立新分支一起探索!
- [核心优化] Claude Sonnet 4.5 迁移至 4.6 (PR #2014):
- 模型升级: 引入
claude-sonnet-4-6及claude-sonnet-4-6-thinking作为主推模型。 - 平滑过渡: 自动将 legacy 模型
claude-sonnet-4-5重定向至4.6。 - 全局适配: 更新了全部 12 种语言的本地化文件、UI 标签(Sonnet 4.6, Sonnet 4.6 TK, Opus 4.6 TK)以及预设路由。
- 模型升级: 引入
- [核心优化] Gemini Pro 模型名称迁移 (PR #2063): 将
gemini-pro-high/low迁移至gemini-3.1-pro,确保与 Google 最新 API 命名对齐。 - [重大架构] 国际化 (i18n) 与结构化模型配置集成 (PR #2040):
- 架构重构: 引入了全新的 i18n 翻译框架,将硬编码的模型展示逻辑解耦至结构化
MODEL_CONFIG。 - 逻辑适配: 在账号表格、详情弹窗和设置页面中集成了基于 i18n 标签的动态去重机制,修复了 Gemini 3.1 Pro 额度重复显示的 UI 问题。
- 多语言提升: 优化并修正了所有 12 种语言的版本描述,将
Claude 4.5描述全面升级为正式版4.6,并将G3描述统一为G3.1。 - [核心修复] Claude Opus 4.6 思考模式 400 报错 (Claude 协议):
- 参数专项对齐: 修复了
claude-opus-4-6-thinking在 Claude 协议下返回400 INVALID_ARGUMENT的问题。通过强制对齐thinkingBudget(24576) 与maxOutputTokens(57344),并剔除在该模式下不兼容的stopSequences,确保其请求参数与 100% 成功的 OpenAI 协议完全一致,提升了对 Claude 原生协议客户端的兼容性。
- 架构重构: 引入了全新的 i18n 翻译框架,将硬编码的模型展示逻辑解耦至结构化
Antigravity Tools v4.1.21
- [核心修复] Cherry Studio / Claude 协议兼容性 (Fix Issue #2007):
- maxOutputTokens 限制: 修复了 Cherry Studio 等客户端发送超大
maxOutputTokens(128k) 导致 Google API 返回400 INVALID_ARGUMENT的问题。现在自动将 Claude 协议的输出上限限制为 65536,确保请求始终在 Gemini 允许的范围内。 - Adaptive 思考模式对齐: 针对 Gemini 模型优化了 Claude 协议的
thinking: { type: "adaptive" }行为。现在自动映射为 24576 的固定思考预算 (与 OpenAI 协议一致),解决了 Gemini Vertex AI 对thinkingBudget: -1的不兼容问题,显著提升了 Cherry Studio 的思考模式稳定性。
- maxOutputTokens 限制: 修复了 Cherry Studio 等客户端发送超大
- [核心修复] 生产环境自定义协议支持 (PR #2005):
- 协议修复: 默认启用
custom-protocol特性,修复了生产环境下自定义协议 (如tauri://) 加载失败的问题,确保本地资源和特殊协议请求的稳定性。
- 协议修复: 默认启用
- [核心优化] 托盘图标与窗口生命周期管理:
- 智能托盘: 引入
AppRuntimeFlags状态管理,实现了窗口关闭行为与托盘状态的联动。 - 行为优化: 当托盘启用时,关闭窗口将自动隐藏而非退出应用;当托盘禁用时,关闭窗口将正常退出,提供了更符合直觉的桌面体验。
- 智能托盘: 引入
- [核心增强] Linux 版本检测与 HTTP 客户端鲁棒性:
- 版本解析: 增强了 Linux 平台的版本号提取逻辑 (
extract_semver),能从复杂的命令行输出中准确识别版本,提升了自动更新和环境检测的准确性。 - 客户端降级: 为 HTTP 客户端构建过程增加了自动降级机制。当代理配置导致构建失败时,系统会自动回退到无代理模式或默认配置,防止因网络配置错误导致应用完全不可用。
- 版本解析: 增强了 Linux 平台的版本号提取逻辑 (
- [核心修复] Cherry Studio 联网搜索空响应修复 (/v1/responses):
- SSE 事件补全: 重写了
create_codex_sse_stream,补全了 OpenAI Responses API 规范要求的完整 SSE 事件生命周期(response.output_item.added、content_part.added/done、output_item.done、response.completed),解决了 Cherry Studio 因事件缺失导致无法组装响应内容的问题。 - 联网搜索注入修复: 过滤了 Cherry Studio 发送的
builtin_web_search工具声明,防止其与inject_google_search_tool冲突,确保 Google Search 工具被正确注入。 - 搜索引文回显: 为 Codex 流式响应添加了
groundingMetadata解析,支持在联网搜索结果中回显搜索查询和来源引文。
- SSE 事件补全: 重写了
- [优化] Claude 协议联网与思考稳定性 (PR #2007):
- 移除联网降级: 移除了 Claude 协议中针对联网搜索的激进模型降级逻辑,避免不必要的模型回退。
- 移除思考历史降级: 移除了
should_disable_thinking_due_to_history检查,不再因历史消息格式问题永久禁用思考模式,改为依赖thinking_recovery机制自动修复。
- UI 优化 (Fix #2008): 改进了冷却时间的显示颜色 (使用蓝色),提高了在小字体下的可读性。

