AI 探索88 分钟阅读

Google Antigravity 256K 上下文窗口限制与无头模式政策变更

Google Antigravity 桌面端 v2.29.0 与 CLI v1.5.1 技术报告及一手证据档案。基于 x86-64 静态反汇编、本机 209 个会话(15,575 次调用)与社区 310 个会话(65,613 次调用)SQLite 审计、控制变量配额测试及论坛记录,完整呈现 0x3E800(256,000)硬编码阈值、70 秒压缩开销、Argon 3.0 倍配额消耗比及 agy -p 无头模式政策变更。

AAFeng
更新于

技术报告与一手证据档案 • 更新日期:2026 年 11 月 5 日(桌面端 v2.29.0 / CLI v1.5.1) • GitHub 档案库: magiccodelab/antigravity-256k-context-discrepancy

执行摘要

Google Antigravity 是 Google 面向智能体驱动软件开发的统一平台,涵盖 Antigravity 2.0 桌面端应用、Antigravity IDE、闭源 agy 命令行工具以及 Python SDK [11][12]。该平台在官方文档与客户端界面中均标称并显示 Gemini 4 Argon 与 Gemini 3.8 Flash 支持 1,048,576(1M)Tokens 上下文窗口 [1][3][12]。但对官方客户端二进制文件的静态反汇编与本地 SQLite 会话数据库的只读审计表明,客户端代码设置了模型白名单,并执行一段硬编码机器码指令序列,将自动上下文压缩触发阈值钳制在 256,000 Tokens(即标称窗口的 25%)[1][2][3]。在 2026 年 10 月同一时期,Google 官方支持人员在未修改正式《附加服务条款(ToS)》的情况下,通过更新非合同性质的 FAQ 页面,撤回了此前在开发者论坛针对“第三方编程工具通过本地子进程调用 agy -p”连续给出的 10 次书面合规确认 [13][14][31][32][34][36]。

范围与方法论说明: 本文档汇总截至 2026 年 11 月 5 日核实的一手技术证据、x86-64 反汇编记录、本地 SQLite 轨迹统计、控制变量配额基准测试、论坛回复原文以及二进制文件加密校验哈希。所有被分析的官方二进制文件均提供 Google Cloud Storage(storage.googleapis.com)官方下载直链及 SHA-256 / SHA-512 摘要,供独立验证。

  • 1. 标称 1,048,576(1M)窗口与硬编码 0x3E800(256,000)二进制钳制: 在桌面端 v2.29.0(language_server.exe)与 CLI v1.5.0–v1.5.1(antigravity)中,defaultmodels.Gemini4Argon 注册的最大上下文窗口确为 0x100000(1,048,576 Tokens)。但检查点配置计算函数 cortex/utils/utils.GetCheckpointConfig 执行了硬编码 x86-64 指令序列 cmp $0x3e800, %edx; mov $0x3e800, %esi; cmovb %edx, %esi(机器码 81 fa 00 e8 03 00 be 00 e8 03 00 0f 42 f2,位于桌面端 v2.29.0 文件偏移 0x176cca2、CLI v1.5.0 文件偏移 0x7fe5802 及 CLI v1.5.1 文件偏移 0x7fb0fe2),将所有模型的自动压缩触发阈值钳制为 min(计算值, 256,000)。尽管 CLI v1.5.0 与 v1.5.1 恢复了此前在 v1.3.5–v1.4.x 中被编译为空字符串的 os.LookupEnv("AGY_CLI_AUTO_COMPACT_OVERRIDE") 读取调用,但 0x3E800 钳制指令本身保持不变 [1][2][11]。
  • 2. 一致的 256,000 Token 上限与 70 秒压缩开销: 对本机补丁前(2026 年 11 月 4 日之前)209 个 Antigravity CLI 1M-Gemini 会话(15,575 次模型调用)以及 @murias002 在 Issue #878 中对 310 个 CLI 会话(65,613 次模型调用)的独立审计显示,100.0% 的 1M-Gemini 请求元数据记录将 max_context_tokens 设为 256000(15,575 / 15,575),单次无重试调用超过 300K Tokens 的次数为 0(#878 中最大输入为 255,999)。每次自动压缩会使执行暂停中位 70 秒,不在 gen_metadata 中记录摘要调用的 Token 消耗,将约 250K Tokens 的历史记录替换为 15K–17K 的散文式摘要(CORTEX_STEP_TYPE_CHECKPOINT = 23,truncation_reason = 2),并使 240K+ 的隐式提示词缓存失效 [1][3][4]。
  • 3. Gemini 4 Argon 3.0 倍配额消耗比与受控上下文档位: 在同一 5 小时配额窗口内的控制变量 A/B 测试显示,按公开 API 挂牌价归一化后,Gemini 4 Argon 消耗订阅配额的速率是 Gemini 3.8 Flash 的 3.00 倍(折合每百万输入/输出 Tokens $6.00/$30.00,公开挂牌价为 $2.00/$10.00,在 Web 端纯输入测试中则达每美元 7.64x–9.25x)[42]。与此同时,客户端二进制文件内部已包含 512K(1.3x 配额倍率)和 900K(1.8x 配额倍率,Expensive: true)上下文窗口选项,受长度为 1 的 "Gemini 4 Argon" 白名单与服务端功能开关限制 [1][18][19]。
  • 4. 通过更新 FAQ 完成的 26.5 小时 agy -p 政策反转: 在 2026 年 9 月 16 日至 10 月 8 日(16:23 UTC)期间,三位 Google 官方支持工程师在官方开发者论坛发布了 10 次书面确认,明确说明由第三方编程工具(如 OpenAI Codex 和 Anthropic Claude Code)将未修改的 agy -p 二进制文件作为本地子进程运行符合《附加服务条款》第 6 条 [23][24][26][27][28][29][30][31][32][33]。约 26.5 小时后(10 月 8 日 17:34 UTC),官方人员撤回了这一立场并提示该用法会触发自动账号封禁(cloudcode-pa.googleapis.com HTTP 403 TOS_VIOLATION)[34],随后在论坛帖子 #191689 第 8 楼确认正式《服务条款》自 9 月以来未作修改,仅在 10 月中旬更新了非合同性质的 FAQ 页面 [13][14][36]。

已核实核心指标汇总表

下表汇总了静态二进制分析、SQLite 会话审计以及公开 GitHub/论坛记录中核实的各项定量测量结果、二进制状态与政策节点。

