🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx skills add https://skills.sh/aradotso/trending-skills/antigravity-manager
💡 提示:需要 Node.js 和 NPM
Antigravity Manager
技能来自 ara.so — Daily 2026 Skills 系列。
Antigravity Manager 是一个专业的 AI 账户管理器和代理网关。它接收 Google(Gemini)和 Anthropic(Claude)的 Web 会话令牌,并将其暴露为标准 API 端点(OpenAI 兼容、Anthropic 原生和 Gemini 原生格式),同时具备智能多账户轮换、配额跟踪和自动故障转移功能。
主要功能:
- 多账户管理,提供实时配额仪表盘
- 协议转换:Web 会话 → OpenAI / Anthropic / Gemini API
- 遇到 429/401 错误时自动轮换(毫秒级故障转移)
- 模型路由和重映射
- 桌面应用(Tauri v2 + React + Rust)或无头 Docker/服务器模式
安装
选项 A:单行脚本(Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash
安装特定版本:
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash -s -- --version 4.1.30
试运行(预览但不安装):
curl -fsSL https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/v4.1.30/install.sh | bash -s -- --dry-run
选项 B:Windows (PowerShell)
irm https://raw.githubusercontent.com/lbjlaq/Antigravity-Manager/main/install.ps1 | iex
选项 C:Homebrew (macOS / Linuxbrew)
brew tap lbjlaq/antigravity-manager https://github.com/lbjlaq/Antigravity-Manager
brew install --cask antigravity-tools
选项 D:Docker(推荐用于服务器/NAS)
docker run -d --name antigravity-manager \
-p 8045:8045 \
-e API_KEY=$ANTIGRAVITY_API_KEY \
-e WEB_PASSWORD=$ANTIGRAVITY_WEB_PASSWORD \
-e ABV_MAX_BODY_SIZE=104857600 \
-v ~/.antigravity_tools:/root/.antigravity_tools \
lbjlaq/antigravity-manager:latest
Docker Compose:
# docker-compose.yml
version: "3.8"
services:
antigravity:
image: lbjlaq/antigravity-manager:latest
container_name: antigravity-manager
restart: unless-stopped
ports:
- "8045:8045"
environment:
- API_KEY=${ANTIGRAVITY_API_KEY}
- WEB_PASSWORD=${ANTIGRAVITY_WEB_PASSWORD}
- ABV_MAX_BODY_SIZE=104857600
volumes:
- ~/.antigravity_tools:/root/.antigravity_tools
docker compose up -d
docker logs antigravity-manager # 查看日志 / 恢复遗忘的密钥
选项 E:手动下载
从 GitHub Releases 下载:
- macOS:
.dmg(Apple Silicon + Intel) - Windows:
.msi或便携版.zip - Linux:
.deb、.rpm或.AppImage
身份验证 / 安全模型
Antigravity 使用两套独立的凭证:
| 凭证 | 环境变量 | 配置键 | 用途 |
|---|---|---|---|
| API Key | API_KEY |
api_key |
验证 AI API 调用(Authorization: Bearer ...) |
| Web 密码 | WEB_PASSWORD |
admin_password |
登录管理 Web UI |
场景 A — 仅设置 API_KEY:
- Web UI 登录:使用
API_KEY - API 调用:使用
API_KEY
场景 B — 两者都设置(推荐):
- Web UI 登录:仅使用
WEB_PASSWORD(API Key 将被拒绝登录) - API 调用:仅使用
API_KEY
恢复凭证:
docker logs antigravity-manager
# 或
grep -E '"api_key"|"admin_password"' ~/.antigravity_tools/gui_config.json
API 端点
代理服务器默认运行在端口 8045。
OpenAI 兼容(适用于任何 OpenAI SDK)
POST http://localhost:8045/v1/chat/completions
Authorization: Bearer $ANTIGRAVITY_API_KEY
Anthropic 原生(Claude Code 等)
POST http://localhost:8045/v1/messages
Authorization: Bearer $ANTIGRAVITY_API_KEY
Gemini 原生
POST http://localhost:8045/v1/models/{model}:generateContent
Authorization: Bearer $ANTIGRAVITY_API_KEY
代码示例
Python — OpenAI SDK(通过 Antigravity 使用 Gemini)
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045/v1",
)
response = client.chat.completions.create(
model="gemini-2.5-pro",
messages=[
{"role": "user", "content": "用通俗的语言解释量子纠缠。"}
],
stream=True,
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Python — Anthropic SDK(通过 Antigravity 使用 Claude)
import os
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045",
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[
{"role": "user", "content": "写一首关于分布式系统的俳句。"}
],
)
print(message.content[0].text)
Python — 使用 Anthropic 流式传输
import os
import anthropic
client = anthropic.Anthropic(
api_key=os.environ["ANTIGRAVITY_API_KEY"],
base_url="http://localhost:8045",
)
with client.messages.stream(
model="claude-opus-4-5",
max_tokens=2048,
system="你是一个乐于助人的编码助手。",
messages=[{"role": "user", "content": "用 Rust 实现二分查找。"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
TypeScript / Node — OpenAI SDK
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.ANTIGRAVITY_API_KEY!,
baseURL: "http://localhost:8045/v1",
});
async function chat(prompt: string): Promise<string> {
const response = await client.chat.completions.create({
model: "gemini-2.5-flash",
messages: [{ role: "user", content: prompt }],
});
return response.choices[0].message.content ?? "";
}
// 通过 Imagen 3 生成图像
async function generateImage(prompt: string) {
const response = await client.images.generate({
model: "imagen-3.0-generate-002",
prompt,
size: "1024x1024", // 映射到 Imagen 3 宽高比
n: 1,
});
return response.data[0].url;
}
cURL — 快速测试
# 测试 OpenAI 兼容端点
curl -s http://localhost:8045/v1/chat/completions \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-2.5-pro",
"messages": [{"role": "user", "content": "Hello!"}]
}' | jq '.choices[0].message.content'
# 测试 Anthropic 端点
curl -s http://localhost:8045/v1/messages \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "Hello!"}]
}' | jq '.content[0].text'
连接 Claude Code CLI
Claude Code 使用 Anthropic 协议。将其指向 Antigravity:
# 启动 Claude Code 前设置环境变量
export ANTHROPIC_API_KEY=$ANTIGRAVITY_API_KEY
export ANTHROPIC_BASE_URL=http://localhost:8045
claude # 启动 Claude Code — 它将使用 Antigravity 作为后端
或者在项目根目录创建 .env:
# .env
ANTHROPIC_API_KEY=your-antigravity-api-key
ANTHROPIC_BASE_URL=http://localhost:8045
连接流行的 AI 客户端
Cherry Studio
- 打开 Cherry Studio → 设置 → API 提供商
- 选择 OpenAI 兼容
- 基础 URL:
http://localhost:8045/v1 - API Key:你的
ANTIGRAVITY_API_KEY
Cursor
在 Cursor 设置中,设置:
- OpenAI Base URL:
http://localhost:8045/v1 - API Key:你的
ANTIGRAVITY_API_KEY
Continue.dev
// ~/.continue/config.json
{
"models": [
{
"title": "Gemini Pro (Antigravity)",
"provider": "openai",
"model": "gemini-2.5-pro",
"apiKey": "YOUR_ANTIGRAVITY_API_KEY",
"apiBase": "http://localhost:8045/v1"
},
{
"title": "Claude (Antigravity)",
"provider": "anthropic",
"model": "claude-sonnet-4-5",
"apiKey": "YOUR_ANTIGRAVITY_API_KEY",
"apiBase": "http://localhost:8045"
}
]
}
配置文件
配置文件存储在 ~/.antigravity_tools/gui_config.json:
{
"api_key": "sk-your-api-key",
"admin_password": "your-web-ui-password",
"proxy": {
"port": 8045,
"max_body_size": 104857600,
"admin_password": "your-web-ui-password"
},
"model_routes": [
{
"pattern": "gpt-4.*",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-3.5.*",
"target": "gemini-2.5-flash"
}
]
}
环境变量(Docker / 服务器模式)
| 变量 | 描述 | 默认值 |
|---|---|---|
API_KEY |
用于验证代理请求的 API 密钥 | 必需 |
WEB_PASSWORD |
Web UI 管理员密码 | 回退到 API_KEY |
ABV_MAX_BODY_SIZE |
最大请求体大小(字节,用于图片上传) | 104857600 (100MB) |
模型路由
Antigravity 的模型路由器允许你将传入的模型名称重映射到实际的上游模型。当客户端硬编码模型名称(如 gpt-4)时,此功能非常有用。
通过 Web UI(API 代理 → 模型路由器)或 gui_config.json 配置:
{
"model_routes": [
{
"pattern": "gpt-4-turbo",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-4o",
"target": "gemini-2.5-pro"
},
{
"pattern": "gpt-3\\.5.*",
"target": "gemini-2.5-flash"
},
{
"pattern": "claude-3-opus.*",
"target": "claude-opus-4-5"
}
]
}
分层路由(自动):Antigravity 根据账户类型(Ultra → Pro → Free)和配额重置频率对账户进行优先级排序,优先消耗快速重置的账户。
后台任务降级(自动):检测为后台任务的请求(例如 Claude CLI 的标题生成)会自动重定向到 Flash 层级模型,以保留高级配额。
账户管理
通过 UI 添加账户
- 打开 Antigravity Manager 桌面应用或 Web UI(
http://localhost:8045) - 导航到 账户
- 点击 添加账户 — 应用会生成一个 OAuth 2.0 授权 URL
- 在任何浏览器中完成授权
- 应用会自动捕获回调;如有需要,点击“我已授权,继续”
批量导入(JSON)
从其他工具导出,并在账户页面导入:
[
{
"token": "session-token-1",
"type": "google",
"label": "account-work"
},
{
"token": "session-token-2",
"type": "anthropic",
"label": "account-personal"
}
]
从 v1 迁移
Antigravity 会在首次启动时自动检测并迁移 v1 数据库格式 — 无需手动操作。
配额监控
仪表盘显示所有账户的实时配额:
- Gemini Pro 剩余调用次数(各账户平均值)
- Gemini Flash 剩余调用次数
- Claude 剩余调用次数
- Imagen 3 图像生成配额
智能推荐:仪表盘算法会选择剩余配额最多的账户,并提供一键切换功能。
403 检测:上游被封禁的账户会自动标记,并在轮换时跳过。
从源码构建(Rust + Tauri v2)
先决条件
# Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Node.js (用于前端)
node --version # 需要 v18+
# Tauri v2 CLI
cargo install tauri-cli --version "^2"
# 系统依赖 (Linux)
sudo apt install libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev
构建与运行
git clone https://github.com/lbjlaq/Antigravity-Manager.git
cd Antigravity-Manager
npm install # 安装前端依赖
cargo tauri dev # 以开发模式运行
cargo tauri build # 构建发布二进制文件 → src-tauri/target/release/bundle/
仅构建无头服务器(无 GUI)
cd src-tauri
cargo build --release --features headless
./target/release/antigravity-manager --headless --port 8045
故障排除
端口 8045 已被占用
# 查找并终止进程
lsof -ti:8045 | xargs kill -9
# 或在 gui_config.json 中更改端口:
# "proxy": { "port": 8046 }
忘记 API 密钥或 Web 密码
# Docker
docker logs antigravity-manager | grep -E "api_key|password"
# 本地安装
cat ~/.antigravity_tools/gui_config.json | grep -E '"api_key"|"admin_password"'
账户显示 403 / 被封禁
该账户已被上游标记。在账户视图中,它会被标记为 403 徽章,并在轮换时自动跳过。添加一个新账户,然后移除/重新授权被封禁的账户。
请求失败并返回 429
Antigravity 会自动处理此问题(在几毫秒内轮换到下一个账户)。如果所有账户都已耗尽,请添加更多账户或等待配额重置。查看仪表盘了解各账户的配额状态。
macOS Gatekeeper 阻止应用
xattr -d com.apple.quarantine /Applications/Antigravity\ Tools.app
# 或使用以下方式安装:
brew install --cask antigravity-tools --no-quarantine
重启后 Docker 容器未保留账户
确保卷挂载正确:
docker run ... -v ~/.antigravity_tools:/root/.antigravity_tools ...
# 验证数据是否存在:
ls ~/.antigravity_tools/
Claude Code 无法连接
# 验证代理正在运行
curl -s http://localhost:8045/v1/models \
-H "Authorization: Bearer $ANTIGRAVITY_API_KEY"
# 检查环境变量是否已导出(不仅仅是设置)
export ANTHROPIC_BASE_URL=http://localhost:8045
export ANTHROPIC_API_KEY=$ANTIGRAVITY_API_KEY
echo $ANTHROPIC_BASE_URL # 应该打印出 URL
项目结构(供贡献者参考)
Antigravity-Manager/
├── src/ # React 前端 (TypeScript)
│ ├── components/ # UI 组件 (仪表盘、账户等)
│ └── pages/
├── src-tauri/ # Rust 后端
│ ├── src/
│ │ ├── main.rs # Tauri 应用入口
│ │ ├── proxy/ # Axum HTTP 代理服务器
│ │ │ ├── router.rs # 模型路由逻辑
│ │ │ ├── dispatcher.rs # 账户轮换
│ │ │ └── mapper.rs # 协议转换
│ │ ├── accounts/ # 账户存储与 OAuth
│ │ └── quota/ # 配额跟踪
│ └── Cargo.toml
├── docker/
│ └── Dockerfile
├── install.sh # Linux/macOS 安装程序
├── install.ps1 # Windows 安装程序
└── docker-compose.yml
📄 原始文档
完整文档(英文):
https://skills.sh/aradotso/trending-skills/antigravity-manager
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。

评论(0)