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-workflowskill,写一段 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 循环 |
/swarm | agent 之间要协商(对接口、互审 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 就会显得很原始。
相关阅读
- 落地工具:Google Antigravity 工具卡 · Gemini CLI · Cursor · Claude Code
- 概念延伸:Agent 编排 · Agent 团队 · 上下文腐化 · Agent Harness
- 同日/同周:Gemini 4 Hydrogen 与 Orchestrator · Gemini 4 Carbon 全面开放
- 对照阅读:ChatGPT Wallet:Agent 付款与商家拦截
来源
- { title: "Dynamic Workflows (/run-workflow)(Google Antigravity 官方文档,实取 markdown 原文)", url: "https://antigravity.google/docs/dynamic-workflows" }
- { title: "Antigravity Changelog:App v2.32.0,2026-11-13,Dynamic Workflows and new themes(11 项改进 / 13 项修复)", url: "https://antigravity.google/docs/changelog" }
- { title: "Models and Orchestrator(官方文档,六种编排入口的分工)", url: "https://antigravity.google/docs/models" }
- { title: "Workflows to Skills 迁移指引(官方,老式 Markdown workflows 的去向)", url: "https://antigravity.google/docs/migration/workflows-to-skills" }
- { title: "Google Antigravity rolls out Dynamic Workflows for Python agent scripts(Ashutosh AI,2026-11-13 推送时间与 App 版本核对)", url: "https://ashutoshai.com/ai-compass/2026/11/13/google-antigravity-dynamic-workflows-python" }
常见问题
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() 串行跑。