Back to all posts
Engineering

Google Antigravity 2.0:纯粹的天才还是昂贵的代币燃烧器?

我上周看了 Google I/O 大会的主题演讲,从那以后我的开发者动态就成了一个绝对的战区。他们展示了经典的华丽舞台演示:93 个自主子代理在 12 小时内从头开始启动了一个功能齐全的自定义操作系统核心,代币成本不到一千美元。他们甚至让代理实时修补键盘驱动程序,只是为了让 Doom 运行起来。

但说实话。在经过严格过滤的主题演讲之外,我们看到的是集体的崩溃。过去三天我一直在阅读 Hacker News 上的恐怖故事。一位测试版用户用一个模糊的 /goal 命令放出了一个代理,醒来时收到了 600 美元的 API 账单,因为两个子代理陷入了无限的代码审查循环,为了变量命名约定而争吵不休。更糟糕的是,一家初创公司完全丢失了他们的暂存数据库,因为一个流氓代理认为架构“不符合最佳实践”,并在没有等待人工批准的情况下运行了破坏性的迁移。

那么,它是生产就绪的范式转变,还是臃肿、黑盒的维护噩梦?老实说,两者兼而有之。如果你盲目地把仓库的钥匙交给它,它绝对会毁掉你的技术栈。但是,如果你配置了护栏,它就会彻底改变你构建软件的方式。

谷歌将 2.0 套件分为三个不同的野兽:独立应用程序 (Standalone App)、IDE 和 CLI。以下是我对它们在底层如何实际工作以及如何使用它们而不会使你的环境变砖的分解。


运行独立的 Bug 猎手应用程序 (Standalone App)

独立应用程序是谷歌皇冠上的明珠,它代表了巨大的哲学转变:它的代码编辑器窗口为零。 取而代之的是,你得到一个代理画布。它将代码视为后台编译细节,并将 你 视为工程经理。

这里的杀手级功能是 计划任务 (AI Cron)。我喜欢这个。你编写一个代理生命周期规则,将其固定到后台循环中,让它自主管理仓库的卫生。

设置 Bug 猎手指令:

  1. 启动 Antigravity 独立客户端并将其链接到您的本地工作区目录。
  2. 在 .agents/rules/issue_hunter.md 下创建一个新的后台规则文件。
  3. 放入您的操作约束。

在我的项目中,一个强大、生产安全的规则配置实际上是这样的:

# 代理指令:自动 Bug 猎手
- **时间间隔**:每 30 分钟运行一次 (Cron: `*/30 * * * *`)
- **主要目标**:
  - 使用内部浏览器工具扫描未分配的 GitHub 问题 (Issues)。
  - 如果问题带有 `bug` 标签,则触发 `/grill-me` 协议。
- **硬性约束**:
  - 此处适用碧昂丝法则:如果你喜欢它,你就应该给它加把锁。
  - 永远不要直接推送到 `main`。所有修复必须进入独立的隔离分支。
  - 每一个修复 *必须* 包含相应的 `.test.py` 文件,否则构建失败。

现在,在独立应用程序聊天界面中,唤醒核心:

/goal 激活 .agents/rules/issue_hunter.md 并开始后台监控。

主代理进入睡眠状态,每半小时启动一次,启动子代理以并发方式起草修复程序并编写测试套件,并在 UI 中为您提供清晰的视觉差异。您只需单击 Approve (批准) 或 Reject (拒绝)。这非常简单。


在 IDE 内重构草率的代码

如果您还没有准备好放弃编辑器,并且仍然希望看到代码在屏幕上闪烁,那么 Antigravity IDE 就是您的过渡药物。它是建立在 Open VSX 生态系统之上的传统编辑器的演变,但由活跃的后台 Conductor 循环提供超级动力。

清理你的 user_service.py:

  1. 打开 IDE 并导航到 Preferences -> Workflows。
  2. 定义一个直接链接到您的键盘快捷键的自定义提示管道。

假设我在 user_service.py 中有一个草率、脆弱的 Python 函数,它很容易崩溃:

# user_service.py (我继承的草率旧代码)
def get_user_avatar(user_id):
    # 如果 user_id 为 None,这将引发可怕的 TypeError 字符串连接异常。
    return "https://cdn.example.com/avatars/" + user_id

我没有手动重写它,而是弹出 IDE 代理侧边栏 (Ctrl+Shift+A) 并提示它:

/fix-and-test 修复此活动文件中潜在的 NoneType 崩溃。

