[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-su-kaka--gcli2api":3,"tool-su-kaka--gcli2api":64},[4,23,32,40,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":22},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,2,"2026-04-05T10:45:23",[13,14,15,16,17,18,19,20,21],"图像","数据工具","视频","插件","Agent","其他","语言模型","开发框架","音频","ready",{"id":24,"name":25,"github_repo":26,"description_zh":27,"stars":28,"difficulty_score":29,"last_commit_at":30,"category_tags":31,"status":22},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70612,3,"2026-04-05T11:12:22",[19,17,20,16],{"id":33,"name":34,"github_repo":35,"description_zh":36,"stars":37,"difficulty_score":10,"last_commit_at":38,"category_tags":39,"status":22},3074,"gpt4free","xtekky\u002Fgpt4free","gpt4free 是一个由社区驱动的开源项目，旨在聚合多种可访问的大型语言模型（LLM）和媒体生成接口，让用户能更灵活、便捷地使用前沿 AI 能力。它解决了直接调用各类模型时面临的接口分散、门槛高或成本昂贵等痛点，通过统一的标准将不同提供商的资源整合在一起。\n\n无论是希望快速集成 AI 功能的开发者、需要多模型对比测试的研究人员，还是想免费体验最新技术的普通用户，都能从中受益。gpt4free 提供了丰富的使用方式：既包含易于上手的 Python 和 JavaScript 客户端库，也支持部署本地图形界面（GUI），更提供了兼容 OpenAI 标准的 REST API，方便无缝替换现有应用后端。\n\n其技术亮点在于强大的多提供商支持架构，能够动态调度包括 Opus、Gemini、DeepSeek 等多种主流模型资源，并支持 Docker 一键部署及本地推理。项目秉持社区优先原则，在降低使用门槛的同时，也为贡献者提供了扩展新接口的便利框架，是探索和利用多样化 AI 资源的实用工具。",65970,"2026-04-04T01:02:03",[16,19,17],{"id":41,"name":42,"github_repo":43,"description_zh":44,"stars":45,"difficulty_score":10,"last_commit_at":46,"category_tags":47,"status":22},51,"gstack","garrytan\u002Fgstack","gstack 是 Y Combinator CEO Garry Tan 亲自开源的一套 AI 工程化配置，旨在将 Claude Code 升级为你的虚拟工程团队。面对单人开发难以兼顾产品战略、架构设计、代码审查及质量测试的挑战，gstack 提供了一套标准化解决方案，帮助开发者实现堪比二十人团队的高效产出。\n\n这套配置特别适合希望提升交付效率的创始人、技术负责人，以及初次尝试 Claude Code 的开发者。gstack 的核心亮点在于内置了 15 个具有明确职责的 AI 角色工具，涵盖 CEO、设计师、工程经理、QA 等职能。用户只需通过简单的斜杠命令（如 `\u002Freview` 进行代码审查、`\u002Fqa` 执行测试、`\u002Fplan-ceo-review` 规划功能），即可自动化处理从需求分析到部署上线的全链路任务。\n\n所有操作基于 Markdown 和斜杠命令，无需复杂配置，完全免费且遵循 MIT 协议。gstack 不仅是一套工具集，更是一种现代化的软件工厂实践，让单人开发者也能拥有严谨的工程流程。",64261,"2026-04-05T11:08:43",[17,16],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":10,"last_commit_at":54,"category_tags":55,"status":22},193,"meilisearch","meilisearch\u002Fmeilisearch","Meilisearch 是一个开源的极速搜索服务，专为现代应用和网站打造，开箱即用。它能帮助开发者快速集成高质量的搜索功能，无需复杂的配置或额外的数据预处理。传统搜索方案往往需要大量调优才能实现准确结果，而 Meilisearch 内置了拼写容错、同义词识别、即时响应等实用特性，并支持 AI 驱动的混合搜索（结合关键词与语义理解），显著提升用户查找信息的体验。\n\nMeilisearch 特别适合 Web 开发者、产品团队或初创公司使用，尤其适用于需要快速上线搜索功能的场景，如电商网站、内容平台或 SaaS 应用。它提供简洁的 RESTful API 和多种语言 SDK，部署简单，资源占用低，本地开发或生产环境均可轻松运行。对于希望在不依赖大型云服务的前提下，为用户提供流畅、智能搜索体验的团队来说，Meilisearch 是一个高效且友好的选择。",56964,"2026-04-05T08:19:14",[13,17,14,20,16,18],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":22},4022,"awesome-claude-skills","ComposioHQ\u002Fawesome-claude-skills","awesome-claude-skills 是一个精心整理的开源资源库，旨在帮助用户挖掘和扩展 Claude AI 的潜力。它不仅仅是一份列表，更提供了实用的“技能（Skills）”模块，让 Claude 从单纯的文本生成助手，进化为能执行复杂工作流的智能代理。\n\n许多用户在使用 AI 时，常受限于其无法直接操作外部软件或处理特定格式文件的痛点。awesome-claude-skills 通过预设的工作流解决了这一问题：它不仅能教会 Claude 专业地处理 Word、PDF 等文档，进行代码开发与数据分析，还能借助 Composio 插件连接 Slack、邮箱及数百种常用应用，实现发送邮件、创建任务等自动化操作。这使得重复性任务变得标准化且可复用，极大提升了工作效率。\n\n无论是希望优化日常办公流程的普通用户、需要处理复杂文档的研究人员，还是寻求将 AI 深度集成到开发管线中的开发者，都能从中找到适合的解决方案。其独特的技术亮点在于“技能”的可定制性与强大的应用连接能力，让用户无需编写复杂代码，即可通过简单的配置让 Claude 具备跨平台执行真实任务的能力。如果你希望让 Claude",51312,"2026-04-05T19:04:23",[17,16],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":78,"owner_location":78,"owner_email":78,"owner_twitter":78,"owner_website":78,"owner_url":79,"languages":80,"stars":108,"forks":109,"last_commit_at":110,"license":111,"difficulty_score":10,"env_os":112,"env_gpu":113,"env_ram":113,"env_deps":114,"category_tags":125,"github_topics":126,"view_count":29,"oss_zip_url":78,"oss_zip_packed_at":78,"status":22,"created_at":136,"updated_at":137,"faqs":138,"releases":178},3488,"su-kaka\u002Fgcli2api","gcli2api","将 GeminiCLI 和 Antigravity 转换为 OpenAI 、GEMINI 和 Claude API 接口","gcli2api 是一款强大的开源桥接工具，旨在将基于 Google OAuth 的 GeminiCLI 和 Antigravity 本地凭证，转换为标准的 OpenAI、Gemini 及 Claude API 接口。它有效解决了开发者难以直接利用个人 Google 账户额度对接主流开发框架的痛点，让免费或低成本的模型资源能无缝集成到现有工作流中。\n\n该工具特别适合开发者、AI 研究人员及希望低成本探索大模型能力的技术爱好者使用。其核心亮点在于“多格式自动兼容”，无需修改代码即可智能识别并转换不同 API 的请求结构；同时具备先进的“智能凭证管理”系统，支持多账号自动轮换、负载均衡及故障自愈，显著提升了服务稳定性。此外，gcli2api 还内置了全功能 Web 控制台，方便用户直观地上传管理凭证、监控实时日志及配置系统参数。无论是构建聊天机器人、进行学术研究，还是测试多模态应用，它都能提供灵活且高效的后端支持，极大降低了调用前沿 AI 模型的门槛。","# 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**本项目采用 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\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## 安装指南\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## 配置说明\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 群号：937681997**\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsu-kaka_gcli2api_readme_fa1cbd35f07f.jpg\" width=\"200\" alt=\"QQ群二维码\">\n\n---\n\n## 许可证与免责声明\n\n本项目仅供学习和研究用途。使用本项目表示您同意：\n- 不将本项目用于任何商业用途\n- 承担使用本项目的所有风险和责任\n- 遵守相关的服务条款和法律法规\n\n项目作者对因使用本项目而产生的任何直接或间接损失不承担责任。\n","# GeminiCLI 转 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**本项目采用 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\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## 安装指南\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## 配置说明\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 群号：937681997**\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsu-kaka_gcli2api_readme_fa1cbd35f07f.jpg\" width=\"200\" alt=\"QQ群二维码\">\n\n---\n\n## 许可证与免责声明\n\n本项目仅供学习和研究用途。使用本项目表示您同意：\n- 不将本项目用于任何商业用途\n- 承担使用本项目的所有风险和责任\n- 遵守相关的服务条款和法律法规\n\n项目作者对因使用本项目而产生的任何直接或间接损失不承担责任。","# gcli2api 快速上手指南\n\ngcli2api 是一个强大的转换工具，能将 GeminiCLI 和 Antigravity 的凭证转换为兼容 OpenAI、Gemini 原生及 Claude 格式的 API 接口。它支持多模态输入、智能凭证轮换、流式传输抗截断以及 Web 管理控制台。\n\n> **⚠️ 许可证提示**：本项目采用 **CNC-1.0 (Cooperative Non-Commercial License)** 协议。**严禁任何形式的商业使用**（包括年收入超 100 万美元的企业、风投支持公司等）。仅限个人学习、研究、教育及非营利组织使用。\n\n## 1. 环境准备\n\n### 系统要求\n- **操作系统**：Linux, macOS, Windows, 或 Android (Termux)\n- **Python 版本**：3.12 或更高版本\n- **网络环境**：需能访问 Google 服务（若在国内，建议配置代理）\n\n### 前置依赖\n- **Docker (可选)**：推荐使用 Docker 部署，可避免环境配置问题。\n- **代理配置 (国内用户)**：如果无法直接连接 Google，请在启动时设置 `PROXY` 环境变量。\n\n## 2. 安装步骤\n\n您可以选择 **Docker 部署**（推荐）或 **本地脚本部署**。\n\n### 方案 A：Docker 部署（推荐）\n\n最简单的方式是使用 Docker，无需安装 Python 环境。\n\n**运行命令：**\n```bash\n# 基础运行（使用默认密码 'pwd'）\ndocker run -d --name gcli2api \\\n  --network host \\\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**配置代理（国内用户必备）：**\n```bash\ndocker run -d --name gcli2api \\\n  --network host \\\n  -e PASSWORD=pwd \\\n  -e PORT=7861 \\\n  -e PROXY=http:\u002F\u002Fhost.docker.internal:7890 \\\n  -v $(pwd)\u002Fdata\u002Fcreds:\u002Fapp\u002Fcreds \\\n  ghcr.io\u002Fsu-kaka\u002Fgcli2api:latest\n```\n*注：将 `http:\u002F\u002Fhost.docker.internal:7890` 替换为您实际的代理地址。*\n\n**使用 Docker Compose：**\n创建 `docker-compose.yml` 文件：\n```yaml\nversion: '3.8'\nservices:\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      - PASSWORD=pwd\n      - PORT=7861\n      # - PROXY=http:\u002F\u002F192.168.1.5:7890 # 如需代理请取消注释并修改\n    volumes:\n      - .\u002Fdata\u002Fcreds:\u002Fapp\u002Fcreds\n```\n启动服务：\n```bash\ndocker-compose up -d\n```\n\n### 方案 B：本地脚本部署\n\n#### Linux \u002F macOS\n```bash\n# 一键安装\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# 启动服务\ncd gcli2api\nbash start.sh\n```\n\n#### Windows (PowerShell)\n```powershell\n# 一键安装\niex (iwr \"https:\u002F\u002Fraw.githubusercontent.com\u002Fsu-kaka\u002Fgcli2api\u002Frefs\u002Fheads\u002Fmaster\u002Finstall.ps1\" -UseBasicParsing).Content\n\n# 启动服务\n# 双击运行生成的 start.bat 文件\n```\n\n#### Termux (Android)\n```bash\n# 一键安装\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# 启动服务\ncd gcli2api\nbash termux-start.sh\n```\n\n## 3. 基本使用\n\n### 第一步：获取凭证\n1. 访问管理面板：`http:\u002F\u002F127.0.0.1:7861` (端口可通过 `PORT` 变量修改)。\n2. 输入密码登录（默认密码：`pwd`，可通过 `PASSWORD` 环境变量修改）。\n3. 在面板中选择 **GCLI 模式** 或 **Antigravity 模式** 完成 OAuth 认证。\n   - 认证成功后，凭证会自动保存并轮换。\n   - 支持批量上传 ZIP 格式的凭证文件。\n\n### 第二步：配置客户端\n\ngcli2api 自动兼容多种 API 格式，您可以根据习惯选择任意一种方式调用。\n\n#### 方式 1：OpenAI 兼容格式（最常用）\n适用于 Chatbox, NextChat, OneAPI 等支持 OpenAI 标准的客户端。\n\n- **Base URL**: `http:\u002F\u002F127.0.0.1:7861\u002Fv1`\n- **API Key**: `pwd` (或您设置的 `API_PASSWORD`)\n- **模型名称**: `gemini-2.5-pro`, `gemini-2.5-pro-high` 等\n\n**Python 调用示例：**\n```python\nfrom openai import OpenAI\n\nclient = OpenAI(\n    base_url=\"http:\u002F\u002F127.0.0.1:7861\u002Fv1\",\n    api_key=\"pwd\" \n)\n\nresponse = client.chat.completions.create(\n    model=\"gemini-2.5-pro\",\n    messages=[\n        {\"role\": \"system\", \"content\": \"你是一个助手\"},\n        {\"role\": \"user\", \"content\": \"你好，请介绍一下你自己\"}\n    ],\n    stream=True\n)\n\nfor chunk in response:\n    if chunk.choices[0].delta.content:\n        print(chunk.choices[0].delta.content, end=\"\", flush=True)\n```\n\n#### 方式 2：Gemini 原生格式\n适用于需要直接使用 Gemini 原生结构的场景。\n\n- **Base URL**: `http:\u002F\u002F127.0.0.1:7861`\n- **认证**: Header `Authorization: Bearer pwd` 或 URL 参数 `?key=pwd`\n- **端点**: `\u002Fv1\u002Fmodels\u002F{model}:generateContent`\n\n#### 方式 3：Claude 兼容格式\n- **Base URL**: `http:\u002F\u002F127.0.0.1:7861\u002Fv1`\n- **端点**: `\u002Fv1\u002Fmessages`\n- **模型**: 支持映射到后端的 Gemini 模型。\n\n### 高级功能速览\n\n- **思维模型**：使用 `gemini-2.5-pro-high` 开启深度思考模式，系统会自动分离思考过程与最终回答。\n- **图像生成**：使用 Antigravity 凭证，调用如 `gemini-3.1-flash-image-4k-16x9` 等模型。\n- **流式抗截断**：在模型名前加前缀，如 `流式抗截断\u002Fgemini-2.5-pro`，防止长回答被切断。\n- **假流式模式**：在模型名后加后缀，如 `gemini-2.5-pro-假流式`，强制模拟流式输出。\n\n### 常用环境变量配置\n\n| 变量名 | 说明 | 默认值 |\n| :--- | :--- | :--- |\n| `PORT` | 服务监听端口 | `7861` |\n| `PASSWORD` | 通用访问密码 | `pwd` |\n| `API_PASSWORD` | API 接口专用密码 | 同 PASSWORD |\n| `PANEL_PASSWORD` | 管理面板专用密码 | 同 PASSWORD |\n| `PROXY` | HTTP\u002FHTTPS 代理地址 | 无 |\n| `LOG_LEVEL` | 日志级别 (DEBUG\u002FINFO...) | `INFO` |\n| `MONGODB_URI` | MongoDB 连接串 (启用云端存储) | 无 (默认 SQLite) |","某独立开发者希望利用免费的 Google 账号资源，为团队内部构建一个统一的高可用 AI 服务中台，以支持多个自动化脚本和聊天机器人。\n\n### 没有 gcli2api 时\n- **接口碎片化严重**：不同脚本分别依赖 GeminiCLI 命令行或 Antigravity 私有协议，无法复用标准的 OpenAI SDK，导致代码维护成本极高。\n- **单点故障频繁**：单个 Google 账号的 API 配额（1000 次\u002F天）极易耗尽，一旦触发 429 限流，整个服务即刻瘫痪，缺乏自动轮换机制。\n- **功能适配困难**：想要使用 Gemini 的“思维链”推理或高分辨率图像生成功能时，需手动解析复杂的原生返回结构，开发耗时且容易出错。\n- **管理黑盒化**：无法直观监控哪些账号凭证已失效或即将超限，只能依靠查看分散的日志文件进行人工排查。\n\n### 使用 gcli2api 后\n- **统一标准接入**：gcli2api 将后端转换为标准的 OpenAI\u002FClaude 兼容接口，所有现有业务代码无需修改即可无缝切换至免费的 Gemini 算力。\n- **高可用集群调度**：通过上传多个 OAuth 凭证，gcli2api 自动实现负载均衡与故障转移；当某个账号限流时，毫秒级切换至健康账号，保障服务永不中断。\n- **高级特性透明化**：只需在模型名称后添加 `-high` 或 `-4k-16x9` 等后缀，gcli2api 即自动处理思维内容分离及图像参数转换，让复杂功能像调用普通文本模型一样简单。\n- **可视化运维管控**：内置 Web 控制台实时展示各凭证的健康状态、用量统计及错误日志，支持批量上传与管理，让资源池一目了然。\n\ngcli2api 成功将分散且不稳定的个人免费额度，转化为了一个具备企业级稳定性、统一接口标准且易于管理的私有 AI 算力集群。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fsu-kaka_gcli2api_6df486e1.png","su-kaka","sukaka","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fsu-kaka_bc1e156b.jpg",null,"https:\u002F\u002Fgithub.com\u002Fsu-kaka",[81,85,89,93,97,101,104],{"name":82,"color":83,"percentage":84},"Python","#3572A5",70.5,{"name":86,"color":87,"percentage":88},"HTML","#e34c26",16.7,{"name":90,"color":91,"percentage":92},"JavaScript","#f1e05a",11.2,{"name":94,"color":95,"percentage":96},"Shell","#89e051",1.3,{"name":98,"color":99,"percentage":100},"PowerShell","#012456",0.1,{"name":102,"color":103,"percentage":100},"Dockerfile","#384d54",{"name":105,"color":106,"percentage":107},"Batchfile","#C1F12E",0,4420,1250,"2026-04-04T16:21:29","NOASSERTION","Linux, macOS, Windows, Termux (Android)","未说明",{"notes":115,"python":116,"dependencies":117},"该工具是一个 API 转换网关，主要消耗网络资源而非计算资源，因此无特殊 GPU 或大内存需求。支持 Docker 部署及多种一键安装脚本。数据存储默认使用本地 SQLite，也可配置为 MongoDB。需通过 OAuth 获取 Google 凭证文件才能使用。许可证为 CNC-1.0，严禁商业用途。","3.12+",[118,119,120,121,122,123,124],"FastAPI","Uvicorn","HTTPX","PyJWT","Google Auth Libraries","SQLite3 (内置)","Motor (MongoDB 驱动，可选)",[16],[127,128,129,130,131,132,133,134,135],"gemini","gemini-ai","gemini-api","gemini-pro","antigravity-ide","antigravity2api","claude","claude-api","claude-code","2026-03-27T02:49:30.150509","2026-04-06T06:44:16.137900",[139,144,149,154,159,164,169,174],{"id":140,"question_zh":141,"answer_zh":142,"source_url":143},16008,"在管理界面设置了 API 密码后，为什么 Cherry Studio 等工具连接失败？","这是因为配置路径不匹配。如果你配置的是“反重力”（Antigravity）凭证，但在客户端链接时使用的是 CLI 链接，会导致认证失败。解决方法是在调用反重力服务的 URL 后面加上 `\u002Fantigravity` 后缀，例如：`http:\u002F\u002Fip:port\u002Fantigravity\u002Fv1`。","https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api\u002Fissues\u002F192",{"id":145,"question_zh":146,"answer_zh":147,"source_url":148},16006,"为什么运行一段时间后会出现 500 错误，且必须删除 Docker 重装才能恢复？","出现 500 错误通常是因为所有凭证都被标记为失效。这往往是由于触发了 429（请求过多）限制导致的概率性封禁。维护者指出，如果 429 概率过高，当前版本可能不会自动禁用相关逻辑，导致凭证全部失效。建议检查凭证状态，并控制调用频率以避免触发风控。","https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api\u002Fissues\u002F23",{"id":150,"question_zh":151,"answer_zh":152,"source_url":153},16007,"正常使用凭证时为什么会随机出现 403 错误？","这种 403 错误与 429 类似，通常是随机触发的速率限制或风控机制，并不代表账号彻底被封禁。维护者建议忽略此类偶发错误。如果遇到频繁报错，可以尝试回退到旧版本（如 commit 153c070），使用老账号，并减少单个账号的调用量。","https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api\u002Fissues\u002F64",{"id":155,"question_zh":156,"answer_zh":157,"source_url":158},16009,"接入 Open WebUI 时，为什么会出现重复消息或连续思考恢复的情况？","这是在使用 `antigravity\u002Fv1` 端口接入 Open WebUI 时已知的兼容性问题，特别是在使用流式抗截断模型（如 gemini-3-pro-high）时。用户反馈会出现重复图片或连续思考。目前社区暂无完美解决方案，部分用户建议尝试非流式模式或等待后续版本修复。","https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api\u002Fissues\u002F187",{"id":160,"question_zh":161,"answer_zh":162,"source_url":163},16010,"更新后图片生成模型（gemini-3-pro-image）无法出图或报错怎么办？","如果更新后出现图片生成失败或报错（如 chunk too big），可能是速率限制或风控问题。维护者建议尝试在后台进行“批量检验”操作，这有助于恢复账号的正常使用权。如果仍然报错 403，请检查是否触发了 Google Cloud 的风控机制。","https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api\u002Fissues\u002F261",{"id":165,"question_zh":166,"answer_zh":167,"source_url":168},16011,"遇到需要验证账号（Verify your account）的 403 错误时如何处理？","当日志显示需要验证账号但链接被截断时，无需手动拼接链接。请直接登录 gcli2api 的管理面板，点击“消息测试”功能。系统会自动提供完整的验证链接，点击该链接即可完成账号认证，恢复正常使用。如果面板没有该按钮，请更新到最新版本并刷新浏览器缓存（Ctrl+F5）。","https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api\u002Fissues\u002F323",{"id":170,"question_zh":171,"answer_zh":172,"source_url":173},16012,"为什么模型回复中总是包含 Antigravity 相关的系统提示词？","这是因为反重力（Antigravity）渠道内嵌了特定的系统提示词（System Prompt），用于定义 AI 作为编程助手的角色。目前的实现中，这些提示词是硬编码在服务端的，用户在客户端设置的系统提示词可能会被覆盖或合并。暂时无法完全清空或修改这些内嵌提示词，这是该渠道的特性。","https:\u002F\u002Fgithub.com\u002Fsu-kaka\u002Fgcli2api\u002Fissues\u002F247",{"id":175,"question_zh":176,"answer_zh":177,"source_url":163},16013,"遇到\"lack a Gemini Code Assist license\"错误该如何解决？","该错误通常出现在更新后，提示缺少许可证。这大多是由于触发了速率限制或风控导致的临时状态，而非真的缺少许可证。解决方法是尝试在后台执行“批量检验”操作，通常可以解除限制并恢复正常使用。",[]]