跳到主内容

Antigravity 上线 Dynamic Workflows:让 Agent 把多 Agent 编排写成 Python 脚本

Antigravity v2.32.0 加入 Dynamic Workflows:/run-workflow 让 Agent 写 Python 编排多个子 agent,脚本先批后跑、按 phase 直播进度,含五个真会踩的坑。

2026-11-15 · Google Antigravity 官方文档(Dynamic Workflows) / 官方 Changelog v2.32.0 / Antigravity 官方账号

发布 2026-11-15核实 2026-11-15

要点

  • Google Antigravity App v2.32.0(2026-11-13) 上线 Dynamic Workflows,同版本还带了两套 Everforest 主题、prompt 跳转快捷键与 13 项修复。官方说明是灰度推送,可能几天才到全部用户。
  • 用法是 /run-workflow <任务>:Agent 读取内置的 run-workflow skill,写一段 Python 脚本来编排 agent,脚本先给你看、批准后才在后台跑。
  • 脚本原语很少但够用:phase() 命名阶段、agent(prompt, schema, role, model, workspace)、parallel() 并发、pipeline() 串行、log()、trajectory() 取本次对话在 workflow 之前的步骤。
  • 结构化返回来真的:每个 agent 的结果必须通过一个 finish 工具按 JSON Schema 校验,脚本拿到的是解析后的值,不是一段散文。
  • 上下文隔离是它最大的工程价值:workflow 拉起的 agent 各自独立会话,读文件、搜代码、跑测试的噪声全留在子会话里,主对话只收到脚本汇总。
  • 官方口径只对 Google AI Pro 与 AI Ultra 开放,App 与 CLI 都能用;老式的 Markdown workflows 已被取代,官方给了迁到 Agent skills 的迁移指引。
  • 附带一个容易被忽略的安全变化:agent 控制的浏览器标签页里,跨站 iframe 现在默认以登出态加载,且不出现在 agent 的截图与页面快照里,除非显式允许。

为什么这一步值得单独说

过去一年,多 Agent 的「编排」基本是两种形态:一种是人写 YAML / JSON 工作流(Dify、n8n 那一路),一种是模型自己在对话里做规划(Claude Code 的 Agent 循环、Antigravity 自己的 Mission Control)。

前者的毛病是僵硬:真实任务的分支经常在跑起来之后才知道。后者的毛病是漂移:同一句 prompt 跑两次,规划的步骤数可能差一倍,尤其在长任务上。

Dynamic Workflows 走的是第三条路:让模型写调度代码。任务拆解仍然由模型完成,但拆解的结果被固化成一段可读、可批、可存盘的 Python。官方用词是「deterministic control flow」——确定性控制流。

一句可用的 workflow 长这样(官方文档原例):

phase("Discover")
files = await agent(
    "List the Python files changed since main. Paths only.",
    schema={"type": "array", "items": {"type": "string"}},
)

phase("Review")
reviews = await parallel(
    files,
    lambda f: agent(
        f"Review {f} for unhandled exceptions. Reply with a one-line verdict.",
        schema={"type": "string"},
        role=f"Review {f}",
        model="flash",
    ),
)
for r in reviews:
    log(r)

看懂这三段,就明白这套东西的适用边界:任务能切成互不依赖的同类项(一个文件一次审查、一个包一次审计),或者能切成明确的前后阶段(先写失败的测试,再改代码)。它不适合需要 agent 之间来回商量的活。

六个编排入口,官方自己给了张分工表

Antigravity 现在同时有六种「把活分出去」的方式,这是整套产品里最该先搞清楚的部分:

入口什么时候用
Orchestrator单对话里,前沿模型(Gemini 4 Carbon / Argon)规划并复核,日常工具执行路由给 Gemini 4 Hydrogen
Subagents派一个任务出去,你继续干自己的
Dynamic Workflows要确定性:同一套检查跑一批文件、分阶段推进、reviewer-fixer 循环
/swarmagent 之间要协商(对接口、互审 diff),走共享留言板互相 @
/boost硬骨头(竞态、算法)深推理 + 独立复核
/teamwork大型多里程碑项目,从一次 scoping 访谈开始

