Antigravity to OpenAI API 代理服务 将 Google Antigravity API 转换为 OpenAI 兼容格式的代理服务,支持流式响应、工具调用和多账号管理。 Star History 功能特性 - ✅ OpenAI API 兼容格式 - ✅ 流…
Antigravity to OpenAI API 代理服务 将 Google Antigravity API 转换为 OpenAI 兼容格式的代理服务,支持流式响应、工具调用和多账号管理。 Star History 功能特性 - ✅ OpenAI API 兼容格式 - ✅ 流…
将 Google Antigravity API 转换为 OpenAI 兼容格式的代理服务,支持流式响应、工具调用和多账号管理。
Windows (cmd.exe):
curl -O https://raw.githubusercontent.com/liuw1535/antigravity2api-nodejs/main/setup.bat && setup.batWindows (PowerShell):
IwR -Uri https://raw.githubusercontent.com/liuw1535/antigravity2api-nodejs/main/setup.bat -OutFile setup.bat; .\setup.batLinux/macOS:
wget https://raw.githubusercontent.com/liuw1535/antigravity2api-nodejs/main/setup.sh && chmod +x setup.sh && ./setup.sh或使用 curl:
curl -O https://raw.githubusercontent.com/liuw1535/antigravity2api-nodejs/main/setup.sh && chmod +x setup.sh && ./setup.sh脚本会自动完成以下操作:
如果已经部署成功,可以使用启动脚本快速启动服务:
Windows:
start.batLinux/macOS:
chmod +x start.sh
./start.sh使用更新脚本可以安全地更新到最新版本(自动保存本地修改):
Windows:
update.batLinux/macOS:
chmod +x update.sh
./update.sh更新完成后,可以选择:
git stash popgit stash dropnpm install首次启动时,如果 .env 和 config.json 不存在,系统会自动创建默认配置文件。
你也可以手动复制示例文件:
cp .env.example .env
cp config.json.example config.json编辑 .env 文件配置必要参数:
# 必填配置(留空则自动生成随机凭据)
API_KEY=sk-text
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
JWT_SECRET=your-jwt-secret-key-change-this-in-production
# 可选配置
# PROXY=http://127.0.0.1:7890
# SYSTEM_INSTRUCTION=你是聊天机器人
# IMAGE_BASE_URL=http://your-domain.comnpm run login浏览器会自动打开 Google 授权页面,授权后 Token 会保存到 data/accounts.json。
npm start服务将在 http://localhost:8045 启动。
无需安装 Node.js,直接下载预编译的二进制文件即可运行。
从 GitHub Releases 下载对应平台的二进制文件:
| 平台 | 文件名 |
|---|---|
| Windows x64 | antigravity2api-win-x64.exe |
| Linux x64 | antigravity2api-linux-x64 |
| Linux ARM64 | antigravity2api-linux-arm64 |
| macOS x64 | antigravity2api-macos-x64 |
| macOS ARM64 | antigravity2api-macos-arm64 |
将以下文件放在二进制文件同目录下:
├── antigravity2api-win-x64.exe # 二进制文件
├── .env # 环境变量配置(可选,首次启动自动创建)
├── config.json.example # 配置示例文件(必需)
├── public/ # 静态文件目录(必需)
│ ├── index.html
│ ├── style.css
│ ├── assets/
│ │ └── bg.jpg
│ └── js/
│ ├── auth.js
│ ├── config.js
│ ├── main.js
│ ├── quota.js
│ ├── tokens.js
│ ├── ui.js
│ └── utils.js
└── data/ # 数据目录(自动创建)
└── accounts.json创建 .env 文件:
API_KEY=sk-your-api-key
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123
JWT_SECRET=your-jwt-secret-key-change-this-in-production
# IMAGE_BASE_URL=http://your-domain.com
# PROXY=http://127.0.0.1:7890Windows:
# 直接双击运行,或在命令行执行
antigravity2api-win-x64.exeLinux/macOS:
# 添加执行权限
chmod +x antigravity2api-linux-x64
# 运行
./antigravity2api-linux-x64config.json.example 创建 config.jsonconfig.json.example 必须与二进制文件在同一目录public/ 目录必须与二进制文件在同一目录data/ 目录会自动创建,用于存储 Token 数据创建 systemd 服务文件 /etc/systemd/system/antigravity2api.service:
[Unit]
Description=Antigravity2API Service
After=network.target
[Service]
Type=simple
User=www-data
WorkingDirectory=/opt/antigravity2api
ExecStart=/opt/antigravity2api/antigravity2api-linux-x64
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target启动服务:
sudo systemctl daemon-reload
sudo systemctl enable antigravity2api
sudo systemctl start antigravity2apinpm run docker:build该命令会自动:
.env.example 创建 .env(如果不存在)config.json.example 创建 config.json(如果不存在)data/、public/images/)docker-compose build 构建镜像docker compose up -ddocker compose logs -fdocker compose down如果需要手动构建,请先准备配置文件:
# 复制配置文件
cp .env.example .env
cp config.json.example config.json
# 创建必要目录
mkdir -p data public/images
# 构建镜像
docker build -t antigravity2api .docker run -d \
--name antigravity2api \
-p 8045:8045 \
-e API_KEY=sk-text \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=admin123 \
-e JWT_SECRET=your-jwt-secret-key \
-e IMAGE_BASE_URL=http://your-domain.com \
-v $(pwd)/data:/app/data \
-v $(pwd)/public/images:/app/public/images \
-v $(pwd)/.env:/app/.env \
-v $(pwd)/config.json:/app/config.json \
antigravity2apidocker logs -f antigravity2apidata/ 目录挂载到容器,保存 Token 数据public/images/ 目录挂载到容器,保存生成的图片.env 和 config.json 挂载到容器,支持热更新在 Zeabur 控制台创建新服务,使用以下镜像:
ghcr.io/liuw1535/antigravity2api-nodejs在服务设置中添加以下环境变量:
| 环境变量 | 说明 | 示例值 |
|---|---|---|
API_KEY |
API 认证密钥 | sk-your-api-key |
ADMIN_USERNAME |
管理员用户名 | admin |
ADMIN_PASSWORD |
管理员密码 | your-secure-password |
JWT_SECRET |
JWT 密钥 | your-jwt-secret-key |
IMAGE_BASE_URL |
图片服务基础 URL | https://your-domain.zeabur.app |
可选环境变量:
PROXY:代理地址SYSTEM_INSTRUCTION:系统提示词在服务的「Volumes」设置中添加以下挂载点:
| 挂载路径 | 说明 |
|---|---|
/app/data |
Token 数据存储 |
/app/public/images |
生成的图片存储 |
⚠️ 重要提示:
/app/data 和 /app/public/images 这两个目录/app/.env、/app/config.json 等),否则会导致必要配置文件被清空,项目无法启动在服务的「Networking」设置中绑定域名,然后将该域名设置到 IMAGE_BASE_URL 环境变量中。
保存配置后,Zeabur 会自动拉取镜像并启动服务。访问绑定的域名即可使用。
服务启动后,访问 http://localhost:8045 即可打开 Web 管理界面。
登录系统
.env 中配置的 ADMIN_USERNAME 和 ADMIN_PASSWORD 登录添加 Token
管理 Token
隐私模式
配置轮询策略
round_robin:均衡负载,每次请求切换 Tokenquota_exhausted:额度耗尽才切换request_count:自定义请求次数后切换修改配置
服务提供 OpenAI 兼容的 API 接口,详细使用说明请查看 API.md。
curl http://localhost:8045/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-text" \
-d '{
"model": "gemini-2.0-flash-exp",
"messages": [{"role": "user", "content": "你好"}]
}'data/accounts.json 支持多个账号,服务会自动轮换使用:
[
{
"access_token": "ya29.xxx",
"refresh_token": "1//xxx",
"expires_in": 3599,
"timestamp": 1234567890000,
"enable": true
},
{
"access_token": "ya29.yyy",
"refresh_token": "1//yyy",
"expires_in": 3599,
"timestamp": 1234567890000,
"enable": true
}
]enable: false 可禁用某个账号项目配置分为两部分:
基础配置文件,包含服务器、API 和默认参数设置。
首次启动时,如果 config.json 不存在,系统会自动从 config.json.example 复制一份默认配置。
配置示例:
…| 策略 | 说明 |
|---|---|
round_robin |
均衡负载:每次请求后切换到下一个 Token |
quota_exhausted |
额度耗尽才切换:持续使用当前 Token 直到额度用完(高性能优化) |
request_count |
自定义次数:每个 Token 使用指定次数后切换(默认策略) |
环境变量配置文件,包含敏感信息和可选配置:
| 环境变量 | 说明 | 必填 |
|---|---|---|
API_KEY |
API 认证密钥 | ✅ |
ADMIN_USERNAME |
管理员用户名 | ✅ |
ADMIN_PASSWORD |
管理员密码 | ✅ |
JWT_SECRET |
JWT 密钥 | ✅ |
PROXY |
代理地址(如:http://127.0.0.1:7890),也支持系统代理环境变量 | |
HTTP_PROXY/HTTPS_PROXY |
❌ | |
SYSTEM_INSTRUCTION |
系统提示词 | ❌ |
IMAGE_BASE_URL |
图片服务基础 URL | ❌ |
完整配置示例请参考 .env.example 文件。
# 启动服务
npm start
# 开发模式(自动重启)
npm run dev
# 登录获取 Token
npm run login
# 构建 Docker 镜像
npm run docker:build…对于 Pro 订阅账号,可以跳过 API 验证直接使用随机生成的 ProjectId:
config.json 文件中设置:{
"other": {
"skipProjectIdFetch": true
}
}运行 npm run login 登录时会自动使用随机生成的 ProjectId
已有账号也会在使用时自动生成随机 ProjectId
注意:此功能仅适用于 Pro 订阅账号。官方已修复免费账号使用随机 ProjectId 的漏洞。
当 OAuth 登录或添加 Token 时,系统会自动检测账号的订阅资格:
这一机制确保了:
本服务支持将开头连续的多条 system 消息与全局 SystemInstruction 合并:
请求消息:
[system] 你是助手
[system] 请使用中文回答
[user] 你好
合并后:
SystemInstruction = 全局配置的系统提示词 + "\n\n" + "你是助手\n\n请使用中文回答"
messages = [{role: user, content: 你好}]这一设计:
本服务支持三种 API 格式,每种格式都有完整的参数支持:
/v1/chat/completions){
"model": "gemini-2.0-flash-thinking-exp",
"max_tokens": 16000,
"temperature": 0.7,
"top_p": 0.9,
"top_k": 40,
"thinking_budget": 10000,
"reasoning_effort": "high",
"messages": [...]
}| 参数 | 说明 | 默认值 |
|---|---|---|
max_tokens |
最大输出 token 数 | 32000 |
temperature |
温度 (0.0-1.0) | 1 |
top_p |
Top-P 采样 | 1 |
top_k |
Top-K 采样 | 50 |
thinking_budget |
思考预算 (1024-32000) | 1024 |
reasoning_effort |
思考强度 (low/medium/high) |
- |
response_format |
支持响应格式 ({ "type": "json_object" },仅 Gemini 模型支持) |
- |
/v1/messages){No open issues yet, or sync has not completed.