[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-NikkeTryHard--zerogravity":3,"tool-NikkeTryHard--zerogravity":64},[4,17,27,35,44,52],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",154349,2,"2026-04-13T23:32:16",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":10,"last_commit_at":23,"category_tags":24,"status":16},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[25,14,26,13],"插件","图像",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":10,"last_commit_at":33,"category_tags":34,"status":16},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[25,13],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":41,"last_commit_at":42,"category_tags":43,"status":16},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,3,"2026-04-06T11:19:32",[15,26,14,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":10,"last_commit_at":50,"category_tags":51,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":53,"name":54,"github_repo":55,"description_zh":56,"stars":57,"difficulty_score":10,"last_commit_at":58,"category_tags":59,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,"2026-04-10T11:13:16",[26,60,61,25,14,62,15,13,63],"数据工具","视频","其他","音频",{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":70,"readme_en":71,"readme_zh":72,"quickstart_zh":73,"use_case_zh":74,"hero_image_url":75,"owner_login":76,"owner_name":77,"owner_avatar_url":78,"owner_bio":79,"owner_company":80,"owner_location":80,"owner_email":81,"owner_twitter":80,"owner_website":80,"owner_url":82,"languages":83,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":41,"env_os":92,"env_gpu":93,"env_ram":93,"env_deps":94,"category_tags":99,"github_topics":80,"view_count":10,"oss_zip_url":80,"oss_zip_packed_at":80,"status":16,"created_at":100,"updated_at":101,"faqs":102,"releases":131},7289,"NikkeTryHard\u002Fzerogravity","zerogravity","OpenAI, Anthropic, and Gemini-compatible proxy.","ZeroGravity 是一款专为 Google Gemini 模型设计的智能代理工具，能够完美兼容 OpenAI 和 Anthropic 的 API 接口标准。它的核心作用是充当“翻译官”和“伪装者”，让原本只支持 OpenAI 或 Claude 格式的应用程序、代码库或 AI 智能体，无需修改任何代码即可直接调用强大的 Gemini 模型。\n\n该工具主要解决了不同大模型厂商之间接口不互通的痛点。开发者往往需要为不同的模型编写适配层，而 ZeroGravity 通过模拟真实的 Google Antigravity 流量特征，不仅实现了协议转换，还确保了请求在谷歌侧看来如同原生访问一般自然，有效规避了因流量特征异常导致的拦截风险。目前，其底层运行时已基于 Docker 容器化构建，并在会话连续性、上下文管理及身份认证等关键环节完成了深度优化，稳定性经受住了高强度压力测试。\n\nZeroGravity 特别适合后端开发者、AI 应用构建者以及希望低成本整合多模型能力的研究人员使用。对于已经基于 OpenAI 生态构建应用，但想尝试或切换至 Gemini 能力的团队，它能极大降低迁移成本。值","ZeroGravity 是一款专为 Google Gemini 模型设计的智能代理工具，能够完美兼容 OpenAI 和 Anthropic 的 API 接口标准。它的核心作用是充当“翻译官”和“伪装者”，让原本只支持 OpenAI 或 Claude 格式的应用程序、代码库或 AI 智能体，无需修改任何代码即可直接调用强大的 Gemini 模型。\n\n该工具主要解决了不同大模型厂商之间接口不互通的痛点。开发者往往需要为不同的模型编写适配层，而 ZeroGravity 通过模拟真实的 Google Antigravity 流量特征，不仅实现了协议转换，还确保了请求在谷歌侧看来如同原生访问一般自然，有效规避了因流量特征异常导致的拦截风险。目前，其底层运行时已基于 Docker 容器化构建，并在会话连续性、上下文管理及身份认证等关键环节完成了深度优化，稳定性经受住了高强度压力测试。\n\nZeroGravity 特别适合后端开发者、AI 应用构建者以及希望低成本整合多模型能力的研究人员使用。对于已经基于 OpenAI 生态构建应用，但想尝试或切换至 Gemini 能力的团队，它能极大降低迁移成本。值得注意的是，该项目源代码目前已转为私有仓库管理以确保持续维护，但官方仍持续提供免费的二进制文件和 Docker 镜像供社区直接使用，用户可通过官方渠道申请源码阅读权限或直接部署发布版本。","> [!IMPORTANT]\n> **Source code has moved to a private repository** for long-term sustainability.\n> Binaries, Docker images, and releases will continue to be published here.\n>\n> **Want access to the source?**\n>\n> - [Open a Discussion](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fdiscussions) on this repo\n> - [Join our Telegram](https:\u002F\u002Ft.me\u002FZeroGravityProxy) and DM me\n>\n> Read-only access is granted on request.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-linux%20%7C%20macos%20%7C%20windows-555?style=flat-square\" alt=\"Platform\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-333?style=flat-square\" alt=\"License\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FNikkeTryHard\u002Fzerogravity?display_name=release&sort=semver&style=flat-square&label=stable\" alt=\"Stable\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI-Gemini%20%7C%20OpenAI%20%7C%20Anthropic-666?style=flat-square\" alt=\"API\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FNikkeTryHard\u002Fzerogravity\u002Ftotal?style=flat-square&label=downloads&color=555\" alt=\"Downloads\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">ZeroGravity\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FNikkeTryHard_zerogravity_readme_66bbfe2a239a.png\" alt=\"ZeroGravity\" width=\"200\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  Gemini-native proxy with OpenAI- and Anthropic-compatible surfaces that looks like real Antigravity traffic to Google.\n\u003C\u002Fp>\n\n> **Early stage.** Ran this on OpenCode with an Ultra account for 3 days straight, stress testing the whole time. No issues so far.\n>\n> This software is developed on Linux. I aim to support every OS as best as possible, so if there is any issue please open an issue and I will be happy to assist.\n>\n> Star the repo so more people can find it while it still works. Issues and PRs are welcome.\n\n---\n\n## Roadmap Progress\n\nThe project is moving through a phased v2.0.0 roadmap. The short version is:\nthe Docker-first native runtime foundation is in place, the main auth\u002Fruntime\nbring-up work is in place, and the remaining work is mostly about closing the\ngap between \"works well\" and \"matches real Antigravity behavior as closely as\npossible.\"\n\n### Phase Status\n\n| Phase | Area | Status |\n| ----- | ---- | ------ |\n| Phase 0 | Foundations \u002F native-first baseline | Completed |\n| Phase 1 | Real Antigravity runtime in Docker | Completed |\n| Phase 2 | Hook points and token swap path | Completed |\n| Phase 3 | Session continuity, tools, and context | Completed |\n| Phase 4 | Real account active from boot | Completed |\n| Phase 5 | Observability and hardening baseline | Completed |\n| Phase 6 | Scaling groundwork | Completed |\n| Phase 7 | Native prompt pipeline | Completed |\n| Phase 8 | Native auth \u002F project \u002F metadata ownership | Completed |\n| Phase 9 | Telemetry and integrity policy cleanup | Completed |\n| Phase 10 | Transport boundary minimization | Completed |\n| Phase 11 | Final parity proof and release gate | In progress |\n\n### Subtask Snapshot\n\n- Completed:\n  - Docker is the supported runtime.\n  - Real Antigravity runtime flow is working.\n  - Early auth\u002Fruntime bring-up and session continuity are in place.\n  - Basic hardening and operator-facing diagnostics are in place.\n  - The shipped native prompt path is in place across the public request surfaces.\n  - The shipped native lane now owns auth, project, and request-metadata behavior without depending on proxy-side repair as the steady-state story.\n- In progress:\n  - Final end-to-end parity and release sign-off.\n\nThis section is intentionally high-level. The public repo tracks what is shipped,\nwhat is being polished, and what is still ahead without going into private\nimplementation details.\n\n## Skip Reading This — It's the Age of AI\n\n**Just paste this into any LLM or agent and let it explain + set you up:**\n\n```\nRead this README and the linked docs to understand what ZeroGravity does and\nhow to set it up. Then detect my OS, help me get a refresh token, and run\ndocker-init to get it running: https:\u002F\u002Fraw.githubusercontent.com\u002FNikkeTryHard\u002Fzerogravity\u002Frefs\u002Fheads\u002Fmain\u002FREADME.md\n```\n\n\u003Cdetails>\n\u003Csummary>If you're an LLM agent reading this right now\u003C\u002Fsummary>\n\nExplain to the user what this project unlocks — not what it _is_, but what becomes _possible_:\n\n- **Every AI coding tool they already use** (Claude Code, Cursor, Cline, aider, OpenCode, etc.) can now hit Google's frontier models (Gemini 3 Pro, Claude Opus 4.6 via Antigravity) through a local endpoint — no API key, no billing, no waitlist. Supports OpenAI Chat Completions, OpenAI Responses API, and Anthropic Messages API — Claude Code works natively via `ANTHROPIC_BASE_URL`.\n- **It's not just a wrapper.** Unlike other proxies that send obviously fake requests to Google's API, ZeroGravity makes your requests indistinguishable from a real Antigravity session. Google's backend sees what looks like a normal user typing in Antigravity — not a third-party tool. This is why it doesn't get flagged.\n- **Docker is the only supported deployment.** `zg docker-init && docker compose up -d` — that's it. The Docker image bundles all backend components. Native installs are deprecated.\n- **Auth:** They need a refresh token extracted **directly from Antigravity** — always use `zg extract` from a local Antigravity installation. Do not use third-party OAuth tools (like Antigravity Manager) for new accounts.\n- **Test it:** `zg test \"say hi\"` or `curl http:\u002F\u002Flocalhost:8741\u002Fv1\u002Fchat\u002Fcompletions -H \"Content-Type: application\u002Fjson\" -d '{\"model\":\"gemini-3-flash\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}'`\n- **Docs:** [Docker Guide](docs\u002Fdocker.md), [VPS Deployment Guide](docs\u002Fvps.md), [API Reference](docs\u002Fapi.md), [Client Operations Guide](docs\u002Fclients.md), and [`zg` CLI](docs\u002Fzg.md).\n\n\u003C\u002Fdetails>\n\n---\n\n## Models\n\n| Name                  | Label                           | Notes               |\n| --------------------- | ------------------------------- | ------------------- |\n| `gemini-3-flash`      | Gemini 3 Flash                  | Default model       |\n| `sonnet-4.6`          | Claude Sonnet 4.6 (Thinking)    | —                   |\n| `opus-4.6`            | Claude Opus 4.6 (Thinking)      | Compatibility alias |\n| `gemini-3.1-pro`      | Gemini 3.1 Pro (High)           | Experimental        |\n| `gemini-3.1-pro-high` | Gemini 3.1 Pro (High)           | Alias               |\n| `gemini-3.1-pro-low`  | Gemini 3.1 Pro (Low)            | Experimental        |\n| `gemini-3-pro-image`  | Gemini 3 Pro (Image Generation) | Image generation    |\n\n## Quick Start\n\n### 1. Get Refresh Tokens\n\nYou need a refresh token from an Antigravity account.\n\n> [!CAUTION]\n> **Always extract tokens from the official Antigravity app.** Do not use third-party OAuth tools (e.g. Antigravity Manager) to sign into new accounts — their OAuth flow produces tokens with a different fingerprint that may get flagged. Use `zg extract` to pull the token Antigravity already has. The `zg import` command is only for migrating accounts you've **already** extracted elsewhere.\n\n**From Antigravity (recommended):**\n\n1. Install [Antigravity](https:\u002F\u002Fantigravity.google\u002Fdownload) on your desktop\n2. Login with your Google account\n3. Run `zg extract` — copies the refresh token to `accounts.json` (Linux: `~\u002F.config\u002Fzerogravity\u002F`, macOS: `~\u002FLibrary\u002FApplication Support\u002Fzerogravity\u002F`, Windows: `%APPDATA%\\zerogravity\\`)\n\n**Preferred operator model:** start with one real account per container. If you need more throughput later, run another container with another account instead of treating multi-account rotation as the default path.\n\n**From [Antigravity Manager](https:\u002F\u002Fgithub.com\u002Flbjlaq\u002FAntigravity-Manager) (existing accounts only):**\n\n1. Export accounts from Antigravity Manager (Settings → Export)\n2. Run `zg import \u002Fpath\u002Fto\u002Fexported_accounts.json`\n\n### 2. Start with Docker\n\n> [!WARNING]\n> **Docker is the only supported method to run the ZeroGravity proxy.** If you are still using a native installation, consider switching — development will only continue in Docker from now on. `zg` will continue to work cross-platform as a manager\u002Fsetup tool.\n\n```bash\n# Generate docker-compose.yml + accounts.json in current dir\nzg docker-init\n\n# Start the proxy\ndocker compose up -d\n\n# Verify it's running\ncurl http:\u002F\u002Flocalhost:8741\u002Fhealth\n```\n\n> **Note:** The Docker image bundles all required backend components — no Antigravity installation needed on the host. See [Docker Guide](docs\u002Fdocker.md) for advanced setup.\n\n### 3. Connect Your Client\n\nThe proxy listens on **port 8741** by default. Point your API client at `http:\u002F\u002Flocalhost:8741`.\n\n**Gemini-compatible (recommended — zero-translation passthrough):**\n\n```\nhttp:\u002F\u002Flocalhost:8741\u002Fv1beta\n```\n\n**OpenAI-compatible** (ChatGPT clients, Cursor, Continue, etc.):\n\n```\nhttp:\u002F\u002Flocalhost:8741\u002Fv1\n```\n\n**Anthropic-compatible** (Claude Code, etc.):\n\n```\nhttp:\u002F\u002Flocalhost:8741\n```\n\n> [!TIP]\n> **From your host machine:** `localhost:8741` works as-is (port is mapped in docker-compose).\n> **From another container** in the same compose: use `zerogravity:8741` (the service name).\n> **From a remote machine:** use `\u003Chost-ip>:8741`.\n\n\u003Cdetails>\n\u003Csummary>OpenCode configuration template\u003C\u002Fsummary>\n\n> [!TIP]\n> **Use the Gemini protocol** — it's the recommended approach. The upstream API speaks Gemini natively, so tool calls, function declarations, and responses pass through with zero translation. The OpenAI and Anthropic protocols work but require format conversion on every request.\n\nAdd to your global config (`~\u002F.config\u002Fopencode\u002Fopencode.json`) or project config (`opencode.json`):\n\n**Gemini protocol (recommended):**\n\n```jsonc\n{\n  \"$schema\": \"https:\u002F\u002Fopencode.ai\u002Fconfig.json\",\n  \"provider\": {\n    \"zerogravity\": {\n      \"npm\": \"@ai-sdk\u002Fgoogle\",\n      \"name\": \"ZeroGravity (Gemini)\",\n      \"options\": {\n        \"apiKey\": \"not-needed\",\n        \"baseURL\": \"http:\u002F\u002Flocalhost:8741\u002Fv1beta\",\n      },\n      \"models\": {\n        \"gemini-3-flash\": {\n          \"name\": \"Gemini 3 Flash\",\n          \"limit\": { \"context\": 1048576, \"output\": 65536 },\n        },\n        \"gemini-3.1-pro\": {\n          \"name\": \"Gemini 3.1 Pro\",\n          \"limit\": { \"context\": 1048576, \"output\": 65536 },\n        },\n      },\n    },\n  },\n  \"model\": \"zerogravity\u002Fgemini-3-flash\",\n}\n```\n\n**OpenAI-compatible (alternative):**\n\n```jsonc\n{\n  \"$schema\": \"https:\u002F\u002Fopencode.ai\u002Fconfig.json\",\n  \"provider\": {\n    \"zerogravity\": {\n      \"npm\": \"@ai-sdk\u002Fopenai-compatible\",\n      \"name\": \"ZeroGravity\",\n      \"options\": {\n        \"apiKey\": \"not-needed\",\n        \"baseURL\": \"http:\u002F\u002Flocalhost:8741\u002Fv1\",\n      },\n      \"models\": {\n        \"gemini-3-flash\": {\n          \"name\": \"Gemini 3 Flash\",\n          \"limit\": { \"context\": 1048576, \"output\": 65536 },\n        },\n        \"opus-4.6\": {\n          \"name\": \"Claude Opus 4.6\",\n          \"limit\": { \"context\": 200000, \"output\": 65536 },\n          \"thinking\": { \"type\": \"adaptive\" },\n        },\n        \"sonnet-4.6\": {\n          \"name\": \"Claude Sonnet 4.6\",\n          \"limit\": { \"context\": 200000, \"output\": 65536 },\n          \"thinking\": { \"type\": \"adaptive\" },\n        },\n      },\n    },\n  },\n  \"model\": \"zerogravity\u002Fgemini-3-flash\",\n}\n```\n\n**Optional: MCP servers** (config varies by client — see each project's docs)\n\n- [Context7](https:\u002F\u002Fgithub.com\u002Fupstash\u002Fcontext7#installation) — documentation search\n- [Open WebSearch](https:\u002F\u002Fgithub.com\u002FAas-ee\u002Fopen-webSearch) — web search via SearXNG\n\n**Optional: [oh-my-opencode](https:\u002F\u002Fgithub.com\u002Fcode-yeongyu\u002Foh-my-opencode)** — routes all OpenCode subagents through ZeroGravity:\n\n```jsonc\n{\n  \"plugin\": [\"oh-my-opencode\"],\n  \u002F\u002F oh-my-opencode.json (same directory)\n  \u002F\u002F sets every subagent model to \"zerogravity\u002Fgemini-3-flash\"\n}\n```\n\n> The `apiKey` can be anything — it's ignored unless you've set `ZEROGRAVITY_API_KEY`.\n\n\u003C\u002Fdetails>\n\n### 4. Test\n\n```bash\n# Quick test with zg\nzg test \"say hi\"\n\n# Or curl directly\ncurl http:\u002F\u002Flocalhost:8741\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\": \"gemini-3-flash\", \"messages\": [{\"role\": \"user\", \"content\": \"hi\"}]}'\n```\n\n## Endpoints\n\nThe proxy runs on `http:\u002F\u002Flocalhost:8741` by default.\n\n| Path                                   | Protocol  | Description                                             |\n| -------------------------------------- | --------- | ------------------------------------------------------- |\n| `POST \u002Fv1\u002Fchat\u002Fcompletions`            | OpenAI    | Chat Completions (sync + streaming)                     |\n| `POST \u002Fv1\u002Fresponses`                   | OpenAI    | Responses API (sync + streaming)                        |\n| `POST \u002Fv1\u002Fmessages`                    | Anthropic | Messages API (sync + streaming)                         |\n| `POST \u002Fv1\u002Fmessages\u002Fcount_tokens`       | Anthropic | Token counting                                          |\n| `GET \u002Fv1beta\u002Fmodels`                   | Gemini    | List models (Gemini v1beta format)                      |\n| `GET \u002Fv1beta\u002Fmodels\u002F{model}`           | Gemini    | Get model metadata (Gemini v1beta format)               |\n| `POST \u002Fv1beta\u002Fmodels\u002F{model}:{action}` | Gemini    | Official Gemini v1beta (recommended — zero translation) |\n| `GET \u002Fv1\u002Fmodels`                       | —         | List available models                                   |\n| `GET \u002Fv1\u002Fimages\u002F*`                     | —         | Serve generated images (see below)                      |\n| `GET \u002Fhealth`                          | —         | Health check                                            |\n\nFor the full endpoint list (accounts, token, usage, quota, search), see the [API Reference](docs\u002Fapi.md).\n\n### Images\n\nWhen a model generates an image, it's saved and served at `http:\u002F\u002Flocalhost:8741\u002Fv1\u002Fimages\u002F\u003Cid>.png`. The response will include the URL — no extra setup needed.\n\n## Authentication\n\nThe proxy uses **refresh tokens** for persistent auth. Refresh tokens auto-renew access tokens — no manual token management needed.\n\n### Getting Refresh Tokens\n\nSee [Quick Start](#1-get-refresh-tokens) above.\n\n### Importing Existing Accounts from Antigravity Manager\n\n> [!WARNING]\n> **For importing already-extracted accounts only.** Do not use Antigravity Manager to sign into new accounts — always use the official Antigravity app and `zg extract` instead.\n\n[Antigravity Manager](https:\u002F\u002Fgithub.com\u002Flbjlaq\u002FAntigravity-Manager) exports accounts as a flat JSON array:\n\n```json\n[\n  { \"email\": \"user@gmail.com\", \"refresh_token\": \"1\u002F\u002F0fXXX\" },\n  { \"email\": \"user2@gmail.com\", \"refresh_token\": \"1\u002F\u002F0fYYY\" }\n]\n```\n\n**With `zg` (recommended):**\n\n```bash\nzg import \u002Fpath\u002Fto\u002Fantigravity_accounts.json\n```\n\nThis auto-detects the format, converts it, and merges into your existing `accounts.json`.\n\n**Manual conversion:** Wrap the array in the schema below — add `\"accounts\":` around it and optionally set `\"active\"` to the first email.\n\n### `accounts.json` Schema\n\nThe proxy reads accounts from `accounts.json` in the config directory:\n\n| OS      | Default path                                              |\n| ------- | --------------------------------------------------------- |\n| Linux   | `~\u002F.config\u002Fzerogravity\u002Faccounts.json`                     |\n| macOS   | `~\u002FLibrary\u002FApplication Support\u002Fzerogravity\u002Faccounts.json` |\n| Windows | `%APPDATA%\\zerogravity\\accounts.json`                     |\n\n> Override with `ZEROGRAVITY_CONFIG_DIR` env var.\n\n```json\n{\n  \"accounts\": [\n    {\n      \"email\": \"user@gmail.com\",\n      \"refresh_token\": \"1\u002F\u002F0fXXXXXXXXXX\",\n      \"extracted_at\": \"2026-02-21T05:08:32Z\"\n    }\n  ],\n  \"active\": \"user@gmail.com\"\n}\n```\n\n| Field           | Required | Description                                             |\n| --------------- | -------- | ------------------------------------------------------- |\n| `email`         | Yes      | Google account email                                    |\n| `refresh_token` | Yes      | OAuth refresh token (starts with `1\u002F\u002F`)                 |\n| `alias`         | No       | Friendly alias for the account                          |\n| `extracted_at`  | No       | ISO 8601 timestamp of when the account was added        |\n| `active`        | No       | Email of the currently active account (top-level field) |\n\n## Customization\n\n| Variable                      | Default       | Description                                                                                                                                 |\n| ----------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |\n| `ZEROGRAVITY_SYSTEM_MODE`     | `native`      | `native` (default) = preserve AG request, bidirectional tool translation; `stealth` = strip AG identity, inject client tools\u002Fprompt; `minimal` = replace AG prompt entirely |\n| `ZEROGRAVITY_H2_PROFILE`     | `chromium`    | H2 fingerprint profile (`chromium` or `go`)                                                                                                 |\n| `ZEROGRAVITY_H2_COMPAT_MODE` | `parity`      | H2 compatibility mode (`parity` or `strict_passthrough`)                                                                                    |\n| `ZEROGRAVITY_TLS_DEBUG_BACKEND` | --          | Log one backend TLS handshake summary (set to `1`)                                                                                            |\n| `ZEROGRAVITY_TLS_DEBUG_MITM` | --            | Log one MITM upstream TLS handshake summary (set to `1`)                                                                                      |\n| `ZEROGRAVITY_SENSITIVE_WORDS` | built-in list | Comma-separated client names to obfuscate in requests (zero-width spaces), or `none` to disable                                             |\n| `ZEROGRAVITY_MODEL_ALIASES`   | —             | Map custom model names to built-in models, e.g. `gpt-4o:gemini-3-flash,gpt-4:opus-4.6`. Also configurable via `zg alias` or `aliases.json`  |\n| `ZEROGRAVITY_API_BODY_LIMIT_MB` | `32` (clamped `1..100`) | Max request body size in MiB for API routes (`\u002Fv1\u002F*`)                                                                                       |\n| `ZEROGRAVITY_QUOTA_CAP`       | `0.2`         | Advanced compatibility knob for quota-triggered account rotation inside one deployment. `0` disables that behavior. Also available as `--quota-cap` CLI flag |\n| `ZEROGRAVITY_UPSTREAM_PROXY`  | —             | Route all outbound MITM traffic through a proxy (`http:\u002F\u002F`, `socks5:\u002F\u002F`, `socks5h:\u002F\u002F`)                                                      |\n| `ZEROGRAVITY_HTTP_PROXY`      | —             | Pass HTTP\u002FHTTPS proxy settings to the backend child process                                                                                 |\n\n**System prompt mode:** Three modes control how ZeroGravity handles the backend's system prompt. **`native`** (default) preserves the AG request almost untouched — AG's tools, system prompt, and generation config are kept, only the dummy prompt is replaced with real user text. Bidirectional tool translation maps AG tool names to client names and back. Works on all API endpoints (OpenAI, Anthropic, Responses, Gemini v1beta). **`stealth`** strips AG identity and injects client tools and system prompt. **`minimal`** replaces the entire 20KB backend prompt — saves tokens but may trigger rate limiting on Pro models.\n\n**Sensitive word obfuscation:** Client names like OpenCode, Cursor, Claude Code are automatically obfuscated with invisible characters so Google can't grep for them in request logs.\n\nSee the [Docker Guide](docs\u002Fdocker.md) for the full environment variable reference.\n\n## Documentation\n\n| Doc                              | What's in it                                                 |\n| -------------------------------- | ------------------------------------------------------------ |\n| [Docker Guide](docs\u002Fdocker.md)   | Docker Compose setup, environment variables, volumes         |\n| [VPS Deployment Guide](docs\u002Fvps.md) | Minimal secure remote-host deployment, API key auth, TLS\u002Ffirewall baseline |\n| [API Reference](docs\u002Fapi.md)     | All endpoints, curl examples, compatibility account controls, API key auth |\n| [Client Operations Guide](docs\u002Fclients.md) | Client-specific behavior, defaults, and troubleshooting |\n| [`zg` CLI Reference](docs\u002Fzg.md) | All `zg` commands — standalone and daemon                    |\n\n## License\n\n[MIT](LICENSE)\n","> [!重要]\n> 为了长期可持续性，**源代码已迁移到私有仓库**。\n> 二进制文件、Docker镜像和发布版本将继续在此处发布。\n>\n> **想获取源代码访问权限吗？**\n>\n> - 在此仓库中[开启讨论](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fdiscussions)\n> - [加入我们的Telegram](https:\u002F\u002Ft.me\u002FZeroGravityProxy)，并私信我\n>\n> 只读访问权限可根据请求授予。\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fplatform-linux%20%7C%20macos%20%7C%20windows-555?style=flat-square\" alt=\"平台\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-333?style=flat-square\" alt=\"许可证\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002FNikkeTryHard\u002Fzerogravity?display_name=release&sort=semver&style=flat-square&label=稳定\" alt=\"稳定版\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FAPI-Gemini%20%7C%20OpenAI%20%7C%20Anthropic-666?style=flat-square\" alt=\"API\" \u002F>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fdownloads\u002FNikkeTryHard\u002Fzerogravity\u002Ftotal?style=flat-square&label=下载量&color=555\" alt=\"下载量\" \u002F>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">ZeroGravity\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FNikkeTryHard_zerogravity_readme_66bbfe2a239a.png\" alt=\"ZeroGravity\" width=\"200\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  原生支持Gemini的代理，同时兼容OpenAI和Anthropic的接口，外观上看起来就像真实的Antigravity流量发送给Google一样。\n\u003C\u002Fp>\n\n> **早期阶段。** 我曾在OpenCode平台上使用Ultra账号连续运行了3天，期间一直在进行压力测试，目前尚未发现任何问题。\n>\n> 本软件是在Linux上开发的。我的目标是尽可能支持所有操作系统，因此如果您遇到任何问题，请提交一个问题，我会很乐意为您提供帮助。\n>\n> 请给这个仓库点个赞，让更多人能在它还能正常工作时找到它。欢迎提出问题和PR。\n\n---\n\n## 路线图进展\n\n该项目正在按照分阶段的v2.0.0路线图推进。简而言之：\nDocker优先的原生运行时基础已经搭建完毕，主要的身份验证和运行时初始化工作也已完成，剩下的工作主要是将“运行良好”与“尽可能接近真实Antigravity行为”之间的差距缩小。\n\n### 阶段状态\n\n| 阶段 | 领域 | 状态 |\n| ----- | ---- | ------ |\n| 阶段0 | 基础设施 \u002F 原生优先基准 | 已完成 |\n| 阶段1 | Docker中的真实Antigravity运行时 | 已完成 |\n| 阶段2 | 挂钩点和令牌交换路径 | 已完成 |\n| 阶段3 | 会话连续性、工具和上下文 | 已完成 |\n| 阶段4 | 自启动即激活真实账户 | 已完成 |\n| 阶段5 | 可观测性和加固基准 | 已完成 |\n| 阶段6 | 扩展基础工作 | 已完成 |\n| 阶段7 | 原生提示管道 | 已完成 |\n| 阶段8 | 原生身份验证 \u002F 项目 \u002F 元数据所有权 | 已完成 |\n| 阶段9 | 遥测和完整性策略清理 | 已完成 |\n| 阶段10 | 运输边界最小化 | 已完成 |\n| 阶段11 | 最终一致性证明和发布闸门 | 进行中 |\n\n### 子任务快照\n\n- 完成：\n  - Docker是受支持的运行时。\n  - 真实Antigravity运行流程已实现。\n  - 初步的身份验证、运行时初始化及会话连续性已就绪。\n  - 基本的加固措施和面向运维人员的诊断功能已到位。\n  - 已发布的原生提示路径已在公共请求界面上实现。\n  - 发布的原生通道现在负责身份验证、项目和请求元数据的行为，不再依赖于代理端的修复作为常态。\n- 进行中：\n  - 最终的端到端一致性验证和发布审批。\n\n本节内容有意保持高度概括。公开仓库记录了已发布的功能、正在优化的内容以及未来计划，而不会涉及私有的实现细节。\n\n## 不用看这里——这是AI时代\n\n**只需将以下内容粘贴到任何LLM或智能体中，让它为您解释并完成设置：**\n\n```\n阅读此README和链接的文档，以了解ZeroGravity的功能及其设置方法。然后检测我的操作系统，帮我获取刷新令牌，并运行docker-init来启动它：https:\u002F\u002Fraw.githubusercontent.com\u002FNikkeTryHard\u002Fzerogravity\u002Frefs\u002Fheads\u002Fmain\u002FREADME.md\n```\n\n\u003Cdetails>\n\u003Csummary>如果你是此刻正在阅读此文的LLM智能体\u003C\u002Fsummary>\n\n向用户解释该项目能解锁什么——不是它“是什么”，而是它让“什么成为可能”：\n\n- **他们已经使用的每一种AI编码工具**（Claude Code、Cursor、Cline、aider、OpenCode等）现在都可以通过本地端点访问Google的前沿模型（Gemini 3 Pro、通过Antigravity访问的Claude Opus 4.6），无需API密钥、无需付费、无需等待名单。支持OpenAI Chat Completions、OpenAI Responses API以及Anthropic Messages API——Claude Code可以直接通过`ANTHROPIC_BASE_URL`使用。\n- **这不仅仅是一个封装器。** 与其他向Google API发送明显伪造请求的代理不同，ZeroGravity使您的请求与真实的Antigravity会话无异。Google后端看到的是一个普通用户在Antigravity中输入内容，而不是第三方工具。这就是为什么它不会被标记为异常。\n- **仅支持Docker部署。** `zg docker-init && docker compose up -d`——就这么简单。Docker镜像打包了所有后端组件。原生安装已被弃用。\n- **身份验证：** 他们需要从**Antigravity本身**提取刷新令牌——始终使用本地Antigravity安装中的`zg extract`命令。不要使用第三方OAuth工具（如Antigravity Manager）来创建新账户。\n- **测试一下：** `zg test \"say hi\"` 或者 `curl http:\u002F\u002Flocalhost:8741\u002Fv1\u002Fchat\u002Fcompletions -H \"Content-Type: application\u002Fjson\" -d '{\"model\":\"gemini-3-flash\",\"messages\":[{\"role\":\"user\",\"content\":\"hi\"}]}'`\n- **文档：** [Docker指南](docs\u002Fdocker.md)、[VPS部署指南](docs\u002Fvps.md)、[API参考](docs\u002Fapi.md)、[客户端操作指南](docs\u002Fclients.md)以及[`zg` CLI](docs\u002Fzg.md)。\n\n\u003C\u002Fdetails>\n\n---\n\n## 模型\n\n| 名称                  | 标签                           | 备注               |\n| --------------------- | ------------------------------- | ------------------- |\n| `gemini-3-flash`      | Gemini 3 Flash                  | 默认模型       |\n| `sonnet-4.6`          | Claude Sonnet 4.6 (Thinking)    | —                   |\n| `opus-4.6`            | Claude Opus 4.6 (Thinking)      | 兼容别名 |\n| `gemini-3.1-pro`      | Gemini 3.1 Pro (High)           | 实验性        |\n| `gemini-3.1-pro-high` | Gemini 3.1 Pro (High)           | 别名           |\n| `gemini-3.1-pro-low`  | Gemini 3.1 Pro (Low)            | 实验性        |\n| `gemini-3-pro-image`  | Gemini 3 Pro (Image Generation) | 图像生成    |\n\n## 快速入门\n\n### 1. 获取刷新令牌\n\n您需要一个来自 Antigravity 账号的刷新令牌。\n\n> [!CAUTION]\n> **请务必从官方 Antigravity 应用中提取令牌。** 请勿使用第三方 OAuth 工具（例如 Antigravity Manager）登录新账号——这些工具的 OAuth 流程生成的令牌指纹不同，可能会被标记为可疑。请使用 `zg extract` 命令从 Antigravity 已有的会话中提取令牌。`zg import` 命令仅适用于迁移您**已经**在其他地方提取过的账号。\n\n**从 Antigravity（推荐）：**\n\n1. 在您的桌面安装 [Antigravity](https:\u002F\u002Fantigravity.google\u002Fdownload)。\n2. 使用您的 Google 账号登录。\n3. 运行 `zg extract` — 该命令会将刷新令牌复制到 `accounts.json` 文件中（Linux：`~\u002F.config\u002Fzerogravity\u002F`，macOS：`~\u002FLibrary\u002FApplication Support\u002Fzerogravity\u002F`，Windows：`%APPDATA%\\zerogravity\\`）。\n\n**首选操作模式：** 每个容器只启动一个真实账号。如果您后续需要更高的吞吐量，可以运行另一个包含不同账号的容器，而不是默认采用多账号轮转的方式。\n\n**从 [Antigravity Manager](https:\u002F\u002Fgithub.com\u002Flbjlaq\u002FAntigravity-Manager)（仅适用于现有账号）：**\n\n1. 从 Antigravity Manager 导出账号（设置 → 导出）。\n2. 运行 `zg import \u002Fpath\u002Fto\u002Fexported_accounts.json`。\n\n### 2. 使用 Docker 启动\n\n> [!WARNING]\n> **Docker 是运行 ZeroGravity 代理的唯一受支持方式。** 如果您仍在使用原生安装，请考虑切换——今后开发将仅在 Docker 环境中进行。`zg` 仍将以跨平台管理工具的身份继续工作。\n\n```bash\n# 在当前目录生成 docker-compose.yml 和 accounts.json\nzg docker-init\n\n# 启动代理\ndocker compose up -d\n\n# 验证是否正在运行\ncurl http:\u002F\u002Flocalhost:8741\u002Fhealth\n```\n\n> **注意：** Docker 镜像已打包所有必要的后端组件，无需在宿主机上安装 Antigravity。有关高级设置，请参阅 [Docker 指南](docs\u002Fdocker.md)。\n\n### 3. 连接您的客户端\n\n代理默认监听 **端口 8741**。请将您的 API 客户端指向 `http:\u002F\u002Flocalhost:8741`。\n\n**Gemini 兼容（推荐——零转换直通）：**\n\n```\nhttp:\u002F\u002Flocalhost:8741\u002Fv1beta\n```\n\n**OpenAI 兼容（ChatGPT 客户端、Cursor、Continue 等）：**\n\n```\nhttp:\u002F\u002Flocalhost:8741\u002Fv1\n```\n\n**Anthropic 兼容（Claude Code 等）：**\n\n```\nhttp:\u002F\u002Flocalhost:8741\n```\n\n> [!TIP]\n> **从您的宿主机：** `localhost:8741` 可直接使用（端口已在 docker-compose 中映射）。\n> **从同一 compose 中的另一个容器：** 使用 `zerogravity:8741`（服务名称）。\n> **从远程机器：** 使用 `\u003Chost-ip>:8741`。\n\n\u003Cdetails>\n\u003Csummary>OpenCode 配置模板\u003C\u002Fsummary>\n\n> [!TIP]\n> **建议使用 Gemini 协议**——这是推荐的做法。上游 API 原生支持 Gemini，因此工具调用、函数声明和响应都能以零转换的方式直接传递。OpenAI 和 Anthropic 协议虽然可用，但每次请求都需要进行格式转换。\n\n将其添加到您的全局配置文件（`~\u002F.config\u002Fopencode\u002Fopencode.json`）或项目配置文件（`opencode.json`）中：\n\n**Gemini 协议（推荐）：**\n\n```jsonc\n{\n  \"$schema\": \"https:\u002F\u002Fopencode.ai\u002Fconfig.json\",\n  \"provider\": {\n    \"zerogravity\": {\n      \"npm\": \"@ai-sdk\u002Fgoogle\",\n      \"name\": \"ZeroGravity (Gemini)\",\n      \"options\": {\n        \"apiKey\": \"not-needed\",\n        \"baseURL\": \"http:\u002F\u002Flocalhost:8741\u002Fv1beta\",\n      },\n      \"models\": {\n        \"gemini-3-flash\": {\n          \"name\": \"Gemini 3 Flash\",\n          \"limit\": { \"context\": 1048576, \"output\": 65536 },\n        },\n        \"gemini-3.1-pro\": {\n          \"name\": \"Gemini 3.1 Pro\",\n          \"limit\": { \"context\": 1048576, \"output\": 65536 },\n        },\n      },\n    },\n  },\n  \"model\": \"zerogravity\u002Fgemini-3-flash\",\n}\n```\n\n**OpenAI 兼容（替代方案）：**\n\n```jsonc\n{\n  \"$schema\": \"https:\u002F\u002Fopencode.ai\u002Fconfig.json\",\n  \"provider\": {\n    \"zerogravity\": {\n      \"npm\": \"@ai-sdk\u002Fopenai-compatible\",\n      \"name\": \"ZeroGravity\",\n      \"options\": {\n        \"apiKey\": \"not-needed\",\n        \"baseURL\": \"http:\u002F\u002Flocalhost:8741\u002Fv1\",\n      },\n      \"models\": {\n        \"gemini-3-flash\": {\n          \"name\": \"Gemini 3 Flash\",\n          \"limit\": { \"context\": 1048576, \"output\": 65536 },\n        },\n        \"opus-4.6\": {\n          \"name\": \"Claude Opus 4.6\",\n          \"limit\": { \"context\": 200000, \"output\": 65536 },\n          \"thinking\": { \"type\": \"adaptive\" },\n        },\n        \"sonnet-4.6\": {\n          \"name\": \"Claude Sonnet 4.6\",\n          \"limit\": { \"context\": 200000, \"output\": 65536 },\n          \"thinking\": { \"type\": \"adaptive\" },\n        },\n      },\n    },\n  },\n  \"model\": \"zerogravity\u002Fgemini-3-flash\",\n}\n```\n\n**可选：MCP 服务器**（配置因客户端而异，请参阅各项目的文档）\n\n- [Context7](https:\u002F\u002Fgithub.com\u002Fupstash\u002Fcontext7#installation) — 文档搜索\n- [Open WebSearch](https:\u002F\u002Fgithub.com\u002FAas-ee\u002Fopen-webSearch) — 通过 SearXNG 进行网络搜索\n\n**可选：[oh-my-opencode](https:\u002F\u002Fgithub.com\u002Fcode-yeongyu\u002Foh-my-opencode)** — 将所有 OpenCode 子代理的流量路由至 ZeroGravity：\n\n```jsonc\n{\n  \"plugin\": [\"oh-my-opencode\"],\n  \u002F\u002F oh-my-opencode.json（同一目录）\n  \u002F\u002F 将每个子代理模型设置为“zerogravity\u002Fgemini-3-flash”\n}\n```\n\n> `apiKey` 字段可以填写任意内容——除非您设置了 `ZEROGRAVITY_API_KEY`，否则该字段会被忽略。\n\n\u003C\u002Fdetails>\n\n### 4. 测试\n\n```bash\n# 使用 zg 快速测试\nzg test \"say hi\"\n\n# 或者直接使用 curl\ncurl http:\u002F\u002Flocalhost:8741\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\": \"gemini-3-flash\", \"messages\": [{\"role\": \"user\", \"content\": \"hi\"}]}'\n```\n\n## 终端节点\n\n代理默认运行在 `http:\u002F\u002Flocalhost:8741`。\n\n| 路径                                   | 协议  | 描述                                             |\n| -------------------------------------- | --------- | ------------------------------------------------------- |\n| `POST \u002Fv1\u002Fchat\u002Fcompletions`            | OpenAI    | 聊天补全（同步 + 流式）                     |\n| `POST \u002Fv1\u002Fresponses`                   | OpenAI    | 响应 API（同步 + 流式）                        |\n| `POST \u002Fv1\u002Fmessages`                    | Anthropic | 消息 API（同步 + 流式）                         |\n| `POST \u002Fv1\u002Fmessages\u002Fcount_tokens`       | Anthropic | 令牌计数                                          |\n| `GET \u002Fv1beta\u002Fmodels`                   | Gemini    | 列出模型（Gemini v1beta 格式）                      |\n| `GET \u002Fv1beta\u002Fmodels\u002F{model}`           | Gemini    | 获取模型元数据（Gemini v1beta 格式）               |\n| `POST \u002Fv1beta\u002Fmodels\u002F{model}:{action}` | Gemini    | 官方 Gemini v1beta（推荐 — 无需翻译）             |\n| `GET \u002Fv1\u002Fmodels`                       | —         | 列出可用模型                                   |\n| `GET \u002Fv1\u002Fimages\u002F*`                     | —         | 提供生成的图片（见下文）                      |\n| `GET \u002Fhealth`                          | —         | 健康检查                                            |\n\n完整终端节点列表（账户、令牌、用量、配额、搜索）请参阅 [API 参考文档](docs\u002Fapi.md)。\n\n### 图片\n\n当模型生成一张图片时，它会被保存并在 `http:\u002F\u002Flocalhost:8741\u002Fv1\u002Fimages\u002F\u003Cid>.png` 提供。响应中会包含该图片的 URL，无需额外配置。\n\n## 认证\n\n代理使用**刷新令牌**进行持久化认证。刷新令牌会自动续期访问令牌，无需手动管理令牌。\n\n### 获取刷新令牌\n\n请参阅上方的【快速入门】第 1 步：获取刷新令牌。\n\n### 从 Antigravity Manager 导入现有账户\n\n> [!警告]\n> **仅用于导入已提取的账户。** 请勿使用 Antigravity Manager 登录新账户——始终使用官方的 Antigravity 应用程序和 `zg extract` 命令。\n\n[Antigravity Manager](https:\u002F\u002Fgithub.com\u002Flbjlaq\u002FAntigravity-Manager) 会将账户导出为一个扁平的 JSON 数组：\n\n```json\n[\n  { \"email\": \"user@gmail.com\", \"refresh_token\": \"1\u002F\u002F0fXXX\" },\n  { \"email\": \"user2@gmail.com\", \"refresh_token\": \"1\u002F\u002F0fYYY\" }\n]\n```\n\n**推荐使用 `zg` 命令：**\n\n```bash\nzg import \u002Fpath\u002Fto\u002Fantigravity_accounts.json\n```\n\n此命令会自动检测格式、转换并合并到您现有的 `accounts.json` 文件中。\n\n**手动转换方法：** 将数组包裹在以下模式中——在外层添加 `\"accounts\":`，并可选择性地将 `\"active\"` 设置为第一个邮箱地址。\n\n### `accounts.json` 模式\n\n代理会从配置目录下的 `accounts.json` 文件中读取账户信息：\n\n| 操作系统      | 默认路径                                              |\n| ------- | --------------------------------------------------------- |\n| Linux   | `~\u002F.config\u002Fzerogravity\u002Faccounts.json`                     |\n| macOS   | `~\u002FLibrary\u002FApplication Support\u002Fzerogravity\u002Faccounts.json` |\n| Windows | `%APPDATA%\\zerogravity\\accounts.json`                     |\n\n> 可通过设置环境变量 `ZEROGRAVITY_CONFIG_DIR` 来覆盖默认路径。\n\n```json\n{\n  \"accounts\": [\n    {\n      \"email\": \"user@gmail.com\",\n      \"refresh_token\": \"1\u002F\u002F0fXXXXXXXXXX\",\n      \"extracted_at\": \"2026-02-21T05:08:32Z\"\n    }\n  ],\n  \"active\": \"user@gmail.com\"\n}\n```\n\n| 字段           | 必填 | 描述                                             |\n| --------------- | -------- | ------------------------------------------------------- |\n| `email`         | 是      | Google 账户的电子邮件                                    |\n| `refresh_token` | 是      | OAuth 刷新令牌（以 `1\u002F\u002F` 开头）                 |\n| `alias`         | 否      | 账户的友好别名                                          |\n| `extracted_at`  | 否      | 添加该账户时的 ISO 8601 时间戳                        |\n| `active`        | 否      | 当前激活账户的电子邮件（顶级字段）                     |\n\n## 自定义\n\n| 变量                      | 默认值       | 描述                                                                                                                                 |\n| ----------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |\n| `ZEROGRAVITY_SYSTEM_MODE`     | `native`      | `native`（默认）= 保留 AG 请求，双向工具翻译；`stealth` = 去除 AG 身份标识，注入客户端工具\u002F系统提示；`minimal` = 完全替换 AG 系统提示 |\n| `ZEROGRAVITY_H2_PROFILE`     | `chromium`    | H2 指纹配置文件（`chromium` 或 `go`）                                                                                                 |\n| `ZEROGRAVITY_H2_COMPAT_MODE` | `parity`      | H2 兼容模式（`parity` 或 `strict_passthrough`）                                                                                    |\n| `ZEROGRAVITY_TLS_DEBUG_BACKEND` | --          | 记录一次后端 TLS 握手摘要（设置为 `1`）                                                                                            |\n| `ZEROGRAVITY_TLS_DEBUG_MITM` | --            | 记录一次 MITM 上游 TLS 握手摘要（设置为 `1`）                                                                                      |\n| `ZEROGRAVITY_SENSITIVE_WORDS` | 内置列表 | 需要在请求中混淆的客户端名称（使用零宽空格分隔），或设置为 `none` 以禁用                                             |\n| `ZEROGRAVITY_MODEL_ALIASES`   | —             | 将自定义模型名称映射到内置模型，例如 `gpt-4o:gemini-3-flash,gpt-4:opus-4.6`。也可通过 `zg alias` 或 `aliases.json` 进行配置  |\n| `ZEROGRAVITY_API_BODY_LIMIT_MB` | `32`（限制在 `1..100`） | API 路由（`\u002Fv1\u002F*`）的最大请求体大小，单位为 MiB                                                                                       |\n| `ZEROGRAVITY_QUOTA_CAP`       | `0.2`         | 部署内因配额触发账号轮转的高级兼容性调节参数。设置为 `0` 可禁用此行为。也可通过 `--quota-cap` CLI 标志进行设置 |\n| `ZEROGRAVITY_UPSTREAM_PROXY`  | —             | 将所有出站 MITM 流量路由至代理服务器（`http:\u002F\u002F`、`socks5:\u002F\u002F`、`socks5h:\u002F\u002F`）                                                      |\n| `ZEROGRAVITY_HTTP_PROXY`      | —             | 将 HTTP\u002FHTTPS 代理设置传递给后端子进程                                                                                 |\n\n**系统提示模式：** 三种模式控制 ZeroGravity 如何处理后端的系统提示。**`native`**（默认）几乎原样保留 AG 请求——AG 的工具、系统提示和生成配置都被保留，仅将占位提示替换为真实用户文本。双向工具翻译会将 AG 工具名称映射为客户端名称并反向映射。适用于所有 API 端点（OpenAI、Anthropic、Responses、Gemini v1beta）。**`stealth`** 会去除 AG 身份标识，并注入客户端工具和系统提示。**`minimal`** 则会完全替换掉 20KB 的后端系统提示——虽然可以节省 token，但可能会触发 Pro 模型的速率限制。\n\n**敏感词混淆：** 像 OpenCode、Cursor、Claude Code 这样的客户端名称会自动使用不可见字符进行混淆，从而防止 Google 在请求日志中搜索这些关键词。\n\n完整的环境变量参考请参阅 [Docker 指南](docs\u002Fdocker.md)。\n\n## 文档\n\n| 文档                              | 包含内容                                                 |\n| -------------------------------- | ------------------------------------------------------------ |\n| [Docker 指南](docs\u002Fdocker.md)   | Docker Compose 设置、环境变量、卷挂载                         |\n| [VPS 部署指南](docs\u002Fvps.md)     | 极简安全的远程主机部署、API 密钥认证、TLS\u002F防火墙基础配置        |\n| [API 参考](docs\u002Fapi.md)         | 所有端点、curl 示例、兼容性账号控制、API 密钥认证               |\n| [客户端操作指南](docs\u002Fclients.md) | 客户端特定行为、默认设置及故障排除                             |\n| [`zg` CLI 参考](docs\u002Fzg.md)     | 所有 `zg` 命令——独立命令与守护进程形式                    |\n\n## 许可证\n\n[MIT](LICENSE)","# ZeroGravity 快速上手指南\n\nZeroGravity 是一个高性能代理工具，能让你的本地 AI 开发工具（如 Cursor、Claude Code、OpenCode 等）直接调用 Google 的 Gemini 前沿模型。它通过模拟真实的 Antigravity 用户流量，无需 API Key 即可使用，支持 OpenAI 和 Anthropic 兼容接口。\n\n> **注意**：源代码已移至私有仓库，但二进制文件、Docker 镜像和发布版本仍在此公开。本项目**仅支持 Docker 部署**。\n\n## 环境准备\n\n- **操作系统**：Linux、macOS 或 Windows\n- **前置依赖**：\n  - [Docker](https:\u002F\u002Fwww.docker.com\u002F) 及 Docker Compose\n  - 官方桌面版 [Antigravity](https:\u002F\u002Fantigravity.google\u002Fdownload) 客户端（用于获取认证令牌）\n  - `zg` 命令行工具（通常包含在发布包中，或通过项目释放页下载）\n\n## 安装步骤\n\n### 1. 获取刷新令牌 (Refresh Token)\n\n你需要从官方 Antigravity 客户端提取令牌。**切勿**使用第三方 OAuth 工具登录新账号，以免被标记。\n\n1. 下载并安装 [Antigravity](https:\u002F\u002Fantigravity.google\u002Fdownload) 桌面端。\n2. 使用你的 Google 账号登录。\n3. 在终端运行以下命令，令牌将自动提取并保存至配置文件：\n   ```bash\n   zg extract\n   ```\n   *配置文件默认路径：*\n   - Linux: `~\u002F.config\u002Fzerogravity\u002Faccounts.json`\n   - macOS: `~\u002FLibrary\u002FApplication Support\u002Fzerogravity\u002Faccounts.json`\n   - Windows: `%APPDATA%\\zerogravity\\accounts.json`\n\n### 2. 初始化并启动 Docker\n\nZeroGravity 推荐使用 Docker 运行，镜像已包含所有后端组件。\n\n1. 在当前目录生成 `docker-compose.yml` 和配置文件：\n   ```bash\n   zg docker-init\n   ```\n\n2. 启动服务：\n   ```bash\n   docker compose up -d\n   ```\n\n3. 验证服务状态：\n   ```bash\n   curl http:\u002F\u002Flocalhost:8741\u002Fhealth\n   ```\n\n## 基本使用\n\n代理服务默认监听 **8741** 端口。你可以将其配置到任何支持自定义 API 地址的 AI 工具中。\n\n### 接口地址选择\n\n根据你的客户端类型选择对应的 endpoint：\n\n- **Gemini 原生协议**（推荐，零转换损耗）：\n  `http:\u002F\u002Flocalhost:8741\u002Fv1beta`\n- **OpenAI 兼容协议**（适用于 Cursor, Continue, ChatGPT 客户端等）：\n  `http:\u002F\u002Flocalhost:8741\u002Fv1`\n- **Anthropic 兼容协议**（适用于 Claude Code 等）：\n  `http:\u002F\u002Flocalhost:8741`\n\n### 测试连接\n\n**方法一：使用内置命令测试**\n```bash\nzg test \"say hi\"\n```\n\n**方法二：使用 Curl 直接测试**\n```bash\ncurl http:\u002F\u002Flocalhost:8741\u002Fv1\u002Fchat\u002Fcompletions \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"model\": \"gemini-3-flash\", \"messages\": [{\"role\": \"user\", \"content\": \"hi\"}]}'\n```\n\n### 可用模型列表\n\n| 模型标识 | 说明 |\n| :--- | :--- |\n| `gemini-3-flash` | 默认模型，速度快 |\n| `sonnet-4.6` | Claude Sonnet 4.6 (Thinking) |\n| `opus-4.6` | Claude Opus 4.6 (Thinking) |\n| `gemini-3.1-pro` | Gemini 3.1 Pro (High) |\n| `gemini-3-pro-image` | 支持图像生成 |\n\n> **提示**：在配置客户端时，`apiKey` 字段可填写任意内容（除非你手动设置了 `ZEROGRAVITY_API_KEY` 环境变量），系统主要依赖提取的 Refresh Token 进行认证。","某 AI 初创团队正在开发一款智能客服系统，需要同时调用 Google Gemini 的高级推理能力和 OpenAI\u002FAnthropic 生态中的现有代码库。\n\n### 没有 zerogravity 时\n- **接口适配繁琐**：团队必须为 Gemini 单独编写一套请求逻辑，无法复用已有的 OpenAI 或 Anthropic SDK，导致代码库分裂且维护成本极高。\n- **流量特征明显**：直接调用官方 API 时，请求头和网络指纹容易被识别为普通代理流量，在高频测试中频繁触发风控限制甚至封号。\n- **会话状态断裂**：在不同模型间切换时，难以保持上下文连续性，每次切换都需要重新构建复杂的会话元数据，严重影响多轮对话体验。\n- **部署环境受限**：缺乏统一的容器化运行时支持，在 Linux、macOS 和 Windows 不同开发环境下配置认证和环境变量耗时耗力。\n\n### 使用 zerogravity 后\n- **统一接口标准**：zerogravity 提供了兼容 OpenAI 和 Anthropic 的代理层，团队只需修改一行配置即可让原有代码无缝调用 Gemini，实现了“一次编写，多模型运行”。\n- **拟真流量伪装**：该工具模拟真实的 Antigravity 内部流量特征，成功绕过外部风控检测，支持团队连续三天进行高强度压力测试而未出现任何阻断。\n- **原生会话保持**：zerogravity 内置了完整的会话连续性和元数据管理功能，自动处理 Token 交换和项目归属，确保跨模型切换时对话上下文丝滑无损。\n- **开箱即用部署**：基于 Docker 的原生运行时让团队能在所有操作系统上一键启动，自动完成认证刷新和环境初始化，将原本半天的配置工作缩短至几分钟。\n\nzerogravity 通过伪装成原生流量并提供标准化代理接口，彻底消除了多模型集成的技术摩擦与安全风控隐患。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FNikkeTryHard_zerogravity_1fecf309.png","NikkeTryHard","Louie","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FNikkeTryHard_9721e8a5.jpg","Information is power. But like all power, there are those who want to keep it for\r\nthemselves. \r\n- Aaron Swartz",null,"louisnewmobile@gmail.com","https:\u002F\u002Fgithub.com\u002FNikkeTryHard",[84],{"name":85,"color":86,"percentage":87},"Dockerfile","#384d54",100,672,45,"2026-04-13T04:55:40","MIT","Linux, macOS, Windows","未说明",{"notes":95,"python":93,"dependencies":96},"1. Docker 是唯一支持的运行方式，不再支持原生安装。\n2. 需要从官方 Antigravity 桌面应用提取刷新令牌（refresh token），不建议使用第三方 OAuth 工具。\n3. 默认监听端口为 8741。\n4. 支持 Gemini、OpenAI 和 Anthropic 兼容的 API 接口。",[97,98],"Docker","docker compose",[25,15],"2026-03-27T02:49:30.150509","2026-04-14T12:26:50.231095",[103,108,113,118,123,127],{"id":104,"question_zh":105,"answer_zh":106,"source_url":107},32730,"在 Cline 中使用 Gemini 模型（如 Opus 或 Pro）时报错，提示工具调用失败或解析错误，如何解决？","根本原因是非图像模型（如 gemini-3.1-pro）错误地保留了 LS 内部的 generate_image 工具，并将 toolConfig 覆盖为 AUTO，导致 Google 返回原生函数调用而非文本，进而破坏了 Cline 的解析。\n\n解决方案：\n1. 该问题已在 main 分支修复（提交号 52dde87）。\n2. 修复逻辑：非图像模型现在会剥离所有 LS 内部工具（包括 generate_image）并完全移除 toolConfig。模型将回退到基于 XML 的工具调用格式，Cline 可正确解析。\n3. 操作：如果有权限访问私有源码仓库，请从 main 分支重新构建；否则请等待包含此修复的下一个版本发布。","https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F52",{"id":109,"question_zh":110,"answer_zh":111,"source_url":112},32731,"使用 OpenAI 兼容 API (\u002Fv1\u002Fchat\u002Fcompletions) 时，客户端请求挂起无响应，日志显示“阻塞自发后台 LLM 调用”，怎么办？","这是因为模型识别出了系统指令覆盖尝试（使用了过于明显的 \u003CSYSTEM_INSTRUCTION_OVERRIDE> 标签）并拒绝执行，导致级联中断。\n\n解决方案（已在 v1.3.3 修复）：\n1. 维护者已将注入系统提示的方式更改为 \u003Cuser_rules> 标签，这与 GEMINI.md 规则使用的格式相同，模型会将其视为合法配置而非越狱尝试。\n2. 操作：请从源码构建最新版本，或等待包含 v1.3.3 修复的正式发布版更新。","https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F42",{"id":114,"question_zh":115,"answer_zh":116,"source_url":117},32732,"连接 Claude Code 时，Gemini Flash 模型的配额在几秒钟内被耗尽，原因是什么？","这是由于三重放大效应导致的：\n1. Claude Code 启动时会发送 5 个并发请求。\n2. ZeroGravity 的 MITM 代理在首轮注入了 maxOutputTokens=1。\n3. 这触发了 LS 二进制文件的自动重试机制和资源耗尽重试逻辑，将少量的用户请求放大为上千次 Google API 调用。\n\n建议：这是一个已确认的严重 Bug（Issue #24），通常需要通过更新软件版本来修复特定的注入逻辑或重试策略。如果尚未修复，建议暂时避免在高频并发场景下对 Flash 模型使用默认的 Token 注入设置，或关注官方发布的补丁。","https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F24",{"id":119,"question_zh":120,"answer_zh":121,"source_url":122},32733,"遇到 Google API 返回 429 或 503 错误时，如何更智能地处理重试延迟？","不应仅依赖递增退避算法，而应尊重 Google 响应头或响应体中提供的具体重试时间（retry-after-ms 或 retryDelay）。\n\n技术细节与建议：\n1. Google 的错误响应中通常包含精确的重试延迟（例如 \"retryDelay\": \"2.46s\" 或长达数小时）。\n2. 理想的实现逻辑是：解析响应中的秒数格式（如正则匹配 `(?:retry[-_]?after[-_]?ms|retryDelay)[:\\s\"]+([\\d.]+)(?:s\\b|s\")`），将其转换为毫秒。\n3. 如果服务器指定的等待时间大于用户配置的重试阈值，则应采用服务器指定的时间，以避免因请求过频导致账号被封禁。此功能已被列为增强需求，旨在防止因盲目重试而触发更严格的限流。","https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F19",{"id":124,"question_zh":125,"answer_zh":126,"source_url":107},32734,"在 Docker 部署环境下遇到报错，维护者要求提供什么信息以便排查？","当在 Docker 环境中遇到异常（如模型调用报错）时，仅提供截图或简单描述通常不足以定位问题。\n\n排查步骤：\n1. 维护者明确要求运行诊断命令：`zg report \u003Ctrace-id>`。\n2. 请从日志中找到对应的 trace-id（级联 ID），然后执行上述命令生成详细报告。\n3. 将生成的报告内容提供给维护者，以便分析 MITM 代理的具体拦截和修改行为。",{"id":128,"question_zh":129,"answer_zh":130,"source_url":107},32735,"如何防止因用量过大触发 Google 账号的周限额或频繁限流？","虽然具体的环境变量配置可能随版本更新而变化，但根据社区反馈和 Issue 讨论，防止限流的关键点包括：\n1. 尊重服务器的重试延迟：不要无视 429\u002F503 响应中的 `retry-after` 时间强行重试。\n2. 避免不必要的工具调用：确保非图像模型不携带图像生成工具配置，以免浪费图像配额（如 Issue #52 所述）。\n3. 监控并发量：注意像 Claude Code 这类客户端可能会瞬间发起多个并发请求，导致配额瞬间耗尽。\n4. 建议关注后续版本中关于“设置轮询账号阈值”的环境变量功能更新，以便在本地限制请求频率。",[132,137,142,147,152,157,162,167,172,177,182,187,192,197,202,207,212,217,222,227],{"id":133,"version":134,"summary_zh":135,"released_at":136},247474,"v1.4.2","### 新特性\n\n- 功能：按账户隔离 TLS 会话——每个账户现在都有自己的 TLS 会话缓存，并支持速率限制的切换，以提升隐蔽性（由 @YchampionOP 提交的 [PR #310](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F310)）\n- 功能：分层 LS 启动策略——通过命名空间管理器和跨不同 Linux 环境的备用链路，实现更稳健的 LS 拓扑生成（由 @YchampionOP 提交的 [PR #323](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F323)）\n- 功能：401 错误时的令牌自动刷新——当认证失败时，访问令牌会立即刷新，而不再等待下一次周期性刷新。单账户配置可在无需重启容器的情况下自我恢复（由 @businessdeveloper69 提出的 [Issue #244](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F244)）\n\n### Bug 修复\n\n- 修复：大请求时流无错误终止——此前若 Google 在 60 秒内未响应，代理会静默断开连接。现改为返回明确的 504 超时错误（由 @OmerFarukOruc 提出的 [Issue #100](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F100)）\n- 修复：“损坏的思想签名”400 错误——在多轮工具调用场景下，使用从工具调用 ID 中恢复的真实签名替代合成签名（由 @anlostsheep 提出的 [Issue #98](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F98)，以及由 @hamb3r 提交的 [PR #337](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F337)）\n- 修复：API 违规问题——在注入工具调用时，连续的模型回合现已正确合并（由 @YchampionOP 提交的 [PR #315](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F315)）\n- 修复：后台调用干扰问题——收紧了拦截规则，避免用户请求被后台调用过滤器误拦（由 @YchampionOP 提交的 [PR #306](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F306)）\n- 修复：TLS 指纹优化——统一了 Chrome 142 的 TLS 策略、会话票证及 P-521 曲线，以提升 JA4 匹配效果（由 @YchampionOP 提交的 [PR #311](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F311) 和 [PR #312](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F312)）\n- 修复：配额上限文档修正——`--quota-cap 0.2` 设置表示当使用率达到 20% 时进行轮转，而非此前文档中所描述的 80%（由 @KenKout 提出的 [Issue #293](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F293)）\n- 修复：思考模型超时设置过严——将中等级别空闲超时从 30 秒延长至 45 秒，以便 opus-4.6 有充足时间完成思考，而不被判定为卡顿\n- 修复：环境变量为空导致代理崩溃——Docker Compose 在值留空时会将环境变量设为空字符串，从而引发“无效的上游代理配置”错误及令牌刷新失败。现所有 ZEROGRAVITY_* 环境变量均会将空值视为未设置\n\n### 其他\n\n- 文档：更新了账户轮转、超时策略、追踪系统及环境变量的相关文档\n- 杂项：处理了 26 个社区 PR，并解决了 8 个问题\n\n### 二进制验证\n\n- glibc —— 需要 GLIBC_2.17（兼容性…","2026-03-05T07:03:18",{"id":138,"version":139,"summary_zh":140,"released_at":141},247475,"v1.4.1","### 新功能\n\n- 功能：原生模式下针对非 OpenCode 客户端的智能工具抑制——除 OpenCode 之外的客户端（Cursor、Claude Code、aider 等）现在会自动抑制工具调用，模型将直接以文本形式响应，而非尝试执行不可用的工具调用。修复了压缩和标题生成失败的问题（[PR #305](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F305)）\n\n### 错误修复\n\n- 修复：强化代理和 API 处理器中的错误路径——在 8 条失败路径上用规范的日志记录取代静默的错误抑制，并添加内存限制以防止因格式错误的数据导致内存溢出。用户侧行为无变化（[PR #313](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F313)）\n- 修复：细化旧版计数探测的处理逻辑——避免拦截看似启动探测的 `\u002Fv1\u002Fmessages` 普通请求（由 @YchampionOP 提交的 [PR #304](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F304)）\n\n### 其他\n\n- 文档：新增跨客户端操作指南——为 Claude Code、OpenCode、Cursor 等客户端配置提供统一参考（[PR #308](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F308)）\n- 文档：新增 VPS 部署指南——介绍如何通过 API 密钥认证、防火墙及 TLS 设置实现安全的远程主机部署（由 @YchampionOP 提交的 [PR #302](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F302)）\n\n### 二进制验证\n\n- glibc —— 需要 GLIBC_2.17（兼容 CentOS 7 及以上、Debian 8 及以上、Ubuntu 14.04 及以上）。构建主机：`ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`","2026-03-04T08:42:55",{"id":143,"version":144,"summary_zh":145,"released_at":146},247476,"v1.4.0","### 新特性\n\n- 功能：原生模式（现为默认模式）——保留后端原有的工具、系统提示词和生成配置。仅将占位提示替换为真实的用户输入。双向工具映射可将后端工具名称与客户端名称相互转换。后台请求（标题生成、压缩）会自动回退到隐身模式。适用于所有 API 端点（OpenAI、Anthropic、Responses、Gemini v1beta）。可通过设置 `ZEROGRAVITY_SYSTEM_MODE=stealth` 恢复旧模式（[PR #291](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F291)）\n- 功能：隐身加固——集中式 TLS 指纹策略，可选择 H2 指纹配置文件（chromium\u002Fgo），强化 H2 帧奇偶校验，对 HTTP\u002F1 头部进行规范化处理，并在生命周期边界处轮换客户端会话 ID（[PR #279](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F279)）\n- 功能：账户禁用\u002F启用——可在不移除账户的情况下将其排除在轮换之外。CLI 命令：`zg accounts disable\u002Fenable \u003Cemail>`（由 @hamb3r 提供的 [PR #266](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F266)）\n- 功能：错峰轮换调度——通过防重复记忆和熵值破冰机制实现更智能的账户选择，减少确定性的轮换模式（[PR #282](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F282)）\n\n### 错误修复\n\n- 修复：自动检测后端崩溃并进入恢复模式——当后端进程意外退出时，会以指数退避方式（10秒至60秒上限）自动重启。此前需要手动重启容器（[PR #292](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F292)）\n- 修复：在函数调用部分恢复思考签名——解决了多轮工具对话中出现的“missing thought_signature”400错误（由 @rmffo 报告的 [Issue #286](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F286)，相关 PR 为 [PR #288](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F288)）\n- 修复：将 503 容量耗尽与账户轮换分离——服务提供方侧的容量饱和不再触发不必要的账户轮换（由 @DarKWinGTM 报告的 [Issue #265](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F265)，相关 PR 为 [PR #285](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F285)）\n- 修复：拒绝超过 128 个字符的工具名称——返回清晰的代理端 400 错误，而非令人困惑的上游错误（由 @DarKWinGTM 报告的 [Issue #267](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F267)，相关 PR 为 [PR #283](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F283)）\n- 修复：根据模型上下文窗口裁剪旧的工具回合——当输入超出上下文限制时，丢弃最旧的合成工具回合，以防止“提示过长”错误（[PR #281](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F281)）\n- 修复：防止轮换过程中候选列表为空时发生恐慌——避免在所有账户暂时不可用时出现索引越界问题（[PR #289](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F289)）\n- 修复：对于缺失的模型字段返回 400 错误——而不是静默使用默认值，后者可能导致令人困惑的配额错误。","2026-03-04T04:27:32",{"id":148,"version":149,"summary_zh":150,"released_at":151},247477,"v1.3.15","> [!CAUTION]\n> **谷歌正在积极推行新一轮封禁措施。** 为将风险降至最低：\n> - **请勿使用 `minimal` 系统模式** -- 该模式会移除后端提示，使您的流量极易被识别为非真实 Antigravity 会话。\n> - **请勿轮换多个账号** -- 目前请坚持使用单个账号。多账号轮换会扩大被检测的风险面。\n> - **请勿滥用速率限制** -- 频繁调用 API 会触发服务器端的检测机制。请合理安排请求间隔。\n> - 此版本强化了反检测信号，但无法保证绝对安全。若您的账号被标记，请[提交问题](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues)并附上您的配置详情，以便我们进一步调查。\n\n\n### 错误修复\n\n- 修复：改进账号封禁检测 -- 能够检测到此前遗漏的后端额外暂停状态，从而更快地切换至未被标记的账号（[PR #263](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F263)）\n- 修复：针对流阻塞检测的分级空闲超时 -- 之前无论仅接收到头部信息，都会在首个字节后直接进入 120 秒的固定超时；调整后变为：响应前 60 秒、早期流阶段 30 秒、当有实质性内容传输时再设 120 秒。这样可在保留长超时以适应复杂模型需求的同时，将早期阻塞的检测速度提升 4 倍（[Issue #262](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F262)）\n- 修复：阻止可能向上游泄露容器环境信息的崩溃报告遥测数据（[PR #263](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F263)）\n\n### 其他\n\n- 文档：修正模型上下文限制，并在 OpenCode 配置中补充缺失的模型 -- Gemini 模型上下文从 128k 扩展至 1M，Opus\u002FSonnet 输出长度从 16k 提升至 65k，移除不存在的 gemini-3-pro，新增 gemini-3.1-pro 和 sonnet-4.6（[PR #263](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F263)）\n- 隐蔽性：强化预热及遥测信号，使其更贴近真实客户端行为（[PR #263](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F263)）\n\n### 二进制验证\n\n- glibc -- 需要 GLIBC_2.17（兼容 CentOS 7 及以上、Debian 8 及以上、Ubuntu 14.04 及以上）。构建主机：`ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`","2026-03-03T10:44:59",{"id":153,"version":154,"summary_zh":155,"released_at":156},247478,"v1.3.14","### 新特性\n\n- 功能：支持20至40多个账号的智能轮转——基于配额感知的选择机制取代了盲目的轮询方式。该机制会过滤掉被封禁、受限、处于冷却期或配额为零的账号，优先选择剩余配额最高的账号；若配额相同，则以最近最少使用（LRU）策略作为决胜手段。同时新增了`\u002Fv1\u002Faccounts\u002Fstatus`端点的就绪状态字段（next_ready_at、selection_score、selection_reason）（由@terryops解决的#84问题，由@whhphd解决的#82问题，由@terryops解决的#83问题，以及由@jc01rho解决的#85问题）。\n\n### Bug修复\n\n- 修复：在启动失败后实现自愈恢复——此前，在账号轮转过程中所有启动重试均失败时，代理会永久性失效。现新增指数退避恢复机制（每次间隔10秒、20秒、40秒，最长60秒），永不放弃，并在恢复期间返回友好的503响应。（由@whhphd解决的#91问题，由@NoneWhite1解决的#92问题）\n- 修复：将所有端点中的503 MODEL_CAPACITY_EXHAUSTED错误码重新映射为429——现在，无论采用何种API协议，容量耗尽情况都将一致地返回可重试的429状态码，而非不可重试的503错误。（由@EvanDbg解决的#93问题）\n- 修复：Docker容器默认以只读方式挂载accounts.json文件——此前所有Docker模板都以`:ro`模式挂载accounts.json，导致通过API进行的账号管理更改在重启后会丢失。现改为默认可写。\n- 修复：将账号保存失败的错误信息透传至API——现在，通过API添加或移除账号时，若文件不可写，将返回带有明确提示信息的500错误，而不再静默成功。\n- 修复（v1beta）：Gemini原生流结束后不再返回`[DONE]`。（由@Tiebe提交的#251号PR）\n- 修复：Windows系统中CA证书安装现会比对指纹——在CA证书更新后，旧证书仍会按名称被找到并跳过安装，从而引发TLS错误。现能正确检测到过期证书。（由@hamb3r提交的#253号PR）\n- 修复：无效的上游代理配置现被视为致命错误——此前程序会静默回退到直连模式，可能导致用户IP泄露。（由@hamb3r提交的#254号PR）\n- 修复：对格式错误的数据实现优雅的错误处理——用规范的错误返回替代了对不可信网络数据使用的恐慌式unwrap\u002Fexpect调用。（由@annaphan16提交的#240号PR）\n\n### 二进制验证\n\n- glibc——要求GLIBC_2.17及以上版本（兼容CentOS 7+、Debian 8+、Ubuntu 14.04+）。构建主机：`ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`","2026-03-03T06:55:56",{"id":158,"version":159,"summary_zh":160,"released_at":161},247479,"v1.3.13","### Bug 修复\n\n- 修复：在上游出现错误时彻底清理内部缓存，以防止不必要的重试风暴——当代理从上游收到 503 或 429 错误时，过期的缓存条目会导致后端反复重试同一请求（2 分钟内重复 10–20 次以上），从而悄无声息地耗尽配额。现在，在发生错误时会完全清空缓存，从而立即阻止重试（由 @EvanDbg 提出的 [Issue #93](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F93)，以及由 @GeorgeMixas 提出的 [Issue #94](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F94)）\n- 修复：`zg smoke` 的聊天补全测试在思考型模型上总是超时——将 HTTP 超时时间从 20 秒增加至 90 秒，以适应需要较长时间思考的模型（如 `gemini-3.1-pro`）\n\n### 新特性\n\n- 功能改进：提升运营人员对请求体大小限制的可见性——实际有效的请求体大小限制现在会在启动时记录，并包含在 `\u002Fhealth` 端点的响应中。此外，`zg docker-init` 还会在生成的 `docker-compose` 模板中添加一条注释形式的环境变量 `ZEROGRAVITY_API_BODY_LIMIT_MB`\n\n### 二进制验证\n\n- glibc —— 需要 GLIBC_2.17 及以上版本（兼容 CentOS 7+、Debian 8+ 和 Ubuntu 14.04+）。构建主机：`ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`","2026-03-02T10:14:36",{"id":163,"version":164,"summary_zh":165,"released_at":166},247480,"v1.3.12","### 新特性\n\n- feat: 每账号设备指纹绑定 -- `accounts.json` 中新增可选的 `device_fingerprint` 字段，允许为每个账号绑定特定的设备标识，以实现更一致的会话行为（[PR #229](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F229)）\n\n### Bug 修复\n\n- fix: 账号轮换期间 LS 启动失败不再导致代理永久失效 -- 修复了连接生命周期问题，并在重新启动时自动重试（最多 3 次）（@whhphd 报告的 [Issue #91](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F91)，[PR #233](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F233)）\n- fix: `zg start` 和 `zg stop` 现在可在 Windows 和 macOS 主机上正常工作 -- 改为通过 Docker 路由，而非依赖原生服务管理器而失败（[PR #234](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F234)）\n- fix: `zg update` 在 Windows 上不再因 Defender 实时扫描锁定下载的二进制文件而失败（[PR #226](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F226)）\n\n### 其他\n\n- test: 添加了 34 个针对 MITM 响应解析的单元测试，分支覆盖率达到 100%（@hamb3r 的 [PR #226](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F226)）\n- refactor: 代码库优化 -- 使用 clippy 进行检查、收紧可见性、确保 unwrap 安全、完善 rustdoc 文档（[PR #235](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F235)）\n\n### 二进制验证\n\n- glibc -- 需要 GLIBC_2.17 版本（兼容 CentOS 7 及以上、Debian 8 及以上、Ubuntu 14.04 及以上）。构建主机：`ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`","2026-03-02T07:45:37",{"id":168,"version":169,"summary_zh":170,"released_at":171},247481,"v1.3.11","### 新特性\n\n- 功能：当客户端省略 `max_tokens` 参数时，将应用默认的最大输出标记数（64000），以防止响应被截断（[PR #217](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F217)）\n- 功能：JSON Schema 约束（`minLength`、`maxLength`、`pattern`、`format`、枚举值、可空性）现在会作为描述提示保留下来，从而提高工具调用的准确性（[PR #217](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F217)）\n\n### 错误修复\n\n- 修复：增强了隐蔽性并降低了被检测的风险——进行了全面审计，解决了16个潜在的检测向量问题（[PR #227](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F227)）\n- 修复：账户轮换在缺少配额信息时不再卡住——此前系统会将缺失的数据视为已耗尽，导致过早进行轮换（由 @whhphd 提出的 [Issue #82](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F82)，由 @terryops 提出的 [Issue #83](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F83)，以及 [PR #225](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F225)）\n- 修复：停用的账户在配额重置后会自动恢复，而不会一直处于不可用状态（[PR #225](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F225)）\n- 修复：多轮对话中，一个对话产生的错误不会再泄漏到另一个对话中（由 @terryops 提出的 [Issue #84](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F84)，由 @reed6868 提出的 [Issue #88](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F88) 和 [Issue #89](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F89)，以及 [PR #224](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F224)）\n- 修复：流中断现在会以正确的错误形式抛出，而不是静默地出现 EOF（由 @reed6868 提出的 [Issue #89](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F89)，以及 [PR #223](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F223)）\n- 修复：使用 Gemini SDK 时，`thinkingBudget` 现在能正确映射到 Claude 模型的思考级别（[PR #222](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F222)）\n- 修复：上游代理（`ZEROGRAVITY_UPSTREAM_PROXY`）现在适用于所有出站连接（由 @kithawk 提出的 [PR #219](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F219)）\n- 修复：账户轮换时 OAuth 令牌的传播——切换账户后不再存在过期凭据的问题（[PR #217](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F217)）\n- 修复：OAuth `client_id` 的回退机制，以提高令牌刷新的兼容性（[PR #227](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F227)）\n\n### 其他\n\n- 测试：为隐蔽性、生成和集成场景添加了全面的单元测试（由 @hamb3r 提出的 [PR #218](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F218)，以及 [PR #227](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F227)）\n- 文档：更新了 API 参考、测试指南和设置文档\n\n### 二进制验证\n\n- glibc —— 需要 GLIBC_2.17（与 CentOS 7+ \u002F Debian 8+ \u002F Ubuntu 14.04+ 兼容）。构建主机：`ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`","2026-03-02T03:12:07",{"id":173,"version":174,"summary_zh":175,"released_at":176},247482,"v1.3.11-alpha.1","### Bug 修复\n\n- 修复：账户轮换和 API Token 端点现在能够正确地将凭据传播到所有子系统——此前在轮换后可能会导致认证过时，直到定期刷新为止（[PR #217](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F217)，最初由 @endsock 在 [PR #212](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F212) 中提出）\n\n### 新特性\n\n- 新增：JSON Schema 约束（minLength、maxLength、pattern、format、枚举值、nullable）现在会作为描述提示保留，以提高工具调用的准确性（[PR #217](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F217)，最初由 @endsock 在 [PR #212](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F212) 中提出）\n- 新增：当客户端未指定 `max_tokens` 时，将应用默认的最大输出标记数（64000）——这可以防止响应被截断（[PR #217](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F217)）\n\n### Docker\n\n- `ghcr.io\u002Fnikketryhard\u002Fzerogravity:v1.3.11-alpha.1`\n\n### 二进制验证\n\n- glibc —— 需要 GLIBC_2.17（与 CentOS 7+ \u002F Debian 8+ \u002F Ubuntu 14.04+ 兼容）。构建主机：`ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`","2026-03-01T08:19:34",{"id":178,"version":179,"summary_zh":180,"released_at":181},247483,"v1.3.10","### 新特性\n\n- 功能：轮转时为每个账号生成独立的设备指纹——现在每个账号都会获得一个唯一的指纹，使多账号流量看起来像是来自不同的真实设备（[PR #214](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F214)）\n- 功能：支持为 Claude 模型显式设置 `thinkingBudget`——客户端现在可以通过 Gemini 协议设置 `thinkingBudget`，以控制 Claude Opus\u002FSonnet 的思考令牌分配（[PR #196](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F196)）\n- 功能：为 `zg replay` 添加 `--raw` 模式——该模式会直接向 Google 发送请求进行延迟诊断，绕过完整的代理管道（[PR #182](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F182)、[PR #185](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F185)）\n- 功能：在 `zg status` 中显示构建的提交哈希和账号列表——包含 Git 提交信息、各账号的活跃\u002F挂起状态，并为 `zg report` 打包添加元数据（[PR #206](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F206)、[PR #202](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F202)，由 @Tiebe 提供）\n- 功能：对齐 `zg status` 输出中的账号列——所有账号条目的列宽保持一致（[PR #210](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F210)，由 @hamb3r 提供）\n\n### Bug 修复\n\n- 修复：切换账号后重置限流器状态并强制刷新配额——现在轮转会正确清除每种模型的速率限制，防止过时的挂起状态阻塞请求（由 @whhphd 解决的 [Issue #82](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F82)、由 @terryops 解决的 [Issue #83](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F83)，以及 [PR #214](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F214)）\n- 修复：在 JSON 解析之前解码压缩的错误体——现在会先对上游返回的 gzip 编码错误响应进行解压缩，再进行提取，从而解决了静默吞掉错误的问题（由 @hamb3r 提供的 [PR #197](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F197)）\n- 修复：处理流式传输中格式错误的函数调用响应——防止当上游返回意外的函数调用结构时程序崩溃（[PR #188](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F188)）\n- 修复：在多工具回合对话中强制交替轮次——解决了在长时间、多回合的工具使用对话中被拒绝的问题（[PR #183](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F183)）\n- 修复：工具结果回放从实际响应内容中读取——修复了续接请求中工具调用 ID 过时或缺失的问题（[PR #180](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F180)）\n- 修复：检测 Podman、Kubernetes 和 containerd 容器——`zg report` 和容器检测功能现在能够识别非 Docker 运行时环境（由 @hungthai1401 解决的 [Issue #80](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F80)，以及 [PR #179](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F179)）\n- 修复：丢弃先前轮次中过时的工具回合——清理了累积的状态，避免在长时间对话中请求体积不断增大（P","2026-03-01T04:54:07",{"id":183,"version":184,"summary_zh":185,"released_at":186},247484,"v1.3.9","### New Features\n\n- feat: add native Gemini v1beta model endpoints -- `GET \u002Fv1beta\u002Fmodels` and `GET \u002Fv1beta\u002Fmodels\u002F{model}` return Gemini-compatible model metadata for zero-translation clients ([PR #152](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F152) by @sd5986)\n- feat: add Windows Docker support, HTTP proxy passthrough, and `\u002Fv1\u002Faccounts\u002Fstatus` -- `docker-compose.windows.yml` for Docker Desktop, corporate proxy env passthrough, per-account quota visibility, and Windows rebuild\u002Fself-update path fixes ([PR #137](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F137) by @YchampionOP)\n- feat: return multimodal function response parts as sibling objects -- images and artifacts are now sibling parts instead of nested within the function response ([PR #154](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F154) by @sd5986)\n- feat: add `zg fingerprint` command and identity override env templates -- extracts device fingerprint, prints IDE version guidance, and `zg docker-init` now generates OS\u002FIDE version\u002Fdevice fingerprint override placeholders in compose\u002F.env ([PR #171](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F171))\n- feat: add live streaming chunk counter for `zg replay` -- shows real-time SSE chunk count and inherits stderr to prevent deadlock in streaming mode ([PR #158](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F158))\n\n### Bug Fixes\n\n- fix: enforce recursive array schema invariants -- prevents 400\u002FINVALID_ARGUMENT on nested array tool schemas with idempotency regressions ([Issue #76](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F76) by @NoneWhite1)\n- fix: bind tool-result replay to `call_id` payloads -- resolves \"no captured functionCall history\" errors in OpenCode tool-result turns ([Issue #77](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F77) by @LevinFaber)\n- fix: retain image follow-up prompt and fail closed on missing context -- deferred image generation no longer stalls behind suppressed completion, and follow-up requests no longer forward unresolved payloads ([Issue #78](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F78) by @szansonhuang)\n- fix: add env overrides for identity metadata -- `ZEROGRAVITY_OS`, `ZEROGRAVITY_IDE_VERSION`, `ZEROGRAVITY_DEVICE_FINGERPRINT` allow cross-environment identity alignment ([Issue #166](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F166) by @endsock)\n- fix: normalize timeout error handling -- consistent error surfaces with trace-hinted messaging, replaces masking of SSE serialization failures with explicit-failure behavior ([Issue #157](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F157) by @rmffo)\n- fix: correct misleading startup log messages -- account source and count now reported accurately at startup ([PR #161](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F161) by @NaNomicon)\n- fix: dedupe split function call chunks in streaming -- merges chunks by name to prevent duplicate tool_use emissions ([PR #160](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F160))\n- fix: map Anthropic computer-use beta tool types -- `bash`, `text_editor`, `computer_use` tool types now translate correctly ([PR #159](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F159))\n- fix: preserve `const` constraints as `enum` in schema conversion -- prevents schema validation from stripping intended constraints ([PR #155](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F155) by @hamb3r)\n- fix: handle Windows self-update 'Access Denied' -- renames running binary before overwrite to avoid OS file lock ([PR #153](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F153) by @ThiagoAlmeidaDev)\n- fix: fall back to `HTTPS_PROXY` when Windows DLL injection fails -- routes traffic via proxy env vars instead of aborting ([PR #136](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F136) by @YchampionOP)\n- fix: pipe replay payload via stdin -- avoids OS argv length limits on large payloads ([PR #146](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F146) by @hamb3r)\n\n\n### Other\n\n- docs: document multi-account env var format and clarify docker-compose env var instructions -- shows single and multi-account ZEROGRAVITY_ACCOUNTS forms with comma-separated rotation, prevents duplicate YAML key confusion ([PR #156](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F156) by @NaNomicon)\n\n### Binary Verification\n\n- glibc -- requires GLIBC_2.17 (compatible with CentOS 7+ \u002F Debian 8+ \u002F Ubuntu 14.04+). Build host: `ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`\n","2026-02-27T02:18:15",{"id":188,"version":189,"summary_zh":190,"released_at":191},247485,"v1.3.8","### New Features\n- feat: include richer build metadata in diagnostic reports for easier support triage by @NikkeTryHard in [#142](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F142)\n\n### Bug Fixes\n- fix: preserve image-bearing tool results so multimodal workflows no longer degrade during replay, reported by @rmffo in [#144](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F144)\n- fix: avoid upstream 400 errors by stripping unsupported prompt cache-control fields before forward, reported by @rmffo in [#139](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F139)\n- fix: reject oversized inline image payloads earlier with clearer API boundary validation by @NikkeTryHard in [#141](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F141)\n- fix: improve tool-call behavior parity by forwarding Anthropic `parallel_tool_use` to Gemini config by @NikkeTryHard in [#138](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F138)\n- fix: stabilize usage accounting across restarts by persisting `\u002Fv1\u002Fusage` counters by @NikkeTryHard in [#125](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F125)\n\n### Other\n- chore: unify release version sourcing from Cargo metadata across build and release scripts by @NikkeTryHard in [#142](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F142)\n- docs: refine error-hint behavior notes for clearer troubleshooting guidance by @NikkeTryHard in [#133](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fpull\u002F133)\n\n### Binary Verification\n- glibc -- `ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`\n- linux-x86_64 max required symbol -- `GLIBC_2.17`\n","2026-02-25T11:36:20",{"id":193,"version":194,"summary_zh":195,"released_at":196},247486,"v1.3.8-alpha.1","### New Features\n- feat: persist `\u002Fv1\u002Fusage` counters across restarts with periodic and shutdown snapshot flushing -- keeps usage analytics stable between daemon restarts by @NikkeTryHard\n- feat: preserve Anthropic message `cache_control` hints end-to-end -- keeps prompt caching intent intact through translation and request forwarding paths by @NikkeTryHard\n\n### Bug Fixes\n- fix: fail fast on mismatched tool-result IDs or names in replay flows -- prevents malformed tool-result payloads from entering ambiguous upstream states ([Issue #65](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F65) by @Kindling-project)\n- fix: make tool-call cache eviction deterministic with FIFO behavior -- reduces nondeterministic mismatch failures in long-running sessions ([Issue #65](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F65) by @Kindling-project)\n- fix: forward `cache_control` hints from all supported block shapes -- avoids silently dropping prompt-caching directives by @NikkeTryHard\n- fix: improve direct image follow-up failure signaling so terminal errors are surfaced reliably -- avoids warn-only failure exits ([Issue #65](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F65) by @Kindling-project)\n- fix: enforce minimum idle-window timeout floor for `\u002Fv1\u002Fmessages` streaming -- prevents premature stream disconnects on low timeout settings ([Issue #66](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F66) by @ZhcChen)\n- fix: preserve usage counters across restarts with safer snapshot replacement behavior -- prevents reset-to-zero surprises after process restarts by @NikkeTryHard\n\n### Other\n- chore: standardize user-facing upstream error hints across sync and streaming paths for clearer troubleshooting ([Issue #63](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F63) by @hungthai1401)\n- docs: align public docs with current endpoint behavior and runtime configuration guidance by @NikkeTryHard\n- docs: reported in [Issue #65](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F65) by @Kindling-project, [Issue #63](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F63) by @hungthai1401, and [Issue #66](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F66) by @ZhcChen\n\n### Binary Verification\n- glibc -- `ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`\n","2026-02-25T05:06:48",{"id":198,"version":199,"summary_zh":200,"released_at":201},247487,"v1.3.7","### New Features\n- feat: none in this release window.\n\n### Bug Fixes\n- fix: improve tool-call response rewriting so stream framing remains stable and raw tool payloads are not leaked into user-visible output [Issue #65 (public repo)](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F65)\n- fix: harden replay handling for malformed thought signatures to reduce upstream `INVALID_ARGUMENT` failures during replay flows [Issue #63 (public repo)](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F63)\n- fix: apply minimum idle-window timeout floor for `\u002Fv1\u002Fmessages` streaming to prevent premature disconnects on very small timeout values [Issue #66 (public repo)](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F66)\n\n### Other\n- docs: update runtime and API documentation for active-account control and request body-limit configuration [Issue #84 (private repo)](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F84)\n- test: add regression coverage for tool-schema normalization to protect request compatibility [Issue #102 (private repo)](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F102)\n\n### Binary Verification\n- glibc -- `ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`\n","2026-02-24T08:42:05",{"id":203,"version":204,"summary_zh":205,"released_at":206},247488,"v1.3.6","### New Features\n- feat: add runtime account activation for manual account switches so active account changes can apply immediately without requiring daemon\u002Fcontainer restart in the common path; tracked in [Issue #50](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F50)\n\n### Bug Fixes\n- fix: quota-cap rotation now checks recently requested models only, preventing unrelated models from triggering premature account rotation; reported by @yeboster in [Issue #90 (private repo)](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity-src\u002Fissues\u002F90)\n- fix: improve context retention and image-input robustness to reduce early context loss and invalid-request behavior in multi-turn usage; related to [Issue #60](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F60) and [Issue #61](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F61)\n- fix: improve replay behavior for Gemini traces so replay targets the correct endpoint path\n\n### Other\n- chore: include stability and cross-platform reliability improvements (body limit bounds, rotation safety, Windows terminal compatibility)\n\n### Binary Verification\n- glibc: `ldd (Ubuntu GLIBC 2.42-0ubuntu3.1) 2.42`\n","2026-02-23T22:57:36",{"id":208,"version":209,"summary_zh":210,"released_at":211},247489,"v1.3.5","### New Features\n\n- feat: add integration test infrastructure to improve release confidence\n- feat(cli): replace raw ANSI escapes with a stable `Colorize` trait for cleaner cross-terminal output\n- feat: embed base64 image data inline per API spec for image-capable responses\n\n### Bug Fixes\n\n- fix: include upstream error code in API errors for easier client troubleshooting\n- fix: sanitize complex tool schemas to prevent invalid request payloads\n- fix: stream inline images consistently and gate image tools by model capability\n- fix: treat model capacity exhaustion as resource exhaustion for better retry behavior\n- fix: propagate upstream 401 and 403 responses without masking -- related to [#84](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F84)\n- fix: report full token usage in streaming responses -- related to [#79](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F79)\n- fix: correct Windows binary download path in setup flow\n\n### Other\n\n- docs: update contributor and release workflow guidance\n- chore: improve release and cross-platform build reliability\n\n### Binary Verification\n\n- Linux binaries target glibc 2.17 via `cargo-zigbuild`\n- Verification commands:\n  - `objdump -T dist\u002Fzerogravity-linux-x86_64 | grep -o 'GLIBC_[0-9]\\+\\.[0-9]\\+' | sort -V | tail -1`\n  - `objdump -T dist\u002Fzerogravity-linux-arm64 | grep -o 'GLIBC_[0-9]\\+\\.[0-9]\\+' | sort -V | tail -1`\n","2026-02-23T12:49:56",{"id":213,"version":214,"summary_zh":215,"released_at":216},247490,"v1.3.4","### New Features\n\n- **feat: persistent model aliases** — map custom model names to any built-in model. Three ways to configure: `zg alias set gpt-4o gemini-3-flash`, `aliases.json` file, or `ZEROGRAVITY_MODEL_ALIASES` env var. `zg docker-init` now generates both `accounts.json` and `aliases.json`. Closes [#53](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F53)\n- **feat: `gemini-3-pro-image` model** — image generation via the `generate_image` tool. Send a request with `model: gemini-3-pro-image` and the response will include the tool call for your client to handle\n- **feat: trace ID in error messages** — when Google returns an error, the trace ID is now included in the error message for easier debugging and bug reports\n\n### Bug Fixes\n\n- **fix: smarter account parking** — parking is now per-model instead of per-account. If one model hits quota, other models on the same account remain available. Related: [#42](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F42)\n- **fix: project ID resolution** — robust 3-layer approach eliminates `INVALID_ARGUMENT` errors caused by empty project fields, especially for imported accounts\n- **fix: tool schema compatibility** — `x-*` OpenAI extension keys (e.g. `x-google-*` from Claude Code) are now stripped from function declarations. Nested schema constructs (`additionalProperties`, `anyOf`) are auto-healed recursively. Fixes [#47](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F47), [#52](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F52)\n- **fix: smoke tests with API key** — smoke tests now work correctly when `ZEROGRAVITY_API_KEY` is set\n\n### Other\n\n- **docs: model aliases documented** — `zg.md`, `api.md`, `docker.md`, and README updated with alias configuration\n- **docs: platform-specific `accounts.json` paths** — Linux, macOS, Windows paths now documented\n- **chore: dependency updates**\n\n### Binary Verification\n\n- ELF 64-bit LSB pie executable, x86-64, dynamically linked, stripped\n- glibc: built on 2.42, requires >= 2.31 at runtime\n","2026-02-23T04:23:37",{"id":218,"version":219,"summary_zh":220,"released_at":221},247491,"v1.3.3","### Bug Fixes\n\n- **fix: system prompt now correctly followed** -- system prompts set via `ZEROGRAVITY_SYSTEM_PROMPT` or the API `system` role were being ignored by the model. The injection method has been changed to match how the official client handles user rules, which the model reliably obeys ([#42](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F42), [#35](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F35))\n\n### Other\n\n- **perf: smaller Docker image** -- runtime image is ~170MB smaller (removed build tools from final image)\n- **docs: env var examples** -- environment variable documentation now includes example values\n\n### Binary Verification\n\n- ELF 64-bit LSB pie executable, x86-64, dynamically linked, stripped\n- glibc: built on 2.42, requires >= 2.31 at runtime\n","2026-02-22T11:35:43",{"id":223,"version":224,"summary_zh":225,"released_at":226},247492,"v1.3.2","# v1.3.2\n\n### New Features\n\n- **feat: automatic 403 recovery** -- accounts that receive 403\u002FPERMISSION_DENIED are immediately rotated out instead of waiting for the next cycle\n- **feat: system instruction control** -- new `ZEROGRAVITY_SYSTEM_MODE` env var (stealth\u002Fminimal) to control how the system prompt is handled\n- **feat: sensitive word obfuscation** -- new `ZEROGRAVITY_SENSITIVE_WORDS` env var to obfuscate client names in outgoing requests\n- **feat: quota cap env var** -- new `ZEROGRAVITY_QUOTA_CAP` env var to configure per-account quota usage cap without CLI flags\n- **feat: model aliases** -- new `ZEROGRAVITY_MODEL_ALIASES` env var to map custom model names (e.g. `gpt-4o:gemini-3-flash,gpt-4:opus-4.6`)\n\n### Bug Fixes\n\n- **fix: Cline tool call compatibility** -- tool calls now work correctly with Cline clients ([#52](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F52))\n- **fix: system prompt preservation** -- user system prompts are no longer replaced by defaults ([#51](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F51))\n- **fix: Antigravity Manager account import** -- imported accounts no longer have empty project fields\n- **fix: complex tool schemas** -- tools using `anyOf`\u002F`oneOf`\u002F`allOf` union types now work correctly ([#47](https:\u002F\u002Fgithub.com\u002FNikkeTryHard\u002Fzerogravity\u002Fissues\u002F47))\n- **fix: error handling in sync endpoints** -- sync completions and search now properly detect and report errors\n\n### Other\n\n- **chore: dependency updates** -- bumped dependencies and fixed deprecated API calls\n- **docs: updated documentation** -- new env vars, error handling behavior, and compatibility notes\n\n### Binary Verification\n\n- ELF 64-bit LSB pie executable, x86-64, dynamically linked, stripped\n- glibc: built on 2.42, requires >= 2.31 at runtime\n","2026-02-22T10:57:47",{"id":228,"version":229,"summary_zh":230,"released_at":231},247493,"v1.3.1","## Changes since v1.3.0\n\n### New Features\n\n- **`zg smoke` automated test suite** -- comprehensive smoke tests covering CLI commands, all API endpoints (Chat Completions, Responses, Messages, Gemini native), streaming, tool calling, multi-turn, system instructions, and Docker diagnostics. Use `zg smoke --quick` for fast checks\n- **Docker-only proxy enforcement** -- the proxy now runs exclusively in Docker on Linux. Host-side commands (`test`, `health`, `smoke`) still work via Docker port mapping\n- **`zg rebuild` overhaul** -- rebuilds the `zg` binary on the host, then builds and restarts the Docker container in a single step. Much faster iteration with the `fast` build profile\n- **Periodic token refresh** -- OAuth tokens are now automatically refreshed every ~45 minutes, eliminating 401 errors after extended sessions\n- **`zg token` enhanced output** -- now shows email, access token, and refresh token with recommendations for account setup\n- **Docker smoke test script** -- `scripts\u002Ftest-docker.sh` for testing all Docker configurations\n\n### Bug Fixes\n\n- **fix: TLS certificate chain validation** -- fixed an issue where certificate chain validation could fail after proxy upgrades\n- **fix: single-account rotation noise** -- users with one account no longer see scary ERROR logs about rotation failures\n- **fix: `zg update` downloads only the CLI binary** -- on macOS and Windows, updates now correctly download only `zg` (the proxy runs via Docker)\n- **fix: OAuth token expiry in long sessions** -- tokens are now refreshed periodically, preventing authentication failures after ~1 hour\n- **fix: quota check with no accounts** -- quota polling gracefully handles fresh deployments with no accounts configured\n\n### Other\n\n- Restructured documentation into `docs\u002F` with separate API, Docker, and CLI guides\n- Docker-first messaging in READMEs with clearer networking instructions\n- Build performance improvements across all platforms\n- Default request queue concurrency increased from 1 to 2\n\n### Binary Verification\n\nBoth binaries require glibc 2.17+ (CentOS 7 \u002F Debian 8 \u002F Ubuntu 14.04+). Stripped, PIE executables.\n","2026-02-22T03:17:54"]