Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
A

antigravity2api-nodejs

> 编程语言
Open source

Antigravity to OpenAI API 代理服务 将 Google Antigravity API 转换为 OpenAI 兼容格式的代理服务,支持流式响应、工具调用和多账号管理。 Star History 功能特性 - ✅ OpenAI API 兼容格式 - ✅ 流…

800 stars0 likes5 views
WebsiteGitHub

About

Antigravity to OpenAI API 代理服务 将 Google Antigravity API 转换为 OpenAI 兼容格式的代理服务,支持流式响应、工具调用和多账号管理。 Star History 功能特性 - ✅ OpenAI API 兼容格式 - ✅ 流…

Antigravity to OpenAI API 代理服务

将 Google Antigravity API 转换为 OpenAI 兼容格式的代理服务,支持流式响应、工具调用和多账号管理。

Star History

功能特性

  • ✅ OpenAI API 兼容格式
  • ✅ 流式和非流式响应
  • ✅ 结构化 JSON 输出支持(response_format)
  • ✅ 工具调用(Function Calling)支持
  • ✅ 多账号自动轮换(支持多种轮询策略)
  • ✅ Token 自动刷新
  • ✅ API Key 认证
  • ✅ 思维链(Thinking)输出,兼容 OpenAI reasoning_effort 参数和 DeepSeek reasoning_content 格式
  • ✅ 图片输入支持(Base64 编码)
  • ✅ 图片生成支持(gemini-3-pro-image 模型)
  • ✅ Pro 账号随机 ProjectId 支持
  • ✅ 模型额度查看(实时显示剩余额度和重置时间)
  • ✅ SD WebUI API 兼容(支持 txt2img/img2img)
  • ✅ 心跳机制(防止 Cloudflare 超时断连)
  • ✅ 模型列表缓存(减少 API 请求)
  • ✅ 资格校验自动回退(无资格时自动生成随机 ProjectId)
  • ✅ 真 System 消息合并(开头连续多条 system 与 SystemInstruction 合并)
  • ✅ 隐私模式(自动隐藏敏感信息)
  • ✅ 内存优化(从 8+ 进程减少为 2 个进程,内存占用从 100MB+ 降为 50MB+)
  • ✅ 对象池复用(减少 50%+ 临时对象创建,降低 GC 频率)
  • ✅ 签名透传控制(可配置是否将 thoughtSignature 透传到客户端)
  • ✅ 预编译二进制文件(支持 Windows/Linux/Android,无需 Node.js 环境)
  • ✅ 多 API 格式支持(OpenAI、Gemini、Claude 三种格式)
  • ✅ 转换器代码复用(公共模块提取,减少重复代码)
  • ✅ 动态内存阈值(根据用户配置自动计算各级别阈值)

环境要求

  • Node.js >= 18.0.0

快速开始

方式一:一键部署脚本(推荐)

Windows (cmd.exe):

bash
curl -O https://raw.githubusercontent.com/liuw1535/antigravity2api-nodejs/main/setup.bat && setup.bat

Windows (PowerShell):

powershell
IwR -Uri https://raw.githubusercontent.com/liuw1535/antigravity2api-nodejs/main/setup.bat -OutFile setup.bat; .\setup.bat

Linux/macOS:

bash
wget https://raw.githubusercontent.com/liuw1535/antigravity2api-nodejs/main/setup.sh && chmod +x setup.sh && ./setup.sh

或使用 curl:

bash
curl -O https://raw.githubusercontent.com/liuw1535/antigravity2api-nodejs/main/setup.sh && chmod +x setup.sh && ./setup.sh

脚本会自动完成以下操作:

  1. 克隆项目仓库
  2. 安装依赖
  3. 复制配置文件
  4. 配置管理员凭据(交互式输入)
  5. 启动服务

快速启动(已部署)

如果已经部署成功,可以使用启动脚本快速启动服务:

Windows:

bash
start.bat

Linux/macOS:

bash
chmod +x start.sh
./start.sh

更新项目

使用更新脚本可以安全地更新到最新版本(自动保存本地修改):

Windows:

bash
update.bat

Linux/macOS:

bash
chmod +x update.sh
./update.sh

更新完成后,可以选择:

  • 恢复本地修改:git stash pop
  • 删除本地修改:git stash drop

方式二:手动部署

1. 安装依赖

bash
npm install

2. 配置环境变量

首次启动时,如果 .env 和 config.json 不存在,系统会自动创建默认配置文件。

你也可以手动复制示例文件:

bash
cp .env.example .env
cp config.json.example config.json

编辑 .env 文件配置必要参数:

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.com

3. 登录获取 Token

bash
npm run login

浏览器会自动打开 Google 授权页面,授权后 Token 会保存到 data/accounts.json。

4. 启动服务

bash
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 文件:

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:7890

运行

Windows:

bash
# 直接双击运行,或在命令行执行
antigravity2api-win-x64.exe

