提供 Antigravity 与 Vertex 接入、API Key 管理、用量计费和多账号凭证管理
Antigravity 提供 OpenAI Chat Completions / Responses、Gemini 和 Anthropic Messages 兼容接口;Vertex 提供 OpenAI Chat Completions 和 Gemini 兼容接口。当前版本不再提供 GeminiCLI 通道。
中文 | English
本仓库 Wzh0718/gcl2api-plus 基于上游项目 su-kaka/gcli2api 二次开发,遵循上游原有许可证。
本项目修改部分版权归 © 2026 Wzh0718(wangzehang)所有;保留上游版权声明,完整许可条款见 LICENSE。
本仓库在上游基础上持续独立维护,主要能力与定制改进如下:
| 功能 | 具体说明 |
|---|---|
| API 协议接入 | Antigravity 支持 OpenAI Chat Completions / Responses、Gemini 和 Anthropic Messages;Vertex 支持 OpenAI Chat Completions 和 Gemini。当前不提供 GeminiCLI 通道。 |
| API Key 管理 | 签发、复制、启停和吊销独立密钥;配置金额额度、到期时间,以及手动或每月额度重置;查看各密钥用量和剩余额度。 |
| 登录与凭证池 | 支持 Antigravity OAuth 登录、Refresh Token(RT)导入和多账号凭证管理;按可用账号轮转,控制每账号并发并在异常时切换凭证。 |
| 账号检查与恢复 | 检查账号健康、模型额度与网络资格;对可恢复的 403 定期复检,明确的 TOS / account_forbidden 账号仅人工复检;提供额度对账。 |
| 动态养号与渐进放量 | 可按账号或批量开启,使用真实业务请求逐档放量;限制账号及同出口 IP 组的并发和请求间隔,异常时退避或暂停。详见状态机说明。 |
| 账号代理与出口管理 | 支持继承全局代理、独立代理、直连及代理组;可启用一账号一节点的独占绑定,并检查出口 IP、地区资格和代理健康。 |
| Token 用量与费用统计 | 配置模型 Token 单价,按请求去重入账,查看汇总、排行和密钥账单;历史账单保留当时价格。SQLite 持久化,Redis 可选作计费镜像和看板数据源,故障时回退 SQLite。 |
| 调用监控与日志 | 查看实时调用、用量和日志;对照请求模型与上游返回的实际执行模型 modelVersion,并持久化实际模型记录。 |
| 流式响应与抗截断 | 支持流式空闲超时守护,以及 假流式/、流式抗截断/、抗截断/ 三种模型前缀;抗截断仅对流式请求执行续传,旧前缀继续兼容。 |
| 配额耗尽降级 | 可配置模型降级链,默认关闭;仅在明确的配额耗尽型 429 时触发,图片请求不使用该降级链。 |
| 图片参数与传输 | 兼容 Gemini 图片参数及 OpenAI Chat Completions 顶层 size,保留历史尺寸后缀;图片请求使用独立的传输、容量错误处理和有限重试策略。详见图片 API 说明。 |
| 客户端名称过滤 | 支持对 system prompt 中的客户端名称执行替换或本地拦截,可配置内置词与自定义规则;不修改用户消息和工具调用。 |
| 部署与发布 | 提供桌面及移动控制面板、Docker / Compose 部署,以及 GHCR 多架构镜像;通过本地脚本或手动触发 GitHub Actions 发布,无自动上游同步。 |
详细配置、默认值和启用条件见开发与发布指南。
docker pull ghcr.io/wzh0718/gcl2api-plus:latest日期版本使用 vYYYYMMDD 标签,例如:
docker pull ghcr.io/wzh0718/gcl2api-plus:v20260910本仓库为独立完整项目(无覆盖层、无自动上游同步),开发与发布流程见 docs/CUSTOMIZATION.md。
docker run -d \
--name gcli2api \
--network host \
-e PASSWORD=pwd \
-e PORT=7861 \
-v "$(pwd)/data/creds:/app/creds" \
ghcr.io/wzh0718/gcl2api-plus:latest生产环境建议把 API 和控制面板密码分开:
docker run -d \
--name gcli2api \
--network host \
-e API_PASSWORD=your_api_password \
-e PANEL_PASSWORD=your_panel_password \
-e PORT=7861 \
-v "$(pwd)/data/creds:/app/creds" \
ghcr.io/wzh0718/gcl2api-plus:latestdocker compose up -d仓库内的 docker-compose.yml 已默认使用 ghcr.io/wzh0718/gcl2api-plus:latest。修改 .env 后重新执行 docker compose up -d,不需要重新构建镜像。
先复制示例文件:
cp .env.example .env| 配置 | 作用 | 默认/建议 |
|---|---|---|
API_PASSWORD |
API 端点密码 | 生产环境单独设置 |
PANEL_PASSWORD |
控制面板密码 | 生产环境单独设置 |
PASSWORD |
兼容旧部署的通用密码 | 设置后优先级最高 |
CREDENTIALS_DIR |
SQLite 数据库和凭证目录 | ./creds |
PROXY |
全局代理 | 按需设置 http / https / socks5 |
REDIS_URL |
计费镜像和看板加速 | 可选,故障时回退 SQLite |
REDIS_USER / REDIS_PASSWORD |
Redis 分离认证 | 推荐单独设置 |
ANTIGRAVITY_MODEL_FALLBACK_CHAIN |
配额耗尽时的模型降级链 | 逗号分隔,留空关闭 |
MAX_NON_STREAM_BUFFER_BYTES |
非流响应最大缓冲区 | 16777216 |
CREDENTIAL_CANDIDATE_LIMIT |
单次账号候选上限 | 32 |
配置优先级为:显式环境变量 > .env > SQLite 配置 > 代码默认值。SQLite 是唯一的持久化主账本,Redis 只作为计费和看板镜像,不替代 SQLite。
上面只是常用项。全部环境变量(含本 fork 新增的 ★ 标记变量,如 403 复检、网络检查、计费看板等)按功能分组收录在 环境变量参考;.env.example 中每个变量也带默认值注释。
默认关闭(留空)。需要启用时显式配置,例如:
ANTIGRAVITY_MODEL_FALLBACK_CHAIN=gemini-3.8-flash,gemini-3.8-flash-tiered只有明确的配额耗尽型 429 才会触发降级;图片请求不会自动切换模型。具体配置映射见 config.py 和控制面板设置页。
普通模型和流式抗截断模型可按需选择,例如:
| 请求模型名 | 行为 |
|---|---|
gemini-2.5-flash |
正常调用,不启用抗截断 |
流式抗截断/gemini-2.5-flash |
调用同一基础模型,流式请求启用抗截断续传 |
抗截断/gemini-2.5-flash |
兼容旧前缀,行为与 流式抗截断/ 相同 |
模型列表保留普通模型,并使用 流式抗截断/ 展示抗截断选项;旧客户端已保存的 抗截断/ 模型名仍可使用。基础模型是否可用取决于对应通道的模型列表和账号权限。
抗截断仅对流式请求生效:OpenAI / Anthropic 请求需设置 stream: true,Gemini 请求需使用 :streamGenerateContent。非流式请求仍接受这两种前缀,会剥离前缀并正常调用基础模型,但不执行抗截断续传。该前缀兼容适用于 Antigravity 通道。
上游 Antigravity 会把不同请求模型归一到同一物理后端(实测 gemini-3.6/3.7/3.8 各档位、pro-agent 等请求实际均由 gemini-3.8-flash-n 执行,响应中的 modelVersion 是唯一可信来源)。本仓库在三个层面透出真实执行模型:
- 调用监控「实时」视图逐条显示
请求模型 → 实际模型,不一致时高亮实际模型,一致或上游未返回时保持原样; - OpenAI 兼容(流式/非流式)与 Anthropic Messages 响应附加顶层
modelVersion字段(model仍按协议回显请求名,客户端兼容性不受影响); - 每条调用记录(
call_records.upstream_model)持久化实际上游模型,重启不丢。
- 感谢上游项目 su-kaka/gcli2api,本仓库在其基础上二次开发,遵循上游原有许可证。
- 感谢 LINUX DO 社区提供的交流与开源推广平台,本项目认可并链接 LINUX DO 社区。
- 本项目仅供学习与技术研究使用,严禁用于任何违反 Google 服务条款、上游项目许可证或当地法律法规的用途。
- 本项目与 Google 无任何关联,并非官方产品;Gemini、GeminiCLI、Antigravity 等名称与商标归其各自权利人所有。
- 使用本项目可能涉及账号限制、封禁、额度扣除等风险,使用者须自行承担由此产生的一切后果与责任。
- 本项目按「现状」提供,不附带任何明示或默示的保证;作者不对因使用本项目而产生的任何直接或间接损失承担责任。
- 请勿将本项目用于任何商业转售、批量滥用或侵犯第三方权益的行为。
- 如本项目内容侵犯了您的合法权益,请通过 GitHub Issue 联系,确认后将及时处理。
