[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72134":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":35,"readmeContent":36,"aiSummary":37,"trendingCount":16,"starSnapshotCount":16,"syncStatus":38,"lastSyncTime":39,"discoverSource":40},72134,"gcli2api","su-kaka\u002Fgcli2api","su-kaka","将 GeminiCLI 和 Antigravity 转换为 OpenAI 、GEMINI 和 Claude API 接口","",null,"Python",4878,1301,10,3,0,8,29,141,24,101.84,"Other",false,"master",[26,27,28,29,30,31,32,33,34],"antigravity-ide","antigravity2api","claude","claude-api","claude-code","gemini","gemini-ai","gemini-api","gemini-pro","2026-06-12 04:01:03","# GeminiCLI to API\n\n**将 GeminiCLI 和 Antigravity 转换为 OpenAI 、GEMINI 和 Claude API 兼容接口**\n\n[![Python 3.12+](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fpython-3.12+-blue.svg)](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\n[![License: CNC-1.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-CNC--1.0-red.svg)](LICENSE)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fdocker-available-blue.svg)](https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api\u002Fpkgs\u002Fcontainer\u002Fgcli2api)\n\n[English](docs\u002FREADME_EN.md) | 中文 | [日本語](docs\u002FREADME_JA.md)\n\n## 🚀 快速部署 \n\n[![Deploy on Zeabur](https:\u002F\u002Fzeabur.com\u002Fbutton.svg)](https:\u002F\u002Fzeabur.com\u002Ftemplates\u002F97VMEF?referralCode=sukaka)\n[![Deploy to Render](https:\u002F\u002Frender.com\u002Fimages\u002Fdeploy-to-render-button.svg)](https:\u002F\u002Frender.com\u002Fdeploy?repo=https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api)\n---\n\n## 安装指南\n\n### Termux 环境\n\n**初始安装**\n```bash\ncurl -o termux-install.sh \"https:\u002F\u002Fraw.githubusercontent.com\u002Fsu-kaka\u002Fgcli2api\u002Frefs\u002Fheads\u002Fmaster\u002Ftermux-install.sh\" && chmod +x termux-install.sh && .\u002Ftermux-install.sh\n```\n\n**重启服务**\n```bash\ncd gcli2api\nbash termux-start.sh\n```\n\n### Windows 环境\n\n**初始安装**\n```powershell\niex (iwr \"https:\u002F\u002Fraw.githubusercontent.com\u002Fsu-kaka\u002Fgcli2api\u002Frefs\u002Fheads\u002Fmaster\u002Finstall.ps1\" -UseBasicParsing).Content\n```\n\n**重启服务**\n双击执行 `start.bat`\n\n### Linux 环境\n\n**初始安装**\n```bash\ncurl -o install.sh \"https:\u002F\u002Fraw.githubusercontent.com\u002Fsu-kaka\u002Fgcli2api\u002Frefs\u002Fheads\u002Fmaster\u002Finstall.sh\" && chmod +x install.sh && .\u002Finstall.sh\n```\n\n**重启服务**\n```bash\ncd gcli2api\nbash start.sh\n```\n\n### macOS 环境\n\n**初始安装**\n```bash\ncurl -o darwin-install.sh \"https:\u002F\u002Fraw.githubusercontent.com\u002Fsu-kaka\u002Fgcli2api\u002Frefs\u002Fheads\u002Fmaster\u002Fdarwin-install.sh\" && chmod +x darwin-install.sh && .\u002Fdarwin-install.sh\n```\n\n**重启服务**\n```bash\ncd gcli2api\nbash start.sh\n```\n\n### Docker 环境\n\n**Docker 运行命令**\n```bash\n# 使用通用密码\ndocker run -d --name gcli2api --network host -e PASSWORD=pwd -e PORT=7861 -v $(pwd)\u002Fdata\u002Fcreds:\u002Fapp\u002Fcreds ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n\n# 使用分离密码\ndocker run -d --name gcli2api --network host -e API_PASSWORD=api_pwd -e PANEL_PASSWORD=panel_pwd -e PORT=7861 -v $(pwd)\u002Fdata\u002Fcreds:\u002Fapp\u002Fcreds ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n```\n\n**Docker Mac**\n```bash\n# 使用通用密码\ndocker run -d \\\n  --name gcli2api \\\n  -p 7861:7861 \\\n  -p 8080:8080 \\\n  -e PASSWORD=pwd \\\n  -e PORT=7861 \\\n  -v \"$(pwd)\u002Fdata\u002Fcreds\":\u002Fapp\u002Fcreds \\\n  ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n```\n\n```bash\n# 使用分离密码\ndocker run -d \\\n--name gcli2api \\\n-p 7861:7861 \\\n-p 8080:8080 \\\n-e API_PASSWORD=api_pwd \\\n-e PANEL_PASSWORD=panel_pwd \\\n-e PORT=7861 \\\n-v $(pwd)\u002Fdata\u002Fcreds:\u002Fapp\u002Fcreds \\\nghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n```\n\n**Docker Compose 运行命令**\n1. 将以下内容保存为 `docker-compose.yml` 文件：\n    ```yaml\n    version: '3.8'\n\n    services:\n      gcli2api:\n        image: ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n        container_name: gcli2api\n        restart: unless-stopped\n        network_mode: host\n        environment:\n          # 使用通用密码（推荐用于简单部署）\n          - PASSWORD=pwd\n          - PORT=7861\n          # 或使用分离密码（推荐用于生产环境）\n          # - API_PASSWORD=your_api_password\n          # - PANEL_PASSWORD=your_panel_password\n        volumes:\n          - .\u002Fdata\u002Fcreds:\u002Fapp\u002Fcreds\n        healthcheck:\n          test: [\"CMD-SHELL\", \"python -c \\\"import sys, urllib.request, os; port = os.environ.get('PORT', '7861'); req = urllib.request.Request(f'http:\u002F\u002Flocalhost:{port}\u002Fv1\u002Fmodels', headers={'Authorization': 'Bearer ' + os.environ.get('PASSWORD', 'pwd')}); sys.exit(0 if urllib.request.urlopen(req, timeout=5).getcode() == 200 else 1)\\\"\"]\n          interval: 30s\n          timeout: 10s\n          retries: 3\n          start_period: 40s\n    ```\n2. 启动服务：\n    ```bash\n    docker-compose up -d\n    ```\n\n## 核心功能\n\n### 🔄 API 端点和格式支持\n\n**多端点多格式支持**\n- **OpenAI 兼容端点**：`\u002Fv1\u002Fchat\u002Fcompletions` 和 `\u002Fv1\u002Fmodels`\n  - 支持标准 OpenAI 格式（messages 结构）\n  - 支持 Gemini 原生格式（contents 结构）\n  - 自动格式检测和转换，无需手动切换\n  - 支持多模态输入（文本 + 图像）\n- **Gemini 原生端点**：`\u002Fv1\u002Fmodels\u002F{model}:generateContent` 和 `streamGenerateContent`\n  - 支持完整的 Gemini 原生 API 规范\n  - 多种认证方式：Bearer Token、x-goog-api-key 头部、URL 参数 key\n- **Claude 格式兼容**：完整支持 Claude API 格式\n  - 端点：`\u002Fv1\u002Fmessages`（遵循 Claude API 规范）\n  - 支持 Claude 标准的 messages 格式\n  - 支持 system 参数和 Claude 特有功能\n  - 自动转换为后端支持的格式\n- **Antigravity API 支持**：同时支持 OpenAI、Gemini 和 Claude 格式\n  - OpenAI 格式端点：`\u002Fantigravity\u002Fv1\u002Fchat\u002Fcompletions`\n  - Gemini 格式端点：`\u002Fantigravity\u002Fv1\u002Fmodels\u002F{model}:generateContent` 和 `streamGenerateContent`\n  - Claude 格式端点：`\u002Fantigravity\u002Fv1\u002Fmessages`\n  - 支持所有 Antigravity 模型（Claude、Gemini 等）\n  - 自动模型名称映射和思维模式检测\n\n### 🔐 认证和安全管理\n\n**灵活的密码管理**\n- **分离密码支持**：API 密码（聊天端点）和控制面板密码可独立设置\n- **多种认证方式**：支持 Authorization Bearer、x-goog-api-key 头部、URL 参数等\n- **JWT Token 认证**：控制面板支持 JWT 令牌认证\n- **用户邮箱获取**：自动获取和显示 Google 账户邮箱地址\n\n### 📊 智能凭证管理系统\n\n**高级凭证管理**\n- 多个 Google OAuth 凭证自动轮换\n- 通过冗余认证增强稳定性\n- 负载均衡与并发请求支持\n- 自动故障检测和凭证禁用\n- 凭证使用统计和配额管理\n- 支持手动启用\u002F禁用凭证文件\n- 批量凭证文件操作（启用、禁用、删除）\n\n**凭证状态监控**\n- 实时凭证健康检查\n- 错误码追踪（429、403、500 等）\n- 自动封禁机制（可配置）\n\n### 🌊 流式传输和响应处理\n\n**多种流式支持**\n- 真正的实时流式响应\n- 假流式模式（用于兼容性）\n- 流式抗截断功能（防止回答被截断）\n- 异步任务管理和超时处理\n\n**响应优化**\n- 思维链（Thinking）内容分离\n- 推理过程（reasoning_content）处理\n- 多轮对话上下文管理\n- 兼容性模式（将 system 消息转换为 user 消息）\n\n### 🎛️ Web 管理控制台\n\n**全功能 Web 界面**\n- OAuth 认证流程管理（支持 GCLI 和 Antigravity 双模式）\n- 凭证文件上传、下载、管理\n- 实时日志查看（WebSocket）\n- 系统配置管理\n- 使用统计和监控面板\n- 移动端适配界面\n\n**批量操作支持**\n- ZIP 文件批量上传凭证（GCLI 和 Antigravity）\n- 批量启用\u002F禁用\u002F删除凭证\n- 批量获取用户邮箱\n- 批量配置管理\n- 统一批量上传界面管理所有凭证类型\n\n### 📈 使用监控\n\n**实时监控**\n- WebSocket 实时日志流\n- 系统状态监控\n- 凭证健康状态\n\n### 🔧 高级配置和自定义\n\n**网络和代理配置**\n- HTTP\u002FHTTPS 代理支持\n- 代理端点配置（OAuth、Google APIs、元数据服务）\n- 超时和重试配置\n- 网络错误处理和恢复\n\n**性能和稳定性配置**\n- 429 错误自动重试（可配置间隔和次数）\n- 抗截断最大重试次数\n\n**日志和调试**\n- 多级日志系统（DEBUG、INFO、WARNING、ERROR）\n- 日志文件管理\n- 实时日志流\n- 日志下载和清空\n\n### 🔄 环境变量和配置管理\n\n**灵活的配置方式**\n- 环境变量配置\n- 热配置更新（部分配置项）\n- 配置锁定（环境变量优先级）\n\n## 支持的模型\n\n所有模型均具备 1M 上下文窗口容量。每个凭证文件提供 1000 次请求额度。\n\n### 🤖 基础模型\n- `gemini-2.5-pro`\n- `gemini-3-pro-preview`\n- `gemini-3.1-pro-preview`\n\n### 🧠 思维模型（Thinking Models）\n- `gemini-2.5-pro-high`：思考模式\n- `gemini-2.5-pro-low`：低思考模式\n- 支持自定义思考预算配置\n- 自动分离思维内容和最终回答\n\n### 🔍 搜索增强模型\n- `gemini-2.5-pro-search`：集成搜索功能的模型\n\n### 🖼️ 图像生成模型（Antigravity）\n- `gemini-3.1-flash-image`：基础图像生成模型\n- **分辨率后缀**：\n  - `-2k`：2K 分辨率\n  - `-4k`：4K 高清分辨率\n- **比例后缀**：\n  - `-1x1`：正方形（头像）\n  - `-16x9`：横屏（电脑壁纸）\n  - `-9x16`：竖屏（手机壁纸）\n  - `-21x9`：超宽屏（带鱼屏）\n  - `-4x3`：传统显示器\n  - `-3x4`：竖版海报\n- **组合使用示例**：\n  - `gemini-3.1-flash-image-4k-16x9`：4K 横屏\n  - `gemini-3.1-flash-image-2k-9x16`：2K 竖屏\n- 不指定比例时，API 自动决定横竖比例\n\n### 🌊 特殊功能变体\n- **假流式模式**：在任何模型名称后添加 `-假流式` 后缀\n  - 例：`gemini-2.5-pro-假流式`\n  - 用于需要流式响应但服务端不支持真流式的场景\n- **流式抗截断模式**：在模型名称前添加 `流式抗截断\u002F` 前缀\n  - 例：`流式抗截断\u002Fgemini-2.5-pro`  \n  - 自动检测响应截断并重试，确保完整回答\n\n### 🔧 模型功能自动检测\n- 系统自动识别模型名称中的功能标识\n- 透明地处理功能模式转换\n- 支持功能组合使用\n\n---\n\n## 配置说明\n\n1. 访问 `http:\u002F\u002F127.0.0.1:7861` （默认端口，可通过 PORT 环境变量修改）\n2. 完成 OAuth 认证流程（默认密码：`pwd`，可通过环境变量修改）\n   - **GCLI 模式**：用于获取 Google Cloud Gemini API 凭证\n   - **Antigravity 模式**：用于获取 Google Antigravity API 凭证\n3. 配置客户端：\n\n**OpenAI 兼容客户端：**\n   - **端点地址**：`http:\u002F\u002F127.0.0.1:7861\u002Fv1`\n   - **API 密钥**：`pwd`（默认值，可通过 API_PASSWORD 或 PASSWORD 环境变量修改）\n\n**Gemini 原生客户端：**\n   - **端点地址**：`http:\u002F\u002F127.0.0.1:7861`\n   - **认证方式**：\n     - `Authorization: Bearer your_api_password`\n     - `x-goog-api-key: your_api_password`\n     - URL 参数：`?key=your_api_password`\n\n### 🌟 双认证模式支持\n\n**GCLI 认证模式**\n- 标准的 Google Cloud Gemini API 认证\n- 支持 OAuth2.0 认证流程\n- 自动启用必需的 Google Cloud API\n\n**Antigravity 认证模式**\n- Google Antigravity API 专用认证\n- 独立的凭证管理系统\n- 支持批量上传和管理\n- 与 GCLI 凭证完全隔离\n\n**统一管理界面**\n- 在\"批量上传\"标签页中可一次性管理两种凭证\n- 上半部分：GCLI 凭证批量上传（蓝色主题）\n- 下半部分：Antigravity 凭证批量上传（绿色主题）\n- 各自独立的凭证管理标签页\n\n## 💾 数据存储模式\n\n### 🌟 存储后端支持\n\ngcli2api 支持两种存储后端：**本地 SQLite（默认）** 和 **MongoDB（云端分布式存储）**\n\n### 📁 本地 SQLite 存储（默认）\n\n**默认存储方式**\n- 无需配置，开箱即用\n- 数据存储在本地 SQLite 数据库中\n- 适合单机部署和个人使用\n- 自动创建和管理数据库文件\n\n### 🍃 MongoDB 云端存储模式\n\n**云端分布式存储方案**\n\n当需要多实例部署或云端存储时，可以启用 MongoDB 存储模式。\n\n### ⚙️ 启用 MongoDB 模式\n\n**步骤 1: 配置 MongoDB 连接**\n```bash\n# 本地 MongoDB\nexport MONGODB_URI=\"mongodb:\u002F\u002Flocalhost:27017\"\n\n# MongoDB Atlas 云服务\nexport MONGODB_URI=\"mongodb+srv:\u002F\u002Fusername:password@cluster.mongodb.net\"\n\n# 带认证的 MongoDB\nexport MONGODB_URI=\"mongodb:\u002F\u002Fadmin:password@localhost:27017\u002Fadmin\"\n\n# 可选：自定义数据库名称（默认: gcli2api）\nexport MONGODB_DATABASE=\"my_gcli_db\"\n```\n\n**步骤 2: 启动应用**\n```bash\n# 应用会自动检测 MongoDB 配置并使用 MongoDB 存储\npython web.py\n```\n\n**Docker 环境使用 MongoDB**\n```bash\n# 单机 MongoDB 部署\ndocker run -d --name gcli2api \\\n  -e MONGODB_URI=\"mongodb:\u002F\u002Fmongodb:27017\" \\\n  -e API_PASSWORD=your_password \\\n  --network your_network \\\n  ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n\n# 使用 MongoDB Atlas\ndocker run -d --name gcli2api \\\n  -e MONGODB_URI=\"mongodb+srv:\u002F\u002Fuser:pass@cluster.mongodb.net\u002Fgcli2api\" \\\n  -e API_PASSWORD=your_password \\\n  -p 7861:7861 \\\n  ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n```\n\n**Docker Compose 示例**\n```yaml\nversion: '3.8'\n\nservices:\n  mongodb:\n    image: mongo:7\n    container_name: gcli2api-mongodb\n    restart: unless-stopped\n    environment:\n      MONGO_INITDB_ROOT_USERNAME: admin\n      MONGO_INITDB_ROOT_PASSWORD: password123\n    volumes:\n      - mongodb_data:\u002Fdata\u002Fdb\n    ports:\n      - \"27017:27017\"\n\n  gcli2api:\n    image: ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n    container_name: gcli2api\n    restart: unless-stopped\n    depends_on:\n      - mongodb\n    environment:\n      - MONGODB_URI=mongodb:\u002F\u002Fadmin:password123@mongodb:27017\u002Fadmin\n      - MONGODB_DATABASE=gcli2api\n      - API_PASSWORD=your_api_password\n      - PORT=7861\n    ports:\n      - \"7861:7861\"\n\nvolumes:\n  mongodb_data:\n```\n\n\n### 🔧 高级配置\n\n**MongoDB 连接优化**\n```bash\n# 连接池和超时配置\nexport MONGODB_URI=\"mongodb:\u002F\u002Flocalhost:27017?maxPoolSize=10&serverSelectionTimeoutMS=5000\"\n\n# 副本集配置\nexport MONGODB_URI=\"mongodb:\u002F\u002Fhost1:27017,host2:27017,host3:27017\u002Fgcli2api?replicaSet=myReplicaSet\"\n\n# 读写分离配置\nexport MONGODB_URI=\"mongodb:\u002F\u002Flocalhost:27017\u002Fgcli2api?readPreference=secondaryPreferred\"\n```\n\n### 环境变量配置\n\n**基础配置**\n- `PORT`: 服务端口（默认：7861）\n- `HOST`: 服务器监听地址（默认：0.0.0.0）\n\n**密码配置**\n- `API_PASSWORD`: 聊天 API 访问密码（默认：继承 PASSWORD 或 pwd）\n- `PANEL_PASSWORD`: 控制面板访问密码（默认：继承 PASSWORD 或 pwd）  \n- `PASSWORD`: 通用密码，设置后覆盖上述两个（默认：pwd）\n\n**性能和稳定性配置**\n- `RETRY_429_ENABLED`: 启用 429 错误自动重试（默认：true）\n- `RETRY_429_MAX_RETRIES`: 429 错误最大重试次数（默认：3）\n- `RETRY_429_INTERVAL`: 429 错误重试间隔，秒（默认：1.0）\n- `ANTI_TRUNCATION_MAX_ATTEMPTS`: 抗截断最大重试次数（默认：3）\n\n**网络和代理配置**\n- `PROXY`: HTTP\u002FHTTPS 代理地址（格式：`http:\u002F\u002Fhost:port`）\n- `OAUTH_PROXY_URL`: OAuth 认证代理端点\n- `GOOGLEAPIS_PROXY_URL`: Google APIs 代理端点\n- `METADATA_SERVICE_URL`: 元数据服务代理端点\n\n**自动化配置**\n- `AUTO_BAN`: 启用凭证自动封禁（默认：true）\n- `AUTO_LOAD_ENV_CREDS`: 启动时自动加载环境变量凭证（默认：false）\n\n**兼容性配置**\n- `COMPATIBILITY_MODE`: 启用兼容性模式，将 system 消息转为 user 消息（默认：false）\n\n**日志配置**\n- `LOG_LEVEL`: 日志级别（DEBUG\u002FINFO\u002FWARNING\u002FERROR，默认：INFO）\n- `LOG_FILE`: 日志文件路径（默认：log.txt）\n\n**存储配置**\n\n**SQLite 配置（默认）**\n- 无需配置，自动使用本地 SQLite 数据库\n- 数据库文件自动创建在项目目录\n\n**MongoDB 配置（可选云端存储）**\n- `MONGODB_URI`: MongoDB 连接字符串（设置后启用 MongoDB 模式）\n- `MONGODB_DATABASE`: MongoDB 数据库名称（默认：gcli2api）\n\n**Docker 使用示例**\n```bash\n# 使用通用密码\ndocker run -d --name gcli2api \\\n  -e PASSWORD=mypassword \\\n  -e PORT=7861 \\\n  ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n\n# 使用分离密码\ndocker run -d --name gcli2api \\\n  -e API_PASSWORD=my_api_password \\\n  -e PANEL_PASSWORD=my_panel_password \\\n  -e PORT=7861 \\\n  ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n```\n\n注意：当设置了凭证环境变量时，系统将优先使用环境变量中的凭证，忽略 `creds` 目录中的文件。\n\n### API 使用方式\n\n本服务支持三套完整的 API 端点：\n\n#### 1. OpenAI 兼容端点（GCLI）\n\n**端点：** `\u002Fv1\u002Fchat\u002Fcompletions`\n**认证：** `Authorization: Bearer your_api_password`\n\n支持两种请求格式，会自动检测并处理：\n\n**OpenAI 格式：**\n```json\n{\n  \"model\": \"gemini-2.5-pro\",\n  \"messages\": [\n    {\"role\": \"system\", \"content\": \"You are a helpful assistant\"},\n    {\"role\": \"user\", \"content\": \"Hello\"}\n  ],\n  \"temperature\": 0.7,\n  \"stream\": true\n}\n```\n\n**Gemini 原生格式：**\n```json\n{\n  \"model\": \"gemini-2.5-pro\",\n  \"contents\": [\n    {\"role\": \"user\", \"parts\": [{\"text\": \"Hello\"}]}\n  ],\n  \"systemInstruction\": {\"parts\": [{\"text\": \"You are a helpful assistant\"}]},\n  \"generationConfig\": {\n    \"temperature\": 0.7\n  }\n}\n```\n\n#### 2. Gemini 原生端点（GCLI）\n\n**非流式端点：** `\u002Fv1\u002Fmodels\u002F{model}:generateContent`\n**流式端点：** `\u002Fv1\u002Fmodels\u002F{model}:streamGenerateContent`\n**模型列表：** `\u002Fv1\u002Fmodels`\n\n**认证方式（任选一种）：**\n- `Authorization: Bearer your_api_password`\n- `x-goog-api-key: your_api_password`\n- URL 参数：`?key=your_api_password`\n\n**请求示例：**\n```bash\n# 使用 x-goog-api-key 头部\ncurl -X POST \"http:\u002F\u002F127.0.0.1:7861\u002Fv1\u002Fmodels\u002Fgemini-2.5-pro:generateContent\" \\\n  -H \"x-goog-api-key: your_api_password\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"contents\": [\n      {\"role\": \"user\", \"parts\": [{\"text\": \"Hello\"}]}\n    ]\n  }'\n\n# 使用 URL 参数\ncurl -X POST \"http:\u002F\u002F127.0.0.1:7861\u002Fv1\u002Fmodels\u002Fgemini-2.5-pro:streamGenerateContent?key=your_api_password\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"contents\": [\n      {\"role\": \"user\", \"parts\": [{\"text\": \"Hello\"}]}\n    ]\n  }'\n```\n\n#### 3. Claude API 格式端点\n\n**端点：** `\u002Fv1\u002Fmessages`\n**认证：** `x-api-key: your_api_password` 或 `Authorization: Bearer your_api_password`\n\n**请求示例：**\n```bash\ncurl -X POST \"http:\u002F\u002F127.0.0.1:7861\u002Fv1\u002Fmessages\" \\\n  -H \"x-api-key: your_api_password\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"gemini-2.5-pro\",\n    \"max_tokens\": 1024,\n    \"messages\": [\n      {\"role\": \"user\", \"content\": \"Hello, Claude!\"}\n    ]\n  }'\n```\n\n**支持 system 参数：**\n```json\n{\n  \"model\": \"gemini-2.5-pro\",\n  \"max_tokens\": 1024,\n  \"system\": \"You are a helpful assistant\",\n  \"messages\": [\n    {\"role\": \"user\", \"content\": \"Hello\"}\n  ]\n}\n```\n\n**说明：**\n- 完全兼容 Claude API 格式规范\n- 自动转换为 Gemini 格式调用后端\n- 支持 Claude 的所有标准参数\n- 响应格式符合 Claude API 规范\n\n#### 4. Antigravity API 端点\n\n**支持三种格式：OpenAI、Gemini 和 Claude**\n\n##### Antigravity OpenAI 格式端点\n\n**端点：** `\u002Fantigravity\u002Fv1\u002Fchat\u002Fcompletions`\n**认证：** `Authorization: Bearer your_api_password`\n\n**请求示例：**\n```bash\ncurl -X POST \"http:\u002F\u002F127.0.0.1:7861\u002Fantigravity\u002Fv1\u002Fchat\u002Fcompletions\" \\\n  -H \"Authorization: Bearer your_api_password\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"claude-sonnet-4-5\",\n    \"messages\": [\n      {\"role\": \"user\", \"content\": \"Hello\"}\n    ],\n    \"stream\": true\n  }'\n```\n\n##### Antigravity Gemini 格式端点\n\n**非流式端点：** `\u002Fantigravity\u002Fv1\u002Fmodels\u002F{model}:generateContent`\n**流式端点：** `\u002Fantigravity\u002Fv1\u002Fmodels\u002F{model}:streamGenerateContent`\n\n**认证方式（任选一种）：**\n- `Authorization: Bearer your_api_password`\n- `x-goog-api-key: your_api_password`\n- URL 参数：`?key=your_api_password`\n\n**请求示例：**\n```bash\n# Gemini 格式非流式请求\ncurl -X POST \"http:\u002F\u002F127.0.0.1:7861\u002Fantigravity\u002Fv1\u002Fmodels\u002Fclaude-sonnet-4-5:generateContent\" \\\n  -H \"x-goog-api-key: your_api_password\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"contents\": [\n      {\"role\": \"user\", \"parts\": [{\"text\": \"Hello\"}]}\n    ],\n    \"generationConfig\": {\n      \"temperature\": 0.7\n    }\n  }'\n\n# Gemini 格式流式请求\ncurl -X POST \"http:\u002F\u002F127.0.0.1:7861\u002Fantigravity\u002Fv1\u002Fmodels\u002Fgemini-2.5-flash:streamGenerateContent?key=your_api_password\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"contents\": [\n      {\"role\": \"user\", \"parts\": [{\"text\": \"Hello\"}]}\n    ]\n  }'\n```\n\n##### Antigravity Claude 格式端点\n\n**端点：** `\u002Fantigravity\u002Fv1\u002Fmessages`\n**认证：** `x-api-key: your_api_password`\n\n**请求示例：**\n```bash\ncurl -X POST \"http:\u002F\u002F127.0.0.1:7861\u002Fantigravity\u002Fv1\u002Fmessages\" \\\n  -H \"x-api-key: your_api_password\" \\\n  -H \"anthropic-version: 2023-06-01\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\n    \"model\": \"claude-sonnet-4-5\",\n    \"max_tokens\": 1024,\n    \"messages\": [\n      {\"role\": \"user\", \"content\": \"Hello\"}\n    ]\n  }'\n```\n\n**支持的 Antigravity 模型：**\n- Claude 系列：`claude-sonnet-4-5`、`claude-opus-4-5` 等\n- Gemini 系列：`gemini-2.5-flash`、`gemini-2.5-pro` 等\n- 自动支持思维模型（thinking models）\n\n**Gemini 原生示例：**\n```python\nfrom io import BytesIO\nfrom PIL import Image\nfrom google.genai import Client\nfrom google.genai.types import HttpOptions\nfrom google.genai import types\n# The client gets the API key from the environment variable `GEMINI_API_KEY`.\n\nclient = Client(\n            api_key=\"pwd\",\n            http_options=HttpOptions(base_url=\"http:\u002F\u002F127.0.0.1:7861\"),\n        )\n\nprompt = (\n    \"\"\"\n    画一只猫\n    \"\"\"\n)\n\nresponse = client.models.generate_content(\n    model=\"gemini-3.1-flash-image\",\n    contents=[prompt],\n    config=types.GenerateContentConfig(\n        image_config=types.ImageConfig(\n            aspect_ratio=\"16:9\",\n        )\n    )\n)\nfor part in response.candidates[0].content.parts:\n    if part.text is not None:\n        print(part.text)\n    elif part.inline_data is not None:\n        image = Image.open(BytesIO(part.inline_data.data))\n        image.save(\"generated_image.png\")\n\n```\n\n**说明：**\n- OpenAI 端点返回 OpenAI 兼容格式\n- Gemini 端点返回 Gemini 原生格式\n- 两种端点使用相同的 API 密码\n\n## 📋 完整 API 参考\n\n### Web 控制台 API\n\n**认证端点**\n- `POST \u002Fauth\u002Flogin` - 用户登录\n- `POST \u002Fauth\u002Fstart` - 开始 OAuth 认证（支持 GCLI 和 Antigravity 模式）\n- `POST \u002Fauth\u002Fcallback` - 处理 OAuth 回调\n- `POST \u002Fauth\u002Fcallback-url` - 从回调 URL 直接完成认证\n- `GET \u002Fauth\u002Fstatus\u002F{project_id}` - 检查认证状态\n\n**凭证管理端点**（支持 `mode=geminicli` 或 `mode=antigravity` 参数）\n- `POST \u002Fcreds\u002Fupload` - 批量上传凭证文件（支持 JSON 和 ZIP）\n- `GET \u002Fcreds\u002Fstatus` - 获取凭证状态列表（支持分页和筛选）\n- `GET \u002Fcreds\u002Fdetail\u002F{filename}` - 获取单个凭证详情\n- `POST \u002Fcreds\u002Faction` - 单个凭证操作（启用\u002F禁用\u002F删除）\n- `POST \u002Fcreds\u002Fbatch-action` - 批量凭证操作\n- `GET \u002Fcreds\u002Fdownload\u002F{filename}` - 下载单个凭证文件\n- `GET \u002Fcreds\u002Fdownload-all` - 打包下载所有凭证\n- `POST \u002Fcreds\u002Ffetch-email\u002F{filename}` - 获取用户邮箱\n- `POST \u002Fcreds\u002Frefresh-all-emails` - 批量刷新用户邮箱\n- `POST \u002Fcreds\u002Fdeduplicate-by-email` - 按邮箱去重凭证\n- `POST \u002Fcreds\u002Fverify-project\u002F{filename}` - 检验凭证 Project ID\n- `GET \u002Fcreds\u002Fquota\u002F{filename}` - 获取凭证额度信息（仅 Antigravity）\n\n**配置管理端点**\n- `GET \u002Fconfig\u002Fget` - 获取当前配置\n- `POST \u002Fconfig\u002Fsave` - 保存配置\n\n**日志管理端点**\n- `POST \u002Flogs\u002Fclear` - 清空日志\n- `GET \u002Flogs\u002Fdownload` - 下载日志文件\n- `WebSocket \u002Flogs\u002Fstream` - 实时日志流\n\n**版本信息端点**\n- `GET \u002Fversion\u002Finfo` - 获取版本信息（可选 `check_update=true` 参数检查更新）\n\n### 聊天 API 功能特性\n\n**多模态支持**\n```json\n{\n  \"model\": \"gemini-2.5-pro\",\n  \"messages\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n        {\"type\": \"text\", \"text\": \"描述这张图片\"},\n        {\n          \"type\": \"image_url\",\n          \"image_url\": {\n            \"url\": \"data:image\u002Fjpeg;base64,\u002F9j\u002F4AAQSkZJRgABA...\"\n          }\n        }\n      ]\n    }\n  ]\n}\n```\n\n**思维模式支持**\n```json\n{\n  \"model\": \"gemini-2.5-pro-maxthinking\",\n  \"messages\": [\n    {\"role\": \"user\", \"content\": \"复杂数学问题\"}\n  ]\n}\n```\n\n响应将包含分离的思维内容：\n```json\n{\n  \"choices\": [{\n    \"message\": {\n      \"role\": \"assistant\",\n      \"content\": \"最终答案\",\n      \"reasoning_content\": \"详细的思考过程...\"\n    }\n  }]\n}\n```\n\n**流式抗截断使用**\n```json\n{\n  \"model\": \"流式抗截断\u002Fgemini-2.5-pro\",\n  \"messages\": [\n    {\"role\": \"user\", \"content\": \"写一篇长文章\"}\n  ],\n  \"stream\": true\n}\n```\n\n**兼容性模式**\n```bash\n# 启用兼容性模式\nexport COMPATIBILITY_MODE=true\n```\n此模式下，所有 `system` 消息会转换为 `user` 消息，提高与某些客户端的兼容性。\n\n---\n\n## 💬 交流群\n\n欢迎加入 QQ 群交流讨论！\n\n**QQ 群号：1083250744**\n\n\u003Cimg src=\"docs\u002Fqq群.jpg\" width=\"200\" alt=\"QQ群二维码\">\n\n---\n\n## 许可证与免责声明\n\n本项目仅供学习和研究用途。使用本项目表示您同意：\n- 不将本项目用于任何商业用途\n- 承担使用本项目的所有风险和责任\n- 遵守相关的服务条款和法律法规\n\n项目作者对因使用本项目而产生的任何直接或间接损失不承担责任。\n\n## ⚠️ 许可证声明\n\n**本项目采用 Cooperative Non-Commercial License (CNC-1.0)**\n\n这是一个反商业化的严格开源协议，详情请查看 [LICENSE](LICENSE) 文件。\n\n### ✅ 允许的用途：\n- 个人学习、研究、教育用途\n- 非营利组织使用\n- 开源项目集成（需遵循相同协议）\n- 学术研究和论文发表\n\n### ❌ 禁止的用途：\n- 任何形式的商业使用\n- 年收入超过100万美元的企业使用\n- 风投支持或公开交易的公司使用  \n- 提供付费服务或产品\n- 商业竞争用途\n","gcli2api 项目旨在将 GeminiCLI 和 Antigravity 转换为与 OpenAI、GEMINI 和 Claude API 兼容的接口。该项目的核心功能是通过 Python 语言实现 CLI 工具到 RESTful API 的转换，支持多种部署方式包括 Termux、Windows、Linux、macOS 以及 Docker 环境，提供了详细的安装和运行指南，便于开发者快速上手。它特别适用于需要将现有 GeminiCLI 或 Antigravity 项目集成到更广泛的应用程序生态中的场景，如自动化脚本、Web 应用后端等，同时也为希望利用这些先进 AI 技术但偏好使用标准 API 接口的开发者提供了一个便捷的解决方案。",2,"2026-06-11 03:40:32","high_star"]