Linux/macOS:

bash
# 添加执行权限
chmod +x antigravity2api-linux-x64

# 运行
./antigravity2api-linux-x64

二进制部署说明

  • 无需 Node.js:二进制文件已包含 Node.js 运行时
  • 自动配置:首次启动时自动从 config.json.example 创建 config.json
  • 配置文件:config.json.example 必须与二进制文件在同一目录
  • 静态文件:public/ 目录必须与二进制文件在同一目录
  • 数据持久化:data/ 目录会自动创建,用于存储 Token 数据
  • 跨平台:支持 Windows、Linux、macOS(x64 和 ARM64)

作为系统服务运行(Linux)

创建 systemd 服务文件 /etc/systemd/system/antigravity2api.service:

ini
[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

启动服务:

bash
sudo systemctl daemon-reload
sudo systemctl enable antigravity2api
sudo systemctl start antigravity2api

Docker 部署

使用 Docker Compose(推荐)

  1. 一键构建
bash
npm run docker:build

该命令会自动:

  • 从 .env.example 创建 .env(如果不存在)
  • 从 config.json.example 创建 config.json(如果不存在)
  • 创建必要的目录(data/、public/images/)
  • 执行 docker-compose build 构建镜像
  1. 启动服务
bash
docker compose up -d
  1. 查看日志
bash
docker compose logs -f
  1. 停止服务
bash
docker compose down

手动构建

如果需要手动构建,请先准备配置文件:

bash
# 复制配置文件
cp .env.example .env
cp config.json.example config.json

# 创建必要目录
mkdir -p data public/images

# 构建镜像
docker build -t antigravity2api .
  1. 运行容器
bash
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 \
  antigravity2api
  1. 查看日志
bash
docker logs -f antigravity2api

Docker 部署说明

  • 数据持久化:data/ 目录挂载到容器,保存 Token 数据
  • 图片存储:public/images/ 目录挂载到容器,保存生成的图片
  • 配置文件:.env 和 config.json 挂载到容器,支持热更新
  • 端口映射:默认映射 8045 端口,可根据需要修改
  • 自动重启:容器异常退出会自动重启

Zeabur 部署

使用预构建镜像部署

  1. 创建服务

在 Zeabur 控制台创建新服务,使用以下镜像:

ghcr.io/liuw1535/antigravity2api-nodejs
  1. 配置环境变量

在服务设置中添加以下环境变量:

环境变量 说明 示例值
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:系统提示词
  1. 配置持久化存储

在服务的「Volumes」设置中添加以下挂载点:

挂载路径 说明
/app/data Token 数据存储
/app/public/images 生成的图片存储

⚠️ 重要提示:

  • 只挂载 /app/data 和 /app/public/images 这两个目录
  • 不要挂载其他目录(如 /app/.env、/app/config.json 等),否则会导致必要配置文件被清空,项目无法启动
  1. 绑定域名

在服务的「Networking」设置中绑定域名,然后将该域名设置到 IMAGE_BASE_URL 环境变量中。

  1. 启动服务

保存配置后,Zeabur 会自动拉取镜像并启动服务。访问绑定的域名即可使用。

Zeabur 部署说明

  • 使用预构建的 Docker 镜像,无需手动构建
  • 通过环境变量配置所有必要参数
  • 持久化存储确保 Token 和图片数据不丢失

Web 管理界面

服务启动后,访问 http://localhost:8045 即可打开 Web 管理界面。

功能特性

  • 安全登录:JWT Token 认证,保护管理接口
  • 实时统计:显示总 Token 数、启用/禁用状态统计
  • ➕ 多种添加方式:
    • OAuth 授权登录(推荐):自动完成 Google 授权流程
    • 手动填入:直接输入 Access Token 和 Refresh Token
  • Token 管理:
  • 查看所有 Token 的详细信息(Access Token 后缀、Project ID、过期时间)
  • 查看模型额度:按类型分组显示(Claude/Gemini/其他),实时查看剩余额度和重置时间
  • 一键启用/禁用 Token
  • 删除无效 Token
  • 实时刷新 Token 列表
  • ⚙️ 配置管理:
    • 在线编辑服务器配置(端口、监听地址)
    • 调整默认参数(温度、Top P/K、最大 Token 数)
    • 修改安全配置(API 密钥、请求大小限制)
    • 配置代理、系统提示词等可选项
    • 热重载配置(部分配置需重启生效)

使用流程

  1. 登录系统

    • 使用 .env 中配置的 ADMIN_USERNAME 和 ADMIN_PASSWORD 登录
    • 登录成功后会自动保存 JWT Token 到浏览器
  2. 添加 Token

    • OAuth 方式(推荐):
      1. 点击「OAuth登录」按钮
      2. 在弹窗中点击「打开授权页面」
      3. 在新窗口完成 Google 授权
      4. 复制浏览器地址栏的完整回调 URL
      5. 粘贴到输入框并提交
    • 手动方式:
      1. 点击「手动填入」按钮
      2. 填写 Access Token、Refresh Token 和过期时间
      3. 提交保存
  3. 管理 Token

    • 查看 Token 卡片显示的状态和信息
    • 点击「 查看额度」按钮查看该账号的模型额度信息
      • 自动按模型类型分组(Claude/Gemini/其他)
      • 显示剩余额度百分比和进度条
      • 显示额度重置时间(北京时间)
      • 支持「立即刷新」强制更新额度数据
    • 使用「启用/禁用」按钮控制 Token 状态
    • 使用「删除」按钮移除无效 Token
    • 点击「刷新」按钮更新列表
  4. 隐私模式

    • 默认开启,自动隐藏 Token、Project ID 等敏感信息
    • 点击「显示敏感信息」切换显示/隐藏状态
    • 支持逐个查看或批量显示
  5. 配置轮询策略

    • 支持三种轮询策略:
      • round_robin:均衡负载,每次请求切换 Token
      • quota_exhausted:额度耗尽才切换
      • request_count:自定义请求次数后切换
    • 可在「设置」页面配置
  6. 修改配置

    • 切换到「设置」标签页
    • 修改需要调整的配置项
    • 点击「保存配置」按钮应用更改
    • 注意:端口和监听地址修改需要重启服务
    • 支持的设置项:
      • 编辑 Token 信息(Access Token、Refresh Token)
      • 思考预算(1024-32000)
      • 图片访问地址
      • 轮询策略
      • 内存阈值
      • 心跳间隔
      • 字体大小

界面预览

  • Token 管理页面:卡片式展示所有 Token,支持快速操作
  • 设置页面:分类展示所有配置项,支持在线编辑
  • 响应式设计:支持桌面和移动设备访问
  • 字体优化:采用 MiSans + Ubuntu Mono 字体,增强可读性

API 使用

服务提供 OpenAI 兼容的 API 接口,详细使用说明请查看 API.md。

快速测试

bash
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 支持多个账号,服务会自动轮换使用:

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 可禁用某个账号
  • Token 过期会自动刷新
  • 刷新失败(403)会自动禁用并切换下一个账号

配置说明

项目配置分为两部分:

1. config.json(基础配置)

基础配置文件,包含服务器、API 和默认参数设置。

首次启动时,如果 config.json 不存在,系统会自动从 config.json.example 复制一份默认配置。

配置示例:

…

轮询策略说明

策略 说明
round_robin 均衡负载:每次请求后切换到下一个 Token
quota_exhausted 额度耗尽才切换:持续使用当前 Token 直到额度用完(高性能优化)
request_count 自定义次数:每个 Token 使用指定次数后切换(默认策略)

2. .env(敏感配置)

环境变量配置文件,包含敏感信息和可选配置:

环境变量 说明 必填
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 文件。

开发命令

bash
# 启动服务
npm start

# 开发模式(自动重启)
npm run dev

# 登录获取 Token
npm run login

# 构建 Docker 镜像
npm run docker:build

项目结构

…

Pro 账号随机 ProjectId

对于 Pro 订阅账号,可以跳过 API 验证直接使用随机生成的 ProjectId:

  1. 在 config.json 文件中设置:
json
{
  "other": {
    "skipProjectIdFetch": true
  }
}
  1. 运行 npm run login 登录时会自动使用随机生成的 ProjectId

  2. 已有账号也会在使用时自动生成随机 ProjectId

注意:此功能仅适用于 Pro 订阅账号。官方已修复免费账号使用随机 ProjectId 的漏洞。

资格校验自动回退

当 OAuth 登录或添加 Token 时,系统会自动检测账号的订阅资格:

  1. 有资格的账号:正常使用 API 返回的 ProjectId
  2. 无资格的账号:自动生成随机 ProjectId,避免添加失败

这一机制确保了:

  • 无论账号是否有 Pro 订阅,都能成功添加 Token
  • 自动降级处理,无需手动干预
  • 不会因为资格校验失败而阻止登录流程

真 System 消息合并

本服务支持将开头连续的多条 system 消息与全局 SystemInstruction 合并:

请求消息:
[system] 你是助手
[system] 请使用中文回答
[user] 你好

合并后:
SystemInstruction = 全局配置的系统提示词 + "\n\n" + "你是助手\n\n请使用中文回答"
messages = [{role: user, content: 你好}]

这一设计:

  • 兼容 OpenAI 的多 system 消息格式
  • 充分利用 Antigravity 的 SystemInstruction 功能
  • 确保系统提示词的完整性和优先级

多 API 格式支持

本服务支持三种 API 格式,每种格式都有完整的参数支持:

OpenAI 格式 (/v1/chat/completions)

json
{
  "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 模型支持) -

Claude 格式 (/v1/messages)

json
{

Issues· 16 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

JavaScript

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言