
lbjlaq/Antigravity-Manager
Professional Antigravity Account Manager & Switcher. One-click seamless account switching for Antigravity Tools. Built with Tauri v2 + React (Rust).专业的 Antigravity 账号管理与切换工具。为 Antigravity 提供一键无缝账号切换功能。
Loading star history...
Health Score
75
Weekly Growth
+0
+0.0% this week
Contributors
1
Total contributors
Open Issues
1.4K
Generated Insights
About Antigravity-Manager
Antigravity Tools 🚀
专业的 AI 账号管理与协议反代系统 (v4.0.7)
Antigravity Tools 是一个专为开发者和 AI 爱好者设计的全功能桌面应用。它将多账号管理、协议转换和智能请求调度完美结合,为您提供一个稳定、极速且成本低廉的 本地 AI 中转站。
通过本应用,您可以将常见的 Web 端 Session (Google/Anthropic) 转化为标准化的 API 接口,消除不同厂商间的协议鸿沟。
💖 赞助商 (Sponsors)
![]() | 感谢 PackyCode 对本项目的赞助!PackyCode 是一家可靠高效的 API 中转服务商,提供 Claude Code、Codex、Gemini 等多种服务的中转。PackyCode 为本项目的用户提供了特别优惠:使用此链接注册,并在充值时输入 “Ctrler” 优惠码即可享受 九折优惠。 |
|---|
☕ 支持项目 (Support)
如果您觉得本项目对您有所帮助,欢迎打赏作者!
| 支付宝 (Alipay) | 微信支付 (WeChat) | Buy Me a Coffee |
|---|---|---|
![]() | ![]() | ![]() |
🌟 深度功能解析 (Detailed Features)
1. 🎛️ 智能账号仪表盘 (Smart Dashboard)
- 全局实时监控: 一眼洞察所有账号的健康状况,包括 Gemini Pro、Gemini Flash、Claude 以及 Gemini 绘图的 平均剩余配额。
- 最佳账号推荐 (Smart Recommendation): 系统会根据当前所有账号的配额冗余度,实时算法筛选并推荐“最佳账号”,支持 一键切换。
- 活跃账号快照: 直观显示当前活跃账号的具体配额百分比及最后同步时间。
2. 🔐 强大的账号管家 (Account Management)
- OAuth 2.0 授权(自动/手动): 添加账号时会提前生成可复制的授权链接,支持在任意浏览器完成授权;回调成功后应用会自动完成并保存(必要时可点击“我已授权,继续”手动收尾)。
- 多维度导入: 支持单条 Token 录入、JSON 批量导入(如来自其他工具的备份),以及从 V1 旧版本数据库自动热迁移。
- 网关级视图: 支持“列表”与“网格”双视图切换。提供 403 封禁检测,自动标注并跳过权限异常的账号。
3. 🔌 协议转换与中继 (API Proxy)
- 全协议适配 (Multi-Sink):
- OpenAI 格式: 提供
/v1/chat/completions端点,兼容 99% 的现有 AI 应用。 - Anthropic 格式: 提供原生
/v1/messages接口,支持 Claude Code CLI 的全功能(如思思维链、系统提示词)。 - Gemini 格式: 支持 Google 官方 SDK 直接调用。
- OpenAI 格式: 提供
- 智能状态自愈: 当请求遇到
429 (Too Many Requests)或401 (Expire)时,后端会毫秒级触发 自动重试与静默轮换,确保业务不中断。
4. 🔀 模型路由中心 (Model Router)
- 系列化映射: 您可以将复杂的原始模型 ID 归类到“规格家族”(如将所有 GPT-4 请求统一路由到
gemini-3-pro-high)。 - 专家级重定向: 支持自定义正则表达式级模型映射,精准控制每一个请求的落地模型。
- 智能分级路由 (Tiered Routing): [新] 系统根据账号类型(Ultra/Pro/Free)和配额重置频率自动优先级排序,优先消耗高速重置账号,确保高频调用下的服务稳定性。
- 后台任务静默降级: [新] 自动识别 Claude CLI 等工具生成的后台请求(如标题生成),智能重定向至 Flash 模型,保护高级模型配额不被浪费。
5. 🎨 多模态与 Imagen 3 支持
- 高级画质控制: 支持通过 OpenAI
size(如1024x1024,16:9) 参数自动映射到 Imagen 3 的相应规格。 - 超强 Body 支持: 后端支持高达 100MB (可配置) 的 Payload,处理 4K 高清图识别绰绰有余。
📸 界面导览 (GUI Overview)
仪表盘 | 账号列表 |
关于页面 | API 反代 |
系统设置 |
💡 使用案例 (Usage Examples)
Claude Code 联网搜索 | Cherry Studio 深度集成 |
Imagen 3 高级绘图 | Kilo Code 接入 |
🏗️ 技术架构 (Architecture)
graph TD
Client([外部应用: Claude Code/NextChat]) -->|OpenAI/Anthropic| Gateway[Antigravity Axum Server]
Gateway --> Middleware[中间件: 鉴权/限流/日志]
Middleware --> Router[Model Router: ID 映射]
Router --> Dispatcher[账号分发器: 轮询/权重]
Dispatcher --> Mapper[协议转换器: Request Mapper]
Mapper --> Upstream[上游请求: Google/Anthropic API]
Upstream --> ResponseMapper[响应转换器: Response Mapper]
ResponseMapper --> Client
安装指南 (Installation)
选项 A: 终端安装 (macOS & Linux 推荐)
macOS
如果您已安装 Homebrew,可以通过以下命令快速安装:
# 1. 订阅本仓库的 Tap
brew tap lbjlaq/antigravity-manager https://github.com/lbjlaq/Antigravity-Manager
# 2. 安装应用
brew install --cask antigravity-tools
提示: 如果遇到权限问题,建议添加
--no-quarantine参数。
Arch Linux
您可以选择通过一键安装脚本或 Homebrew 进行安装:
方式 1:一键安装脚本 (推荐)
curl -sSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/main/deploy/arch/install.sh | bash
方式 2:通过 Homebrew (如果您已安装 Linuxbrew)
brew tap lbjlaq/antigravity-manager https://github.com/lbjlaq/Antigravity-Manager
brew install --cask antigravity-tools
其他 Linux 发行版
安装后会自动将 AppImage 添加到二进制路径并配置可执行权限。
选项 B: 手动下载
前往 GitHub Releases 下载对应系统的包:
- macOS:
.dmg(支持 Apple Silicon & Intel) - Windows:
.msi或 便携版.zip - Linux:
.deb或AppImage
选项 C: Docker 部署 (推荐用于 NAS/服务器)
如果您希望在容器化环境中 运行,我们提供了原生的 Docker 镜像。该镜像内置了对 v4.0.2 原生 Headless 架构的支持,可自动托管前端静态资源,并通过浏览器直接进行管理。
# 方式 1: 直接运行 (推荐)
# - API_KEY: 必填。用于所有协议的 AI 请求鉴定。
# - WEB_PASSWORD: 可选。用于管理后台登录。若不设置则默认使用 API_KEY。
docker run -d --name antigravity-manager \
-p 8045:8045 \
-e API_KEY=sk-your-api-key \
-e WEB_PASSWORD=your-login-password \
-e ABV_MAX_BODY_SIZE=104857600 \
-v ~/.antigravity_tools:/root/.antigravity_tools \
lbjlaq/antigravity-manager:latest
# 忘记密钥?执行 docker logs antigravity-manager 或 grep -E '"api_key"|"admin_password"' ~/.antigravity_tools/gui_config.json
#### 🔐 鉴权逻辑说明
* **场景 A:仅设置了 `API_KEY`**
- **Web 登录**:使用 `API_KEY` 进入后台。
- **API 调用**:使用 `API_KEY` 进行 AI 请求鉴权。
* **场景 B:同时设置了 `API_KEY` 和 `WEB_PASSWORD` (推荐)**
- **Web 登录**:**必须**使用 `WEB_PASSWORD`,使用 API Key 将被拒绝(更安全)。
- **API 调用**:统一使用 `API_KEY`。这样您可以将 API Key 分发给成员,而保留密码仅供管理员使用。
#### 🆙 旧版本升级指引
如果您是从 v4.0.1 及更早版本升级,系统默认未设置 `WEB_PASSWORD`。您可以通过以下任一方式设置:
1. **Web UI 界面 (推荐)**:使用原有 `API_KEY` 登录后,在 **API 反代设置** 页面手动设置并保存。新密码将持久化存储在 `gui_config.json` 中。
2. **环境变量 (Docker)**:在启动容器时增加 `-e WEB_PASSWORD=您的新密码`。**注意:环境变量具有最高优先级,将覆盖 UI 中的任何修改。**
3. **配置文件 (持久化)**:直接修改 `~/.antigravity_tools/gui_config.json`,在 `proxy` 对象中修改或添加 `"admin_password": "您的新密码"` 字段。
- *注:`WEB_PASSWORD` 是环境变量名,`admin_password` 是配置文件中的 JSON 键名。*
> [!TIP]
> **密码优先级逻辑 (Priority)**:
> - **第一优先级 (环境变量)**: `ABV_WEB_PASSWORD` 或 `WEB_PASSWORD`。只要设置了环境变量,系统将始终使用它。
> - **第二优先级 (配置文件)**: `gui_config.json` 中的 `admin_password` 字段。UI 的“保存”操作会更新此值。
> - **保底回退 (向后兼容)**: 若上述均未设置,则回退使用 `API_KEY` 作为登录密码。
# 方式 2: 使用 Docker Compose
# 1. 进入项目的 docker 目录
cd docker
# 2. 启动服务
docker compose up -d
访问地址:
http://localhost:8045(管理后台) |http://localhost:8045/v1(API Base) 系统要求:
- 内存: 建议 1GB (最小 256MB)。
- 持久化: 需挂载
/root/.antigravity_tools以保存数据。- 架构: 支持 x86_64 和 ARM64。 详情见: Docker 部署指南 (docker)
Copyright © 2024-2026 lbjlaq
🛠️ 常见问题排查 (Troubleshooting)
macOS 提示“应用已损坏,无法打开”?
由于 macOS 的安全机制,非 App Store 下载的应用可能会触发此提示。您可以按照以下步骤快速修复:
- 命令行修复 (推荐):
打开终端,执行以下命令:
sudo xattr -rd com.apple.quarantine "/Applications/Antigravity Tools.app" - Homebrew 安装技巧:
如果您使用 brew 安装,可以添加
--no-quarantine参数来规避此问题:brew install --cask --no-quarantine antigravity-tools
🔌 快速接入示例
🔐 OAuth 授权流程(添加账号)
- 打开“Accounts / 账号” → “添加账号” → “OAuth”。
- 弹窗会在点击按钮前预生成授权链接;点击链接即可复制到系统剪贴板,然后用你希望的浏览器打开并完成授权。
- 授权完成后浏览器会打开本地回调页 并显示“✅ 授权成功!”。
- 应用会自动继续完成授权并保存账号;如未自动完成,可点击“我已授权,继续”手动完成。
提示:授权链接包含一次性回调端口,请始终使用弹窗里生成的最新链接;如果授权时应用未运行或弹窗已关闭,浏览器可能会提示
localhost refused connection。
如何接入 Claude Code CLI?
- 启动 Antigravity,并在“API 反代”页面开启服务。
- 在终端执行:
export ANTHROPIC_API_KEY="sk-antigravity"
export ANTHROPIC_BASE_URL="http://127.0.0.1:8045"
claude
如何接入 Kilo Code?
- 协议选择: 建议优先使用 Gemini 协议。
- Base URL: 填写
http://127.0.0.1:8045。 - 注意:
- OpenAI 协议限制: Kilo Code 在使用 OpenAI 模式时,其请求路径会叠加产生
/v1/chat/completions/responses这种非标准路径,导致 Antigravity 返回 404。因此请务必填入 Base URL 后选择 Gemini 模式。 - 模型映射: Kilo Code 中的模型名称可能与 Antigravity 默认设置不一致,如遇到无法连接,请在“模型映射”页面设置自定义映射,并查看日志文件进行调试。
- OpenAI 协议限制: Kilo Code 在使用 OpenAI 模式时,其请求路径会叠加产生
如何在 Python 中使用?
import openai
client = openai.OpenAI(
api_key="sk-antigravity",
base_url="http://127.0.0.1:8045/v1"
)
response = client.chat.completions.create(
model="gemini-3-flash",
messages=[{"role": "user", "content": "你好,请自我介绍"}]
)
print(response.choices[0].message.content)
如何使用图片生成 (Imagen 3)?
方式一:OpenAI Images API (推荐)
import openai
client = openai.OpenAI(
api_key="sk-antigravity",
base_url="http://127.0.0.1:8045/v1"
)
# 生成图片
response = client.images.generate(
model="gemini-3-pro-image",
prompt="一座未来主义风格的城市,赛博朋克,霓虹灯",
size="1920x1080", # 支持任意 WIDTHxHEIGHT 格式,自动计算宽高比
quality="hd", # "standard" | "hd" | "medium"
n=1,
response_format="b64_json"
)
# 保存图片
import base64
image_data = base64.b64decode(response.data[0].b64_json)
with open("output.png", "wb") as f:
f.write(image_data)
支持的参数:
size: 任意WIDTHxHEIGHT格式(如1280x720,1024x1024,1920x1080),自动计算并映射到标准宽高比(21:9, 16:9, 9:16, 4:3, 3:4, 1:1)quality:"hd"→ 4K 分辨率(高质量)"medium"→ 2K 分辨率(中等质量)"standard"→ 默认分辨率(标准质量)
n: 生成图片数量(1-10)response_format:"b64_json"或"url"(Data URI)
方式二:Chat API + 参数设置 (✨ 新增)
所有协议(OpenAI、Claude)的 Chat API 现在都支持直接传递 size 和 quality 参数:
# OpenAI Chat API
response = client.chat.completions.create(
model="gemini-3-pro-image",
size="1920x1080", # ✅ 支持任意 WIDTHxHEIGHT 格式
quality="hd", # ✅ "standard" | "hd" | "medium"
messages=[{"role": "user", "content": "一座未来主义风格的城市"}]
)
# Claude Messages API
curl -X POST http://127.0.0.1:8045/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: sk-antigravity" \
-d '{
"model": "gemini-3-pro-image",
"size": "1280x720",
"quality": "hd",
"messages": [{"role": "user", "content": "一只可爱的猫咪"}]
}'
参数优先级: 请求体参数 > 模型后缀
方式三:Chat 接口 + 模型后缀
response = client.chat.completions.create(
model="gemini-3-pro-image-16-9-4k", # 格式:gemini-3-pro-image-[比例]-[质量]
messages=[{"role": "user", "content": "一座未来主义风格的城市"}]
)
模型后缀说明:
- 宽高比:
-16-9,-9-16,-4-3,-3-4,-21-9,-1-1 - 质量:
-4k(4K),-2k(2K), 不加后缀(标准) - 示例:
gemini-3-pro-image-16-9-4k→ 16:9 比例 + 4K 分辨率
方式四:Cherry Studio 等客户端设置
在支持 OpenAI 协议的客户端(如 Cherry Studio)中,可以通过模型设置页面配置图 片生成参数:
- 进入模型设置:选择
gemini-3-pro-image模型 - 配置参数:
- Size (尺寸): 输入任意
WIDTHxHEIGHT格式(如1920x1080,1024x1024) - Quality (质量): 选择
standard/hd/medium - Number (数量): 设置生成图片数量(1-10)
- Size (尺寸): 输入任意
- 发送请求:直接在对话框中输入图片描述即可
参数映射规则:
size: "1920x1080"→ 自动计算为16:9宽高比quality: "hd"→ 映射为4K分辨率quality: "medium"→ 映射为2K分辨率
📝 开发者与社区
-
版本演进 (Changelog):
-
v4.0.7 (2026-01-29):
-
[性能优化] 优化 Docker 构建流程 (Fix Issue #1271):
- 原生架构构建: 将 AMD64 和 ARM64 的构建任务拆分为独立 Job 并行执行,并移除 QEMU 模拟层,转而使用各架构原生的 GitHub Runner。此举将跨平台构建耗时从 3 小时大幅缩减至 10 分钟以内。
-
[性能优化] 解决 Docker 版本在大数据量下的卡顿与崩溃问题 (Fix Issue #1269):
- 异步数据库操作: 将流量日志、Token 统计等所有耗时数据库查询迁移至后台阻塞线程池 (
spawn_blocking),彻底解决了在查看大型日志文件(800MB+)时可能导致的 UI 卡死及反代服务不可用的问题。 - 监控逻辑平滑化: 优化了监控状态切换逻辑,移除冗余的重复启动记录,提升了 Docker 环境 下的运行稳定性。
- 异步数据库操作: 将流量日志、Token 统计等所有耗时数据库查询迁移至后台阻塞线程池 (
-
[核心修复] 解决 OpenAI 协议 400 Invalid Argument 错误 (Fix Issue #1267):
- 移除激进默认值: 回滚了 v4.0.6 中为 OpenAI/Claude 协议引入的默认
maxOutputTokens: 81920设置。该值超过了许多旧模型(如gemini-3-pro-preview或原生 Claude 3.5)的硬性限制,导致请求被直接拒绝。 - 智能思维配置: 优化了思维模型检测逻辑,仅对以
-thinking结尾的模型自动注入thinkingConfig,避免了对不支持该参数的标准模型(如gemini-3-pro)产生副作用。
- 移除激进默认值: 回滚了 v4.0.6 中为 OpenAI/Claude 协议引入的默认
-
[兼容性修复] 修复 OpenAI Codex (v0.92.0) 调用错误 (Fix Issue #1278):
- 字段清洗: 自动过滤 Codex 客户端在工具定义中注入的非标准
external_web_access字段,消除了 Gemini API 返回的 400 Invalid Argument 错误. - 容错增强: 增加了对工具
name字段的强制校验。当客户端发送缺失名称的无效工具定义时,代理层现在会自动跳过并记录警告,而不是直接让请求失败。
- 字段清洗: 自动过滤 Codex 客户端在工具定义中注入的非标准
-
[核心功能] 自适应熔断器 (Adaptive Circuit Breaker):
- 模型级隔离: 实现了基于
account_id:model的复合 Key 限流追踪,确保单一模型的配额耗尽不会导致整个账号被锁定。 - 动态退避策略: 支持用户自定义
[60, 300, 1800, 7200]等多级退避阶梯,自动根据失败次数增加锁定时间。 - 配置热更新: 配合
TokenManager内存缓存,实现配置修改后反代服务即刻生效,无需重启。 - 管理 UI 集成: 在 API 反代页面新增了完整的控制面板,支持一键开关及手动清 除限流记录。
- 模型级隔离: 实现了基于
-
[核心优化] 完善日志清理与冗余压制 (Fix Issue #1280):
- 自动空间回收: 引入基于体积的清理机制,当日志目录超过 1GB 时自动触发清理,并将占用降至 512MB 以内。相比原有的按天清理,能从根本上防止因日志爆发导致的磁盘撑爆问题。
- 高频日志瘦身: 将 OpenAI 处理器报文详情、TokenManager 账号池轮询等高频产生的日志级别从 INFO 降级为 DEBUG。现在 INFO 级别仅保留简洁的请求摘要。
-
-
v4.0.6 (2026-01-28):
- [核心修复] 彻底解决 Google OAuth "Account already exists" 错误:
- 持久化升级: 将授权成功后的保存逻辑从“仅新增”升级为
upsert(更新或新增) 模式。现在重新授权已存在的账号会平滑更新其 Token 和项目信息,不再弹出报错。
- 持久化升级: 将授权成功后的保存逻辑从“仅新增”升级为
- [核心修复] 修复 Docker/Web 模式下手动回填授权码失效问题:
- Flow 状态预初始化: 在 Web 模式生成授权链接时,后端会同步初始化 OAuth Flow 状态。这确保了在 Docker 等无法自动跳转的环境下,手动复制回填授权码或 URL 能够被后端正确识别并处理。
- [体验优化] 统一 Web 与桌面端的 OAuth 持久化路径: 重构了
TokenManager,确保所有平台共用同一套健壮的账号核验与存储逻辑。 - [性能优化] 优化限流恢复机制 (PR #1247):
- 自动清理频率: 将限流记录的后台自动清理间隔从 60 秒缩短至 15 秒,大幅提升了触发 429 或 503 错误后的业务恢复速度。
- 智能同步清理: 优化了单个或全部账号刷新逻辑,确保刷新账号的同时即刻清除本地限流锁定,使最新配额能立即投入使用。
- 渐进式容量退避: 针对
ModelCapacityExhausted错误(如 503),将原有的固定 15 秒重试等待优化为[5s, 10s, 15s]阶梯式策略,显著减少了偶发性容量波动的等待时间。
- [核心修复] 窗口标题栏深色模式适配 (PR #1253): 修复了在系统切换为深色模式时,应用标题栏(Titlebar)未能同步切换配色,导致视觉不统一的问题。
- [核心修复] 提升 Opus 4.5 默认输出上限 (Fix Issue #1244):
- 突破限制: 将 Claude 和 OpenAI 协议的默认
max_tokens从 16k 提升至 81,920 (80k)。 - 解决截断: 彻底解决了 Opus 4.5 等模型在开启思维模式时,因默认 Budget 限制导致输出被锁定在 48k 左右的截断问题。现在无需任何配置即可享受完整的长文本输出能力。
- 突破限制: 将 Claude 和 OpenAI 协议的默认
- [核心修复] 修复账号删除后的幽灵数据问题 (Ghost Account Fix):
- 同步重载: 修复了账号文件被删除后,反代服务的内存缓存未同步更新,导致已删账号仍参与轮询的严重 Bug。
- 即时生效: 现在单删或批量删除账号后,会强制触发反代服务重载,确保内存中的账号列表与磁盘实时一致。
- [核心修复] Cloudflared 隧道启动问题修复 (Fix PR #1238):
- 启动崩溃修复: 移除了不支持的命令行参数 (
--no-autoupdate/--loglevel),解决了 cloudflared 进程启动即退出的问题。 - URL 解析修正: 修正了命名隧道 URL 提取时的字符串偏移量错误,确保生成的访问链接格式正确。
- Windows 体验优化: 为 Windows 平台添加了
DETACHED_PROCESS标志,实现了隧道的完全静默后台运行,消除了弹窗干扰。
- 启动崩溃修复: 移除了不支持的命令行参数 (
- [核心修复] 彻底解决 Google OAuth "Account already exists" 错误:
-
v4.0.5 (2026-01-28):
- [核心修复] 彻底解决 Docker/Web 模式 Google OAuth 400 错误 (Google OAuth Fix):
- 协议对齐: 强制所有模式(包括 Docker/Web)使用
localhost作为 OAuth 重定向 URI,绕过了 Google 对私网 IP 和非 HTTPS 环境的拦截策略。 - 流程优化: 配合已有的“手动授权码回填”功能,确保即使在远程服务器部署环境下,用户也能顺利完成 Google 账号的授权与添加。
- 协议对齐: 强制所有模式(包括 Docker/Web)使用
- [功能增强] 新增阿拉伯语支持与 RTL 布局适配 (PR #1220):
- 国际化拓展: 新增完整的阿拉伯语 (
ar) 翻译支持。 - RTL 布局: 实现了自动检测并适配从右向左 (Right-to-Left) 的 UI 布局。
- 排版优化: 引入了 Effra 字体家族,显著提升了阿拉伯语文本的可读性与美观度。
- 国际化拓展: 新增完整的阿拉伯语 (
- [功能增强] 手动清除限流记录 (Clear Rate Limit Records):
- 管理 UI 集成: 在“代理设置 -> 账号轮换与会话调度”区域新增了“清除限流记录”按钮,支持桌面端与 Web 端调用,允许用户手动清除所有账号的本地限流锁(429/503 记录)。
- 账号列表联动: 实现了配额与限流的智能同步。现在刷新账号额度(单个或全部)时,会自动清除本地限流状态,确保最新的额度信息能立即生效。
- 后端核心逻辑: 在
RateLimitTracker和TokenManager中底层实现了手动与自动触发的清除逻辑,确保高并发下的状态一致性。 - API 支持: 新增了对应的 Tauri 命令与 Admin API (
DELETE /api/proxy/rate-limits),方便开发者进行编程化管理与集成。 - 强制重试: 配合清除操作,可强制下一次请求忽略之前的退避时间,直接尝试连接上游,帮助在网络恢复后快速恢复业务。
- [核心修复] 彻底解决 Docker/Web 模式 Google OAuth 400 错误 (Google OAuth Fix):
-
v4.0.4 (2026-01-27):
- [功能增强] 深度集成 Gemini 图像生成与多协议支持 (PR #1203):
- OpenAI 兼容性增强: 支持通过标准 OpenAI Images API (
/v1/images/generate) 调用 Gemini 3 图像模型,支持size、quality等参数。 - 多协议集成: 增强了 Claude 和 OpenAI Chat 接口,支持直接传递图片生成参数,并实现了自动宽高比计算与 4K/2K 质量映射。
- 文档补全: 新增
docs/gemini-3-image-guide.md,提供完整的 Gemini 图像生成集成指南。 - 稳定性优化: 优化了通用工具函数 (
common_utils.rs) 和 Gemini/OpenAI 映射逻辑,确保大尺寸 Payload 传输稳定。
- OpenAI 兼容性增强: 支持通过标准 OpenAI Images API (
- [核心修复] 对齐 OpenAI 重试与限流逻辑 (PR #1204):
- 逻辑对齐: 重构了 OpenAI 处理器的重试、限流及账号轮换逻辑,使其与 Claude 处理器保持一致,显著提升了高并发下的稳定性。
- 热重载优化: 确保 OpenAI 请求在触发 429 或 503 错误时能精准执行退避策略并自动切换可用账号。
- [核心修复] 修复 Web OAuth 账号持久化问题 (Web Persistence Fix):
- 索引修复: 解决了在 Web 管理界面通过 OAuth 添加的账号虽然文件已生成,但未同步更新到全局账号索引 (
accounts.json),导致重启后或桌面端无法识别的问题。 - 锁机制统一: 重构了
TokenManager的保存逻辑,复用了modules::account的核心方法,确保了文件锁与索引更新的原子性。
- 索引修复: 解决了在 Web 管理界面通过 OAuth 添加的账号虽然文件已生成,但未同步更新到全局账号索引 (
- [核心修复] 解决 Google OAuth 非 Localhost 回调限制 (Fix Issue #1186):
- 问题背景: Google 不支持在 OAuth 流程中使用非 localhost 私网 IP 作为回调地址,即便注入
device_id也会报“不安全的应用版本”警告。 - 解决方案: 引入了标准化的“手动 OAuth 提交”流程。当浏览器无法自动回调至本地(如远程部署或非 Localhost 环境)时,用户可直接复制回调链接或授权码至应用内完成授权。
- 体验增强: 重构了手动提交界面,集成了全语言国际化支持(9 国语言)与 UI 优化,确保在任何网络环境下都能顺利添加账号。
- 问题背景: Google 不支持在 OAuth 流程中使用非 localhost 私网 IP 作为回调地址,即便注入
- [核心修复] 解决 Google Cloud Code API 429 错误 (Fix Issue #1176):
- 智能降级: 默认将 API 流量迁移至更稳定的 Daily/Sandbox 环境,避开生产环境 (
cloudcode-pa.googleapis.com) 当前频繁的 429 错误。 - 稳健性提升: 实现了 Sandbox -> Daily -> Prod 的三级降级策略,确保主业务流程在极端网络环境下的高可用性。
- 智能降级: 默认将 API 流量迁移至更稳定的 Daily/Sandbox 环境,避开生产环境 (
- [核心优化] 账号调度算法升级 (Algorithm Upgrade):
- 健康评分系统 (Health Score): 引入了 0.0 到 1.0 的实时健康分机制。请求失败(如 429/5xx)将显著扣分,使受损账号自动降级;成功请求则逐步回升,实现账号状态的智能自愈。
- 三级智能排序: 调度优先级重构为
订阅等级 > 剩余配额 > 健康分。确保在同等级、同配额情况下,始终优先通过历史表现最稳定的账号。 - 微延迟 (Throttle Delay): 针对极端限流 场景,当所有账号均被封锁且有账号在 2 秒内即将恢复时,系统将自动执行毫秒级挂起等待而非直接报错。极大提升了高并发下的成功率,并增强了会话粘性。
- 全量接口适配: 重构了
TokenManager核心接口,并完成了全量处理器(Claude, Gemini, OpenAI, Audio, Warmup)的同步适配,确保调度层变更对业务层透明。
- [核心修复] 固定账号模式持久化 (PR #1209):
- 问题背景: 之前版本在重启服务后,固定账号模式(Fixed Account Mode)的开关状态会被重置。
- 修复内容: 实现了设置的持久化存储,确保用户偏好在重启后依然生效。
- [核心修复] 速率限制毫秒级解析 (PR #1210):
- 问题背景: 部分上游服务返回的
Retry-After或速率限制头部包含带小数点的毫秒值,导致解析失败。 - 修复内容: 增强了时间解析逻辑,支持兼容浮点数格式的时间字段,提高了对非标准上游的兼容性。
- 问题背景: 部分上游服务返回的
- [功能增强] 深度集成 Gemini 图像生成与多协议支持 (PR #1203):
-
v4.0.3 (2026-01-27):
- [功能增强] 提高请求体限制以支持大体积图片 Payload (PR #1167):
- 将默认请求体大小限制从 2MB 提升至 100MB,解决多图并发传输时的 413 (Payload Too Large) 错误。
- 新增环境变量
ABV_MAX_BODY_SIZE,支持用户根据需求动态调整最大限制。 - 服务启动时自动输出当前生效的 Body Limit 日志,便于排查。
- [核心修复] 解决 Google OAuth 'state' 参数缺失导致的授权失败 (Issue #1168):
- 修复了添加 Google 账号时可能出现的 "Agent execution terminated" 错误。
- 实现了随机
state参 数的生成与回调验证,增强了 OAuth 流程的安全性和兼容性。 - 确保在桌面端和 Web 模式下的授权流程均符合 OAuth 2.0 标准。
- [核心修复] 解决 Docker/Web 模式下代理开关及账号变动需重启生效的问题 (Issue #1166):
- 实现了代理开关状态的持久化存储,确保容器重启后状态保持一致。
- 在账号增删、切换、重排及导入后自动触发 Token 管理器热加载,使变更立即在反代服务中生效。
- 优化了账号切换逻辑,自动清除旧会话绑定,确保请求立即路由到新账号。
- [功能增强] 提高请求体限制以支持大体积图片 Payload (PR #1167):
-
v4.0.2 (2026-01-26):
- [核心修复] 解决开启“访问授权”导致的重复认证与 401 循环 (Fix Issue #1163):
- 修正了后端鉴权中间件逻辑,确保在鉴权关闭模式(Off/Auto)下管理接口不再强制拦截。
- 增强了健康检查路径 (
/api/health) 的免鉴权豁免,避免 UI 加载初期因状态检测失败触发登录。 - 在前端请求层引入了 401 异常频率限制(防抖锁),彻底解决了大批量请求失败导致的 UI 弹窗抖动。
- [核心修复] 解决切换账号后会话无法持久化保存 (Fix Issue #1159):
- 增强了数据库注入逻辑,在切换账号时同步更新身份标识(Email)并清除旧的 UserID 缓存。
- 解决了因 Token 与身份标识不匹配导致客户端无法正确关联或保存新会话的问题。
- [核心修复] Docker/Web 模式下模型映射持久化 (Fix Issue #1149):
- 修复了在 Docker 或 Web 部署模式下,管理员通过 API 修改的模型映射配置(Model Mapping)无法保存到硬盘的问题。
- 确保
admin_update_model_mapping接口正确调用持久化逻辑,配置在重启容器后依然生效。
- [架构优化] MCP 工具支持架构全面升级 (Schema Cleaning & Tool Adapters):
- 约束语义回填 (Constraint Hints):
- 实现了智能约束迁移机制,在删除 Gemini 不支持的约束字段(
minLength,pattern,format等)前,自动将其转化为描述提示。 - 新增
CONSTRAINT_FIELDS常量和move_constraints_to_description函数,确保模型能通过描述理解原始约束。 - 示例:
{"minLength": 5}→{"description": "[Constraint: minLen: 5]"}
- 实现了智能约束迁移机制,在删除 Gemini 不支持的约束字段(
- anyOf/oneOf 智能扁平化增强:
- 重写
extract_best_schema_from_union函数,使用评分机制选择最佳类型(object > array > scalar)。 - 在合并后自动添加
"Accepts: type1 | type2"提示到描述中,保留所有可能类型的信息。 - 新增
get_schema_type_name函数,支持显式类型和结构推断。
- 重写
- 插件化工具适配器层 (Tool Adapter System):
- 创建
ToolAdaptertrait,为不同 MCP 工具提供定制化 Schema 处理能力。 - 实现
PencilAdapter,自动为 Pencil 绘图工具的视觉属性(cornerRadius,strokeWidth)和路径参数添加说明。 - 建立全局适配器注册表,支持通过
clean_json_schema_for_tool函数应用工具特定优化。
- 创建
- 高性能缓存层 (Schema Cache):
- 实现基于 SHA-256 哈希的 Schema 缓存机制,避免重复清洗相同的 Schema。
- 采用 LRU 淘汰策略,最大缓存 1000 条,内存占用 < 10MB。
- 提供
clean_json_schema_cached函数和缓存统计功能,预计性能提升 60%+。
- 影响范围:
- ✅ 显著提升 MCP 工具(如 Pencil)的 Schema 兼容性和模型理解能力
- ✅ 为未来添加更多 MCP 工具(filesystem, database 等)奠定了插件化基础
- ✅ 完全向后兼容,所有 25 项测试通过
- 约束语义回填 (Constraint Hints):
- [安全增强] Web UI 管理后台密码与 API Key 分离 (Fix Issue #1139):
- 独立密码配置: 支持通过
ABV_WEB_PASSWORD或WEB_PASSWORD环境变量设置独立的管理后台登录密码。 - 智能鉴权逻辑:
- 管理接口优先验证独立密码,未设置时自动回退验证
API_KEY(确保向后兼容)。 - AI 代理接口严格仅允许使用
API_KEY进行认证,实现权限隔离。
- 管理接口优先验证独立密码,未设置时自动回退验证
- 配置 UI 支持: 在“仪表盘-服务配置”中新增管理密码编辑项,支持一键找回或修改。
- 日志引导: Headless 模式启动时会清晰打印 API Key 与 Web UI Password 的状态及查看方式。
- 独立密码配置: 支持通过
- [核心修复] 解决开启“访问授权”导致的重复认证与 401 循环 (Fix Issue #1163):
-
v4.0.1 (2026-01-26):
- [UX 优化] 主题与语言切换平滑度:
- 解决了主题和语言切换时的 UI 卡顿问题,将配置持久化逻辑与状态更新解耦。
- 优化了导航栏中的 View Transition API 使用,确保视觉更新不阻塞操作。
- 将窗口背景同步调用改为异步,避免 React 渲染延迟。
- [核心修复] 反代服务启动死锁:
- 修复了启动反代服务时会阻塞状态轮询请求的竞态/死锁问题。
- 引入了原子启动标志和非阻塞状态检查,确保 UI 在服务初始化期间保持响应。
- [UX 优化] 主题与语言切换平滑度:
-
v4.0.0 (2026-01-25):
- [重大架构] 深度迁移至 Tauri v2 (Tauri v2 Migration):
- 全面适配 Tauri v2 核 心 API,包括系统托盘、窗口管理与事件系统。
- 解决了多个异步 Trait 动态派发与生命周期冲突问题,后端性能与稳定性显著提升。
- [部署革新] 原生 Headless Docker 模式 (Native Headless Docker):
- 实现了“纯后端”Docker 镜像,彻底移除了对 VNC、noVNC 或 XVFB 的依赖,大幅降低内存与 CPU 占用。
- 支持直接托管前端静态资源,容器启动后即可通过浏览器远程管理。
- [部署修复] Arch Linux 安装脚本修复 (PR #1108):
- 修复了
deploy/arch/PKGBUILD.template中硬编码data.tar.zst导致的提取失败问题。 - 实现了基于通配符的动态压缩格式识别,确保兼容不同版本的
.deb包。
- 修复了
- [管理升级] 全功能 Web 管理界面 (Web-based Console):
- 重写了管理后台,使所有核心功能(账号管理、API 反代监控、OAuth 授权、模型映射)均可在浏览器端完成。
- 补全了 Web 模式下的 OAuth 回调处理,支持
ABV_PUBLIC_URL自定义,完美适配远程 VPS 或 NAS 部署场景。
- [项目规范化] 结构清理与单元化 (Project Normalization):
- 清理了冗余的
deploy目录及其旧版脚本,项目结构更加现代。 - 规范化 Docker 镜像名称为
antigravity-manager,并整合专属的docker/目录与部署手册。
- 清理了冗余的
- [API 增强] 流量日志与监控优化:
- 优化了流量日志的实时监控体验,补全了 Web 模式下的轮询机制与统计接口。
- 精确化管理 API 路由占位符命名,提升了 API 的调用精确度。
- [用户体验] 监控页面布局与深色模式优化 (PR #1105):
- 布局重构: 优化了流量日志页面的容器布局,采用固定最大宽度与响应式边距,解决了在大屏显示器下的内容过度拉伸问题,视觉体验更加舒适。
- 深色模式一致性: 将日志详情弹窗的配色方案从硬编码的 Slate 色系迁移至 Base 主题色系,确保与全局深色模式风格无缝统一,提升了视觉一致性。
- [用户体验] 自动更新体验优化:
- 智能降级: 修复了当原生更新包未就绪(如 Draft Release)时点击更新无反应的问题。现在系统会自动检测并提示用户,同时优雅降级至浏览器下载模式,确保持续可更新。
- [核心修复] 深度优化 Signature Cache 与 Rewind 检测 (PR #1094):
- 400 错误自愈: 增强了思考块签名的清洗逻辑。系统现在能自动识别因服务器重启导致的“无主签名”,并在发送给上游前主动将其剥离,从根本上杜绝了由此引发了
400 Invalid signature报错。 - Rewind (回退) 检测机制: 升级缓存层,引入消息计数(Message Count)校验。当用户回退对话历史并重新发送时,系统会自动重置签名状态,确保对话流的合法性。
- 全链路适配: 优化了 Claude、Gemini 及 z.ai (Anthropic) 的数据链路,确保消息计数在流式与非流式请求中均能精准传播。
- 400 错误自愈: 增强了思考块签名的清洗逻辑。系统现在能自动识别因服务器重启导致的“无主签名”,并在发送给上游前主动将其剥离,从根本上杜绝了由此引发了
- [OpenAI 鲁棒性增强] 优化重试策略与模型级限流 (PR #1093):
- 鲁棒重试: 强制最小 2 次请求尝试,确保单账号模式下也能有效应对瞬时网络抖动;移除了配额耗尽的硬中断,允许自动轮换账号。
- 模型级限流: 引入模型级限流隔离,避免单个模型限流锁定整个账号,确保账号下其他模型可用。
- 接口修复: 修复了 TokenManager 异步接口的 Email/ID 混用漏洞,确保限流记录准确。
- [系统鲁棒性] 统一重试与退避调度中心 (Unified Retry & Backoff Hub):
- 逻辑归一化: 将散落在各协议处理器中的重试逻辑抽象至
common.rs,实现全局统一调度。 - 强制退避延迟: 彻底修复了原先逻辑中解析不到
Retry-After就立即重试导致封号的问题。现在所有处理器在重试前必须通过共享模块执行物理等待,有效保护 IP 信誉。 - 激进参数调整: 针对 Google/Anthropic 频率限制,将 429 和 503 的初始退避时间显著上调至 5s-10s,大幅降低生产环境风控风险。
- 逻辑归一化: 将散落在各协议处理器中的重试逻辑抽象至
- [CLI 同步优化] 解决 Token 冲突与模型配置清理 (PR #1054):
- 自动冲突解决: 在设置
ANTHROPIC_API_KEY时自动移除冲突的ANTHROPIC_AUTH_TOKEN,解决 Claude CLI 同步报错问题。 - 环境变量清理: 同步时自动移除
ANTHROPIC_MODEL等可能干扰模型输出的环境变量,确保 CLI 使用标准模型。 - 配置健壮性: 优化了 API Key 为空时的处理方式,避免无效配置干扰。
- 自动冲突解决: 在设置
- [核心优化] 用量缩放功能默认关闭与联动机制 (Usage Scaling Default Off):
- 默认关闭: 基于用户反馈,将"启用用量缩放"功能从默认开启改为默认关闭,回归透明模式。
- 联动机制: 建立了缩放与自动压缩 (L1/L2/L3) 的联动关系。只有当用户主动开启缩放时,才同步激活自动压缩逻辑。
- 解决痛点: 修复了用户反馈的"缩放致盲"问题 - 默认模式下客户端能看到真实 Token 用量,在接近 200k 时触发原生
/compact提示,避免死锁。 - 功能定位: 将缩放+压缩重新定义为"激进扩容模式",仅供处理超大型项目时手动开启,提升系统稳定性与可预测性。
- ⚠️ 升级提醒: 从旧版本升级的用户,建议在"设置 → 实验性功能"中手动关闭"启用用量缩放",以获得更稳定透明的体验。
- [协议优化] 全协议自动流式转换 (Auto-Stream Conversion):
- 全链路覆盖: 对 OpenAI (Chat/Legacy/Codex) 和 Gemini 协议实现了强制内部流式化转换。即使客户端请求非流式 (
stream: false),后端也会自动建立流式连接与上游通信,极大提升了连接稳定性和配额利用率。 - 智能聚合: 实现了高性能的流式聚合器,在兼容旧版客户端的同时,还能在后台实时捕获 Thinking 签名,有效解决了非流式请求下签名丢失导致后续工具调用失败的问题。
- 全链路覆盖: 对 OpenAI (Chat/Legacy/Codex) 和 Gemini 协议实现了强制内部流式化转换。即使客户端请求非流式 (
- [核心修复] 错误日志元数据补全 (Log Metadata Fix):
- 问题背景: 之前版本在 429/503 等严重错误(如账号耗尽)发生时,日志记录中遗漏了
mapped_model和account_email字段,导致无法定位出错的具体模型和账号。 - 修复内容: 在 OpenAI 和 Claude 协议的所有错误退出路径(包括 Token 获取失败、转换异常、重试耗尽)中强制注入了元数据 Header。现在即使请求失败,流量日志也能准确显示目标模型和上下文信息,极大提升了排查效率。
- 问题背景: 之前版本在 429/503 等严重错误(如账号耗尽)发生时,日志记录中遗漏了
- [重大架构] 深度迁移至 Tauri v2 (Tauri v2 Migration):
-
v4.0.0 (2026-01-25):
- [核心功能] 后台任务模型可配置 (Background Model Configuration):
- 功能增强: 允许用户自定义“后台任务”( 如标题生成、摘要压缩)使用的模型。不再强制绑定
gemini-2.5-flash。 - UI 更新: 在“模型映射”页面新增了“后台任务模型”配置项,支持从下拉菜单中选择任意可用模型(如
gemini-3-flash)。 - 路由修复: 修复了后台任务可能绕过用户自定义映射的问题。现在
internal-background-task会严格遵循用户的重定向规则。
- 功能增强: 允许用户自定义“后台任务”( 如标题生成、摘要压缩)使用的模型。不再强制绑定
- [重要通告] 上游模型容量预警 (Capacity Warning):
- 容量不足: 接获大量反馈,上游 Google 的
gemini-2.5-flash和gemini-2.5-flash-lite模型当前正处于极度容量受限状态 (Rate Limited / Capacity Exhausted)。 - 建议操作: 为保证服务可用性,建议用户暂时在“自定义映射”中将上述两个模型重定向至其他模型(如
gemini-3-flash或gemini-3-pro-high),直到上游恢复。
- 容量不足: 接获大量反馈,上游 Google 的
- [核心修复] Windows 启动参数支持 (PR #973):
- 问题修复: 修复了 Windows 平台下启动参数(如内网穿透配置等)无法正确解析生效的问题。感谢 @Mag1cFall 的贡献。
- [核心修复] Claude 签名校验增强 (PR #1009):
- 功能优化: 增强了 Claude 模型的签名校验逻辑,修复了在长对话或复杂工具调用场景下可能出现的 400 错误。
- 兼容性提升: 引入最小签名长度校验,并对合法长度的未知签名采取信任策略,大幅提升了 JSON 工具调用的稳定性。
- [国际化] 越南语翻译优化 (PR #1017):
- 翻译精简: 对关于页面等区域的越南语翻译进行了精简与标点优化。
- [国际化] 土耳其语托盘翻 译增强 (PR #1023):
- 功能优化: 为系统托盘菜单增加了完整的土耳其语翻译支持,提升了土耳其语用户的操作体验。
- [功能增强] 多语言支持与 I18n 设置 (PR #1029):
- 新增语言支持: 增加了葡萄牙语、日语、越南语、土耳其语、俄语等多国语言的更完整支持。
- I18n 设置面板: 在设置页面新增了语言选择器,支持即时切换应用显示语言。
- [国际化] 韩语支持与界面优化 (New):
- 韩语集成: 新增了完整的韩语 (
ko) 翻译支持,现在可以在设置中选择韩语界面。 - UI 交互升级: 重构了顶部导航栏的语言切换器,由原来的单次点击循环切换升级为更直观的下拉菜单,展示语言缩写与全称,提升了多语言环境下的操作体验。
- 韩语集成: 新增了完整的韩语 (
- [核心功能] 后台任务模型可配置 (Background Model Configuration):
-
v3.3.49 (2026-01-22):
-
[核心修复] Thinking 后中断与 0 Token 防御 (Fix Thinking Interruption):
- 问题背景: 针对 Gemini 等模型在输出 Thinking 内容后流意外中断,导致 Claude 客户端收到 0 Token 响应并报错死锁的问题。
- 防御机制:
- 状态追踪: 实时监测流式响应中是否“只想未说”(已发送 Thinking 但未发送 Content)。
- 自动兜底: 当检测到此类中断时,系统会自动闭合 Thinking 块,注入系统提示信息,并模拟正常的 Usage 数据,确保客户端能优雅结束会话。
-
[核心修复] 移除 Flash Lite 模型以修复 429 错误 (Fix 429 Errors):
- 问题背景: 今日监测发现
gemini-2.5-flash-lite频繁出现 429 错误,具体原因为 上游 Google 容器容量耗尽 (MODEL_CAPACITY_EXHAUSTED),而非通常的账号配额不足。 - 紧急修复: 将所有系统内部默认的
gemini-2.5-flash-lite调用(如后台标题生成、L3 摘要压缩)及预设映射全部替换为更稳定的gemini-2.5-flash。 - 用户提醒: 如果您在“自定义映射”或“预设”中手动使用了
gemini-2.5-flash-lite,请务必修改为其他模型,否则可能会持续遇到 429 错误。
- 问题背景: 今日监测发现
-
[性能优化] 设置项即时生效 (Fix PR #949):
- 即时生效: 修复了语言切换需要手动点击保存的问题。现在修改语言设置会立即应用到整个 UI。
-
[代码清理] 后端架构重构与优化 (PR #950):
- 架构精简: 深度重构了代理层的 Mapper 和 Handler 逻辑,移除了冗余模块(如
openai/collector.rs),显著提升了代码的可维护性。 - 稳定性增强: 优化了 OpenAI 与 Claude 协议的转换链路,统一了图片配置解析逻辑,并加固了上下文管理器的健壮性。
- 架构精简: 深度重构了代理层的 Mapper 和 Handler 逻辑,移除了冗余模块(如
-
[核心修复] 设置项同步策略更新:
- 状态同步: 修正了主题切换的即时应用逻辑,并解决了
App.tsx与Settings.tsx之间的状态冲突,确保配置加载过程中的 UI 一致性。
- 状态同步: 修正了主题切换的即时应用逻辑,并解决了
-
[核心优化] 上下文压缩与 Token 节省:
- 由于 Claude CLI 在恢复历史记录时会发送大量上下文,现已将压缩阈值改为可配置并降低默认值。
- L3 摘要重置阈值由 90% 降至 70%,在 token 堆积过多前提前进行压缩节省额度。
- 前端 UI 增强:在实验性设置中新增 L1/L2/L3 压缩阈值滑块,支持动态自定义。
-
[功能增强] API 监控看板功能升级 (PR #951):
- 账号筛选: 新增按账号筛选流量日志的功能,支持在大流量环境下精准追踪特定账号的调用情况。
- 详情深度增强: 监控详情页现在可以完整显示请求协议(OpenAI/Anthropic/Gemini)、使用账号、映射后的物理模型等关键元数据。
- UI 与国际化: 优化了监控详情的布局,并补全了 8 种语言的相关翻译。
-
[JSON Schema 优化] 递归收集 $defs 并完善回退处理 (PR #953):
- 递归收集: 添加了
collect_all_defs()以递归方式从所有模式层级收集$defs/definitions,解决了嵌套定义丢失的问题。 - 引用平坦化: 始终运行
flatten_refs()以捕获并处理孤立的$ref字段。 - 回退机制: 为未解析的
$ref添加了回退逻辑,将其转换为带有描述性提示的字符串类型。 - 稳定性增强: 新增了针对嵌套定义和未解析引用的测试用例,确保 Schema 处理的健壮性。
- 递归收集: 添加了
-
[核心修复] 账号索引保护 (Fix Issue #929):
- 安全加固: 移除了加载失败时的自动删除逻辑,防止在升级或环境异常时意外丢失账号索引,确保用户数据安全。
-
[核心优化] 路由器与模型映射深度优化 (PR #954):
- 路由器确定性优先级: 修复了路由器在处理多通配符模式时的不确定性问题,实现了基于模式长度和复杂度的确定性匹配优先级。
-
[稳定性增强] OAuth 回调与解析优化 (Fix #931, #850, #778):
- 鲁棒解析: 优化了本地回调服务器的 URL 解析逻辑,不再依赖单一分割符,提升了不同浏览器下的兼容性。
- 调试增强: 增加了原始请求 (Raw Request) 记录功能,当授权失败时可直接在日志中查看原始数据,方便定位网络拦截问题。
-
[网络优化] OAuth 通信质量提升 (Issue #948, #887):
- 延时保障: 将授权请求超时时间延长至 60 秒,大幅提升了在代理环境下的 Token 交换成功率。
- 错误指引: 针对 Google API 连接超时或重置的情况,新增了明确的中文代理设置建议,降低排查门槛。
-
[体验优化] 上游代理配置校验与提示增强 (Contributed by @zhiqianzheng):
- 配置校验: 当用户启用上游代理但未填写代理地址时,保存操作将被阻止并显示明确的错误提示,避免无效配置导致的连接失败。
- 重启提醒: 成功保存代理配置后,系统会提示用户需要重启应用才能使配置生效,降低用户排查成本。
- 多语言支持: 新增简体中文、繁体中文、英文、日语的相关翻译。
-
-
v3.3.48 (2026-01-21):
- [核心修复] Windows 控制台闪烁问题 (Fix PR #933):
- 问题背景: Windows 平台在启动或执行后台命令时,偶尔会弹出短暂的 CMD 窗口,影响用户体验。
- 修复内容: 在
cloudflared进程创建逻辑中添加CREATE_NO_WINDOW标志,确保所有后台进程静默运行。 - 影响范围: 解决了 Windows 用户在启动应用或 CLI 交互时的窗口闪烁问题。
- [核心修复] Windows 控制台闪烁问题 (Fix PR #933):
-
v3.3.47 (2026-01-21):
- [核心修复] 图片生成 API 参数映射增强 (Fix Issue #911):
- 功能: 支持从 OpenAI 参数 (
size,quality) 解析配置,支持动态宽高比计算,quality: hd自动映射为 4K 分辨率。 - 影响: 显著提升 Images API 兼容性,OpenAI 与 Claude 协议均受支持。
- 功能: 支持从 OpenAI 参数 (
- [功能增强] Cloudflared 内网穿透支持 (PR #923):
- 核心功能: 集成
cloudflared隧道支持,允许用户在无公网 IP 或处于复杂内网环境下,通过 Cloudflare 隧道一键发布 API 服务。 - 易用性优化: 前端新增 Cloudflared 配置界面,支持状态监控、日志查看及一键开关隧道。
- 国际化补全: 补全了繁体中文、英文、日文、韩文、越南语、土耳其语、俄语等 8 国语言的 Cloudflared 相关翻译。
- 核心功能: 集成
- [核心修复] 解决 Git 合并冲突导致的启动失败:
- 修复内容: 解决了
src-tauri/src/proxy/handlers/claude.rs中因多进程并行合并产生的<<<<<<< HEAD冲突标记。 - 影响范围: 恢复了后端服务的编译能力,修复了应用启动即崩溃的问题。
- 修复内容: 解决了
- [核心优化] 三层渐进式上下文压缩 (3-Layer Progressive Context PCC):
- 背景: 长对话场景下频繁触发 "Prompt is too long" 错误,手动
/compact操作繁琐,且现有压缩策略会破坏 LLM 的 KV Cache,导致成本飙升 - 解决方案 - 多层渐进式压缩策略:
- Layer 1 (60% 压力): 工具消息智能裁剪
- 删除旧的工具调用/结果消息,保留最近 5 轮交互
- 完全不破坏 KV Cache(只删除消息,不修改内容)
- 压缩率:60-90%
- Layer 2 (75% 压力): Thinking 内容压缩 + 签名保留
- 压缩
assistant消息中的 Thinking 块文本内容(替换为 "...") - 完整保留
signature字段,解决 Issue #902(签名丢失导致 400 错误) - 保护最近 4 条消息不被压缩
- 压缩率:70-95%
- 压缩
- Layer 3 (90% 压力): Fork 会话 + XML 摘要
- 使用
gemini-2.5-flash-lite生成 8 节 XML 结构化摘要(成本极低) - 提取并保留最后一个有效 Thinking 签名
- 创建新的消息序列:
[User: XML摘要] + [Assistant: 确认] + [用户最新消息] - 完全不破坏 Prompt Cache(前缀稳定,只追加)
- 压缩率:86-97%
- 使用
- Layer 1 (60% 压力): 工具消息智能裁剪
- 技术实现:
- 新增模块:
context_manager.rs中实现 Token 估算、工具裁剪、Thinking 压缩、签名提取等核心功能 - 辅助函数:
call_gemini_sync()- 可复用的同步上游调用函数 - XML 摘要模板: 8 节结构化摘要(目标、技术栈、文件状态、代码变更、调试历史、计划、偏好、签名)
- 渐进式触发: 按压力等级自动触发,每次压缩后重新估算 Token 用量
- 新增模块:
- 成本优化:
- Layer 1: 完全无成本(不破坏缓存)
- Layer 2: 低成本(仅破坏部分缓存)
- Layer 3: 极低成本(摘要生成使用 flash-lite,新会话完全缓存友好)
- 综合节省: 86-97% Token 成本,同时保持签名链完整性
- 用户体验:
- 自动化:无需手动
/compact,系统自动处理 - 透明化:详细日志记录每层压缩的触发和效果
- 容错性:Layer 3 失败时返回友好错误提示
- 自动化:无需手动
- 影响范围: 解决长对话场景下的上下文管理问题,显著降低 API 成本,确保工具调用链完整性
- 背景: 长对话场景下频繁触发 "Prompt is too long" 错误,手动
- [核心优化] 上下文估算与缩放算法增强 (PR #925):
- 背景: 在 Claude Code 等长对话场景下,固定的 Token 估算算法(3.5 字符/token)在中英文混排时误差极大,导致三层压缩逻辑无法及时触发,最终仍会报 "Prompt is too long" 错误
- 解决方案 - 动态校准 + 多语言感知:
- 多语言感知估算:
- ASCII/英文: 约为 4 字符/Token(针对代码和英文文档优化)
- Unicode/CJK (中日韩): 约为 1.5 字符/Token(针对 Gemini/Claude 分词特点)
- 安全余量: 在计算结果基础上额外增加 15% 的安全冗余
- 动态校准器 (
estimation_calibrator.rs):- 自学习机制: 记录每次请求的"估算 Token 数"与 Google API 返回的"实际 Token 数"
- 校准因子: 使用指数移动平均 (EMA, 60% 旧比例 + 40% 新比例) 维护校准系数
- 保守初始化: 初始校准系数为 2.0,确保系统运行初期极其保守地触发压缩
- 自动收敛: 根据实际数据自动修正,使估算值越来越接近真实值
- 整合三层压缩框架:
- 在所有估算环节(初始估算、Layer 1/2/3 后重新估算)使用校准后的 Token 数
- 每层压缩后记录详细的校准因子日志,便于调试和监控
- 多语言感知估算:
- 技术实现:
- 新增模块:
estimation_calibrator.rs- 全局单例校准器,线程安全 - 修改文件:
claude.rs,streaming.rs,context_manager.rs - 校准数据流: 流式响应收集器 → 提取真实 Token 数 → 更新校准器 → 下次请求使用新系数
- 新增模块:
- 用户体验:
- 透明化: 日志中显示原始估算值、校准后估算值、校准因子,便于理解系统行为
- 自适应: 系统会根据用户的实际使用模式(中英文比例、代码量等)自动调整
- 精准触发: 压缩逻辑基于更准确的估算值,大幅降低"漏判"和"误判"概率
- 影响范围: 显著提升上下文管理的精准度,解决 Issue #902 和 #867 中反馈的自动压缩失效问题,确保长对话稳定性
- [关键修复] Thinking 签名恢复逻辑优化:
- 背景: 在重试场景下,签名检查逻辑未检查 Session Cache,导致错误禁用 Thinking 模式,产生 0 token 请求和响应失败
- 问题表现:
- 重试时显示 "No valid signature found for function calls. Disabling thinking"
- 流量日志显示
I: 0, O: 0(实际请求成功但 Token 未记录) - 客户端可能无法接收到响应内容
- 修复内容:
- 扩展签名检查范围:
has_valid_signature_for_function_calls()现在检查 Session Cache - 检查优先级: Global Store → Session Cache (新增) → Message History
- 详细日志: 添加签名来源追踪日志,便于调试
- 扩展签名检查范围:
- 技术实现:
- 修改
request.rs中的签名验证逻辑 - 新增
session_id参数传递到签名检查函数 - 添加
[Signature-Check]系列日志用于追踪签名恢复过程
- 修改
- 影响: 解决重试场景下的 Thinking 模式降级问题,确保 Token 统计准确性,提升长会话稳定性
- [核心修复] 通用参数对齐引擎 (Universal Parameter Alignment Engine):
- 背景: 解决 Gemini API 在调用工具(Tool Use)时因参数类型不匹配产生的
400 Bad Request错误。 - 修复内容:
- 实现参数对齐引擎: 在
json_schema.rs中实现fix_tool_call_args,基于 JSON Schema 自动将字符串类型的数字/布尔值转换为目标类型,并处理非法字段。 - 多协议重构: 同步重构了 OpenAI 和 Claude 协议层,移除了硬编码的工具参数修正逻辑,改用统一的对齐引擎。
- 实现参数对齐引擎: 在
- 解决问题: 修复了
local_shell_call、apply_patch等工具在多级反代或特定客户端下参数被错误格式化为字符串导致的异常。 - 影响: 显著提升了工具调用的稳定性,减少了上游 API 的 400 错误。
- 背景: 解决 Gemini API 在调用工具(Tool Use)时因参数类型不匹配产生的
- [功能增强] 画图模型配额保护支持 (Fix Issue #912):
- 问题背景: 用户反馈画图模型(G3 Image)没有配额保护功能,导致配额耗尽的账号仍被用于画图请求
- 修复内容:
- 后端配置: 在
config.rs的default_monitored_models()中添加gemini-3-pro-image,与智能预热和配额关注列表保持一致 - 前端 UI: 在
QuotaProtection.tsx中添加画图模型选项,调整布局为一行4个模型(与智能预热保持一致)
- 后端配置: 在
- 影响范围:
- ✅ 向后兼容:已有配置不受影响,新用户或重置配置后会自动包含画图模型
- ✅ 完整保护:现在所有4个核心模型(Gemini 3 Flash、Gemini 3 Pro High、Claude 4.5 Sonnet、Gemini 3 Pro Image)都受配额保护监控
- ✅ 自动触发:当画图模型配额低于阈值时,账号会自动加入保护列表,避免继续消耗
- [传输层优化] 流式响应防缓冲优化 (Streaming Response Anti-Buffering):
- 背景: 在 Nginx 等反向代理后部署时,流式响应可能被代理缓冲,导致客户端延迟增加
- 修复内容:
- 添加 X-Accel-Buffering Header: 在所有流式响应中注入
X-Accel-Buffering: no头部 - 多协议覆盖: Claude (
/v1/messages)、OpenAI (/v1/chat/completions) 和 Gemini 原生协议全部支持
- 添加 X-Accel-Buffering Header: 在所有流式响应中注入
- 技术细节:
- 修改文件:
claude.rs:L877,openai.rs:L314,gemini.rs:L240 - 该 Header 告诉 Nginx 等反向代理不要缓冲流式响应,直接透传给客户端
- 修改文件:
- 影响: 显著降低反向代理场景下的流式响应延迟,提升用户体验
- [错误恢复增强] 多协议签名错误自愈提示词 (Multi-Protocol Signature Error Recovery):
- 背景: 当 Thinking 模式下出现签名错误时,仅剔除签名可能导致模型生成空响应或简单的 "OK"
- 修复内容:
- Claude 协议增强: 在现有签名错误重试逻辑中追加修复提示词,引导模型重新生成完整响应
- OpenAI 协议实现: 新增 400 签名错误检测和修复提示词注入逻辑
- Gemini 协议实现: 新增 400 签名 错误检测和修复提示词注入逻辑
- 修复提示词:
[System Recovery] Your previous output contained an invalid signature. Please regenerate the response without the corrupted signature block. - 技术细节:
- Claude:
claude.rs:L1012-1030- 增强现有逻辑,支持 String 和 Array 消息格式 - OpenAI:
openai.rs:L391-427- 完整实现,使用OpenAIContentBlock::Text类型 - Gemini:
gemini.rs:L17, L299-329- 修改函数签名支持可变 body,注入修复提示词
- Claude:
- 影响:
- ✅ 提升错误恢复成功率:模型收到明确指令,避免生成无意义响应
- ✅ 多协议一致性:所有 3 个协议具有相同的错误恢复能力
- ✅ 用户体验改善:减少因签名错误导致的对话中断
- [核心修复] 图片生成 API 参数映射增强 (Fix Issue #911):
-
v3.3.46 (2026-01-20):
- [功能增强] Token 使用统计 (Token Stats) 深度优化与国际化标准化 (PR #892):
- UI/UX 统一: 实现了自定义 Tooltip 组件,统一了面积图、柱状图和饼图的悬浮提示样式,增强了深色模式下的对比度与可读性。
- 视觉细节磨砂: 优化了图表光标和网格线,移除冗余的 hover 高亮,使图表界面更加清爽专业。
- 自适应布局: 改进了图表容器的 Flex 布局,确保在不同窗口尺寸下均能填充满垂直空间,消除了图表下方的留白。
- 分账号趋势统计: 新增了“按账号查看”模式,支持通过饼图和趋势图直观分析各账号的 Token 消耗占比与活跃度。
- 国际化 (i18n) 标准化: 解决了
ja.json、zh-TW.json、vi.json、ru.json、tr.json等 多国语言文件中的键值重复警告。补全了account_trend、by_model等缺失翻译,确保 8 种语言下的 UI 展现高度一致。
- [核心修复] 移除 [DONE] 停止序列以防止输出截断 (PR #889):
- 问题背景:
[DONE]是 SSE (Server-Sent Events) 协议的标准结束标记,在代码和文档中经常出现。将其作为stopSequence会导致模型在解释 SSE 相关内容时输出被意外截断。 - 修复内容: 从 Gemini 请求的
stopSequences数组中移除了"[DONE]"标记。 - 技术说明:
- Gemini 流的真正结束由
finishReason字段控制,无需依赖stopSequence - SSE 层面的
"data: [DONE]"已在mod.rs中单独处理
- Gemini 流的真正结束由
- 影响范围: 解决了模型在生成包含 SSE 协议说明、代码示例等内容时被提前终止的问题 (Issue #888)。
- 问题背景:
- [部署优化] Docker 镜像构建双模适配 (Default/China Mode):
- 双模架构: 引入
ARG USE_CHINA_MIRROR构建参数。默认模式保持原汁原味的 Debian 官方源(适合海外/云构建);开启后自动切换为清华大学 (TUNA) 镜像源(适合国内环境)。 - 灵活性大幅提升: 解决了硬编码国内源导致海外构建缓慢的问题,同时保留了国内用户的加速体验。
- 双模架构: 引入
- [稳定性修复] VNC 与容器启动逻辑加固 (PR #881):
- 僵尸进程清理: 优化了
start.sh中的 cleanup 逻辑,改用pkill精准查杀 Xtigervnc 和 websockify 进程,并清理/tmp/.X11-unix锁文件,解决了重启后 VNC 无法连接的各种边缘情况。
- 僵尸进程清理: 优化了
- [功能增强] Token 使用统计 (Token Stats) 深度优化与国际化标准化 (PR #892):
-