类别 指标 / 组件 实测数值 / 二进制状态 统计范围与证据来源 引用序号
上下文容量 Gemini 4 Argon / 3.8 Flash 标称窗口 1,048,576 Tokens (1.0M) 官方文档、模型卡、CLI /context 界面及 defaultmodels.Gemini4Argon (0x100000) [1][3][12][44]
上下文容量 SQLite ContextWindowMetadata 上限字段 max_context_tokens = 256000; truncation_reason = 2 本机补丁前 209 个 1M Gemini CLI 会话 100.0% 调用(15,575 / 15,575)及 Issue #1245 (@Circumsized) [1]
二进制门禁 #3 Cortex GetCheckpointConfig 硬钳制 cmp $0x3e800, %edx; mov $0x3e800, %esi; cmovb %edx, %esi (256,000) 桌面端 v2.29.0 @ 0x14176d6a2; CLI v1.5.0 @ 0x7fe5802; CLI v1.5.1 @ 0x7fb0fe2(.text 段唯一一处) [1][2]
二进制门禁 #1 & #2 CLI 上下文选择器模型白名单 位于 0xc592be0 的 len=1 切片:["Gemini 4 Argon"] 由 SelectorModel.offersContextWindow (0x9e92140) 与 store.(*Store).ContextWindow (0x9c49fe0) 消费 [1][2]
环境变量覆盖 AGY_CLI_AUTO_COMPACT_OVERRIDE 读取 v1.3.5–v1.4.x:编译为 "" (xor %eax,%eax); v1.5.0–v1.5.1:恢复 os.LookupEnv 在 CLI v1.5.0/v1.5.1 的 VA 0x9c49d00 处恢复(未写入更新日志),0x3E800 钳制仍生效 [1][2][11]
生产环境遥测 310 个会话 / 65,613 次模型调用 (@murias002) 最大输入:255,999; >300K 调用:0; 压缩前中位数:255,070 2026-08-30 至 2026-10-04 全量 CLI 数据库审计,涵盖 276 次压缩事件(压缩后中位数:45,304) [3]
压缩输出 压缩后散文式摘要体积 15,363 – 17,336 Tokens(历史缩减 >93%) @Burntgogi 94 轮 Argon 会话(分别从 276,110 和 249,867 Tokens 触发压缩) [1]
外部阈值 第三方插件安全压缩上限 239,616 Tokens(256K - 16K 输出余量) Nous Research Hermes Agent 插件配置,用于避开 agy 内部的 256K 压缩 [48]
压缩延迟 自动压缩暂停时长与用量记录 中位数 70 秒(范围 35–602 秒); gen_metadata 中记录为 0 Tokens @Emily2040 对 15 份无头运行日志的审计(1,279 次 Argon High 调用,22 个检查点) [1][4]
缓存失效 压缩后缓存留存率与重建调用 缓存留存率 0%; 随后紧跟 44,990–70,041 未缓存输入 Tokens 将对话前缀改写为散文式摘要会使约 240K 的隐式提示词缓存失效 [1][4]
缓存失效 运行中途前缀缓存未命中 17 次调用(1.3%)= 3,292,077 Tokens(占全部未缓存输入的 31.0%) 17 次中途缓存未命中里有 15 次发生在客户端注入 system_message 步骤后的两步之内 [4][5]
CLI 开销 无头 agy -p 启停与存储 I/O 11.3 – 12.2 秒固定开销; 943 KB 摘要存储文件在 90 秒内重写 27 次 @Emily2040 5 轮基准测试(服务端执行耗时 4.5–8.2 秒,二进制启动/退出耗时约 12 秒) [4]
配额倍率 内置上下文窗口档位倍率 256K: 1.0x | 512K: 1.3x | 900K: 1.8x (Expensive: true) CLI 字符串表 (0x5cf26c0)、ContextWindowOption.GetExpensive、解锁后的 /model 界面及桌面端拆包 [1][18][19]
配额消耗 Gemini 4 Argon 与 3.8 Flash 同桶消耗比 按公开 API 每美元折算为 3.00x 配额($6/$30 对比公开价 $2/$10) @Yiji_Kong 在 Antigravity v2.27.0 Ultra 5x 上的控制变量 A/B 测试(隐含 5 小时桶容量约 $150 USD) [42]
配额消耗 Gemini Web 8 位小数 ΔWeekly 纯输入消耗比 原始 24.67x / 每美元 9.25x(扣除基础开销后每美元 7.64x) Argon Low 发送 28 字符 "OK" 提示词 (+0.00015849) 比 Flash High 撰写 4,013 词长文 (+0.00014157) 多消耗 12% 配额 [42]
政策变更 第 10 次论坛批准与政策反转的时间差 71 分钟 (#187536 -> #187241) / 26.5 小时 (#186246 -> #187241) 10 次书面批准(9 月 16 日至 10 月 8 日 16:23 UTC)通过 10 月中旬 FAQ 更新被推翻,ToS 自 9 月起未修改 [31][32][33][34][36]
账号申诉 二振出局执法与申诉停滞时长 1 次重认证机会,第 2 次标记永久封禁; 申诉停滞 100+ 天 Discussion #20632 政策与 GitHub Issues #927、#29576 及论坛 #186089 中未解决的申诉记录 [8][9][10][45]

如上表所示,标称 1M 上下文窗口与 256,000 Token 实际运行上限之间的差异在桌面端语言服务程序与 CLI 二进制文件中均被一致强制执行,而订阅配额消耗与无头 CLI 使用政策也在 2026 年 10 月经历了同步调整。

1. 产品背景、架构与事件时间线

1.1 24 亿美元 Windsurf 团队交易、核心人员与 jetski 代码库

2025 年 7 月,Google 与 AI 编程初创公司 Windsurf(原名 Codeium)达成了 24 亿美元的非排他性技术许可与人才引进协议。Windsurf 联合创始人兼首席执行官 Varun Mohan(现任 Google DeepMind 软件工程总监)与产品工程负责人 Kevin Hou(现任 Google DeepMind Antigravity 产品工程负责人)携核心工程团队加入 Google DeepMind,主导构建 Google Antigravity [55][56]。

对 Windows 桌面端语言服务程序(language_server.exe,含 214,663 个符号)与 Linux CLI 二进制文件(antigravity v1.5.0,含 177,405 个符号)内部 Go 运行时 pclntab 函数符号表的检查证实,桌面端二进制中约 92,000 个函数与 CLI 中约 90,000 个函数编译自同一个内部 Google 单体仓库(monorepo)源码树,并带有 Windsurf/Codeium 的历史研发代号:google3/third_party/jetski/ [2]。关键共享符号与 CLI 专属符号包括:

Text
google3/third_party/jetski/cli/model/model.SelectorModel.offersContextWindow
google3/third_party/jetski/cli/store/store.(*Store).ContextWindow
google3/third_party/jetski/cli/store/store.(*Store).ContextWindowChoice
google3/third_party/jetski/cli/store/store.AutoCompactOverride
google3/third_party/jetski/cortex/utils/utils.GetCheckpointConfig
google3/third_party/jetski/cortex/tokens/compaction/compaction.go
google3/third_party/jetski/cortex/shared/snapshot/snapshot.go

下表列出了本报告所引用的公开记录中涉及的核心管理层及官方仓库/论坛工作人员:

姓名与职务 平台账号 公开记录中的角色与参与情况 引用序号
Varun Mohan — Google DeepMind 软件工程总监 X: @_mohansolo Windsurf (Codeium) 前联合创始人兼 CEO,2025 年 7 月通过 24 亿美元技术许可与人才协议加入 Google DeepMind 并负责 Antigravity。 [56]
Kevin Hou — Google DeepMind Antigravity 产品工程负责人 X: @kevinhou22 | GitHub: @khou22 Windsurf/Codeium 前产品工程负责人,曾在 AI Engineer Summit 发表主题演讲《Get Out of the Model's Way》,主张避免在模型外围设置僵化的脚手架限制。 [1][55]
Chandra Shakher Kamasani — Antigravity CLI 仓库核心维护者 GitHub: @chandrashakherkamasani 于 2026 年 10 月 15 日自行认领 Issue #1245(256K 硬编码压缩),并于 10 月 19 日认领 Issue #1291(70 秒压缩与缓存失效),仅添加了 feedback 标签而非 bug 标签,截至 2026 年 11 月 5 日公开评论数为 0。 [1][4]
Maniraj Chervirala — Antigravity CLI 维护者与论坛支持人员 GitHub: @manirajc | Forum: @Maniraj_Chervirala GitHub Issues #878、#1072、#927 和 #743 的负责人,于 2026 年 10 月 29 日在论坛帖子 #196351 中代表官方回复,确认公开的 API 价格仅适用于按量付费计费,订阅配额乘数不予公开。 [3][5][6][8][42]
Rebbanpalli Naveen, Ambati Rajendra & Chunduriv — 官方论坛支持工程师 Forum: @Rebbanpalli_Naveen, @Ambati_Rajendra, @chunduriv 在 2026 年 9 月 16 日至 10 月 8 日(16:23 UTC)期间撰写了 10 次确认本地子进程调用 agy -p 合规的书面回复,并在 10 月 8 日(17:34 UTC)之后发布宣布基于 FAQ 禁止该用法的后续回复。 [23]–[41]

1.2 客户端形态、旧版 gemini-cli 停用与共享配额池机制

根据 Google Antigravity 的官方文档与版本更新日志,该平台包含四个共享统一智能体运行框架与订阅配额池的客户端形态 [12]:(1)Antigravity 2.0 桌面端应用(基于 Electron 的多智能体桌面应用,捆绑 language_server.exe、浏览器自动化、Jupyter 查看器与语音模式,v2.29.0 于 2026 年 11 月 3 日发布)[12][17],(2)Antigravity IDE 及扩展插件(基于 VS Code 派生的编辑器与 IDE 插件)[12],(3)Antigravity CLI(agy,闭源单体 Go 二进制程序,提供交互式 TUI、无头模式 agy -p / --print 以及在 v1.5.0 中引入的 agy acp Agent Client Protocol 标准输入输出服务)[11][12],以及(4)Antigravity Python SDK(google-antigravity/antigravity-sdk-python)[12][33][40]。

2026 年 6 月 18 日,Google 终止了个人消费者账号对早期开源 Node.js 版 @google/gemini-cli 的访问权限,要求所有免费及付费个人订阅用户迁移至闭源 agy 二进制程序 [10][45]。除终结客户端的源码级可见性外,此次迁移还移除了企业和自动化工作流此前用于在终端外部统计输入、输出、缓存与思考 Token 的原生 OpenTelemetry(OTLP)Token 用量导出器(记录于 GitHub Issue #366)[7]。

个人消费级订阅分为 Free、Google AI Plus、Google AI Pro(约 $20/月)以及 Google AI Ultra($200–$250/月的 5x 与 20x 档位),提供对第一方 Gemini 模型(Gemini 3.5/3.6/3.7/3.8 Flash、Gemini 3.1 Pro 以及 2026 年 10 月中旬发布的旗舰模型 Gemini 4 Argon)与第三方模型配额桶(Claude Opus 5.5、Claude Sonnet 5.5 和 GPT-OSS 120B Medium)的访问权限 [1][12][13][27][42]。所有客户端形态(包括 Gemini Web 与无头模式 agy -p)均从同一个共享的“5 小时滚动刷新池(5-Hourly Pool)”与“7 天周上限池(Weekly Pool)”中扣减配额 [31][32][42]。来自 LanguageServerService/GetUserStatus 与 8 位小数精度 /usage 接口的遥测数据显示,1 个周配额池严格等于 20 × 5 小时配额池,其中 Ultra 5x 计划的单个 5 小时池按 Gemini 3.8 Flash 挂牌价(每百万 Tokens $0.75/$3.75)折算约为 $150 USD [42]。为防止基础配额耗尽后系统自动扣减付费的 Google One AI Credits,用户必须同时在 ~/.gemini/config/config.json 中设置 "useAiCredits": false 并在 ~/.gemini/antigravity-cli/settings.json 中设置 "useG1Credits": false [38][39]。

1.3 事件时间线(2025 年 7 月至 2026 年 11 月 5 日)

以下按时间顺序排列的事件时间线根据 GitHub Issue 与 Release 时间戳、Google AI 开发者论坛 JSON 存档中的 UTC 时间戳以及官方文档发布记录重建。

第一阶段 团队组建、早期账号封禁与闭源迁移(2025-07 至 2026-08)

  • 2025-07: Google 与 Windsurf(Codeium)完成 24 亿美元的技术许可与核心团队引进协议,Varun Mohan 与 Kevin Hou 加入 Google DeepMind,基于内部 google3/third_party/jetski 代码库构建 Antigravity [2][55][56]。
  • 2026-02-27 23:18 UTC: 在 cloudcode-pa.googleapis.com 因第三方 OAuth 代理工具触发自动封号潮(同时将合规的 @google/gemini-cli 与 Gemini Code Assist 用户锁定并报错 HTTP 403 PERMISSION_DENIED (TOS_VIOLATION))后,Google 维护者 @jackwotherspoon 在 google-gemini/gemini-cli 发布了 Discussion #20632。该公告执行了一次性解封重置,并确立了“二振出局政策(Two-Strike Policy)”:首次被标记的用户可提交重认证 Google 表单(Recertification Form)以等待定期自动解封(1–2 天),而第二次触发 ToS 违规标记将导致永久封禁 [9]。
  • 2026-05-25 至 2026-05-30: Google AI Pro 年度订阅用户 @jlwainwright 在政策明确前短暂测试某 OpenClaw 插件后被标记为 TOS_VIOLATION(尽管提交申诉,仍持续被封禁超过 100 天)[8]。5 月 30 日,r/google_antigravity 上的一个热门讨论帖(#1trr4dy)报告称,激进的历史自动压缩在远未达到 Gemini 标称的 1M 上下文窗口前就已将对话截断 [21]。
  • 2026-06-11 与 2026-06-18: 开发者 @UesugiErii 提交 GitHub Issue #366,反映 agy 移除了 OTLP Token 用量导出功能 [7]。6 月 18 日,Google 终止个人消费者账号对开源 @google/gemini-cli 的访问,要求迁移至闭源 Go 二进制程序 agy [10][45]。
  • 2026-07-23 至 2026-08-26: 开源项目 agy-acp 作者 @shindgew(#175905)、@Ahmad3(#178472)与 @JJPop(#179013)在官方论坛发帖询问:将未修改的 agy 二进制文件作为单用户本地子进程启动是否符合第 6 条规定 [23][S1][S2]。同期,@Pitt_zhang(#176775)记录了多步任务中的智能体上下文丢失问题 [46],@thealgebraist 提交 Issue #743 请求增加可配置的 max_context_tokens 设置 [6],8 月 26 日 @schalatap 提交 GitHub Issue #878 请求提供关闭自动压缩并解锁完整 1M 上下文窗口的选项 [3]。

第二阶段 连续十次批准本地子进程调用的官方论坛书面确认(2026-09-02 至 2026-10-08 16:23 UTC)

  • 2026-09-02 至 2026-09-25: @jlwainwright 提交 Issue #927,记录持续 100 天以上未获解决的 ToS 申诉 [8]。9 月 16 日(#175905,第 1 次确认)与 9 月 17 日(#183429,第 2 次确认),Google 工作人员 @Rebbanpalli_Naveen 与 @Ambati_Rajendra 书面确认:在本地将未修改的 agy 二进制文件作为子进程启动或从开源工具调用 agy -p 属于官方支持用法,只要不提取 OAuth 凭据就不违反第 6 条 [23][24]。9 月 20 日,@flotoz 提交关于配额快速耗尽的 Issue #1072 [5];9 月 23 日,Nous Research 的 Hermes Agent 将安全阈值设为 239,616 Tokens 以避开 agy 内部的 256K 压缩 [48];9 月 25 日(#184829),@Ambati_Rajendra 指出将 agy -p 封装为供 Claude Code 调用的 MCP 服务器不被允许,但直接本地脚本调用仍受支持 [25]。
  • 2026-09-28 至 2026-10-02: Google 工作人员发出第 3 至第 6 次确认:@Ambati_Rajendra 在 #185494(9 月 28 日)确认从另一个 AI 编程工具启动运行 agy -p 的脚本是允许的(“you are good to go!”)[27],并在 #185460(9 月 28 日)确认在单个个人账号下将 agy 作为本地子进程运行是允许的(但禁止多账号轮换)[26]。9 月 30 日,@chunduriv 在 #185992(第 5 次确认)中确认,在个人账号下由 Anthropic 的 Claude Code 通过 stdio 以无头模式调用未修改的 agy.exe 是允许的 [28]。10 月 2 日,@Ambati_Rajendra 在 #185949(第 6 次确认)中确认,由 Codex CLI 或 Claude Code 调用触发 agy PowerShell 包装脚本的本地 Skill 符合规定 [29]。
  • 2026-10-05 至 2026-10-08 16:23 UTC: 10 月 5 日(00:51 UTC),Eddy Murias(@murias002)在 Issue #878 中发布了涵盖 310 个会话 / 65,613 次调用的 SQLite 审计,显示最大输入为 255,999 Tokens,压缩前中位上下文为 255,070 Tokens [3]。10 月 5 日晚些时候,@Rebbanpalli_Naveen 发出第 7 次确认(#186954,批准本地 AI 编排器子进程调用)[30] 与第 8 次确认(#186952,明确确认在个人 Google AI Pro 计划下由 OpenAI Codex 调用未修改的 agy.exe “完全可以使用”,且属于“CLI 无头模式的受支持用法”)[31]。10 月 7 日(15:03 UTC),@chunduriv 发出第 9 次确认(#186246),声明“未修改的 agy 子进程究竟是由你自己的脚本、本地协调器,还是由另一个本地编程助手(如 Claude Code)启动,没有任何区别”[32]。10 月 8 日(16:23 UTC),@Ambati_Rajendra 发出第 10 次确认(#187536),批准在个人编排器中进行 agy、Codex 与 Claude Code 之间的自动化任务交接 [33]。

第三阶段 10 月 8 日政策反转、FAQ 更新与 0x3E800 门禁的二进制反汇编(2026-10-08 17:34 UTC 至 2026-11-05)

  • 2026-10-08 17:34 UTC 与 10 月中旬 FAQ 修改: 距 #187536 仅隔 71 分钟、距其本人在 #186246 中的回复仅隔 26 小时 31 分钟,@chunduriv 在 #187241 中发帖称,Google 不支持在个人消费者登录下使用第三方编程智能体(Codex、Claude Code、OpenClaw、OpenCode)编排或包装 agy,并警告该行为会触发自动 ToS 执法与账号封禁 [34]。同一时期,Google 在未修改 9 月版《附加服务条款》的情况下,向《官方 FAQ》页面新增了一条禁止在个人消费者计划下将 agy 包装进第三方编程智能体的条目 [13][14][36]。
  • 2026-10-14 至 2026-10-20: @Burntgogi 于 10 月 14 日提交 Issue #1245,记录了 Gemini 4 Argon 在约 250K–276K 处发生强制压缩的现象 [1]。10 月 15 日,维护者 @chandrashakherkamasani 自行认领 #1245 并打上 feedback 标签(未打 bug 标签),@NuCl34R 与 @Circumsized 公布了实验结果与 SQLite ContextWindowMetadata(max_context_tokens = 256000)证据 [1],@Hello_there 在论坛 #189476 报告了压缩后捏造标识符的问题 [43],同时桌面端 v2.24.0 正式发布 Gemini 4 Argon 与 /compact [12]。10 月 16 日(#189905),@Rebbanpalli_Naveen 声明 FAQ 取代早期的论坛评论 [35]。10 月 19 日,@Emily2040 提交 Issue #1291,记录了中位耗时 70 秒的压缩以及由中途前缀缓存未命中导致的 31% 未缓存输入 [1][4]。
  • 2026-10-22 至 2026-10-29: 10 月 22–23 日,@LiraNuna 在 Issue #1245(第 5 和第 6 条评论)中公布了三道二进制门禁的完整反汇编代码并发布了 patch_agy.py [1][2]。在论坛 #191689(10 月 26–27 日)中,面对订阅用户 @b_w 与 @Tora39 的追问,@Rebbanpalli_Naveen 确认正式 ToS 在 9 月之后并未修改,仅在 10 月中旬更新了 FAQ [36]。10 月 26 日至 10 月 29 日期间(#194998、#190756、#190815、#196472),官方工作人员将限制范围扩大至来自 Claude Code 的本地文件交接以及独立 Python 协调器服务 [37][38][39][40]。10 月 28–29 日,@Yiji_Kong 在论坛 #196351 发布了控制变量 A/B 配额基准测试,显示 Argon 按公开挂牌价每美元消耗的配额是 Flash 的 3.00 倍,@Maniraj_Chervirala 确认这一现象符合预期,原因是订阅配额乘数不予公开 [42],同时 u/Lberondroth 的 v2.28.1 拆包比对(#1xij7jx)发现了带有 Expensive: true 的 ContextWindowOptions [18]。
  • 2026-11-02 至 2026-11-05(桌面端 v2.29.0 与 CLI v1.5.0–v1.5.1): 11 月 2 日,@AsabaLazy 发布了 AUR 软件包 antigravity-cli-fix-bin [1][S5]。11 月 3 日,Google 发布桌面端 v2.29.0(language_server.exe 增加 +4.47 MB,新增 cortex/tokens/compaction、cortex/shared/snapshot 以及受控开关 enable-context-usage-indicator)[12][17]。11 月 4 日,Google 发布 CLI v1.5.0(新增 agy acp,并在 VA 0x9c49d00 处静默恢复了 os.LookupEnv("AGY_CLI_AUTO_COMPACT_OVERRIDE"),同时在 0x7fe5802 处保留了 0x3E800 钳制指令)[11]。11 月 5 日(约 07:34 UTC),Google 发布 CLI v1.5.1(BuildID 696031ae...),全部 11 项更新日志均为常规维护修复,0x3E800 钳制指令在文件偏移 0x7fb0fe2 处保持逐字节一致,核心 Issues #1245、#878 与 #1291 仍无官方回复 [1][3][4][11]。

2. 256K 硬编码门禁、二进制静态反汇编与 SQLite 数据库审计

2.1 标称 1M 容量与五组独立生产会话数据集对比

在 Google Antigravity 的官方文档、版本更新日志 [12]、模型卡以及 agy CLI 的交互式 /context 面板中,Gemini 4 Argon 与 Gemini 3.8 Flash 均显示上下文窗口容量为 1,048,576 Tokens(1.0M)[1][3][12][44]。当会话达到约 222K Tokens 时,CLI /context 面板报告使用率为 21.2%(222.4k/1.0M tokens),并显示 Free space: 826.2k (78.8%) [44][51]。

公开界面参考截图:(1)解锁后的 agy CLI /model 菜单截图(由 @LiraNuna 发布于 GitHub Issue #1245 [1],展示了隐藏的 Context: Default | 256K | [512K] | 900K 选项行以及红色的 about 1.3x quota per turn 提示);(2)CLI /context 与桌面端上下文用量面板并排对比截图(由 @dimitr-io 发布于论坛帖子 #184694 [44][51],展示了一个处于 222.4k–225.0k Tokens 的会话在已有 1 个早期检查点被摘要折叠的情况下,仍报告在 1.0M 总量中剩余 823.6k / 78.5% 的可用空间)。

尽管界面报告剩余超过 75% 的可用容量,在 Linux 与 Windows 环境下收集的五组独立生产会话遥测数据集一致证实,所有未修改客户端的会话均在约 240K–276K Tokens(以 256,000 常量为中心)处被截断或压缩:

  • 1. Eddy Murias (@murias002) 对 310 个会话与 65,613 次模型调用的全库审计(Issue #878)[3]: 对 Linux 下 2026 年 8 月 30 日至 10 月 4 日期间 ~/.gemini/antigravity-cli/conversations/*.db 中全部 gen_metadata 记录(310 个会话,65,613 次调用,其中 86.6% 运行在 Gemini 3.8 Flash 上)的审计显示,单次调用输入中位数(p50)为 136,487 Tokens,p90 为 229,000 Tokens,历史单次调用最高输入为 255,999 Tokens,超过 300,000 输入 Tokens 的调用为 0 次。在全部 276 次压缩事件(单步 Token 下降 >40%)中,压缩前上下文体积中位数为 255,070 Tokens(p10 = 247,360,p90 = 255,874),压缩后中位数降至 45,304 Tokens。
  • 2. @Burntgogi 对 94 轮 Gemini 4 Argon 重构会话的轨迹测量(Issue #1245)[1]: 在 Windows 10 x64 下使用 agy 1.3.5 进行的一次持续 50 分钟的多阶段 TypeScript 重构会话(94 个 PLANNER_RESPONSE 轮次,264 个步骤,累计提示词输入 10.38M Tokens,缓存读取 9.43M Tokens)中,两次强制压缩与一次运行中途前缀缓存未命中发生在下表所示的精确边界处。
  • 3. @NuCl34R 控制环境变量覆盖实验(Issue #1245 Comment #1)[1]: 在 Linux x64 agy 1.3.5(gemini-4-argon)上,未设置环境变量的会话分别在 269,597 和 274,270 Tokens 处触发压缩,而导出了 AGY_CLI_AUTO_COMPACT_OVERRIDE=900000 的会话分别在 272,784 和 279,687 Tokens 处触发压缩,证实该环境变量在 1.3.5 中不生效。
  • 4. @Emily2040 对 15 份无头运行日志与 1,279 次 Gemini 4 Argon High 调用的审计(Issue #1245 & #1291)[1][4]: 在 agy 1.4.0–1.4.2 的 1,279 次模型调用中,共触发了 22 次检查点自动压缩步骤;在每次压缩紧邻的前一步调用中,总提示词上下文(input + cache_read)均严格落在 235K 至 268K Tokens 之间。
  • 5. 本机补丁前 Antigravity CLI 数据库对 209 个会话与 15,575 次 1M-Gemini 调用的审计(< 2026-11-04 00:00:00 UTC+8): 在修改时间早于 2026 年 11 月 4 日的全部 237 个本地 CLI SQLite 数据库(包含 209 个活跃的 1M 上下文 Gemini 会话和 15,575 次模型调用:Gemini 3.8 Flash 11,110 次、Gemini 4 Argon 2,826 次、Gemini 3.7/3.6/3.5 Flash 1,639 次)中,100.0% 的调用(15,575 / 15,575)记录 max_context_tokens = 256,000,单次无重试调用(retries = 0)超过 300,000 提示词 Tokens 的次数为 0(p50 = 108,493,p90 = 211,227,p99 = 250,610),共包含 79 次 CORTEX_STEP_TYPE_CHECKPOINT(step_type = 23)压缩步骤与 52 次 truncation_reason = 2(MAX_TOKEN_LIMIT)事件。

下表汇总了 @Burntgogi 在 Issue #1245 的 94 轮 Gemini 4 Argon 会话中测得的关键轨迹事件 [1]:

事件节点 步骤 / 轮次 事件前提示词 Tokens(缓存 + 输入) 事件后提示词 Tokens 事件后 cache_read_tokens 观察到的机制与影响
检查点 1 Step 79 (Turn 21) 276,110(263,524 缓存 + 12,586 输入) 17,336 0 跨越约 256K 阈值,触发首次强制压缩并将提示词缓存清零 [1]
中途前缀未命中 Step 193 (Turn 67) 239,857(237,239 缓存 + 2,618 输入) 243,064 0 在 Step 191 后 25 秒发生完整前缀缓存失效(243,064 Tokens 按未缓存计费)[1]
检查点 2 Step 200 (Turn 70) 249,867(247,369 缓存 + 2,498 输入) 15,363 0 达到约 250K,触发第二次强制压缩,将 93.8% 的上下文替换为散文式摘要 [1]

2.2 Antigravity CLI SQLite 架构、Protobuf 结构与压缩边界回放

Antigravity CLI 将会话数据持久化保存在本地 ~/.gemini/antigravity-cli/ 下的两层 SQLite 数据库中:(1)全局会话索引库(conversation_summaries.db,包含 conversation_summaries 表与 conversations_fts FTS5 虚拟表);以及(2)单会话轨迹数据库(conversations/<uuid>.db,每个库包含 7 张表:trajectory_meta、steps、gen_metadata、executor_metadata、parent_references、trajectory_metadata_blob 和 battle_mode_infos)。

在 steps 表中,CORTEX_STEP_TYPE_PLANNER_RESPONSE = 15 代表模型规划轮次,CORTEX_STEP_TYPE_CHECKPOINT = 23 代表自动上下文压缩检查点。在 gen_metadata 表中,每一行存储一次模型调用的序列化 exa.cortex_pb.GeneratorMetadata Protobuf 记录。当后台压缩触发(step_type = 23)时,客户端仅向 steps 表插入一行记录,而不向 gen_metadata 表写入对应行,因此摘要调用本身的 Token 用量被排除在轨迹统计之外。直接从 agy 二进制内嵌的 google.protobuf.FileDescriptorProto 表(文件偏移 0x66298e2–0x662a950 与 0x65d62cd)提取的 gen_metadata.data 内部 Protobuf 层级结构如下:

Text
exa.cortex_pb.GeneratorMetadata
├── field 1: chat_model (exa.cortex_pb.ChatModelMetadata)
│    ├── field 3: model (exa.codeium_common_pb.Model enum)
│    ├── field 4: usage (exa.codeium_common_pb.ModelUsageStats)
│    │    ├── field 2: input_tokens (uint64)          # 计费的未缓存提示词输入 Tokens
│    │    ├── field 3: output_tokens (uint64)         # 生成的输出 Tokens
│    │    ├── field 4: cache_write_tokens (uint64)    # 写入提示词缓存的 Tokens
│    │    ├── field 5: cache_read_tokens (uint64)     # 读取的已缓存前缀 Tokens
│    │    └── field 9: thinking_output_tokens (uint64)
│    ├── field 9: chat_start_metadata (exa.cortex_pb.ChatStartMetadata)
│    │    ├── field 1: start_step_index (uint32)      # 压缩前为 0,压缩后跳变至检查点 idx
│    │    ├── field 2: checkpoint_index (int32)       # 压缩前为 -1
│    │    ├── field 3: steps_covered_by_checkpoint (repeated uint32)
│    │    ├── field 4: created_at (google.protobuf.Timestamp)
│    │    └── field 10: context_window_metadata (exa.cortex_pb.ContextWindowMetadata)
│    │         ├── field 1: estimated_tokens_used (int32)
│    │         ├── field 2: truncation_reason (0=UNSPECIFIED, 1=CACHE_TTL_EXPIRED, 2=MAX_TOKEN_LIMIT)
│    │         ├── field 3: token_breakdown (exa.cortex_pb.TokenBreakdown)
│    │         └── field 4: max_context_tokens (optional int32)  # 在 100% 的 1M Gemini 调用中记录为 256000
│    ├── field 14: retries (uint32)
│    ├── field 19: response_model (string)
│    └── field 21: model_display_name (string)
└── field 2: step_indices (repeated uint32)

下表回放了本机补丁前 CLI 会话 5681d8b4-f18f-4efa-be2b-35091d09b953.db(gen_idx 338..346)中的一个典型压缩边界。在 gen_idx = 343 时,estimated_tokens_used 达到 255,912(距 256,000 上限仅差 88 Tokens)。在 step 700 处,CORTEX_STEP_TYPE_CHECKPOINT(step_type = 23)触发,且未写入 gen_metadata 行。在下一次调用(gen_idx = 344,steps 701–702)中,start_step_index 从 0 跳变至 700,truncation_reason 记录为 2(MAX_TOKEN_LIMIT),estimated_tokens_used 降至 35,148,cache_read_tokens 从 267,056 降至 20,399:

gen_idx steps.idx input_tokens cache_read_tokens prompt_total estimated_tokens_used start_step_index truncation_reason max_context_tokens
338 688, 689 5,264 263,016 268,280 253,367 0 (ckpt=-1) 0 256,000
340 692, 693 5,728 263,000 268,728 253,770 0 (ckpt=-1) 0 256,000
342 696, 697 2,220 267,033 269,253 254,211 0 (ckpt=-1) 0 256,000
343 698, 699 4,942 267,056 271,998 255,912 0 (ckpt=-1) 0 256,000
(step 700) 700 (type=23) (未记录) (未记录) (未记录) (CHECKPOINT) — — —
344 701, 702 5,962 20,399 26,361 35,148 700 (ckpt=0) 2 (MAX_TOKEN_LIMIT) 256,000
345 703, 704 3,662 24,476 28,138 36,719 700 (ckpt=0) 0 256,000
346 705, 706 4,778 24,472 29,250 37,813 700 (ckpt=0) 0 256,000

2.3 二进制静态反汇编 模型注册、三道硬编码门禁与环境变量演变

对官方桌面端 v2.29.0 language_server.exe 二进制文件(PE32+ x86-64,SHA-256 c98e7c33...e1c3d5)和官方 Linux CLI 二进制文件(v1.5.0 BuildID 5fb6af4f... 及 v1.5.1 BuildID 696031ae...)的静态反汇编,结合 @LiraNuna 在 Issue #1245 中对 v1.3.5–v1.4.x 的反汇编分析 [1][2],确认了四个层面的精确指令级实现:

第一层 — 模型注册(代码中存在真实的 1,048,576 Token 容量定义)

在桌面端与 CLI 二进制文件中,Gemini 4 Argon 的模型描述符均由 defaultmodels.Gemini4Argon -> defaultmodels.GeminiModelInfo 构造,向结构体偏移 +0x14 处写入最大上下文窗口 0x100000(1,048,576 Tokens),向结构体偏移 +0x70 处写入 65,536 Tokens(0x10000)的输出/安全余量字段,并按思考档位传入模型家族 ID 1417/1418/1419(0x589/0x58a/0x58b):

X86ASM
; Desktop language_server.exe (VA 0x141ce5015) & CLI v1.5.0 (VA 0x8540415):
mov DWORD PTR [rax+0x14], 0x100000    ; MaxContext = 1,048,576 tokens (1M)
mov DWORD PTR [rax+0x70], 0x10000     ; Secondary field = 65,536 tokens (64K)

第二层(门禁 #1 与门禁 #2)— CLI 中长度为 1 的 "Gemini 4 Argon" 白名单切片与桌面端实验开关

在 CLI 二进制文件(v1.5.0)中,字符串表在文件偏移 0x5cf26c0 附近相邻存储了 "512K"、"1.3x"、"900K"、"1.8x" 与 "256K",且 Protobuf 消息 ContextWindowOption 包含布尔访问器 (*ContextWindowOption).GetExpensive。在 /model TUI 菜单中,通过 Tab 键在 Context: Default (256K) | 256K | [512K] | 900K 之间循环切换的逻辑已经实现 [1]。但该功能被两处针对同一全局白名单切片的完全相同的检查所阻断,该切片通过 ELF .rela.dyn 重定位表(文件偏移 0x9fa8)解析:

Text
Relocation 1: r_offset = 0xc592be0  ->  addend 0xc580ef0  (Slice header at 0xc592be0: {ptr=0xc580ef0, len=1, cap=1})
Relocation 2: r_offset = 0xc580ef0  ->  addend 0x5dcc4d3  (String header at 0xc580ef0: {ptr=0x5dcc4d3, len=14})
Target string at 0x5dcc4d3 (14 bytes): "Gemini 4 Argon"

这个长度为 1 的白名单切片在 CLI 二进制文件的两处独立门禁中被消费:(1)门禁 #1(google3/third_party/jetski/cli/model/model.SelectorModel.offersContextWindow,VA 0x9e92140),它将当前模型名称与该切片(@0x9e922ba–0x9e922e0)进行比对,对 Gemini 3.8 Flash 及所有其他非 Argon 的 1M 模型返回 false(xor %eax, %eax),从而在 /model 中隐藏 Context 选择栏;以及(2)门禁 #2(google3/third_party/jetski/cli/store/store.(*Store).ContextWindow,v1.3.5 偏移 0x917d892 / v1.5.0 VA 0x9c49fe0),它在读取 settings.json 之前重复执行完全相同的白名单循环 [1][2]:

X86ASM
; Gate #2: store.(*Store).ContextWindow() — v1.3.5 (@LiraNuna) / v1.5.0 (VA 0x9c49fe0, load @ 0x9c4a032):
917d892: mov  0x279b727(%rip), %rdx   ; Load whitelist slice header at 0xc592be0 ("Gemini 4 Argon")
...
917d913: jl   0x917d952               ; If active model is not in whitelist, jump to exit branch
917d952: xor  %eax, %eax              ; Return empty string pointer "" (VA 0x9c4a0f2 in v1.5.0)
917d954: xor  %ebx, %ebx              ; Return string length 0
917d956: leave
917d957: ret                          ; Returns ("", 0) without reading settings.json

由于 Manager.syncContextWindow() 调用的是 store.(*Store).ContextWindow() 而非直接配置读取函数 store.(*Store).ContextWindowChoice()(VA 0x9c49fa0),任何非 Argon 模型都会收到 backend.SetContextWindow(""),导致保存在 ~/.gemini/antigravity-cli/settings.json 中的任何 "contextWindow": "512K" 或 "900K" 设置被丢弃 [1]。在桌面端,language_server.exe 不包含 CLI 专属的 offersContextWindow 符号;相反,model_config.ContextWindowOptions(VA 0x141242e20)从服务端控制的功能开关(feature flag)键 "context-window-options"(字符串位于 0x1436d7c0a)读取可用选项。

第三层(门禁 #3)— cortex/utils/utils.GetCheckpointConfig 中的硬编码 0x3E800(256,000)钳制指令

即使用户选择了 Gemini 4 Argon(通过了门禁 #1 和门禁 #2),会话仍然会在约 256K Tokens 处触发压缩。对 google3/third_party/jetski/cortex/utils/utils.GetCheckpointConfig(桌面端 v2.29.0 VA 0x14176d580、CLI v1.3.5 偏移 0x7861894、CLI v1.5.0 VA 0x7fe57fe、CLI v1.5.1 偏移 0x7fb0fde)的反汇编显示,在检查内部模型家族 ID 323(0x143,该分支在 0x14176da77 / 0x7fe5bd7 处获得 1,000,000 阈值)的特判直通路径并减去安全余量 max(model_field, 40,000)(0x9c40)之后,该函数执行了一段 14 字节的硬编码钳制指令序列(81 fa 00 e8 03 00 be 00 e8 03 00 0f 42 f2)[1][2]:

X86ASM
; Desktop v2.29.0 (VA 0x14176d5aa..0x14176d6b0) & CLI v1.5.0 (VA 0x7fe570a..0x7fe5810) / v1.5.1 (0x7fb0fde):
14176d5aa:  cmp   DWORD PTR [rcx+0x8], 0x143    ; Special case check for internal family ID 323 (0x143)
14176d5b1:  je    0x14176da2b                   ; If family == 323 -> jump to 1,000,000 (0xf4240) fast path
...
14176d5dc:  cmp   rdi, 0x9c40                   ; Compare model margin field against 40,000 (0x9c40)
14176d5e9:  cmovg r8, rdi                       ; margin = max(model_field, 40000)  [65,536 for Argon]
14176d5f6:  sub   rdx, r8                       ; candidate = context_window - margin [983,040 for Argon]
...
14176d69e:  mov   edx, DWORD PTR [rsp+0x4c]     ; Load candidate threshold into %edx (CLI v1.5.0 @ 0x7fe57fe)
14176d6a2:  cmp   edx, 0x3e800                  ; Compare %edx against 0x3e800 (256,000) [CLI v1.5.0 @ 0x7fe5802]
14176d6a8:  mov   esi, 0x3e800                  ; Load 256,000 into %esi
14176d6ad:  cmovb esi, edx                      ; Unsigned conditional move: esi = min(candidate, 256000)
14176d6b0:  mov   DWORD PTR [rsp+0x50], esi     ; Write clamped 256,000 into TokenThreshold!
14176d6ba:  cmp   edx, 0x4000                   ; Secondary field clamped against 16,384 (0x4000)

对桌面端 language_server.exe 整个 56 MB .text 代码段以及 CLI antigravity(v1.5.0 与 v1.5.1)整个 60 MB .text 代码段的全段扫描证实,14 字节机器码序列 81 fa 00 e8 03 00 be 00 e8 03 00 0f 42 f2 在每个二进制文件中均只出现唯一一次。相邻函数 ClampCheckpointConfigForModelInfo(桌面端 VA 0x14176dce0)仅按 max_context - 0x9c40(40,000)约束阈值,不包含任何 256K 常量。代入 Gemini 4 Argon 注册的参数可得:threshold = min(1,048,576 - 65,536, 256,000) = 256,000。

第四层 — AGY_CLI_AUTO_COMPACT_OVERRIDE 的两阶段演变及有损压缩与请求前截断的区别

在 google3/third_party/jetski/cli/store/store.AutoCompactOverride 中,该函数原本编写为从隐藏环境变量 AGY_CLI_AUTO_COMPACT_OVERRIDE 解析百分比(如 80%)或整数 Token 数量。在不同发布版本中,其实现经历了两个阶段:

  • 第一阶段(CLI v1.3.5–v1.4.x,2026 年 10 月 — 编译期替换为空字符串)[1][2]: 如 @LiraNuna 在 Issue #1245 Comment #5 中反汇编所示,os.Getenv("AGY_CLI_AUTO_COMPACT_OVERRIDE") 调用在编译期被替换为寄存器清零指令(xor %eax, %eax; xor %ebx, %ebx; call strings.TrimSpace),向 strconv.ParseInt 传入空字符串 "" 并无条件返回无覆盖结果。
  • 第二阶段(CLI v1.5.0–v1.5.1,2026 年 11 月 4–5 日 — 在二进制中静默恢复)[11]: 在 CLI v1.5.0(VA 0x9c49d00)与 v1.5.1 中,Google 恢复了查找序列:lea rax, [rip+->"AGY_CLI_AUTO_COMPACT_OVERRIDE"](字符串位于 0x5ec74c5,长度 29)+ mov ebx, 0x1d + call os.LookupEnv (0x6b21260) + call strings.TrimSpace (0x6b50780),后接位于 VA 0x9c49d40 的百分比/整数解析逻辑(当未保存窗口选择时由 Store.ContextWindow 在 0x9c4a0fa 处调用)。但这一改动未写入 CHANGELOG.md,且 GetCheckpointConfig 中的 0x3E800 钳制指令保持未变。
  • 有损压缩与静默请求前截断的区别 (@Circumsized, Issue #1245) [1]: 数据库记录与 CLI v1.4.9 更新日志证实存在两种独立的上下文缩减机制:(a)压缩(CORTEX_STEP_TYPE_CHECKPOINT = 23),将约 250K Tokens 的历史记录替换为带有 CHECKPOINT: "# Resuming from a compaction..." 标记的 15K–17K 散文式摘要;以及(b)请求前截断(truncation_reason = 2),当 Token 数接近 max_context_tokens = 256000 时,在发出请求负载前直接从前端裁剪早期历史记录,不生成摘要也不显示检查点提示横幅。

3. 工程影响、70 秒压缩停顿与 Gemini 4 Argon 配额消耗

3.1 多步工程中的上下文丢失与压缩后回归缺陷

当多步工程会话跨越约 256K 阈值并经历有损散文式压缩(Token 缩减 >93%)或静默请求前裁剪时,早期轮次中读取的精确符号定义、数值比例尺与跨文件约束会被丢弃。公开 Issue 与论坛报告记录了四种典型失效模式:

  • 跨文件符号幻觉与 200 倍数值比例尺失真 (@Burntgogi, Issue #1245) [1]: 在 Gemini 4 Argon 的 94 轮 TypeScript 重构会话中,智能体在 Steps 1–75 期间通过 view_file 读取了目录与状态初始化文件。当检查点 1 在 Step 79 触发(276,110 -> 17,336 Tokens)后,所有逐字记录的 view_file 输出均被替换为散文式摘要。在 Steps 159–177 编写升级映射且未重新读取文件时,模型凭空构造了一个不存在的 tier-3 目录键名,并将按 1000..2000 比例尺初始化的状态字段误认为归一化的 0..10 比例尺(使数值缩小了 200 倍)。在 Step 200 触发检查点 2(249,867 -> 15,363 Tokens)后,模型又在 UI 模块中使用了连字符格式的 localStorage 键名,而在入口模块中使用了下划线格式的键名。
  • 压缩后标识符凭空捏造 (@Hello_there, 论坛 #189476) [43]: 在触发 "Resuming from a compaction — you have lost access to the full conversation history" 后,由于缺少压缩后的文件重新校验门禁,智能体引入了 6 个不存在的标识符,并用硬编码值覆盖了初始化约束。官方支持人员(@chunduriv)建议用户在 ~/.gemini/GEMINI.md 中手动添加规则,指示智能体在压缩后重新运行 view_file。
  • 多段级联上下文丢失 (@jlukic & @Infinnerty, Issue #878) [3]: 在经历多次压缩的会话中,每次生成的新摘要仅对前一段已被截断的约 100K 上下文进行二次浓缩,导致第 3 段完全无法获知第 1 段的细节,并使摘要引用不存在的函数名或超出文件末尾的行号。
  • API 契约不匹配与验证缺口 (@Pitt_zhang, 论坛 #176775) [46]: 在对一项多步全栈任务的审计中,跨轮次的上下文丢失导致前端调用 /portal-api/** 与 /mock-channel/**,而后端暴露的却是带有不兼容 DTO 结构的 /api/**,同时还在登录回退分支中引入了当 API 请求失败时直接赋予本地管理员状态的逻辑。

3.2 提示词缓存失效与 70 秒压缩开销

在 GitHub Issues #1291 与 #1245 中,@Emily2040 分析了 agy v1.4.0–v1.4.2 运行 Gemini 4 Argon High 的 15 份无头模式 stream-json 日志(共 1,279 次模型调用,累计未缓存输入 10,619,129 Tokens,缓存读取 192,374,637 Tokens)[1][4]。由于 Gemini 4 Argon 依赖隐式缓存(Implicit Caching)进行逐字节精确前缀匹配(缓存读取的计费价格仅为未缓存输入的 1/20,即每百万 Tokens $0.30 对比 $6.00)[4][42],提前触发的压缩与运行中途的前缀变化会显著增加 Token 与配额消耗:

  • 70 秒中位压缩停顿与未记录的摘要用量 [1][4]: 在测得的全部 22 个检查点步骤(均在 235K 至 268K Tokens 之间触发)中,每次压缩使执行暂停 35 至 602 秒,中位耗时为 70 秒。由于 step_type = 23 不向 gen_metadata 写入记录,摘要调用在用户可见日志中报告的 Token 用量为 0,但实际仍从用户的订阅配额池中扣减额度 [4][42]。
  • 每次压缩后提示词缓存完全归零 [1][4][5]: 将约 250K 的对话前缀改写为 15K–17K 的摘要会使整个已缓存前缀失效(cache_read_tokens 降至 0)。15 份日志中的每一个检查点之后,都紧跟着一次 44,990 至 70,041 Tokens 的未缓存输入调用以重建缓存,随后智能体为恢复丢失的上下文还会发起额外的文件重读操作。
  • 注入 system_message 后的运行中途前缀缓存未命中(占未缓存输入的 31.0%)[4]: 在 1,279 次调用中,仅 17 次 input > 100K 且 cache_read_tokens = 0 的调用(单次 113,735 至 268,032 Tokens,占总调用次数的 1.3%)就消耗了 3,292,077 未缓存输入 Tokens,占整个工作负载全部未缓存输入的 31.0%。这 17 次未命中里有 15 次发生在客户端注入 system_message 步骤(如子代理通知或定时器唤醒)后的两步之内。

3.3 控制变量 A/B 配额基准测试(@Yiji_Kong,论坛 #196351)与档位倍率

2026 年 10 月 28–29 日,开发者 @Yiji_Kong 在 Google AI 开发者论坛帖子 #196351 中公布了在 Antigravity 桌面端(v2.27.0,Google AI Ultra 5x 计划)与 Gemini Web 界面上完成的两组控制变量 A/B 实验,用于测量订阅配额的内部扣减倍率 [42]。

实验 1 — Antigravity 客户端内同配额桶、单轮、零缓存 A/B 对比测试

通过每 30 秒轮询一次 LanguageServerService/GetUserStatus 中的 quotaInfo.remainingFraction,并在静置 8 分钟后从 GetCascadeTrajectoryGeneratorMetadata 读取精确的 Token 计数,实验向 Gemini 4 Argon (High) 与 Gemini 3.8 Flash (High) 发送了完全相同的单轮无工具提示词(缓存读取为 0)[42]:

模型 输入 / 输出 Tokens 5 小时池配额下降值 按公开 API 挂牌价折算的隐含成本 每 $1 公开 API 成本对应的配额下降 相对 Flash 的归一化配额消耗比
Gemini 4 Argon (High) 14,918 输入 / 4,233 输出 0.00144340 $0.0722 USD(按每百万 $2.00 / $10.00 计) 0.02000 3.00x (0.02000 / 0.00667) [42]
Gemini 3.8 Flash (High) 15,111 输入 / 3,451 输出 0.00016180 $0.0243 USD(按每百万 $0.75 / $3.75 计) 0.00667 1.00x(基准)[42]

按各模型公开的 API 挂牌价归一化后,Gemini 4 Argon 每公开美元消耗的订阅配额严格等于 Gemini 3.8 Flash 的 3.00 倍。若 Flash 按其公开挂牌价(每百万 $0.75/$3.75)计权,则 Ultra 5x 的 5 小时配额池对应约 $150.0 USD($0.024274 / 0.00016180),而 Argon 在内部按每百万输入 $6.00 / 输出 $30.00 计权(即其宣传的 $2.00 / $10.00 API 首发价格的 3 倍)[42]。此外,一次路由至 gemini-3.8-flash-tiered(内部模型枚举 M322,12,773 输入 / 16,332 输出,0 缓存)的子代理探测调用使 remainingFraction 下降了 0.01048544,约为标准 Flash 预期下降值(~0.00047)的 22 倍 [42]。

实验 2 — Gemini Web 端 8 位小数周配额池(ΔWeekly)纯输入、零思考交叉验证

为排除本地客户端记账变量与思考 Token 的开销,@Yiji_Kong 于 2026 年 10 月 29 日记录了五个测试用例在 Web 端 /usage 接口返回的 8 位小数周配额使用率(percentageUsed)[42]:

测试用例与场景 模型与档位 输入 / 输出负载 5 小时池变化量 精确周配额池变化量(ΔWeekly,8 位小数) 实测消耗比与结果
测试 1A(纯输入,0 思考,0 缓存) Gemini 3.8 Flash (Low) 51,262 字符(约 13.5K Tokens)输入 / 回复 "OK"(1 Token,0 思考) 0.10 -> 0.10 (0.00) +0.00003685 (0.09984048 -> 0.09987733) 基准 1.00x [42]
测试 1B(纯输入,0 思考,0 缓存) Gemini 4 Argon (Low) 51,262 字符(等长排列 B)输入 / 回复 "OK"(1 Token,0 思考) 0.10 -> 0.12 (+0.02) +0.00090908 (0.09987733 -> 0.10078641) 相对 Flash 原始消耗为 24.67x(每公开美元 9.25x,扣除基础开销后原始 20.37x / 每美元 7.64x)[42]
测试 2A(高思考 4,013 词长文) Gemini 3.8 Flash (High) 107 字符输入 / 28,389 字符(4,013 词 Paxos/Raft 文章)输出 0.12 -> 0.12 (0.00) +0.00014157 (0.10078641 -> 0.10092798) 生成一篇 4,013 词的技术文章消耗了周配额池的 0.014% [42]
测试 2B(高思考 4,284 词长文) Gemini 4 Argon (High) 107 字符输入 / 27,859 字符(4,284 词 Paxos/Raft 文章)输出 0.12 -> 0.15 (+0.03) +0.00157077 (0.10092798 -> 0.10249875) 相对 Flash 原始消耗为 11.10x(每公开美元 4.24x,单轮消耗约 5 小时池的 3.1%)[42]
测试 1C(最小 28 字符基础校准) Gemini 4 Argon (Low) 28 字符 "Reply with only the word: OK" 输入 / 回复 "OK" 0.15 -> 0.16 (+0.01) +0.00015849 (0.10249875 -> 0.10265724) 在 Argon Low 上发送 28 字符 "OK" 提示词 (+0.00015849) 比在 3.8 Flash High 上撰写 4,013 词长文 (+0.00014157) 多消耗 12% 配额 [42]

在帖子 #196351 的第 6 楼,Google 维护者 @Maniraj_Chervirala 回应称,https://ai.google.dev/gemini-api/docs/pricing 上的单 Token 费率仅适用于按量付费(pay-as-you-go)API 计费,而个人消费者的 5 小时和周订阅限额反映的是可用容量、模型算力与总智能体工作量,并补充表示:“固定的单模型配额乘数不予公布,因为订阅限额会随系统容量动态调整”[42]。

受控上下文窗口倍率(1.0x / 1.3x / 1.8x)与近期版本更新(v1.4.3–v1.5.1 / 桌面端 v2.29.0)

CLI v1.3.5–v1.5.1 与桌面端 v2.27.0–v2.29.0 中的二进制字符串表和 Protobuf 描述符将内置的三档上下文窗口选项绑定到了明确的单轮配额乘数:Default (256K) / 256K 为 1.0x,512K 为 1.3x("about 1.3x quota per turn"),900K 为带有 Expensive: true 的 1.8x [1][18][19]。在 2026 年 10 月 20 日至 11 月 5 日期间,Google 陆续发布了 CLI v1.4.3–v1.4.10 以修补自动压缩的次生问题(v1.4.3 保留子代理 ID、v1.4.4 保留工具声明以复用缓存、v1.4.6 保留图片与 PDF、v1.4.7 修复超大消息引起的死循环压缩、v1.4.9 修复历史裁剪后遗留的孤立工具调用、v1.4.10 在子代理摘要中保留最近 10 条父级消息)[11],在桌面端 v2.29.0(language_server.exe 增加 +4.47 MB)中新增了 cortex/tokens/compaction、cortex/shared/snapshot 以及受控开关 enable-context-usage-indicator [17],并在 11 月 4–5 日发布了 CLI v1.5.0 与 v1.5.1,同时保持 GetCheckpointConfig 中的 0x3E800(256,000)钳制指令未变 [11]。

4. agy -p 无头模式政策反转与账号封禁申诉

4.1 合同文本背景 附加服务条款第 6 条与官方 FAQ 对比

根据《Google Antigravity 附加服务条款》(https://antigravity.google/terms)第 1 条与第 2 条的规定,Google LLC 与用户之间具有法律约束力的协议(Agreement)由三份文件构成:(1)《Google 服务条款》,(2)《Google Antigravity 附加服务条款》,以及(3)《Google 隐私政策》[14]。网站 FAQ 页面并未被列为具有约束力的合同文件。自 2026 年 9 月以来未作修改的《附加服务条款》第 6 条全文如下:

“6. 您不得滥用、损害、干扰或破坏本服务。这包括但不限于将本服务与非我们提供的产品结合使用。使用第三方软件、工具或服务访问本服务(例如结合 Antigravity OAuth 使用 OpenClaw)即构成对本协议的违反。此类行为可作为暂停或终止您的 Antigravity 及/或 Gemini CLI 账号的依据。”

— 《Google Antigravity 附加服务条款》第 6 条(2026 年 9 月)[14](来源链接)

由于官方 agy CLI 提供了公开文档化的无头执行模式(agy -p "<prompt>"、--output-format json、--output-format stream-json),专门供外部进程通过标准输入/输出(stdio)进行调用,开发者纷纷在官方支持论坛(discuss.ai.google.dev/c/antigravity/64)发帖询问:在本地将未修改的 agy 二进制文件作为子进程调用是否符合第 6 条规定。2026 年 10 月中旬,Google 在未修改《附加服务条款》第 6 条的情况下,向《官方 FAQ》页面(https://antigravity.google/docs/faq/)添加了以下条目 [13][36]:

“我能否在第三方编程智能体中使用 Antigravity CLI 无头模式或自动切换账号?

Antigravity CLI 无头模式(agy -p)旨在用于直接脚本编写与 CI 工作流。在个人消费者计划下,不支持将 agy 包装在第三方编程智能体或应用程序内部,也不支持自动轮换账号。”

— 《Google Antigravity 官方 FAQ》(2026 年 10 月中旬更新)[13](来源链接)

4.2 第一阶段(2026 年 9 月 16 日至 10 月 8 日 1623 UTC)— Google 工作人员连续十次书面合规确认

在 2026 年 9 月 16 日至 2026 年 10 月 8 日 16:23 UTC 期间,三位 Google 官方支持工程师(@Rebbanpalli_Naveen、@Ambati_Rajendra 与 @chunduriv)在多个独立的论坛主题帖中连续发出了 10 次书面确认,明确说明只要不提取或代理 OAuth 凭据,在本地将未修改的 agy / agy.exe 二进制文件作为子进程调用——无论是由开源工具、个人编排器、OpenAI Codex 还是 Anthropic Claude Code 启动——均符合第 6 条规定 [23][24][26][27][28][29][30][31][32][33]。下表按时间顺序记录了全部 10 次书面确认:

# 论坛帖子 ID 与标题 回复时间 (UTC) 提问者与场景 Google 工作人员 核心官方裁定原文译文摘录 引用
1 #175905 — 为开放标准编辑器桥接(如 ACP)对 agy CLI 进行本地 IPC/PTY 包装是否符合 ToS? 2026-09-16 12:45:42 @shindgew:开源项目 agy-acp 通过本地单用户子进程/PTY 包装未修改的 agy 以连接 Zed/Neovim @Rebbanpalli_Naveen “是的,你描述的模式符合规定。服务条款对第三方访问工具的限制旨在防范凭据窃取、非官方 API 逆向工程与多租户代理。在用户自己的 agy 登录会话下,将官方未修改的 agy 二进制文件作为单用户本地子进程/PTY 启动符合规定……” [23]
2 #183429 — 允许开源工具以无头模式调用官方 agy CLI 吗? 2026-09-17 12:06:16 @darkest_alex:开源 Python 工具 sprite-gen 在本地调用 agy --output-format json -p @Ambati_Rajendra “允许以无头模式调用 agy 吗?是的。通过 agy -p 在本地调用官方 agy 二进制文件是为程序化脚本构建的官方受支持功能……只要你的工具从不提取、存储或拦截用户的 OAuth 凭据,它就不违反第 6 条。” [24]
3 #185494 — 由另一个 AI 编程工具通过脚本启动的无头 agy 运行是否符合附加条款? 2026-09-28 07:14:31 @Diggy_Styon:在 Google AI Pro 下,由另一个 AI 编程助手启动运行 agy -p 的脚本(含调用计划内的 Claude 模型) @Ambati_Rajendra “是的,你的使用场景是允许的。在你自己的账号下于本地运行官方 agy 二进制文件(即使通过脚本以无头模式运行)符合条款规定……只要你执行的是未修改的 agy CLI 且没有将认证令牌代理到其他应用中,就完全没问题(you are good to go)!” [27]
4 #185460 — 同一人拥有多个付费 Google AI Pro 账号:本地编排器能否配合官方 agy CLI 使用它们? 2026-09-28 12:22:17 @Winez:Windows 11 本地单用户编排器将未修改的 agy 作为子进程调用 @Ambati_Rajendra “虽然我们允许为个人用途在本地将官方 agy CLI 作为子进程运行(只要你使用的是单个个人账号并直接与之交互),但使用编排器在多个 Google AI Pro 账号之间轮换……属于直接违规行为……” [26]
5 #185992 — 在个人 Google AI 账号下,允许从本地 AI 编程助手调用官方 agy CLI 吗? 2026-09-30 23:25:25 @Ivan_Valenzuela:Anthropic 的 Claude Code 在 Windows 上将 agy.exe 作为子进程启动并通过 stdio 读写 JSON @chunduriv “在个人账号下,允许从本地助手以无头模式调用未修改的 agy.exe 二进制文件吗?允许(Yes)。第 6 条……禁止在第三方框架内部提取、代理或重用 Antigravity OAuth 凭据以直接调用 Antigravity 的后端端点。” [28]
6 #185949 — 关于 Codex/Claude Skill 通过本地 PowerShell 包装脚本调用官方 agy CLI 的合规确认 2026-10-02 20:20:25 @nothing2:Codex CLI 或 Claude Code -> 本地 Skill -> scripts/invoke.ps1 -> 官方未修改的 agy CLI @Ambati_Rajendra “简短回答:是的,你的配置没有问题。……Codex 或 Claude 调用该 Skill:允许,只要它向 agy 发送的是真实任务(如代码审查或调研提示词),且 agy 使用你自己的本地登录运行。” [29]
7 #186954 — 根据附加条款第 6 条,允许从本地 AI 编排器自动启动官方 agy CLI 吗? 2026-10-05 10:17:42 @local_ai_builder:本地编排器将未修改的 agy 作为子进程自动启动 @Rebbanpalli_Naveen “是的,你描述的单用户本地工作流通过官方 CLI 无头模式获得支持。本地子进程与第 6 条对比:是的,这是允许的,且存在实质性区别。” [30]
8 #186952 — 允许从 Codex 调用官方 Antigravity CLI 吗? 2026-10-05 10:24:45 @Hossy:Windows 电脑上的 OpenAI Codex 通过 stdin/stdout 将未修改的 agy.exe 作为本地进程调用 @Rebbanpalli_Naveen “是的,你描述的工作流在你的个人 Google AI Pro 订阅下完全可以使用。……让 Codex 在你的 Windows 电脑上将官方、未修改的 agy.exe 二进制文件作为本地进程调用——同时身份验证(agy auth login)和所有后端通信严格保留在 agy.exe 内部——是 CLI 无头模式的受支持用法。” [31]
9 #186246 — 本地 AI 协调器能否使用订阅登录启动官方 Antigravity CLI? 2026-10-07 15:03:46 @Croixofwar:Claude Code 或自定义本地协调器将未修改的 agy 作为子进程启动 @chunduriv “1. 根据第 6 条,允许将官方 agy CLI 作为本地子进程启动吗?允许。……2. 如果你自己启动脚本与由 Claude Code 启动它,答案会改变吗?不会。从政策角度来看,未修改的 agy 子进程究竟是由你自己的脚本、本地协调器,还是由另一个本地编程助手(如 Claude Code)启动,没有任何区别……” [32]
10 #187536 — 条款确认:个人 Antigravity CLI 与多 AI 编排器的集成 2026-10-08 16:23:34 @BuddhaRyu:私有 Linux 服务器在 agy、OpenAI Codex 与 Claude Code 之间编排自动化任务交接 @Ambati_Rajendra “从你的编排器运行 agy:允许。……在 agy、Codex 与 Claude Code 之间进行任务交接:允许。在你自己的项目中于不同工具之间传递诸如代码差异(diffs)或审查笔记之类的结果是没有问题的……适用第 6 条吗?不适用。只有官方 agy 程序在你自己的登录下与 Antigravity 通信……” [33]

4.3 第二阶段(2026 年 10 月 8 日 1734 UTC 至 11 月 2 日)— 政策反转、FAQ 更新与限制范围扩大

2026 年 10 月 8 日 17:34:41 UTC——距帖子 #187536 中的第 10 次确认仅隔 71 分钟,距 @chunduriv 本人在帖子 #186246 中的确认仅隔 26 小时 31 分钟——@chunduriv 在帖子 #187241 中回复了提出相同问题(从 Codex 调用 agy)的 Google AI Pro 年度订阅用户 @ALAMDAR_BALOCH,附上了法律免责声明并推翻了此前的指导意见 [34]:

  • 1. 首次口径反转与封号警告(#187241,2026 年 10 月 8 日 17:34 UTC)[34]: @chunduriv 表示,尽管 agy 为用户自己的本地脚本和 CI 流水线提供了文档化的无头模式(agy -p),但“在个人消费者登录下,我们不支持使用第三方编程智能体(如 Codex、Claude Code、OpenClaw 或 OpenCode)来编排或包装 agy。通过 Antigravity 路由第三方智能体提示词或自动化循环可能会触发自动 ToS 执法与账号封禁。”
  • 2. 宣布 FAQ 取代此前工作人员的回复(#189905,2026 年 10 月 16 日)[35]: 当开发者 @Amane2418 指出网站 FAQ 与此前工作人员在 #185992 等帖子中的回复存在冲突时,@Rebbanpalli_Naveen 回复称:“Antigravity FAQ 反映了我们当前针对 Antigravity CLI 无头模式的政策,凡有不一致之处,均以 FAQ 为准并取代早期的论坛评论”,并补充说明,即使作为本地子进程调用未修改的 agy 二进制文件且不提取 OAuth 令牌,只要将其包装在 Claude Code、Codex、OpenClaw 或 OpenCode 内部,即违反服务条款。
  • 3. 确认正式《服务条款》未作修改(#191689,2026 年 10 月 23–27 日)[36]: 在帖子 #191689 中,付费订阅用户 @eliavb、@b_w(第 4 楼与第 6 楼)及 @Tora39(第 7 楼)引用了 #186952 与 #186246,并要求出示 10 月 5 日之后修改过《服务条款》的证据。@Rebbanpalli_Naveen 在第 8 楼(10 月 27 日 12:31 UTC)确认:“《Google Antigravity 服务条款》本身在 9 月之后并未修改,而是在 2026 年 10 月中旬更新了《官方 FAQ》,新增了‘我能否在第三方编程智能体中使用 Antigravity CLI 无头模式或自动切换账号?’一节……在该 FAQ 条目发布之前,#186246 与 #186952 中的早期论坛回复给出了过于宽泛的解释。”
  • 4. 限制范围扩大至本地文件任务交接、独立 Python 协调器与无人值守脚本(#190815、#196472、#190756,2026 年 10 月 28–29 日)[38][39][40]: 在随后的帖子中,Google 工作人员裁定:(a)由 Claude Code 将任务文件写入本地文件夹,再由独立 Python 脚本读取并传给 agy -p,“仍然算作第三方智能体协调”,必须使用付费 Gemini API 密钥或 Gemini Enterprise(#190815)[38];(b)在个人消费者登录下,不支持从独立的本地 Python 任务协调服务启动 agy -p(#196472)[40];以及(c)在个人消费者计划下,不支持使用无人值守或事件驱动的后台监控脚本调用 agy -p,即使设置了本地速率限制也可能触发自动封禁(#190756)[39]。

4.4 操作系统级检测边界、协议差异与账号申诉记录

客户端可执行文件的静态二进制检查与官方论坛上的开发者讨论共同指出了围绕无头模式政策执法的三个技术与运营问题:

  • 1. 客户端缺乏本地检测机制与操作系统层面的不可区分性 [35][39]: 对桌面端 language_server.exe(v2.29.0)和 CLI antigravity(v1.5.0/v1.5.1)的全二进制字符串与符号审计证实,代码中检查 CLAUDECODE / CLAUDE_CODE 环境变量、检查父进程或非 TTY 反自动化检测的命中次数均为 0(全部 13 个 BOT_CHECK_* 字符串均属于浏览器 CAPTCHA 处理指令,而 Getppid / isatty 为标准 Go 运行时符号)。正如开发者 @oli_hlmpn 在帖子 #190756 中指出的那样,在操作系统层面,agy 仅能看到 bash、powershell 或 python3 作为其父进程,无法区分提示词字符串或本地 .md 文件是由人工编写还是由其他工具辅助生成 [39],且 CLI 在被调用时也不会显示任何警告信息 [35]。
  • 2. agy acp(允许 stdio)与 agy -p(禁止 stdio)之间的政策差异 [11][39][41]: 在论坛帖子 #197131(2026 年 11 月 2 日)与 CLI v1.5.0(2026 年 11 月 4 日)中,Google 官方允许第三方客户端与编辑器(如 Zed、Neovim 和 T3 Code)使用个人订阅 OAuth 登录(oauth-personal)通过 stdio 启动 agy acp [11][41],但在同一个人订阅下通过 stdio 启动 agy -p --output-format stream-json 却被归类为违反服务条款。
  • 3. cloudcode-pa.googleapis.com 的后端执法与超过 100 天未解决的申诉 [8][9][10][45]: 账号封禁在 cloudcode-pa.googleapis.com 网关处通过 HTTP 403 PERMISSION_DENIED(原因:TOS_VIOLATION)强制执行,该限制会同时禁用用户 Google 账号下的 Antigravity 桌面端、Antigravity IDE、agy CLI、@google/gemini-cli 和 Gemini Code Assist [8][9][10]。尽管 Discussion #20632 声明首次被标记的用户在提交重认证表单后会在 1–2 天内自动恢复访问权限 [9],但 GitHub Issue #927(@jlwainwright,自 2026 年 5 月 25 日起被封禁超过 100 天,Google One 工单号 2-9245000040533)以及 Issue #29576 / 论坛 #186089(@myessaylab1234)记录表明,解封同步在很长一段时间内未能恢复访问,同时 Google One 客服与 Google 开发者资料支持团队均表示 ToS 封禁超出其处理权限 [8][10][45]。

5. 原始引语与一手记录档案

本节汇编了本报告所审查的 GitHub Issues #1245、#878、#1291 以及 Google AI 开发者论坛帖子中的一手原文摘录及其精确时间戳与来源链接。

5.1 关于 256K(0x3E800)二进制钳制、70 秒压缩与 3 倍配额比的原始引语

引语 1.1 — @LiraNuna 关于二进制门禁 #1 与编译期移除 AGY_CLI_AUTO_COMPACT_OVERRIDE 的分析(2026-10-22)

“在 /model 菜单中,其实已经具备选择压缩上限的完整 UI 和后端支持:Context: Default (256K) | 256K | [512K] | 900K(通过 Tab 键循环切换)。然而在 SelectorModel.offersContextWindow 中,客户端会将所选模型与一个内部白名单切片进行比对。在发布版二进制文件中,该切片被硬编码为仅包含 "Gemini 4 Argon"。对于其他模型(如 Gemini 3.8 Flash),offersContextWindow 返回 false,这会完全隐藏 Context 标签并导致 Tab 按键处理函数被忽略。

为什么 AGY_CLI_AUTO_COMPACT_OVERRIDE 不起作用:在 store.AutoCompactOverride() 中,代码原本设计为解析百分比(如 80%)或整数 Token 数量。然而在编译后的发布版二进制文件中,对 os.Getenv("AGY_CLI_AUTO_COMPACT_OVERRIDE") 的调用在编译期被裁掉/内联成了空字符串 ""(xor %eax, %eax; xor %ebx, %ebx; call strings.TrimSpace)。由于 strconv.ParseInt("", 10, ...) 总是失败,AutoCompactOverride() 会无条件返回空字符串(无覆盖)。”

— @LiraNuna,GitHub google-antigravity/antigravity-cli Issue #1245 Comment #5,2026-10-22 16:37:11 UTC [1](来源链接)

引语 1.2 — @LiraNuna 关于二进制门禁 #2 与 Cortex 引擎 0x3E800(256,000)汇编钳制的分析(2026-10-23)

“1. Store.ContextWindow() 会丢弃非 Argon 模型的选择:尽管 UI 将 "contextWindow": "512K" 保存到了 settings.json 中,但 store.(*Store).ContextWindow() 包含针对 "Gemini 4 Argon" 的第二次完全相同的白名单检查。对于所有其他模型(如 Gemini 3.8 Flash),它会直接中止并返回 ("", 0),根本不读取已保存的设置……因此,Manager.syncContextWindow() 调用了 backend.SetContextWindow(""),后端永远不会收到 512K/900K 的选择。

2. Cortex 在压缩触发器上有一个硬编码的 256K(0x3e800)上限:即便后端收到了上下文窗口限制,Cortex 的检查点计算器(cortex/utils/utils.GetCheckpointConfig)也会显式钳制多轮对话级联的压缩触发阈值(TokenThreshold):

X86ASM
7861894: mov 0x4c(%rsp), %edx # Calculated threshold (context - 40,000 margin)
7861898: cmp $0x3e800, %edx   # 0x3e800 == 256,000 tokens
786189e: mov $0x3e800, %esi
78618a3: cmovb %edx, %esi     # Clamps to min(calculated, 256000)
78618a6: mov %esi, 0x50(%rsp) # Writes 256,000 to TokenThreshold!

由于 cmovb 指令的存在,任何大于 256,000 Tokens 的计算阈值都会被钳制到 256,000 Tokens。”

— @LiraNuna,GitHub google-antigravity/antigravity-cli Issue #1245 Comment #6,2026-10-23 01:37:57 UTC [1](来源链接)

引语 1.3 — @Circumsized 关于 SQLite max_context_tokens = 256000 及压缩与请求前截断区别的分析(2026-10-15)

“每次模型调用都会向 ~/.gemini/antigravity-cli/conversations/<session-id>.db 会话数据库中写入一条 ContextWindowMetadata 记录。在运行 Gemini 4 Argon 的 agy 1.3.5 上,本报告中 Token 骤降前夕的调用记录显示:max_context_tokens = 256000,truncation_reason = 2,而与此同时 /context 却报告 1.0M 窗口。因此,这不是服务器拒绝了任何内容,也不是模型的窗口限制:这是客户端在发送请求前写入自身请求元数据的数字。256,000 恰好是 1,048,576 的 25%——窗口的一个整数分数,这指向一个策略常量而非技术上限。

目前存在两种不同的机制,其中只有一种是压缩:

- 压缩(Compaction)——历史记录被替换为散文式摘要,并带有 CHECKPOINT: "# Resuming from a compaction..." 标记。这是报告中描述的有损情况。

- 请求前截断(Pre-flight truncation)——当对话接近 max_context_tokens 时,早期历史记录在发出请求前就被从请求中裁剪掉。不生成摘要,不出现检查点标记,从那次请求开始,精确内容便不再存在于请求中。”

— @Circumsized,GitHub google-antigravity/antigravity-cli Issue #1245 Comment #2,2026-10-15 19:35:43 UTC [1](来源链接)

引语 1.4 — Eddy Murias (@murias002) 关于 310 个会话与 65,613 次模型调用的统计(2026-10-05)

“会话数:310 | 模型调用次数:65,613(86.6% 在 Gemini 3.8 Flash 上)| 单次调用输入 Tokens:p50 136,487 · p90 229,000 · 最大值 255,999 | 超过 300k 输入 Tokens 的调用:0 | 压缩事件(下降 > 40%):276 | 压缩前瞬间的上下文:中位数 255,070(p10 247,360 · p90 255,874)| 压缩后瞬间的上下文:中位数 45,304。

因此,在一个支持约 1M Tokens 的模型上,会话总是被固定在大约 256k 处进行摘要,无论是 ~/.gemini/antigravity-cli/settings.json、CLI 参数还是环境变量都无法改变它。”

— Eddy Murias (@murias002),GitHub google-antigravity/antigravity-cli Issue #878 Comment #2,2026-10-05 00:51:10 UTC [3](来源链接)

引语 1.5 — @Emily2040 关于 1,279 次模型调用、22 个检查点与 70 秒中位压缩停顿的测量(2026-10-19)

“数据:在 1.4.0–1.4.2 版本使用 Gemini 4 Argon High 运行的 15 份无头 stream-json 日志(1,279 次模型调用)中,共触发了 22 个检查点步骤,每一个检查点前一步调用的上下文都介于 235k 至 268k Tokens(input + cache_read)之间,从未高于该范围。这与上方从请求元数据中读取的 256,000 常量一致。每个检查点中位耗时 70 秒(35–224 秒,其中一次为 602 秒),未报告摘要调用的用量,且随后都紧跟一次 45–70k 的未缓存调用以重建缓存。”

— @Emily2040,GitHub google-antigravity/antigravity-cli Issue #1245 Comment #4 & Issue #1291,2026-10-19 [1][4](来源链接)

引语 1.6 — @Yiji_Kong 关于 Argon 3.0 倍配额消耗的实测与 @Maniraj_Chervirala 的官方回应(2026-10-28 & 10-29)

“按各模型公布的 API 价格归一化后,Argon 每美元消耗的配额恰好是 Flash 的 3.0 倍。如果 Flash 按其公布的价格计费,则隐含的配额桶大小约为 150 USD,而 Argon 的消耗相当于每百万输入/输出 Tokens 6.00 / 30.00 USD(宣传的 2.00 / 10.00 首发价的 3 倍)……上下文压缩模型调用不会出现在轨迹 Token 元数据中,因此其配额成本对用户是不可见的。

在步骤 1C 中,在 4 Argon (Low) 的新对话中仅发送一句 "Reply with only the word: OK"(28 字符)就消耗了 +0.00015849 的周配额(约占 5 小时池的 0.32%),这比 3.8 Flash (High) 撰写一篇完整的 4,013 词 Paxos 与 Raft 技术文章(+0.00014157)还要多出 12%。”

— @Yiji_Kong,Google AI 开发者论坛帖子 #196351 第 1 楼与第 5 楼,2026-10-28 至 2026-10-29 [42](来源链接)

“Gemini 4 Argon 相比 Gemini 3.8 Flash 更高的订阅配额消耗是符合预期的:https://ai.google.dev/gemini-api/docs/pricing 上的每 Token 促销费率仅适用于按量付费 API 计费,而 5 小时与周订阅限额反映的是可用容量、模型算力与总智能体工作量,而非匹配 API Token 挂牌价……固定的单模型配额乘数不予公布,因为订阅限额会随系统容量动态调整。”

— Google 工作人员 @Maniraj_Chervirala,Google AI 开发者论坛帖子 #196351 第 6 楼,2026-10-29 [42](来源链接)

引语 1.7 — u/Lberondroth 关于桌面端 v2.29.0 上下文与配额指示器的拆包记录(2026-11-03)

“‘Resets in...’以及‘Your plan's baseline contingent will refresh on...’。取而代之提供的是上下文与配额指示器(Context and contingent Indicator),让你很快就能在发送按钮旁看到配额的实时消耗情况……”

— u/Lberondroth,Reddit r/google_antigravity 帖子 #1xn624i,2026-11-03 [17](来源链接)

5.2 agy -p 政策反转前的原始引语(确认子进程调用合规)

引语 2.1 — @Ambati_Rajendra 确认开源工具调用 agy -p 不违反第 6 条(2026-09-17)

“允许以无头模式调用 agy 吗?是的。通过 agy -p 在本地调用官方 agy 二进制文件是为程序化脚本构建的官方受支持功能(参见无头模式文档)。只要你的工具从不提取、存储或拦截用户的 OAuth 凭据,它就不违反第 6 条。正如 Antigravity FAQ 与服务条款中所述,该限制专门针对拦截令牌以代理私有端点的未经授权第三方客户端。”

— Google 工作人员 @Ambati_Rajendra,Google AI 开发者论坛帖子 #183429 第 2 楼,2026-09-17 12:06:16 UTC [24](来源链接)

引语 2.2 — @Ambati_Rajendra 确认从另一个 AI 编程工具通过脚本启动 agy -p 是允许的(2026-09-28)

“是的,你的使用场景是允许的。在你自己的账号下于本地运行官方 agy 二进制文件(即使通过脚本以无头模式运行)符合条款规定。针对第三方软件的限制严格适用于拦截或提取你的 Antigravity OAuth 令牌以绕过官方客户端的未经授权工具(如 OpenClaw)。只要你执行的是未修改的 agy CLI 且没有将认证令牌代理到其他应用中,就完全没问题(you are good to go)!”

— Google 工作人员 @Ambati_Rajendra,Google AI 开发者论坛帖子 #185494 第 2 楼,2026-09-28 07:14:31 UTC [27](来源链接)

引语 2.3 — @Rebbanpalli_Naveen 确认从 OpenAI Codex 调用 agy.exe 属于官方支持用法(2026-10-05)

“是的,你描述的工作流在你的个人 Google AI Pro 订阅下完全可以使用。以下是关于这如何符合我们政策的具体细节:

第 6 条与官方 CLI 用法:《Google Antigravity 附加服务条款》第 6 条和我们的第三方软件 FAQ 专门旨在防止第三方框架提取、代理或重用 Antigravity OAuth 凭据来直接调用私有后端端点。让 Codex 在你的 Windows 电脑上将官方、未修改的 agy.exe 二进制文件作为本地进程调用——同时身份验证(agy auth login)和所有后端通信严格保留在 agy.exe 内部——是 CLI 无头模式的受支持用法。”

— Google 工作人员 @Rebbanpalli_Naveen,Google AI 开发者论坛帖子 #186952 第 2 楼,2026-10-05 10:24:45 UTC [31](来源链接)

引语 2.4 — @chunduriv 声明“由你自己的脚本还是由 Claude Code 启动 agy 没有任何区别”(2026-10-07 15:03 UTC)

“1. 根据第 6 条,允许将官方 agy CLI 作为本地子进程启动吗?允许。使用你自己的个人 Google AI 订阅登录,为你自己的个人工作在本地以无头模式运行官方、未修改的 agy 二进制文件(例如 agy -p "<prompt>" --output-format json 或 stream-json)是允许的。

2. 如果你自己启动脚本与由 Claude Code 启动它,答案会改变吗?不会。从政策角度来看,未修改的 agy 子进程究竟是由你自己的脚本、本地协调器,还是由另一个本地编程助手(例如 Claude Code)启动,没有任何区别,前提是:

- 所有 Antigravity 服务访问均完全通过未修改的官方 agy 二进制文件(或官方 Antigravity Python SDK)进行。

- 没有任何 OAuth 令牌、Cookie 或凭据被提取、读取或传递给外部工具。

- 该配置严格用于你自己的个人、单用户工作流,不进行共享、池化或作为多用户服务对外暴露。”

— Google 工作人员 @chunduriv,Google AI 开发者论坛帖子 #186246 第 2 楼,2026-10-07 15:03:46 UTC(政策反转前 26.5 小时)[32](来源链接)

5.3 agy -p 政策反转后的原始引语(FAQ 取代旧回复与确认未修改服务条款)

引语 3.1 — @chunduriv 在 26.5 小时后推翻立场并警告账号封禁(2026-10-08 17:34 UTC)

“虽然我们无法提供针对《服务条款》的正式法律解释……关于让 Codex 调用 agy CLI:尽管 agy 为你自己的本地脚本和 CI 流水线提供了文档化的无头模式(agy -p),但在个人消费者登录下,我们不支持使用第三方编程智能体(如 Codex、Claude Code、OpenClaw 或 OpenCode)来编排或包装 agy。通过 Antigravity 路由第三方智能体提示词或自动化循环可能会触发自动 ToS 执法与账号封禁。”

— Google 工作人员 @chunduriv,Google AI 开发者论坛帖子 #187241 第 2 楼,2026-10-08 17:34:41 UTC [34](来源链接)

引语 3.2 — @Rebbanpalli_Naveen 声明 FAQ 取代早期的论坛评论(2026-10-16)

“当前官方指导意见:Antigravity FAQ 反映了我们当前针对 Antigravity CLI 无头模式的政策,凡有不一致之处,均取代早期的论坛评论。……将 agy 包装在第三方编程智能体或应用程序(Claude Code、Codex、OpenClaw、OpenCode)内部——不支持:在个人消费者计划下不允许。即使你将官方、未修改的 agy 二进制文件作为本地子进程调用,且没有提取 OAuth 令牌或逆向工程内部端点,在个人消费者计划下也不支持将 agy 包装在第三方编程智能体或应用程序内部或自动轮换账号(见 FAQ —— 第三方编程智能体中的无头模式)。使用第三方编程智能体或工具(如 Claude Code、OpenClaw 或 OpenCode)访问 Antigravity 违反我们的服务条款,可能导致账号被暂停或终止。”

— Google 工作人员 @Rebbanpalli_Naveen,Google AI 开发者论坛帖子 #189905 第 2 楼,2026-10-16 12:35:16 UTC [35](来源链接)

引语 3.3 — 帖子 #191689 中确认《服务条款》在 9 月之后未作修改的交锋记录(2026-10-26 & 10-27)

“Codex 与 OpenClaw 的对比以及为何早期回复(#186952)存在差异:Codex 与 OpenClaw 之间没有区别,在个人消费者 Google 账号登录下,不支持让其中任何一个工具调用 agy / agy.exe。在 #186952 中 10 月 5 日的那条回复发布之后,关于在第三方编程智能体中使用 Antigravity CLI 无头模式的政策进行了更新,明确阐明在个人消费者计划下不支持将 agy 包装在第三方编程智能体或应用程序内部。这一更新后的政策取代了 #186952 中的早期指导意见,并同等适用于 Codex、OpenClaw、Claude Code 与 OpenCode。”

— Google 工作人员 @Rebbanpalli_Naveen,Google AI 开发者论坛帖子 #191689 第 5 楼,2026-10-26 11:24 UTC [36](来源链接)

“你写道‘在 #186952 中 10 月 5 日的那条回复发布之后,关于在第三方编程智能体中使用 Antigravity CLI 无头模式的政策进行了更新’——请问能否向我指出这方面的证据?我找不到任何在 10 月 5 日之后有过政策更新的证据。该链接只是把我引导到了一个常见问题解答(FAQ)页面。我能找到的最近一次服务条款更新是在 9 月份。”

— 订阅用户 @b_w,Google AI 开发者论坛帖子 #191689 第 6 楼,2026-10-26 20:08 UTC [36](来源链接)

“为了向 @b_w 澄清时间线并回答 @Tora39 的问题 (a):《Google Antigravity 服务条款》本身在 9 月之后并未修改;而是在 2026 年 10 月中旬更新了《官方 FAQ》,新增了‘我能否在第三方编程智能体中使用 Antigravity CLI 无头模式或自动切换账号?’一节。该 FAQ 条目反映了当前针对个人消费者计划(Free、Plus、Pro 和 Ultra)的政策……在该 FAQ 条目发布之前,#186246 与 #186952 中的早期论坛回复给出了过于宽泛的解释。”

— Google 工作人员 @Rebbanpalli_Naveen,Google AI 开发者论坛帖子 #191689 第 8 楼,2026-10-27 12:31 UTC [36](来源链接)

引语 3.4 — @Ambati_Rajendra 裁定通过本地磁盘文件传递任务同样被禁止(2026-10-28)

“不允许。根据 FAQ 与《附加条款》,在个人消费者计划下,不允许将 agy -p 作为由 Claude Code 等第三方编程智能体协调的次级工作节点(secondary worker)使用……这仍然算作第三方智能体协调。通过本地文件而非 stdin/stdout 管道将任务从 Claude Code 传递给 agy -p,仍然是在将个人消费者配额用作外部编程智能体的后端工作节点,因此需要 Gemini API 密钥或 Gemini Enterprise。”

— Google 工作人员 @Ambati_Rajendra,Google AI 开发者论坛帖子 #190815 第 2 楼,2026-10-28 13:10:46 UTC [38](来源链接)

6. 被分析官方二进制文件、GitHub Issue 记录、研究边界与完整参考信源

6.1 被分析官方二进制文件与加密校验哈希

归档仓库中不托管任何二进制可执行文件。本报告所检查的全部原始二进制文件均可直接从 Google 官方云存储(storage.googleapis.com/antigravity-public)下载,并与以下 SHA-256 及 SHA-512 摘要进行核对:

组件 版本 / 平台 官方下载直链 / 来源 文件大小与加密校验哈希
桌面端安装包 v2.29.0 (Windows x64) https://storage.googleapis.com/antigravity-public/antigravity-hub/2.29.0-5723181030440960/windows-x64/Antigravity-x64.exe 169,295,640 字节 | SHA-256: 944b109bcb377f9f94f86eeea7cfa9315d4b42d84fb9d5bad689058fc11c12ba
桌面端语言服务程序 v2.29.0 (resources/bin/language_server.exe) 捆绑于上方 Antigravity-x64.exe 内部的 app-64.7z 中(PE32+ x86-64,214,663 个 pclntab 符号) 187,342,336 字节 | SHA-256: c98e7c331da5bcc37002a550e7d625b4c636f775fa2804f73777c6a500e1c3d5
CLI 发布压缩包 (v1.5.0) v1.5.0 (Linux x64, 2026-11-04) https://storage.googleapis.com/antigravity-public/antigravity-cli/1.5.0-5269980577660928/linux-x64/cli_linux_x64.tar.gz 压缩包:69,781,910 字节(antigravity 二进制文件:238,604,688 字节,BuildID 5fb6af4f2e1d489f3ada0fd785060f48)| SHA-512: e6031f850929210705d8c2393a5665b82b8c3b19684a6d3c556cafa31f26f77acbf164dfee96ca84a5ae7670ac0cc238a974c981c517b269194bdccff271cbd5
CLI 二进制文件 (v1.5.1) v1.5.1 (Linux x64, 2026-11-05) 官方自动更新器发布版本(https://github.com/google-antigravity/antigravity-cli/blob/main/CHANGELOG.md) 240,857,488 字节(BuildID 696031ae34e5e5e26a9d7c436e85317f)| SHA-256: 72738cf0445918483956a5f0da33abdfcfb21a12dd9a421fd57d063782826669
CLI 安装脚本与清单 跨平台 / Linux amd64 https://antigravity.google/cli/install.sh | https://antigravity-cli-auto-updater-974169037036.us-central1.run.app/manifests/linux_amd64.json install.sh:7,643 字节(已归档于 evidence/raw/install.sh 与 manifest_linux_amd64.json)

6.2 公开 GitHub Issue 记录(google-antigravity/antigravity-cli)

下表列出了通过 GitHub API(gh api)核实并归档于 evidence/raw/ 中的 google-antigravity/antigravity-cli 仓库全部 10 个相关 GitHub Issues:

Issue # 标题 提交者与提交日期 状态与负责人 关键技术贡献与评论者
#1245 [Bug]: Premature ~250K context compaction on 1M-context models drops exact symbol/schema context and invalidates prompt cache @Burntgogi (2026-10-14) open | @chandrashakherkamasani(标记为 feedback,无 bug 标签) 94 轮 Argon 遥测 (@Burntgogi); 环境变量覆盖测试 (@NuCl34R); SQLite max_context_tokens=256000 与请求前截断 (@Circumsized); 1,279 次调用 / 70 秒检查点审计 (@Emily2040); 3 道二进制门禁反汇编与 patch_agy.py (@LiraNuna); AUR 软件包 (@AsabaLazy)。22+ 个赞同。
#878 [Feature Request]: Disable automatic context auto-compaction and unlock full 1M context window @schalatap (2026-08-26) open | @manirajc(标记为 feature request) 310 个会话 / 65,613 次调用的 SQLite 审计,显示最大输入 255,999 且 >300K 调用为 0 (@murias002); AntigravityCompactionConfig.token_threshold 检查 (@Corsagee); 1.3.5 无头压缩日志 (@Infinnerty); 多段上下文丢失 (@jlukic)。22 个赞同。
#1371 [Feature Request] User-configurable auto-compaction threshold in the desktop app (~256K hardcoded while the model window is 1M) @floveey (2026-10-30) open | @manirajc 官方回复 报告桌面端应用中的约 256K 压缩;@manirajc 将桌面端/IDE 请求引导至 Google AI 开发者论坛;@LiraNuna 关联了 #1245。
#1291 [Bug]: Five measured places the CLI spends time and tokens the work does not need @Emily2040 (2026-10-19) open | @chandrashakherkamasani(标记为 feature request, feedback) 量化了来自 17 次运行中途前缀未命中(15 次发生在 system_message 之后)的 31.0% 未缓存输入、22 个检查点中位耗时 70 秒的压缩、11.3–12.2 秒无头启停开销,以及每 1.5–3.3 秒重写一次摘要存储文件。
#1072 [Feature Request]: Lack of aggressive context compaction / prompt caching burns the 5h and weekly quota far faster than token cost would suggest @flotoz (2026-09-20) open | @manirajc 记录了 Gemini 3.8 Flash Low 上比预期快 3 倍以上的配额消耗;被 @Emily2040 交叉引用。
#743 Feature Request: Add max_context_tokens setting to control per-turn token budget @thealgebraist (2026-08-03) open | @manirajc 记录了一个包含 379 个步骤的会话(610 KB 聊天记录),其中约 70% 的 Tokens 为冗余的编译器错误输出。
#927 agy 1.1.23: 403 ToS eligibility block persists 100+ days after appeal form, no reinstatement sync @jlwainwright (2026-09-02) open | @manirajc 记录了自 2026 年 5 月 25 日起持续超过 100 天的 HTTP 403 PERMISSION_DENIED 封禁(Google One 工单号 2-9245000040533)。
#1316, #1372, #1367, #919 子代理压缩控制 (#1316); 降级前主动警告 (#1372); /goal 循环消耗 37M Tokens (#1367); 轨迹死循环 (#919) @aeronmiles, @zhangr930103, @thhart, @ozl open 佐证了无头子代理压缩控制需求、压缩前预警需求以及 /goal 模式下的失控 Token 循环问题。

6.3 证据边界与未核实验证项

为严格区分已核实的客户端/数据库事实与未经核实的外部推断,特作以下边界说明:

  • 1. 服务端对 512K/900K 档位的处理: 尽管客户端二进制文件包含 512K(1.3x)和 900K(1.8x,Expensive: true)字符串、Protobuf 字段与 UI 选择器,但仅凭客户端二进制文件无法核实解锁 512K/900K 请求后的服务端实际处理方式与计费乘数。
  • 2. 客户端无子进程封号检测器: language_server.exe 与 agy 均不包含 CLAUDECODE / CLAUDE_CODE 环境变量检查、父进程检查或非 TTY 反自动化检查。TOS_VIOLATION 的判定与封禁在 cloudcode-pa.googleapis.com 后端网关处执行。
  • 3. 桌面端 Electron 前端(app.asar): 桌面端的静态二进制验证聚焦于 resources/bin/language_server.exe(187,342,336 字节),前端 Electron 打包字符串(如社区 ASAR 拆包比对中报告的 enable-context-usage-indicator [17][18])均引自对应的社区拆包报告。
  • 4. 复现命令: 所有二进制分析结果均可在 Linux x86-64 下使用标准工具复现:使用 sha256sum / sha512sum 校验二进制完整性,使用 python3(标准库 struct 以及 mode=ro 只读模式的 sqlite3)解析 ELF/PE 节表与 Go pclntab,使用 data.find(bytes.fromhex('81fa00e80300be00e803000f42f2')) 定位 0x3E800 钳制指令,并使用 objdump -d -M intel 进行指令反汇编。

6.4 完整参考信源索引([1]–[56] 与 [S1]–[S9])

以下为本档案库引用的全部 56 条主要信源([1]–[56])与 9 条补充验证信源([S1]–[S9])完整清单:

[1] [Bug]: Premature ~250K context compaction on 1M-context models drops exact symbol/schema context and invalidates prompt cache (Issue #1245) — GitHub google-antigravity/antigravity-cli (@Burntgogi, @NuCl34R, @Circumsized, @Emily2040, @LiraNuna, @AsabaLazy; assignee: @chandrashakherkamasani) — 2026-10-14 to 2026-11-02

[2] Patch agy to unlock 512K/900K context window selection and fix early compaction (patch_agy.py) — GitHub Gist (@LiraNuna) — 2026-10-23

[3] [Feature Request]: Disable automatic context auto-compaction and unlock full 1M context window (Issue #878) — GitHub google-antigravity/antigravity-cli (@schalatap, @bash99, @murias002, @Corsagee, @Infinnerty, @jlukic; assignee: @manirajc) — 2026-08-26 to 2026-10-31

[4] [Bug]: Five measured places the CLI spends time and tokens the work does not need: serial tool calls, uncached full-context calls and 70 s compactions, 12 s headless overhead, summary store rewritten every 1.5 s, build-time CPU instruction choice (Issue #1291) — GitHub google-antigravity/antigravity-cli (@Emily2040; assignee: @chandrashakherkamasani) — 2026-10-19 to 2026-10-25

[5] [Feature Request]: Lack of aggressive context compaction / prompt caching burns the 5h and weekly quota far faster than token cost would suggest (Issue #1072) — GitHub google-antigravity/antigravity-cli (@flotoz, @Emily2040; assignee: @manirajc) — 2026-09-20 to 2026-10-19

[6] Feature Request: Add max_context_tokens setting to control per-turn token budget (Issue #743) — GitHub google-antigravity/antigravity-cli (@thealgebraist; assignee: @manirajc) — 2026-08-03

[7] Feature request: Support Gemini CLI-compatible OTLP/OpenTelemetry token usage export (Issue #366) — GitHub google-antigravity/antigravity-cli (@UesugiErii, @Mandark-droid, @evilfurryone, @rajatim, @Emily2040) — 2026-06-11 to 2026-10-20

[8] agy 1.1.23: 403 ToS eligibility block persists 100+ days after appeal form, no reinstatement sync (Issue #927) — GitHub google-antigravity/antigravity-cli (@jlwainwright; assignee: @manirajc) — 2026-09-02

[9] Addressing Antigravity Bans & Reinstating Access (Discussion #20632) — GitHub google-gemini/gemini-cli (Google Maintainer @jackwotherspoon) — 2026-02-27

[10] Appeal submitted but TOS_VIOLATION suspension persists (request for private follow-up) (Issue #29576) — GitHub google-gemini/gemini-cli (@myessaylab1234) — 2026-09-30

[11] Google Antigravity CLI Official Releases & Changelog (v1.4.2 – v1.5.1) — GitHub google-antigravity/antigravity-cli — 2026-10-18 to 2026-11-05

[12] Google Antigravity Docs — Changelog (v2.0.1 – v2.29.0) — Google Antigravity Official Documentation — 2026-11-03

[13] Google Antigravity Docs — Official FAQ — Google Antigravity Official Documentation — Updated Mid-October 2026

[14] Google Antigravity — Additional Terms of Service — Google LLC — Published September 2026

[15] Google Antigravity Docs — Workspace Rules (24 KB Per-File Limit & 20,000-Token Aggregate Rules Budget) — Google Antigravity Official Documentation — 2026-10

[16] Optimizing a 200,000-line Python codebase overnight with Gemini 4 Argon — Google Developers Blog — 2026-10

[17] [Teardown / Binary Diff] Antigravity Updated to v2.29.0 — Reddit r/google_antigravity (u/Lberondroth) — 2026-11-03

[18] [Deep-Dive] Antigravity v2.27.0 -> v2.28.1 Binary & ASAR Diff: 'Script Jail', the oneharness Migration, Teamwork Leaving Preview, and What's Coming Next — Reddit r/google_antigravity (u/Lberondroth) — 2026-10-28

[19] Timeline for enabling the 512k / 900k ContextWindowOptions and lifting the 256k autocompact clamp on Argon? (r/AntigravityGoogle) — Reddit r/AntigravityGoogle — 2026-11-02

[20] Timeline for enabling the 512k / 900k ContextWindowOptions and lifting the 256k autocompact clamp on Argon? (r/google_antigravity) — Reddit r/google_antigravity — 2026-11-02

[21] Antigravity's aggressive history compaction is ruining Gemini's 1M+ context selling point — Reddit r/google_antigravity — 2026-05-30

[22] How to force AG to use subagents? (Orchestrator + Ephemeral Subagents) — Reddit r/google_antigravity — 2026-07

[23] Clarification Request: Is local IPC/PTY wrapping of agy CLI for open-standard editor bridges (e.g., ACP) ToS compliant? (#175905) — Google AI Developers Forum (@shindgew; Official Reply: @Rebbanpalli_Naveen) — 2026-07-23 to 2026-09-16

[24] Is it allowed for an open-source tool to call the official agy CLI in headless mode? (#183429) — Google AI Developers Forum (@darkest_alex; Official Reply: @Ambati_Rajendra) — 2026-09-17

[25] Is using the official agy CLI through a local MCP server with third-party AI agents permitted? (#184829) — Google AI Developers Forum (@snowstone; Official Reply: @Ambati_Rajendra) — 2026-09-25

[26] One person, several paid Google AI Pro accounts: may a local orchestrator use them with the official agy CLI? (#185460) — Google AI Developers Forum (@Winez; Official Reply: @Ambati_Rajendra) — 2026-09-28

[27] Headless agy runs launched by a script from another AI coding tool: within the Additional Terms? (#185494) — Google AI Developers Forum (@Diggy_Styon; Official Reply: @Ambati_Rajendra) — 2026-09-28

[28] Is invoking the official agy CLI from a local AI coding assistant allowed on an individual Google AI account? (#185992) — Google AI Developers Forum (@Ivan_Valenzuela; Official Reply: @chunduriv) — 2026-09-29 to 2026-10-01

[29] Clarification on Codex/Claude Skill invoking the official agy CLI through a local PowerShell wrapper (#185949) — Google AI Developers Forum (@nothing2; Official Reply: @Ambati_Rajendra) — 2026-09-29 to 2026-10-02

[30] Is automatically launching the official agy CLI from a local AI orchestrator allowed under Additional Terms §6? (#186954) — Google AI Developers Forum (@local_ai_builder; Official Reply: @Rebbanpalli_Naveen) — 2026-10-05

[31] Is invoking the official Antigravity CLI from Codex allowed? (#186952) — Google AI Developers Forum (@Hossy; Official Reply: @Rebbanpalli_Naveen) — 2026-10-05

[32] Can a local AI coordinator launch the official Antigravity CLI with subscription sign-in? (#186246) — Google AI Developers Forum (@Croixofwar; Official Reply: @chunduriv) — 2026-10-01 to 2026-11-02

[33] Terms Clarification: Personal Antigravity CLI Integration with a Multi-AI Orchestrator (#187536) — Google AI Developers Forum (@BuddhaRyu; Official Reply: @Ambati_Rajendra) — 2026-10-08

[34] Is Google AI Pro Antigravity CLI automation with Codex permitted? (#187241) — Google AI Developers Forum (@ALAMDAR_BALOCH; Official Reply: @chunduriv) — 2026-10-07 to 2026-10-08

[35] Clarification on consumer-plan policy for invoking official agy via local subprocess (#189905) — Google AI Developers Forum (@Amane2418, @Jay10; Official Reply: @Rebbanpalli_Naveen) — 2026-10-16 to 2026-10-26

[36] Paying Google AI Pro subscriber: allow subscription use with third-party agents like OpenClaw (#191689) — Google AI Developers Forum (@eliavb, @b_w, @Tora39; Official Reply: @Rebbanpalli_Naveen) — 2026-10-23 to 2026-10-27

[37] Consumer plan: does my own deterministic CI remain permitted if its test input is prepared by another AI? (#194998) — Google AI Developers Forum (@Herzchen; Official Reply: @Rebbanpalli_Naveen) — 2026-10-26

[38] Google AI Pro – Is standalone Antigravity CLI scripting with external task coordination permitted? (#190815) — Google AI Developers Forum (@Lars; Official Reply: @Ambati_Rajendra) — 2026-10-19 to 2026-10-28

[39] Policy clarification: private monitoring app using official Antigravity CLI and subscription quota (#190756) — Google AI Developers Forum (@xorz, @oli_hlmpn; Official Reply: @Ambati_Rajendra) — 2026-10-19 to 2026-10-29

[40] Clarification on subscription-based agy -p integration with a local multi-agent framework (#196472) — Google AI Developers Forum (@Dsssyc; Official Reply: @Rebbanpalli_Naveen) — 2026-10-28 to 2026-10-29

[41] Conflicting guidance on using T3 Code with personal Google AI subscriptions (#197131) — Google AI Developers Forum (@sannikov, @tkosub, @oli_hlmpn; Official Reply: @Rebbanpalli_Naveen) — 2026-10-31 to 2026-11-02

[42] Gemini 4 Argon draws Antigravity quota at 3x Gemini 3.8 Flash per published dollar (clean A/B, same bucket) (#196351) — Google AI Developers Forum (@Yiji_Kong, @RobW, @shuai_guo; Official Reply: @Maniraj_Chervirala) — 2026-10-28 to 2026-10-29

[43] Context Compaction Amnesia and Missing Post-Write Verification Gates (#189476) — Google AI Developers Forum (@Hello_there; Official Reply: @chunduriv) — 2026-10-15 to 2026-10-20

[44] Feature request: Show context window usage in Antigravity Desktop (#184694) — Google AI Developers Forum (@Soro, @dimitr-io; Official Reply: @chunduriv) — 2026-09-24 to 2026-10-22

[45] Persistent Gemini CLI TOS_VIOLATION after appeal — request for private review or sync check (#186089) — Google AI Developers Forum (@myessaylab1234) — 2026-09-30

[46] Antigravity CLI Agent reliability issue (#176775) — Google AI Developers Forum (@Pitt_zhang) — 2026-08-01

[47] Google Antigravity FAQ Policy Update and Termination of Third-Party Tool Integration — note.com / horizon_it00 (Kenji Sato) — 2026-10

[48] Hermes Agent Plugin Catalog — Antigravity Subscription DirectSDK (239,616 Compaction Threshold) — Nous Research Hermes Agent Documentation — 2026-09-23

[49] mksglu/context-mode: MCP Server & FTS5 Sandbox for Token-Efficient Agent Context Management — GitHub (@mksglu) — 2026

[50] AGI-is-going-to-arrive/Antigravity-Context-Window-Monitor: Real-time Monitoring of Context Window Usage for Antigravity IDE — GitHub (@AGI-is-going-to-arrive) — 2026

[51] dimitr-io/antigravity-desktop-context: Live /context side panel for the Antigravity 2.0 desktop app — GitHub (@dimitr-io) — 2026-10-22

[52] weby-homelab/antigravity-cli-statusline: Adaptive Statusline for Antigravity CLI — GitHub (Weby Homelab) — 2026

[53] oraios/serena: Semantic Code Retrieval & Symbol-Level MCP Toolkit — GitHub (Oraios AI) — 2026

[54] xdotech/goatlas: AI-Powered Code Intelligence Engine (AST, Neo4j Knowledge Graph & pgvector MCP Server) — GitHub (@xdotech) — 2026

[55] Kevin Hou — "Get Out of the Model's Way" (AI Engineer Summit Presentation & Speaker Profile) — AI Engineer Summit / YouTube (Kevin Hou, @kevinhou22) — 2026

[56] Varun Mohan Education Qualifications: How an Indian-Origin MIT Engineer Secured Google's $2.4 Billion AI Investment — Times of India — 2025-07

补充与交叉验证信源([S1]–[S9])

[S1] Question about personal wrapper around official Antigravity CLI headless mode (#178472) — Google AI Developers Forum (@Ahmad3) — 2026-08-16

[S2] Is a local single-user orchestrator allowed to invoke the official agy -p CLI? (#179013) — Google AI Developers Forum (@JJPop; Reply: @Ambati_Rajendra) — 2026-08-20

[S3] Google AI Studio Gemini API invoking a consumer-authenticated agy CLI is allowed? (#194944) — Google AI Developers Forum (@oooolee; Reply: @Ambati_Rajendra) — 2026-10-26

[S4] Can I let my grok bot use agy cli on their computer? (#190429) — Google AI Developers Forum (@Chua_Poplar; Reply: @Ambati_Rajendra) — 2026-10-19

[S5] AsabaLazy/aur-ASLZ: Arch Linux AUR Repository containing antigravity-cli-fix-bin — GitHub (@AsabaLazy) — 2026-11-02

[S6] mcpservers.org — sshahzaiib/agy-bridge MCP Server — MCP Servers Directory (sshahzaiib) — 2026

[S7] Claude Code vs Google Antigravity vs GitHub Copilot Pricing & Quota Comparison — R-JC News Blog — 2026

[S8] Agy unusable after false violation of Terms of Service (#185325) — Google AI Developers Forum — 2026-09-27

[S9] BUG: AGY CLI Error 3501 (403 Forbidden) - Personal Account Wrongly Flagged as Enterprise (#185714) — Google AI Developers Forum — 2026-09-28

Google Antigravity 256K 上下文限制与无头模式政策变更档案 • 采用 CC BY 4.0 许可协议授权(第三方引语与 API 快照依据美国法典第 17 编第 107 条合理使用原则收录)