产品Google AI Developers·原文 2026年8月25日本站收录 2026年9月7日

Google Antigravity智能体新增交互式UI技能:开发者通过模态框选择而非文字提示配置工作流

Google开发者关系工程师James O'Reilly发布Antigravity智能体技能编写指南第一部分,介绍如何通过嵌入ask_question工具的UI模态框和JSON状态持久化,将智能体从文本解析器转变为结构化交互面试官。

AI解读:这条新闻的核心是写给用Antigravity搭建AI智能体的开发者:以往配置智能体靠写一大段文字提示让它自行猜测参数,既脆弱又容易理解错。现在Google把这些能力封装成一种叫“技能”的文件夹——里面是一个带YAML和Markdown说明的SKILL.md文件——开发者可以在指令里点明使用ask_question工具,智能体执行到这里就会暂停,在聊天窗口弹出带单选、多选和填空的原生UI窗口,让用户点选而不是打字。文中还展示了配套的user_prefs.json持久化方案:把用户的选项存进工作区根目录的JSON文件,下次运行或调用子智能体时先读取,把上次的选择标成“当前设置”列在最前面,用户直接确认或更改即可,不用重新问一遍。对普通用户来说,这不需要立即动手;对正在写复杂工作流的团队,实际收益是你不用反复向智能体复述偏好,跨会话和跨子智能体的配置一致性有了一个单一事实来源。配套建议也很具体:选项列表不要超过七项,否则用户会乱猜;大数据集应先让智能体通过MCP工具筛选再展示;写回JSON时要把键嵌套在“FORMS”这类命名空间下,避免多个技能互相覆盖。这套机制目前是工程指南性质,官方尚未单独为这项工具发布公告,效果数据也还没公开。

Google开发者关系工程师James O'Reilly发布了一篇技术指南,介绍如何利用Antigravity的ask_question工具构建交互式UI工作流,将智能体从被动文本解析器转变为主动的“技术面试官”。该指南属于“Elevating Antigravity Agent Skills”系列的第一部分,涵盖ask_question、generate_image、define_subagent、send_message和manage_subagents等工具。

在Antigravity中,智能体能力以技能(skill)方式打包,技能是一个包含SKILL.md文件的目录,其中YAML frontmatter用于发现、Markdown指令用于执行。默认情况下,智能体按顺序解释指令并执行终端命令或文件编辑;但当指令明确要求调用ask_question工具时,智能体会暂停执行,并在聊天窗口渲染原生交互式UI模态框(支持单选按钮、复选框和填写字段),用于收集用户偏好。

为减少跨会话和子智能体间的重复询问,O'Reilly在示例中将UI询问与持久化状态结合,形成四个阶段的工作流:先从工作区根目录读取user_prefs.json中的已保存默认值(workspace state hydration),再渲染带有选项数组和多选标志的ask_question弹窗(将此前保存的值标注为“(Current Setting)”置于选项列表开头),处理选择(移除UI信号前缀、跳过可选问题并保留原默认值),最后将更新后的选择写回工作区根目录的user_prefs.json,作为后续子智能体使用的“不可动摇的事实来源”(state persistence)。他说明user_prefs.json并非Antigravity的特有文件,而是他为自己项目命名创建的,开发者可按需命名和放置。

内置 /grill-me命令与自定义交互式技能的区别

Antigravity本身支持通过斜杠命令 /grill-me实现交互对齐:触发后,智能体会暂停代码执行,就设计权衡、边界情况和实现限制进行系统化提问,直到歧义消除。O'Reilly称这是临时会话规划和一般需求收集的优秀工具。

自定义交互式技能则将这一概念进一步延伸:团队通过编写调用UI选择模态框的自定义Markdown技能,可标准化领域特有的“面试”流程(如表单搭建、云部署),并将答案直接持久化到工作区配置文件中,供子智能体使用。指南中链接了Richard Seroter撰写的文章《Crafting an agent team that still includes me》供进一步了解 /grill-me命令。

示例技能making-forms-demo的完整实现

O'Reilly提供了一个名为making-forms-demo的参考技能,它在生成网页表单前先对开发者进行“面试”,确保验证规则和标签布局符合团队标准。该技能的关键Markdown指令如下:

确认意图与状态加载:检查工作区根目录是否存在user_prefs.json;若存在读其“FORMS”对象,告知用户已找到表单并需回答或确认几个问题。

使用ask_question查询验证类型:调用ask_question展示选项UI,若存在先前保存的值,则将其前缀“(Current Setting)”并置于选项首位,问题为:“您希望如何处理字段验证?(可多选)”选项为[“客户端验证”,“服务端验证”],选中值作为FIELD_VALIDATION_TYPE。

查询验证位置:调用ask_question,使用单选列表(省略显式“other”字符串后,Antigravity会自动启用默认填写选项),问题为“您希望如何处理验证消息?”,选项为[“字段上方”,“字段下方”,“摘要卡片”,“工具提示”],选中值作为FIELD_VALIDATION_LOCATION;若开发者在填写框中输入“Inline below label”,智能体将该字符串直接捕获到该变量,无需自定义语法解析。

固定用户偏好:使用write_to_file工具将选择的表单偏好写入工作区根目录的user_prefs.json(覆盖已有文件),以JSON结构保存,例如{"FORMS":{"FIELD_VALIDATION_TYPE":[" "],"FIELD_VALIDATION_LOCATION":" ","FIELD_LABEL_TYPE":" "}}。技能在首次运行时不会真正创建表单(明确标注为模拟技能),而是将选择输出为用户确认。通过命名空间嵌套(如“FORMS”),不同技能可安全地在同一JSON根对象中管理自身状态,避免冲突。

创建交互式技能应避免的四种错误

O'Reilly总结出四项最佳实践:

避免选项疲劳:选择列表超过七项会让用户不知所措、开始猜测。面对大规模数据集(如数百个营销活动或云区域),不要将原始数组直接放入ask_question,而应指示智能体先查询MCP工具,筛选出与当前工作区相关的top-5列表再显示。

避免显式自定义选项反模式:常见的错误是在SKILL.md中显式添加“其他”或“自定义值”选项。ask_question工具在呈现交互式问题时已默认显示可填写的文本框,显式加入会制造冗余且混淆选项,迫使智能体处理不必要的二次提示步骤。

避免配置文件中的扁平根键:将用户选择持久化到user_prefs.json时,务必在高层级域名命名空间(如“FORMS”,“DEPLOYMENT”,“TESTING”)下嵌套键值对;多个技能若直接将扁平键写入JSON根,技能包增长后键冲突将不可避免。命名空间可确保跨自治子智能体的严格边界隔离。

避免第三人称表述:选项字符串应使用用户的第一人称直接表述(例如“浮动标签(标签位于输入框内部)”),而非第三人称命令式(如“将表单布局设为浮动”)。直接响应的表达可降低认知摩擦,让交互模态框更自然。

信息来源