用一句话记住区别:要它们商量,用 /swarm;要它们按剧本干,用 /run-workflow。

五个真会踩到的坑

① parallel() 是连坐的。 官方文档写明「一个失败,其余取消」。你若把 50 个文件塞进一个 parallel 批次,其中任何一个 agent 抛错,剩下 49 个一起被掐。批处理要自己控制粒度,或者改用 pipeline()。

② 审批只覆盖那一个脚本。 官方明确说「一次批准只对那个具体脚本有效,命令前缀规则无法覆盖 Python 脚本」。也就是说你选了「本对话内一直允许」,换个任务生成的新脚本仍要重新批——而且这类审批你很难像 git status 那样靠白名单沉淀。

③ agent 看不到脚本,也看不到彼此。 每个 agent 是完整 agent,但只有自己的会话。脚本必须把任务、上下文、期望的输出格式全部塞进 prompt。写 prompt 时不写清「返回什么」,schema 校验就会变成反复失败的循环。

④ macOS 上环境变量会丢。 从 Dock 启动的 App 读不到你 shell 里的 ANTIGRAVITY_PYTHON,要用自带 Python 之外的解释器,得从终端启动或在 App 内配置。

⑤ 它不省钱,只是把钱花得更可控。 官方没给单独定价(走计划内 credits),但 high-fanout 的 workflow 会拉起大量模型调用。真正能压成本的是 model 参数——批量的机械检查挂 flash_lite / flash,只有需要推理的阶段挂 pro。默认是 inherit,也就是跟着当前对话的模型走,天知道你当时选了什么。

对开发者的影响

  • 「重复的可读脚本」正在成为 Agent 平台的标配能力。它把 prompt 从「一次性输入」变成「可版本化的资产」:脚本能进 git、能 code review、能复跑。接下去拼的不是模型多聪明,而是编排产物能不能被团队审。
  • 上下文工程从「压缩」变成了「隔离」。一个 50 文件的审查任务,过去要么塞进一个会话(context rot 必然发生),要么人工拆多次(人成了瓶颈)。现在噪声留在子会话,主会话只过结构化结果。
  • trajectory() 是个被低估的入口。它能取 workflow 启动之前这段对话的步骤,意味着「你刚才和我讨论的半小时代码」可以直接成为脚本的输入,而不必再复述一遍。做「讨论完就批量执行」类工具的人值得盯这个接口。
  • 顺手补了个安全细节:agent 浏览器的跨站 iframe 改成默认登出态、且不进截图与快照。这跟同一天另一条新闻形成了有趣的对照——ChatGPT Wallet 里商家在拦 agent,Antigravity 这边在修「网站因为 UA 暴露 Electron 而封锁内置浏览器」的 bug。agent 与网站之间的攻防,已经从协议层下沉到 UA 与 iframe 这一层了。

AI 之家 观点

这件事的意义不在「Antigravity 又加了个功能」,而在它把 Agent 编排的产物从「对话」换成了「代码」。

对话是无状态的、不可 diff 的、跑完就散的东西。脚本不是:它能被审、被存、被复跑、被改进。这恰好是团队采用 Agent 的门槛——不是「模型够不够聪明」,是「出了问题能不能复盘、能不能重放」。

但别把它当银弹。parallel() 连坐、审批不沉淀、脚本必须自带全部上下文,这三点决定了它擅长「同类项批处理」,不擅长「开放式探索」。官方的分工表其实已经说得很清楚,只是没人愿意承认自己那个任务恰好属于「需要 agent 商量」的那一类。

最后一个判断:这套设计会逼着同类产品跟进「可审脚本」这个形态。Cursor 的 Rules、Claude Code 的 hooks 都停在「配置」层面,而 workflow 脚本是「程序」。一旦开发者尝到「把一次成功的编排存成 .py 明天再跑」的甜头,纯对话式的多 agent 就会显得很原始。