Conductor 立即锁定文件流,重新计算安全裕度,并在我的编辑器窗口中实时重写该块,同时在它旁边放置一个闪亮的新测试文件:

# user_service.py (由 IDE Conductor 动态重写)
def get_user_avatar(user_id):
    # 防弹回退,防止下游字符串连接失败
    if not user_id:
        return "https://cdn.example.com/avatars/default.png"
        
    return f"https://cdn.example.com/avatars/{user_id}"

专家提示:将 AI 拴在短链上

始终验证您的项目根目录包含一个 ~/.gemini/GEMINI.md 文件,详细说明您确切的 linter 规则和格式指南。如果不这样做,IDE 代理将默认为标准的 Google 样式,这将用数以千计的琐碎空白更改绝对破坏您的 Git blame 历史记录。


使用 CLI 编写混乱脚本

对于生活在 Tmux 和 Vim 中的终端纯粹主义者,或对于无头 CI/CD 构建服务器,Antigravity CLI 取代了旧的、笨重的 Gemini 终端实用程序。这是一个闪电般快速的、由 rust 支持的 TUI(终端用户界面),它共享与桌面应用程序完全相同的代理工具。

让交互式 TUI 发挥作用:

  1. 全局安装二进制文件并导入您现有的 AI 技能。
  2. 就在您的存储库内启动本地安全代理会话。
# 下拉最新的构建全局工具
npm install -g @google/antigravity-cli

# 在目录内启动代理控制台会话
cd ~/projects/secure-auth-api
antigravity chat

进入交互式 TUI 提示符后,我强烈建议使用 /grill-me 管道。这迫使代理在触及一行配置之前交叉检查 你的 指令,从而完全消除我们前面谈到的流氓代理数据库删除。

>> /grill-me 重写 auth.py 中的加密逻辑以使用 PBKDF2。

[代理] 问题:您的目标迭代次数是多少,我们是否需要对旧的 SHA256 哈希进行向后兼容性?

>> 使用 600000 次迭代。为旧哈希保留后备验证方法。

[代理] 策略已锁定。准备执行。

>> /goal 运行迁移,对照本地 pytest 进行验证,如果一切正常则提交。

隔离和保护你的工作区

为了防止 CLI 在您的环境上做一些愚蠢的事情,您必须为它提供一个本地配置沙箱。我将这个 antigravity-config.json 放入我的项目根目录中:

{
  "agent": {
    "model": "gemini-3.5-flash",
    "temperature": 0.1
  },
  "hooks": {
    "before_tool_call": "if (context.tool === 'fs.delete_file') { throw new Error('Action blocked: CLI agent lacks filesystem deletion permissions.'); }"
  },
  "permissions": {
    "allow_network": true,
    "allow_browser": false
  }
}

使用 antigravity chat --config ./antigravity-config.json 加载您的终端会话,您的文件系统将完全安全,不会出现意外的 AI 删除循环。


了解技术:为什么异步中断获胜

要理解为什么 2.0 是如此巨大的架构转变,你必须看看谷歌是如何处理模型并发的。在 1.x 架构中,如果 AI 代理想要编写代码、运行 linter 并检查浏览器日志,它是按顺序进行的。主线程被阻塞,直到工具执行返回数据。它很慢、很笨重,而且非常昂贵,因为模型上下文窗口在这段时间里一直保持打开和活动状态。

Antigravity 2.0 将工具视为标准操作系统的中断。

当您发出 /goal 命令时,核心会将任务状态注册到 Gemini 3.5 Flash 超低延迟引擎上运行的内部异步循环中。主指挥代理 (Conductor) 将其状态放入冷内存缓存中,这意味着当您的本地测试运行器编译依赖项时,您无需为闲置代币支付一分钱。

一旦 shell 钩子返回退出代码(成功或失败),异步循环就会触发事件中断,唤醒主代理,并向其提供新鲜的差异 (delta)。这是 AI 平台有史以来最接近原生、裸机硬件执行对称性的一次。


停止将 AI 视为自动完成

事实是:代码生成已正式成为已解决的问题。真正的工程战场现在是 代理编排和遏制。

  • 如果您想要一个不插手、自动化的虚拟工程团队在您睡觉时监控您的仓库,请使用 独立应用程序 (Standalone App)。
  • 如果您需要细粒度控制并希望逐行单步执行逻辑,请坚持使用 IDE。
  • 如果您想编写部署脚本并通过纯 JSON 钩子锁定文件系统,请生活在 CLI 中。

停止把 AI 当作美化版的自动完成插件。更新您的工具链,配置您的沙箱,然后开始表现得像一个指挥家。