相关阅读

来源

常见问题

Dynamic Workflows 和 Orchestrator、/swarm 有什么区别?

官方给了明确分工:Orchestrator 是「一个对话里,前沿模型规划、Gemini 4 Hydrogen 执行」;Subagents 是「派一个任务出去,你继续干自己的」;Dynamic Workflows 是「脚本化的确定性控制流」;/swarm 是「多个 agent 在共享留言板上互相协调」;/boost 是深推理攻坚;/teamwork 是多里程碑大项目。需要 agent 互相商量就用 /swarm,需要可重复的批处理就用 workflow。

要自己装 Python 吗?

不用。workflow 用 App 自带的 Python 运行时,首次运行会解包,会慢一下。想用自己装了包的解释器,就设 ANTIGRAVITY_PYTHON 指向它(必须 3.8+)。注意 macOS 上从 Dock 启动的 App 读不到 shell 里的环境变量。

脚本会自动执行吗?

默认不会。App 里会弹「Allow running this workflow script?」,CLI 里问「Run this command?」,你可以只允许这一次、本对话内一直允许,或永久允许。权限预设(例如 Turbo)已经放行的情况除外。关键点:一次审批只覆盖那一个脚本的具体内容,改了脚本要重新批;命令前缀规则管不住 Python 脚本。

一个 agent 失败会怎样?

parallel() 的语义是「一个失败,其余全部取消」。所以同一批里放了 50 个文件、其中一个报错,剩下 49 个会一起被掐掉。共享文件或共享测试套件的任务要用 pipeline() 串行跑。

相关对比

Cursor vs Aider:GUI IDE 还是 CLI?2026 对比

Cursor vs Aider 2026 选型对比:GUI IDE vs Git 原生 CLI,从 Composer vs Architect 双模型、Tab 补全、多模型 BYOK、价格计费、开源与否和适合人群判断,帮开发者选对。Cursor 是闭源 VS Code fork 月费 $20,Aider 是开源 Apache-2.0 CLI 自带 API key。

Augment Code vs Cursor:企业 AI 编程怎么选?Context Engine vs AI IDE 对比

Augment Code vs Cursor 2026 选型对比:Context Engine 全仓索引的企业 AI 平台 vs SpaceX 收购的 AI IDE 天花板,从形态、Context 覆盖、长任务、价格、合规、中文支持和适合人群 8 个维度判断,帮你选对企业 AI 编程工具。

Cursor vs Claude Code:什么时候用哪个?(2026 实测选型)

Cursor 和 Claude Code 到底怎么选?一句话结论 + 决策树 + 价格实测 + 国内可用性对比。GUI 派选 Cursor,终端长任务派选 Claude Code,最优解其实是共存。

Claude Code vs Gemini CLI:终端 AI Agent 怎么选?(2026 选型指南)

Claude Code 和 Gemini CLI 都是终端原生的 AI 编码 Agent。一句话结论 + 决策树 + 价格 + 国内可用性对比:长任务与 CLAUDE.md 生态选前者,免费额度与接入门槛选后者。

Codex CLI vs Gemini CLI:两家大厂终端 Agent 怎么选?(2026 选型)

OpenAI Codex CLI 与 Google Gemini CLI 的正面比较:一句话结论 + 决策树 + 价格 + 国内可用性。已有 ChatGPT 账号选 Codex,想零成本起步选 Gemini CLI。

Cursor vs GitHub Copilot:AI IDE 还是插件?2026 对比

Cursor vs GitHub Copilot 2026 选型对比:AI 原生 IDE vs IDE 插件,从 Composer vs Agent Mode、Tab 补全、多模型、AI Credits 计费、企业版和适合人群判断,帮开发者选对。Cursor 是 VS Code fork 重写交互层,Copilot 是 VS Code 插件继承原生体验。两家都已切 usage 制。