Google Antigravity 学习手册
从"会用"到"用好":不只告诉你点哪里,更讲清楚为什么这样做、怎么做得更好,并附上可以直接复用的模板。即使不动手操作,读完也能理解每一步在做什么。
🧭先找到你的路线
选择最符合你的描述,下方路线图会高亮推荐章节。选择会保存在本机浏览器里。
还没选择?默认建议从「第 0 章 认识 Antigravity」开始。
🗺️学习路线图
五个阶段,由浅入深。每章都按"一图看懂 → 为什么 → 怎么用好 → 模板 → 互动演示 → 思考题 → 操作手册"组织。
🏷️按主题直达
已经知道自己要找什么?点主题直接跳到对应位置。也可以按 / 或 Ctrl+K 全文搜索。
📖怎么读这本手册
- 只想理解:每章读前半部分(图解、为什么、怎么用好)就够了,不需要电脑。
- 想动手:读完讲解后,展开章末的「操作手册」逐步跟做。
- 想复用:每章都有「可复用模板」,点复制直接用到自己的项目。
- 想检验:做一做章末的思考题和小测验。
- 读完一章点「标记已学完」,顶部进度条会记录你的进度。
🔖页面里的标记
- 注意容易出错、可能造成损失的地方
- 进阶原理、设计思路、高阶用法
- 检查点做到这一步应该看到的结果
- 🤔 思考题:先自己想,再展开看参考思路
- 快捷键:/ 搜索,Alt+←/→ 切换章节
内容整理时间:2026 年 10 月。Antigravity 迭代很快,界面位置和路径可能变化,以 官方文档 为准。界面截图引自 Google Codelabs(CC BY 4.0),第三方观点均注明出处。
认识 Antigravity:从"写代码"到"派活"
动手之前,先搞清楚 Antigravity 和你用过的 AI 工具有什么本质不同,以及七个核心概念是怎么配合的。后面所有章节都建立在这一章的心智模型上。
🎯学完这一章,你能
- 说清楚"智能体"和"代码补全"的区别
- 知道 Antigravity 有哪五种使用方式,该选哪个
- 理解项目、对话、产物、MCP、Skills、Rules、Workflows 各管什么
- 建立"给 AI 派活"的正确心态
🖼️一图看懂:AI 编程工具的三代演进
关键变化是"谁在主导":从你写、AI 补,到你说、AI 做,再到你验收。
💡为什么这件事值得认真学
角色变了,技能要求也变了
用代码补全时,你最重要的能力是写代码。用智能体时,最重要的能力变成了三件事:把目标说清楚、审查方案、验收结果。这和带一个能力很强、但不了解你项目的新同事非常像。很多人觉得"AI 不好用",根源往往是还在用"问答"的方式和"派活"的工具打交道。
智能体是怎么工作的
智能体的核心是一个循环:思考下一步该做什么 → 行动(读文件、改代码、执行命令、打开浏览器)→ 观察结果 → 再思考……直到它认为任务完成。业内把这种模式称为 agentic loop。
这意味着两件事:一是它能做的事远多于聊天;二是它可能在你没注意时走偏。所以 Antigravity 设计了"计划审批"和"产物"两套机制(第 2 章),让你在关键节点把关。
上下文是最稀缺的资源
智能体每一步都依赖"上下文窗口"里的信息做判断:你的要求、项目文件、工具说明、历史对话。塞进太多无关信息,它会变慢、变贵,还会被干扰。Antigravity 的 Rules、Skills、Workflows、项目级 MCP 白名单,本质上都是管理上下文的工具:让智能体在正确的时间只看到需要的信息。理解这一点,后面的章节会容易得多。
🧩七个核心概念:点击查看各自的作用
中间是智能体本身,周围是你用来"配置它、约束它、检验它"的机制。
📁 项目 / 工作区(Project / Workspace)
是什么:智能体能看到和操作的文件夹范围,可以包含多个文件夹(比如前端和后端仓库)。
比喻:给工程师分配的"工位"和门禁卡。
为什么重要:每个项目有独立的安全设置和 MCP 白名单。范围划得准,智能体的上下文就干净,风险也小。
💬 对话(Conversation)
是什么:在某个项目里和智能体的一次会话,可以重命名、新建、回看。
比喻:一张工单。
用好的关键:一个对话只做一件事。不同任务开不同对话,避免上下文互相污染。
📋 产物(Artifacts)
是什么:智能体交付的工作证据:任务清单、实施计划、操作演示、代码 diff、截图。
比喻:工程师交的方案书和验收报告。
为什么重要:它解决了"信任缺口":你不用读完所有代码,也能判断它做没做对。还可以直接在产物上批注让它修改。
🔌 MCP 服务器
是什么:一种开放标准协议,让智能体连接 Cloud Run、GitHub、数据库、设计工具等外部系统。
比喻:工程师的"手"和工具箱。
注意:工具不是越多越好,每个工具的说明都会占用上下文。
📚 Skills(技能)
是什么:某类任务的操作手册,平时只露出一行描述,任务匹配时才加载全文和脚本。
比喻:工程师手边的专项手册,需要时才翻开。
为什么重要:把团队经验沉淀下来,又不挤占上下文。
📏 Rules(规则)
是什么:放在 .agents/rules/ 下,每次对话都会加载的项目规范。
比喻:公司制度,人人每天都要遵守。
用好的关键:只放真正"每次都需要"的内容(架构、技术栈、硬性规范),否则会浪费上下文。
⚡ Workflows(工作流)
是什么:放在 .agents/workflows/ 下的 Markdown 文件,保存后变成一个斜杠命令。
比喻:标准作业流程(SOP),按一个按钮就开始执行。
和 Skills 的区别:Skills 由智能体自己判断何时用;Workflows 由你主动触发,适合固定的多步流程。
🧰产品家族:五种使用方式,共享同一个引擎
在一个地方学会的概念,在其他地方基本通用。
🖥️ Antigravity 2.0 最易上手
独立桌面应用,智能体的指挥中心:管理项目、多智能体并行、定时任务。
🧑💻 Antigravity IDE 开发者推荐
完整的智能体 IDE:Agent Manager + 编辑器 + 内置浏览器,深度理解代码库。
⌨️ Antigravity CLI
终端版(命令 agy),适合远程服务器、SSH、脚本和 CI/CD。
🐍 Antigravity SDK
Python 库,让你的程序调用智能体,做自动化和系统集成。本手册不展开。
🧩 Antigravity for IDEs
VS Code、JetBrains、Zed 等编辑器的官方插件,不想换编辑器时用。
🤔 该选哪个?
非开发者从 2.0 开始;开发者装 2.0 + IDE,再装 CLI;要集成到系统里用 SDK。
✅怎么用好:把它当成一个能干的新同事
✓ 推荐的心态
- 像给新同事派活一样交代背景、目标和验收标准
- 重要的事先看方案再放手
- 用产物和测试验收结果,而不是听它说"做完了"
- 反复叮嘱的事写成文档(Rules / Skills),而不是每次重复
- 给它恰好够用的权限和工具
✗ 常见误区
- 一句话丢过去,结果不满意就说"AI 不行"
- 把所有任务塞进同一个对话
- 为了省事全部设成自动批准,然后在生产项目里用
- 装一堆用不上的 MCP 和 Skills
- 不看 diff 直接接受几百行改动
🤔思考题
先自己想一想,再展开参考思路。没有标准答案。
如果智能体能自己写代码、跑测试,人还需要懂代码吗?
需要,但重点变了。你不一定要亲手写每一行,但必须能判断方案是否合理、读懂 diff、识别风险。就像技术负责人不写所有代码,但要能做技术评审。不懂代码的用户也能用 Antigravity 做出东西,但遇到复杂问题时,判断力决定了能走多远。
"上下文越多,AI 越懂我"对吗?
不完全对。相关的上下文越多越好,无关的上下文反而有害:会稀释注意力、增加费用和延迟。这就是为什么 Antigravity 要区分"始终加载"的 Rules 和"按需加载"的 Skills。好的做法是:让每条信息在需要的时候出现。
你团队里哪些工作最适合先交给智能体?
一个实用的判断标准:结果容易验证、出错代价低、重复度高的工作最适合先交出去,比如补测试、补文档、依赖升级、样板代码、根据规范生成页面。而需求模糊、难以验证、出错代价高的工作(比如生产数据库变更),应该保留更多人工把关。
📝小测验
1. 下面哪项最能体现"智能体"和"代码补全"的区别?
2. 有一份团队编码规范,希望智能体每次对话都遵守,应该放在哪里?
3. 想把 Antigravity 集成到公司内部系统里,由程序自动调用,应该用哪个产品?
📄原文讲解(参考)
文字版的完整概念说明,可以作为复习材料。
学完你能:说清楚 Antigravity 是什么、有哪几种用法、几个核心概念分别管什么。
0.1 Antigravity 是什么
Antigravity 是 Google 推出的智能体优先(agent-first)的开发平台。它和传统"AI 代码补全"的区别是:
- 代码补全:你写代码,AI 帮你补下一行。
- Antigravity:你描述要做什么,AI 智能体自己规划、写代码、运行命令、打开浏览器测试,最后把结果和证据交给你审核。
打个比方:代码补全像一个坐在旁边提醒你的同事;Antigravity 像一个你可以派活的工程师,你负责提需求、审方案、验收结果。
0.2 产品家族:五种使用方式
2.0 版本之后,Antigravity 不再只是一个 IDE,而是一整套产品:
| 产品 | 是什么 | 适合谁 | 本手册章节 |
|---|---|---|---|
| Antigravity(2.0 桌面应用) | 独立的桌面应用(macOS / Linux / Windows),是智能体的指挥中心:管理项目、并行运行多个智能体、定时任务 | 所有人,最容易上手 | 第 1、2 章 |
| Antigravity IDE | 完整的智能体 IDE:Agent Manager + 代码编辑器 + 浏览器 + 产物,深度理解代码库 | 开发者推荐 | 第 2、5、6、8、9 章 |
Antigravity CLI(命令 agy) |
终端界面版本,能力和桌面版一样 | 习惯终端、远程服务器、Cloud Shell 的用户 | 第 3 章 |
| Antigravity SDK | Python 库,让你的程序调用智能体 | 做自动化、系统集成的开发者 | 本手册不涉及 |
| Antigravity for IDEs | VS Code、JetBrains、Zed 等编辑器的官方插件 | 不想换编辑器的开发者 | 本手册不涉及 |
三者共享同一个智能体引擎,所以在一个地方学会的概念,在其他地方基本通用。
0.3 七个核心概念
后面所有章节都围绕这几个概念展开,先有个整体印象:
| 概念 | 一句话解释 | 比喻 |
|---|---|---|
| 项目 / 工作区(Project / Workspace) | 智能体能看到和操作的文件夹范围,每个项目有独立的权限设置 | 给工程师分配的"工位" |
| 对话(Conversation) | 在某个项目里和智能体的一次会话 | 一张工单 |
| 产物(Artifacts) | 智能体交付的"工作证据":计划、任务清单、操作演示、代码 diff、截图 | 工程师交的方案和验收报告 |
| MCP 服务器 | 让智能体连接外部系统(Cloud Run、GitHub、数据库、设计工具……) | 工程师的"手"和工具箱 |
| Skills(技能) | 某类任务的操作手册,需要时才加载 | 工程师手边的专项手册 |
| Rules(规则) | 始终生效的项目规范 | 公司制度 |
| Workflows(工作流) | 自定义斜杠命令,把多个步骤串起来 | 标准作业流程(SOP) |
进阶为什么要分 Skills、Rules、Workflows 三种? 核心是上下文管理。模型的上下文窗口有限,塞进太多无关指令会变慢、变贵,还容易被干扰(业内叫"上下文腐烂")。所以:始终需要的放 Rules,按需使用的放 Skills(平时只露出一行描述),需要人主动触发的流程放 Workflows。第 7、8、9 章会详细展开。
🔗延伸阅读
- AnthropicBuilding Effective Agents业内引用最多的智能体设计文章,讲清了 workflow 和 agent 的区别,以及何时该用哪种。
- MCP 官方Model Context Protocol 介绍MCP 的官方站点,第 4 章会详细展开。
- GoogleAntigravity 官方文档产品功能和配置的权威说明。
安装、创建项目、第一次对话
装好 Antigravity 只要几分钟。这一章真正值得花时间的是:项目怎么划分、权限怎么设、对话怎么管。这三件事决定了智能体以后是"帮手"还是"麻烦"。
🎯学完这一章,你能
- 装好 Antigravity 2.0 和 IDE
- 理解"项目"为什么是 Antigravity 的核心
- 按场景给项目配置合适的权限
- 养成"一个对话一件事"的习惯
🖼️一图看懂:全局设置、项目、对话的关系
项目继承全局默认设置,可以单独覆盖;每个项目下面有多个对话。
💡为什么要"以项目为中心"
项目 = 智能体的边界
智能体能读写文件、执行命令。如果不划边界,它理论上可以碰到你电脑上的任何东西。项目就是这条边界:它决定智能体能看到哪些文件夹、能用哪些工具、做什么事需要你批准。
为什么一个项目可以包含多个文件夹
真实的系统往往分散在多个仓库里:前端、后端、基础设施配置。如果智能体只能看到前端,它改接口调用时就不知道后端到底返回什么。把相关仓库放进同一个项目,它就能跨仓库理解和修改,比如同时改后端接口和前端调用。
为什么每个项目的设置要独立
不同项目的风险完全不同。练习项目里,你希望智能体放手去做;涉及生产配置的项目,你希望它每执行一条命令都先问你。独立设置让你不必在"安全"和"效率"之间一刀切。
为什么要分对话
同一个对话里的所有内容都会留在上下文里。在"修复登录 bug"的对话里接着让它"设计数据库",前面的调试细节会干扰后面的设计。一个对话一件事,上下文干净,结果也更好,回头查也方便。
✅怎么用好:按场景配置项目
下面是一份参考配置,按项目风险从低到高排列。
| 场景 | Security Preset(终端/文件) | Artifact Review(产物审核) | MCP 白名单 | 理由 |
|---|---|---|---|---|
| 🧪 练习 / 学习 | 宽松 | Always Proceed | 按需开 | 出错代价低,追求流畅体验 |
| 👤 个人项目 | 常用命令放行 | 大任务要审核 | 只开常用的 | 平衡效率和可控性 |
| 👥 团队项目 | 需批准 | 需审核 | 只开项目需要的 | 改动会影响别人,需要留痕 |
| 🏭 涉及生产 | 需批准,禁止危险命令 | 需审核 | 最小集合 | 出错代价高,每一步都要把关 |
✓ 推荐做法
- 项目按"一起改动的代码"划分,而不是按目录随意划分
- 对话名写清楚任务,比如
fix-login-500、add-cart-api - 新项目第一个对话先让智能体介绍项目,确认它理解对了
- 在项目设置里禁用你明确不想让它碰的路径和 URL
✗ 常见误区
- 把整个用户目录或多个不相关的仓库放进一个项目
- 所有任务都在一个"万能对话"里进行
- 团队项目也用 Always Proceed
- 全局装了很多 MCP,每个项目都默认开放
📋可复用模板
请先熟悉这个项目,暂时不要修改任何文件:
1. 浏览目录结构,说明每个顶层目录的作用
2. 列出技术栈、主要依赖和版本
3. 找出程序入口和启动方式
4. 指出你认为最需要注意的 3 个地方(比如配置、密钥、脆弱的模块)
最后用一段话总结这个项目是做什么的。□ 项目只包含需要一起修改的文件夹
□ Security Preset:终端命令是否需要批准?
□ Artifact Review:实施计划是否需要审核?
□ File Access Rules:禁止访问 .env、密钥目录
□ Network Access Rules:只允许需要的域名
□ Terminal Commands:禁止 rm -rf、生产部署等危险命令
□ MCP Tools:只开这个项目需要的工具
□ 对话命名规范已告知团队📸官方界面截图
图源:Google Codelabs《Getting Started with Google Antigravity》,CC BY 4.0。点击图片可放大。
🤔思考题
你的前端和后端在两个仓库里,应该建一个项目还是两个?
看你通常怎么改。如果一个需求经常同时改前后端(比如新增一个字段),放进同一个项目,智能体能保持两边一致。如果两边由不同团队维护、很少联动,分开更清晰,权限也能分别设置。也可以两种都建:日常各用各的,跨端需求用合并的项目。
"产物自动通过"能提高效率,什么情况下它反而会降低效率?
当智能体理解错了需求时。如果跳过了实施计划审核,它可能花十几分钟写了一大堆方向错误的代码,你再让它回滚、重来,总时间反而更长。任务越大、需求越模糊,越值得在计划阶段花一分钟把关。
为什么建议新项目第一个对话"先不要改文件"?
先让它复述对项目的理解,相当于一次低成本的"对齐"。如果它对技术栈或结构理解有误,你可以马上纠正,或者把正确信息写进 Rules(第 9 章)。否则这些误解会带进后面每一次修改里。
📝小测验
1. 项目设置和全局 Settings 是什么关系?
2. 为什么建议"一个对话只做一件事"?
🛠️操作手册:一步步跟着做
理解了上面的思路后,展开下面的步骤动手操作。
学完你能:装好 Antigravity 2.0 和 IDE,创建项目,和智能体对话,并管理对话和项目设置。
预计用时:30 分钟
你需要:一台 Mac / Windows / 受支持的 Linux 电脑、Chrome 浏览器、一个个人 Gmail 账号
1.1 安装 Antigravity 2.0
- 打开下载页 https://antigravity.google/download,下载对应操作系统的安装包。
- 运行安装程序,会看到两个登录选项:
- Continue with Google:用个人 Google 账号登录,个人 Gmail 有免费的入门额度;如果你订阅了 Google AI Pro / Ultra,会自动享有对应的额度。本手册用这个。
- Use business account:企业场景,组织有 Google Cloud 项目并购买了许可证,或者用 Google Cloud 项目加 Agent Platform 按量付费。
- 点 Continue with Google,完成登录后点 Open Antigravity。
- 接下来会让你选主题、选择要安装的 Google 插件(可以先全部跳过)、同意服务条款。点 Finish,进入主界面。
1.2 安装 Antigravity IDE
- 主界面右上角有个 Install Antigravity IDE 按钮,点它会跳到下载页(也可以直接访问上面的下载页)。
- 点 Download。这里可以选择:下载你常用编辑器(VS Code、Zed、JetBrains 等)的 Antigravity 插件,或者下载独立的 Antigravity IDE 安装包。
- 运行安装程序,用同一个 Google 账号登录,所有步骤保持默认即可。
- 装好后,Dock 栏里会有两个图标:**Antigravity 2.0(白色背景)**和 Antigravity IDE(黑色网格背景)。
注意Linux 用户:如果用的是
.tar.gz安装包,启动器会直接配置好完整的 IDE 环境,应用菜单里只有一个图标,同时负责代码工作区和后台智能体管理。
检查点打开 Antigravity 2.0,右上角按钮显示 Open Antigravity IDE(而不是 Install IDE),说明两个都装好了。主界面左下角是 Settings,右侧面板显示 Select Project。
1.3 创建第一个项目
什么是项目
Antigravity 采用以项目为中心的设计:智能体能访问哪些文件、能用哪些工具、有哪些权限,都由项目决定。
- 一个项目可以包含一个或多个文件夹,比如同时包含前端仓库和后端仓库,让智能体看到完整的上下文。
- 每个项目有独立的智能体设置,可以给不同项目配置不同的安全策略。
动手
- 在电脑上创建一个文件夹:
$HOME/agy2-projects/my-first-project(不一定要是空文件夹)。 - 在 Antigravity 左侧导航栏的 Projects 区域,点 Create New Project,再选 New Project。
- 在弹出的文件选择器里选中刚才的文件夹。
- 想添加更多文件夹的话,点该项目的 Project settings,用 Add Folder 添加。现在不需要,直接点 Create,然后关闭设置页。
进阶项目设置的继承关系:每个项目会从全局 Settings 继承默认配置,包括产物审核策略、允许的工具、MCP 服务器配置等,然后可以在项目级别单独覆盖。好处是每个项目的上下文和工具都能保持精简,只给它需要的东西。
1.4 第一次对话
- 点 Start first conversation。
- 观察对话界面:可以选择模型,可以通过
+、@、/添加额外的上下文或命令。左侧项目列表里会出现my-first-project,它就是当前智能体工作的项目。 - 跟智能体打个招呼,再让它帮你找点新闻,比如"给我一些今天的科技新闻"。
1.5 管理对话
刚才的所有消息属于同一个对话线程,它显示在左侧对应项目的下面。
- 重命名:点对话旁边的三个点 → Rename,改成
conv-introduction。 - 新建对话:点项目名旁边的
+(New Conversation in Project),开一个全新的对话。 - 在新对话里输入:
Give me some sports news from across the world - 把这个对话重命名为
conv-sportsnews。现在同一个项目下有两个对话了。 - 左上角的 Conversation History 可以查看所有历史对话;顶部的 New Conversation 可以在当前项目或新项目里开对话。
1.6 项目设置:控制智能体的权限
进入方式:左侧项目旁边的齿轮图标 → Project Settings(也可以从主界面的 Settings 进入)。
建议先把整个设置页从头到尾浏览一遍。最重要的几项:
| 设置 | 作用 | 新手建议 |
|---|---|---|
| Security Preset | 执行终端命令、访问文件之前,是否需要你先批准 | 保持"需要批准" |
| Agent Behaviour | 生成实施计划(implementation_plan.md)等产物后,是否要你审核了才执行 |
重要项目保持"需要审核" |
| 本地权限 | 允许访问的文件路径、允许或禁止访问的 URL | 按需配置 |
| MCP 工具白名单 | 这个项目可以用哪些 MCP 工具 | 只开需要的,避免所有全局 MCP 都暴露给每个项目 |
进阶怎么平衡安全和效率:所有操作都要批准最安全,但会频繁打断你。一个常见做法是:练习项目和个人项目放宽(比如产物审核设为 Always Proceed),生产相关项目收紧,并且用项目级 MCP 白名单限制它能碰的外部系统。
🔗延伸阅读
- GoogleAntigravity 下载页桌面版、IDE 和各编辑器插件的下载入口。
- GoogleAntigravity 官方文档项目、工作区和权限设置的详细说明。
- YouTubeGoogle Antigravity 官方频道产品演示视频,适合直观了解界面。
让智能体干活:计划、产物、浏览器、定时任务
这一章是使用 Antigravity 的核心工作方式:先让它出计划,你审核后再执行,最后用产物验收。掌握这个循环,你就从"和 AI 聊天"变成了"管理一个 AI 工程师"。
🎯学完这一章,你能
- 用 /plan 让智能体先出方案
- 知道怎么审一份实施计划
- 看懂五种产物,用它们验收结果
- 写出一个"智能体一次就能做对"的任务描述
- 让智能体操作浏览器、执行定时任务
- 在桌面版和 IDE 之间切换
🖼️一图看懂:计划 → 审核 → 执行 → 验收
每个环节谁在做事、你该做什么,点击图中的环节查看。
- 用
/plan加任务描述发起请求 - 说清目标、背景、约束、验收标准
- 用
@文件指明相关代码
描述越清楚,后面返工越少。下方「可复用模板」有现成的任务描述模板。
- 调研相关代码,理解现状
- 生成任务清单(Task List)
- 生成实施计划
implementation_plan.md:改哪些文件、用什么技术、怎么验证
等待即可。这一步还没有改动任何代码。
- 按「审计划的五个问题」检查:范围、技术选择、边界情况、验证方法、风险操作
- 有问题:直接在计划上写批注
- 没问题:点 Proceed
这是整个循环里性价比最高的一步:在这里纠正方向只需改几行文字,等代码写完再发现就要推倒重来。
- 编辑器:写代码
- 终端:安装依赖、运行测试
- 浏览器:打开应用实际点一遍
- 按权限设置批准它请求的命令
- 不熟悉的命令先看清楚再批准
- Walkthrough:改了什么、怎么测试
- 代码 diff:逐行改动
- 截图:界面类任务的前后对比
- 看 diff 和测试结果,而不是只听它说"完成了"
- 不满意就继续提要求,回到执行环节
💡为什么要"先计划、后执行"
纠错成本随时间急剧上升
软件工程里有个老规律:问题发现得越晚,修复成本越高。用智能体时这个规律更明显,因为它写代码的速度极快:方向一旦错了,几分钟就能产出几百行错误的代码。在计划阶段花一分钟检查方向,是最划算的投入。
产物解决"信任缺口"
以前 AI 说"bug 修好了",你只能自己读代码确认。Antigravity 让智能体主动拿出证据:计划说明它打算怎么做,diff 说明它实际改了什么,Walkthrough 说明怎么验证,截图说明界面变成了什么样。你审的是证据,而不是它的自我评价。
在产物上批注,比在聊天里描述更准确
在聊天框里说"第三步里那个接口改一下"容易产生歧义。直接在计划的对应位置写批注,智能体能准确定位你指的是哪里。后面的章节(第 8、9 章)会大量使用这个能力,连图片上都可以批注。
📋五种产物:各自告诉你什么
✅ Task List
写代码前规划的步骤。看一眼方向和范围对不对,一般不需要改。
📝 Implementation Plan 重点审
技术方案:改哪些文件、用什么技术。使用 /plan 时生成,默认等你批准。
🎬 Walkthrough
完成后的总结:改了什么、怎么测试。是你验收的起点。
± Code diffs
逐行改动,可以评论。重要改动一定要看。
🖼️ Screenshots
界面改动前后的截图,验证 UI 类任务最直观。
ℹ️ 什么时候会有产物?
由智能体根据任务复杂度决定,不是每次都有。想确保有计划,就用 /plan。
✅怎么用好:审计划的五个问题
拿到实施计划后,花一分钟问自己这五个问题。
1. 范围对吗?
它要改的文件是不是你预期的?有没有动了不该动的模块,或者漏掉了该改的地方?
2. 技术选择合理吗?
有没有引入新的依赖或框架?和项目现有风格一致吗?
3. 边界情况考虑了吗?
空值、错误输入、网络失败、权限不足这些情况怎么处理?
4. 怎么验证?
计划里有没有写测试方法?如果没有,批注要求它补上。
5. 有没有风险操作?
删除文件、修改数据库、改配置、执行部署……这些要特别留意。
📋可复用模板
/plan
【目标】要实现什么,一句话说清
【背景】为什么要做,相关的模块或文件是 @...
【要求】
- 功能点 1
- 功能点 2
【约束】
- 不要引入新的依赖 / 必须兼容 xxx
- 不要修改 xxx 模块
【验收标准】
- 运行 xxx 命令,测试全部通过
- 在浏览器里打开 xxx,能看到 xxx这一步请先说明为什么选择 xxx,有没有更简单的方案?
这里不要新建文件,复用现有的 @utils/xxx
请补充:输入为空 / 网络失败时怎么处理
这一步风险较高,请拆成两步,并先备份
请在计划最后加上验证步骤:运行 xxx 并截图
每个工作日早上 9 点:
汇总过去 24 小时 GitHub 仓库 xxx 新开的 issue,
按"bug / 功能请求 / 问题"分类,
每类列出标题和链接,最后给出建议优先处理的 3 个。🌐浏览器子智能体与定时任务
/browser:让智能体上网
智能体会启动一个浏览器子智能体,通过 Chrome 调试会话打开网页、点击、读取内容,然后把结果交回给你。第一次会先征求你的许可。
它最大的价值是测试你自己的 Web 应用:写完代码后,智能体自己打开页面点一遍,发现问题再修(第 6 章会看到)。
注意需要 Chrome 是系统默认浏览器。
/schedule:定时任务
任务内容就是一段提示词,可以写得很详细,也可以调用 MCP 工具访问外部系统。适合:每日新闻或数据汇总、定期依赖安全扫描、每周生成周报、定期检查服务状态。
除了命令,也可以在主界面的 Schedule 入口新建、停用和删除任务。
🧑💻什么时候切换到 IDE
| Antigravity 2.0 | Antigravity IDE | |
|---|---|---|
| 定位 | 智能体指挥中心 | 写代码的完整编辑器 |
| 适合 | 派活、看产物、多项目多智能体管理、定时任务 | 深入阅读和修改代码、调试、需要编辑器功能时 |
| 切换方式 | 辅助面板里点 Open IDE;IDE 内用 Cmd/Ctrl+E 在 Agent Manager 和编辑器之间切换,Ctrl+L 打开聊天框 | |
📸官方界面截图
图源:Google Codelabs《Getting Started with Google Antigravity》,CC BY 4.0。
🤔思考题
智能体说"所有测试都通过了",你还需要看什么?
至少看三件事:一是测试本身测了什么,AI 写的测试可能只覆盖正常路径,甚至为了通过而改测试;二是 diff 有没有超出范围的改动;三是亲自跑一遍关键路径。"测试通过"是必要条件,不是充分条件。
什么样的任务可以不用 /plan,直接让它做?
改动小、范围明确、容易验证、出错容易回滚的任务,比如"给这个函数加注释""把这个变量重命名"。判断标准是:如果它做错了,你能在 30 秒内发现并撤销吗?能的话就直接做。
你会把哪些重复性的工作写成定时任务?
找那些"每天或每周都要做、内容大同小异、主要是收集和整理信息"的工作。比如:晨会前汇总昨天的 PR 和 issue、每周检查依赖更新、每天检查线上错误日志并归类。关键是任务结果要有人看,否则就是在浪费额度。
📝小测验
1. 在"计划 → 执行 → 验收"循环里,哪一步纠错成本最低?
2. /browser 命令无法启动,最可能的原因是?
3. 想让智能体修改计划中的某一步,最准确的方式是?
🛠️操作手册:一步步跟着做
包含 /browser、定时任务、完整的 /plan 练习和切换到 IDE 的步骤。
学完你能:用斜杠命令让智能体先出计划再执行,看懂它交付的各种产物,让它操作浏览器、执行定时任务,并在需要时切换到 IDE。
预计用时:40 分钟
2.1 斜杠命令
在对话框输入 / 会弹出可用命令。桌面版最常用的三个:
| 命令 | 作用 |
|---|---|
/plan |
让智能体先写实施计划,你批准后再执行。重要任务一定要用 |
/browser |
启动一个浏览器子智能体去操作网页 |
/schedule |
设置一次性或周期性任务,比如每周一、三早上 9 点 |
动手:让智能体上网
输入:
/browser 访问一个新闻网站,告诉我今天的头条新闻
智能体会启动一个浏览器子智能体,尝试和 Chrome 建立调试会话,并先征求你的许可。允许之后,它会打开网站、抓取新闻,把结果返回给你。
注意
/browser要求 Chrome 是系统默认浏览器,否则无法启动调试会话。
2.2 定时任务
除了 /schedule 命令,也可以在主界面的 Schedule 入口管理定时任务。
动手
- 点 Schedule → New,创建一个任务:每天下午 6 点提醒我开会。填好后点 Add Scheduled Task。
- 再建一个:每 20 分钟提醒我休息一下。
- 现在列表里有两个任务,试试停用和删除。
进阶定时任务远不止提醒。任务内容就是一段提示词,可以写得很详细,也可以调用工具(通过 MCP 访问外部系统)。例如:每天早上自动汇总 GitHub 上新开的 issue;每周五生成一次依赖安全扫描报告。
2.3 产物(Artifacts):智能体的"工作证据"
为什么需要产物
以前 AI 说"bug 修好了",你得自己读代码才能确认。Antigravity 用产物来解决这个"信任缺口":智能体主动拿出证据,证明它做了什么、做对了没有。
| 产物 | 什么时候出现 | 你该怎么用 |
|---|---|---|
| Task List(任务清单) | 写代码前,智能体规划步骤时 | 一般不用改,看一眼方向对不对,需要时加批注 |
| Implementation Plan(实施计划) | 使用 /plan 时,开始执行前 |
重点审核:要改哪些文件、用什么技术方案。除非审核策略设为 Always Proceed,否则会等你批准 |
| Walkthrough(操作演示) | 任务完成后 | 改动总结,以及怎么测试 |
| Code diffs(代码差异) | 改代码时 | 逐行审查,可以加评论 |
| Screenshots(截图) | 涉及 UI 时 | 对比改动前后的界面 |
产物不一定每次都有。智能体会根据任务复杂度、是否使用了
/plan等因素决定要不要生成。
动手:完整走一遍"计划 → 执行 → 验收"
-
新建一个对话,输入:
/plan Design a Node application that I can run from the command line to get me the latest news from Google. -
智能体会生成第一个产物:实施计划。
-
点右上角的 **Auxiliary Pane(辅助面板)**开关,会看到"1 Artifact",点 Implementation Plan 查看详情。
-
确认没问题后点 Proceed。执行过程中可能会请求权限,允许即可。
-
完成后,智能体会提示任务已完成并通过验证。你还能看到 Walkthrough 和文件 diff。
-
不需要打开 IDE,直接点
package.json、index.js就能查看内容并加评论。
注意有时看不到 Proceed 按钮,智能体直接就开始执行了。这和你的审核策略设置有关,见 1.6。
进阶在产物上加批注是 Antigravity 很有特色的交互:不用在聊天框里描述"第三步改成……",直接在计划的对应位置写批注,智能体会读取并修改。第 8、9 章会大量用到这个能力,连图片上都可以批注。
2.4 切换到 Antigravity IDE
需要完整的编辑器时:
- 打开辅助面板,点 Open IDE。
- 启动时可能会弹出一个警告,这是正常的,点 Yes。
- IDE 里有文件树、编辑器和 Agent Panel(智能体面板),可以在面板里让智能体解释、生成或修复代码。
IDE 常用操作(后面章节会用到):
| 操作 | 方式 |
|---|---|
| 切换 Agent Manager 和编辑器 | CMD+E(Mac)/ CTRL+E(Windows),或右上角的 Open Editor / Open Agent Manager 按钮 |
| 编辑器模式下打开聊天框 | Ctrl+L |
| 打开 / 关闭智能体面板 | 编辑器里的 Toggle Agent Pane 按钮 |
| 新建工作区 | Agent Manager 里点 + Open Workspace → Open New Workspace |
| 在工作区里开新对话 | 在 Start Conversation 里选工作区,或点侧边栏工作区名旁边的 + |
| 打开终端 | 菜单 Terminal → New Terminal |
IDE 界面的六个主要区域:
| 区域 | 作用 |
|---|---|
| Agent Manager | 管理你的所有智能体 |
| Toggle Agent Pane | 显示 / 隐藏智能体面板 |
| New Session | 开新对话,旧对话保留 |
| Past Conversations | 查看历史对话 |
| Agent Pane | 和智能体对话的地方 |
| Explorer | 文件浏览器 |
进阶IDE 里的智能体能跨三个界面工作:在编辑器里写代码给你看;在终端里执行命令(会征求你同意);在浏览器里运行并测试你的 Web 应用。你还可以同时开多个智能体并行工作:一个重构认证逻辑,一个写单元测试,一个在后台调研某个库。
🔗延伸阅读
- AnthropicBuilding Effective Agents文中的"人类在关键节点把关"(human-in-the-loop)思想,正是计划审批机制的理论基础。
- GoogleAntigravity 文档:Artifacts产物类型和审核策略的官方说明。
终端里的 Antigravity:CLI 完整实战
不离开终端,就能让智能体读懂陌生代码库、补文档、写测试、找 bug、重构前后端。这一章重点讲清楚 /plan、/goal、/grill-me 三种工作模式该怎么选,以及怎么把 CLI 放进脚本和 CI。
🎯学完这一章,你能
- 安装并登录 Antigravity CLI(agy)
- 用 CLI 快速上手一个陌生代码库
- 根据任务选择 /plan、/goal 或 /grill-me
- 用子智能体和后台任务并行工作
- 用 agy -p 把智能体写进脚本
- 知道 Hooks、Plugins 能做什么
🖥️互动演示:CLI 命令模拟器
点击命令,看看在练习项目(罗马数字转换器)里 agy 会怎么响应。输出根据官方 lab 的真实结果整理。
💡为什么要用 CLI
终端是开发者的主场
很多开发工作本来就在终端里:git、构建、测试、部署、远程服务器。CLI 让智能体出现在你已经在的地方,减少在编辑器、浏览器、聊天窗口之间来回切换。
它和桌面版是同一个引擎
多步推理、跨文件编辑、调用工具、对话历史、MCP、Skills,CLI 都有。区别只在交互形式:键盘驱动、文本界面、能通过 SSH 在远程机器上用。
它能被"程序调用"
这是 CLI 最独特的价值。agy -p "…" 执行完就退出,可以放进 shell 脚本、定时任务、CI 流水线,让智能体成为自动化流程的一个环节,比如每次提交后自动生成变更说明。
🧭/plan、/goal、/grill-me:怎么选
三种命令对应三种不同的"你和智能体之间的分工"。
| 命令 | 你的角色 | 适合 | 不适合 |
|---|---|---|---|
/grill-me | 回答问题,做决定 | 需求模糊、有多种做法、涉及设计取舍 | 需求已经很明确的小改动 |
/plan | 审方案,批准后放手 | 改动范围大、有风险、需要先对齐方向 | 一两行的小修改 |
/goal | 定标准,等结果 | 测试全绿、lint 无报错、构建成功这类可验证目标 | "写得优雅点"这类无法机器判断的目标 |
/grill-me 对齐需求 → 再 /plan 审方案 → 最后用 /goal 让它把测试跑到全绿。✅怎么用好 CLI
上手陌生代码库的顺序
架构总览 → 跑起来 → 补文档 → 补测试 → 找 bug → 再改功能。前几步几乎没有风险,又能让你和智能体都建立对项目的理解。官方 lab 正是按这个顺序设计的。
盯住上下文用量
长任务做到一半时用 /context 看看。如果"Agent responses"和"Tool calls"占了大头,说明历史太长,可以开新对话,只带上必要的结论继续。
简单操作不要绕道 AI
! git status、! ls 这类命令直接执行,又快又不耗额度。
长任务放后台
按 Ctrl+b 把长任务放到后台,用 /tasks、/agents 查看进度;想到一个旁支问题就用 /btw,不打断主任务。
用 Hooks 自动做"每次都要做"的事
比如每次写完文件自动跑格式化、每次提交前自动跑 lint。定义在插件的 hooks.json 或 settings.json 里,用 /hooks 查看。
AI 写的测试要审
它常常只覆盖正常路径,边界情况要你来补充要求。
📋可复用模板
Explain this codebase to me, including its overall architecture,
key dependencies, and the main entry points for the application.
Then list: how to run it locally, how to run tests,
and the 3 riskiest areas to change.
Review @<文件> for logic bugs. In particular check:
- edge cases: empty input, negative numbers, very large values
- error handling: what happens when <外部调用> fails
- off-by-one errors in loops and ranges
For each issue, show the failing input and a suggested fix./goal Make all tests in tests/ pass and `npm run lint` report 0 errors.
Do not modify existing test assertions; fix the source code instead.
#!/bin/bash
# 每次提交后生成变更说明
set -e
agy -p "Summarize the changes in the last commit for a changelog.
Use bullet points grouped by feat / fix / docs." > CHANGELOG_DRAFT.md
echo "Draft written to CHANGELOG_DRAFT.md"
在 CI 里使用前,需要先确认运行环境的登录认证方式,并限制智能体的权限。
📸官方界面截图
图源:Google Codelabs《Antigravity CLI》,CC BY 4.0。
🤔思考题
/goal 会一直循环直到测试通过,它会不会为了通过而"作弊"?
有可能,比如修改测试断言、跳过失败的测试、硬编码返回值。防范方法:在目标里明确写"不要修改现有测试断言";完成后看 diff 里测试文件有没有被改;关键逻辑自己补几个测试用例。目标定义得越严格,结果越可靠。
团队里谁最适合先用 CLI?
日常大量时间在终端里的人:后端、运维、数据工程师,以及经常 SSH 到远程机器工作的人。对他们来说,CLI 比切换到图形界面更自然。习惯图形界面的人可以先用桌面版,两边概念相通。
把 agy -p 放进 CI,需要考虑哪些风险?
至少考虑:凭据(用什么身份登录,权限多大);权限(能不能执行命令、改文件、推代码);成本(每次提交都跑会消耗多少额度);可靠性(输出不稳定时流程怎么处理)。建议先从"只读、只生成报告"的场景开始,比如生成变更说明、代码审查意见,而不是直接让它改代码。
📝小测验
1. "让所有测试通过,lint 无报错"最适合用哪个命令?
2. 想在 CI 流水线里调用智能体,应该用?
3. 只想看一下 git 状态,最省事的方式是?
🛠️操作手册:一步步跟着做
从安装、登录到 7 个实战练习、子智能体、非交互模式和 MCP。需要 Google Cloud 项目,见附录 A。
学完你能:安装并登录 Antigravity CLI,用它快速理解陌生代码库、运行项目、补文档、写测试、找 bug、重构前后端,掌握子智能体、非交互模式和 Bash 模式。
预计用时:90 分钟
你需要:一个开启了计费的 Google Cloud 项目(新用户有 300 美元免费试用额度),见附录 A。本章在 Cloud Shell 里操作,也可以用你本地的终端。
3.1 CLI 是什么
Antigravity CLI 是 Antigravity 的轻量级终端界面,命令是 agy。它和桌面版有一样的核心能力:多步推理、跨文件编辑、调用工具、保存对话历史。好处是不用离开终端,减少来回切换,特别适合远程服务器和 SSH 场景。
3.2 准备练习项目
本章用一个 Python Web 应用做练习:把数字转换成罗马数字。
-
打开 Google Cloud Console,点搜索栏右边的图标激活 Cloud Shell,点 Continue,如果提示授权就点 Authorize。
-
在终端里启用 Agent Platform API:
gcloud services enable aiplatform.googleapis.com -
克隆练习项目:
git clone https://github.com/gitrey/calendar-app-lab cd calendar-app-lab -
点 Cloud Shell Editor 打开编辑器,打开
calendar-app-lab文件夹,再在编辑器里新开一个终端。
3.3 安装和登录
-
安装:
curl -fsSL https://antigravity.google/cli/install.sh | bash -
看安装器的输出,执行它给出的命令,把
agy加入 PATH。示例如下,你的用户名会不一样,以实际输出为准:echo 'export PATH="/home/student_01_7c9be0de109d/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc -
确认在项目根目录,然后启动:
cd ~/calendar-app-lab agy -
登录流程:
- 选择 Use a Google Cloud project
- 点 Click here to authenticate(或复制完整 URL 到浏览器新标签页打开),按步骤生成验证码
- 回到终端粘贴验证码,设置 Google Cloud 项目
- Location 设为
global - 选一个配色方案,点 Next
- 接受服务条款和数据使用条款
-
验证安装:
/config选择 Color Scheme,确认可以修改。再看看可用的模型:
/model
注意
- 提示
agy找不到:没有执行第 2 步的 PATH 命令。- 一定要在项目根目录启动
agy,它会以当前目录作为工作范围。
3.4 实战 1:快速理解陌生代码库
接手新项目时,先让智能体给你讲一遍:
Explain this codebase to me, including its overall architecture, key dependencies, and the main entry points for the application.
它会总结整体架构、关键依赖和主入口。你也可以追问某个文件或某个复杂函数的作用。
3.5 实战 2:把应用跑起来
Setup a local virtual environment and run this app locally.
智能体会创建虚拟环境、安装依赖,并启动应用。过程中会请求执行命令,确认工具调用即可。应用启动后,点输出里的链接打开预览,输入 25 回车,应该看到 XXV。
进阶 CLI 很擅长处理"跑不起来"的问题:它能生成
requirements.txt或Dockerfile,读懂报错堆栈,告诉你是缺包还是版本冲突,并给出准确的pip install命令。
3.6 实战 3:补文档
给所有 Python 文件加上详细的 docstring:
Add detailed docstrings to all files.
更新 .gitignore:
Update .gitignore: add __pycache__ and .venv folders.
查看改动有两种方式:在编辑器里切到 Source Control 视图,或者直接在 CLI 里输入:
/diff
3.7 实战 4:用 /goal 写单元测试
/goal 是 CLI 的一个重要命令:一直工作,直到目标完全达成。
/goal Generate unit tests for @calendar.py
@calendar.py 表示引用这个文件。智能体会写测试、运行、发现失败就修,反复循环直到全部通过。接受工具调用后查看结果,再到 Source Control 里看最新改动。
注意AI 生成的测试往往只覆盖了基本路径。它能给出不错的初始断言和 mock,但边界情况要你自己审核,确认测试真的有意义,而不是只证明代码"能跑"。
进阶
/goal适合"完成标准能被机器验证"的任务,比如测试全绿、lint 无报错、构建成功。完成标准越明确,/goal越可靠。完成标准模糊的任务(比如"把代码写得优雅点")不适合用它。
3.8 实战 5:找逻辑 bug
告诉智能体你担心什么,它会针对性地检查:
Are there any bugs in the conversion logic? Check if negative numbers are handled properly.
它能发现条件处理错误、潜在逻辑漏洞、差一错误(off-by-one)等问题。你把代码的预期行为讲得越清楚,它越容易找到细微的偏差。
3.9 实战 6:用 /plan 重构 UI
-
让智能体先规划,把 UI 改成用 Bootstrap:
/plan Refactor UI to use Bootstrap library -
用
/artifacts查看实施计划。 -
批准计划,开始实施,过程中确认工具调用。
-
启动应用:
Start the application -
刷新页面查看新界面。
-
再加上错误处理:
Implement error handling to display an error page when issues occur. -
刷新页面,访问一个不存在的地址(比如
/convert1),应该看到错误页。
3.10 实战 7:用 /goal 重构后端
把转换请求存在内存里,并加一个历史记录页面:
/goal Store requests in memory and create a page to display conversion history. Add links on all pages to view the history.
执行过程中,随时可以用这个命令查看上下文窗口用了多少:
/context
在聊天里审核并接受改动,然后在应用里提交几次转换,打开历史记录页面确认。
3.11 子智能体与后台任务
CLI 有一个异步子智能体框架:主智能体可以把并行工作、后台调研、系统测试分派出去,不会阻塞你当前的对话。
| 操作 | 作用 |
|---|---|
/agents |
查看正在运行的子智能体 |
/tasks |
查看后台运行的非智能体进程(比如开发服务器) |
/btw |
插一个旁支问题,不打断主任务 |
Ctrl+b |
把正在执行的长任务放到后台 |
3.12 用 /grill-me 在动手前对齐需求
/grill-me 会在实施前像面试一样问你一系列问题,把模糊的需求问清楚:
/grill-me Refactor UI to use Bootstrap library
示例输出(每个问题都带推荐选项,也可以选 Write-in 自己写):
Question 1/1: How would you like to structure the user flow and design theme for this Roman Numeral converter?
> 1. (Recommended) Keep the multi-page template structure with the majestic, imperial glassmorphic dark theme.
2. Convert the flow into a modern Single-Page Application (SPA) using AJAX/Fetch, rendering results dynamically on the same page.
3. Adopt a standard minimalist Bootstrap light/dark theme with corporate colors (blue primary, clean white cards) instead of the
imperial-themed style.
4. Write-in...
.
.
Question 1/1: Which visual theme and color palette would you prefer for the Roman Numerals Converter?
> 1. (Recommended) Sleek Dark Mode with Glassmorphism: Deep space/midnight background, glowing neon blue/purple
gradients, and semi-transparent frosted-glass cards.
2. Roman Antique / Golden-Ivory theme: Warm cream/marble background, rich gold highlights, deep crimson/burgundy
accents, and elegant serif typography.
3. Clean Modern Tech: Slate gray and vibrant emerald green accents, minimalist clean white cards, and smooth micro-
interactions.
4. Write-in...
.
.
Question 1/1: Which interactive features would you like to incorporate to make this a premium user experience? (Select
all that apply)
> 1. [ ] (Recommended) Dynamic Live Validation: Instantly validate input (range 1-3999) as the user types with helper
messages.
2. [ ] (Recommended) "Surprise Me" Button: Instantly generates a random integer and converts it to its Roman numeral
counterpart.
3. [ ] (Recommended) Quick-Copy Clipboard Button: A one-click button to copy the roman numeral result with a
toast/notification checkmark.
4. [ ] (Recommended) Interactive Reference Table: A beautiful Cheat Sheet showing standard Roman numeral symbols (I, V,
X, etc.) with responsive hover effects.
5. [ ] Keep it extremely minimal with only the conversion card.
6. Write-in.
进阶
/plan和/grill-me怎么选:/plan是"我想好了,你出方案给我审";/grill-me是"我还没想清楚,你先帮我把需求问明白"。需求越模糊、改动越大,越应该先用/grill-me。
3.13 用 /goal 更新 README
/goal Analyze README.md file and update it with latest codebase changes.
完成后用 Markdown 预览模式打开 README.md 检查。
3.14 非交互模式:把 CLI 写进脚本和 CI/CD
先退出当前的 agy 会话,或者新开一个终端,然后运行:
agy -p "Explain the architecture of this codebase"
-p 表示直接传入提示词,执行完就退出,不需要人工交互。这样就能把 CLI 集成进自动化流程:代码分析、生成文档、CI/CD 流水线里的质量检查等。
3.15 Bash 模式:直接执行命令
简单操作不用绕道 AI,用 ! 前缀直接执行 shell 命令:
! git status
3.16 CLI 的扩展机制(预告)
CLI 和桌面版一样可以扩展,详细内容见后面的章节:
| 机制 | 说明 | 详见 |
|---|---|---|
| MCP | 接入外部系统,配置文件在 ~/.gemini/antigravity-cli/mcp_config.json |
第 4 章 |
| Skills | Markdown 写的操作手册。在 CLI 里注册后会自动变成斜杠命令,比如 /refactor-ui |
第 7 章 |
| Hooks | 在智能体执行操作之前或之后自动触发,比如写完文件后自动跑 prettier 格式化。定义在插件的 hooks.json 或主配置 settings.json 里,用 /hooks 查看 |
— |
| Plugins(插件) | 带命名空间的打包单元,可以把 skills、后台子智能体、lint 规则、MCP 定义和 hooks 打包成一个整体分发 | — |
3.17 清理
练习结束后,删除 Google Cloud 项目或其中创建的资源,避免继续产生费用。
🔗延伸阅读
- GoogleAntigravity CLI 文档命令、配置文件、Hooks 和 Plugins 的完整说明。
- GoogleGemini 提示词写作指南官方的提示词技巧,对写任务描述很有帮助。
MCP:给智能体接上外部系统
没有 MCP,智能体只能读写你本地的文件;有了 MCP,它能部署 Cloud Run、读设计稿、开 GitHub PR、查最新文档。这一章讲清楚 MCP 的工作原理,以及怎么安全、精简地配置它。
🎯学完这一章,你能
- 说清楚 MCP 解决了什么问题
- 理解一次 MCP 调用的完整过程
- 在桌面版、IDE、CLI 里添加 MCP
- 区分本地和远程 MCP 服务器
- 按最小权限原则配置 MCP
- 生成一份不会覆盖已有配置的 mcp_config.json
🖼️一图看懂:一次 MCP 调用是怎么发生的
以"把这个应用部署到 Cloud Run"为例,逐步看请求如何流动。
用自然语言说:"把这个应用部署到 Cloud Run"。
你不需要知道该用哪个工具、传什么参数,这些由智能体决定。
- 启动时,每个已开启的 MCP 服务器都会把工具清单和说明告诉它
- 根据请求选出最合适的工具,比如
deploy_local_folder - 决定调用参数
工具越多,上下文越挤,也越容易选错。这就是要按项目精简 MCP 的原因。
Antigravity 内置的 MCP Client 按协议把"调用哪个工具、带什么参数"发给对应的服务器。
根据权限设置,这一步可能需要你批准,尤其是写操作。
- MCP Server 像"翻译官":把标准化的工具调用翻译成具体系统的 API
- 用你的凭据操作 Cloud Run
本地服务器:用 command 在你电脑上启动进程。
远程服务器:用 serverUrl 连接。
部署结果经 Server、Client 回到智能体,智能体用自然语言告诉你结果。
"部署完成,地址是 https://photogallery-xxx.us-central1.run.app"
💡为什么需要 MCP
解决"N × M"集成难题
没有统一标准时,每个 AI 工具都要为每个外部系统单独写集成:5 个 AI 工具 × 20 个系统 = 100 套集成。MCP 定义了统一的协议,系统方写一次 MCP Server,所有支持 MCP 的 AI 工具都能用。
这就是为什么 Antigravity 的 MCP 商店里有大量现成的服务器(Cloud Run、GKE、GitHub、Stitch……),一键就能装。
让智能体基于真实数据工作
模型的知识有截止时间,也不知道你系统的当前状态。MCP 让它能查询实时信息(当前有哪些服务在跑、最新文档怎么写、设计稿的精确色值),而不是凭记忆猜测。
MCP 不只是"工具"
MCP 协议定义了三类能力:Tools(可执行的操作,如部署、查询)、Resources(可读取的数据,如文件、记录)、Prompts(预设的提示词模板)。日常用得最多的是 Tools。
🧰互动工具:MCP 配置生成器
勾选需要的服务器,生成合并好的配置。手动合并进你已有的配置文件,而不是用 echo > 覆盖。
1. 选择服务器
2. 放在哪里
📍 保存到:~/.gemini/config/mcp_config.json
✅怎么用好 MCP
✓ 推荐做法
- 最小权限:只装需要的服务器,用不到的工具单独关掉
- 用项目级白名单(桌面版)或
.agents/mcp_config.json(CLI)按项目开启 - 优先使用官方或可信来源的 MCP 服务器
- 给 token 设置最小权限范围,比如 GitHub token 只给需要的仓库
- 装好后先用一个只读请求测试,比如"列出我的 Cloud Run 服务"
✗ 常见误区
- 见一个装一个,几十个工具全部开着
- 用
echo '…' > mcp_config.json覆盖掉已有配置 - 把带 token 的配置文件提交到 Git
- 来源不明的 MCP 服务器直接装,它能用你的凭据做任何事
- 改完 CLI 配置不重启 agy,以为没生效
| 入口 | 怎么添加 | 配置文件 |
|---|---|---|
| 桌面版 | Settings → Customizations → Installed MCP Servers → Add MCP | ~/.gemini/config/mcp_config.json |
| IDE | 智能体面板 "..." → MCP Servers(商店);或 MCP → Manage MCP servers → View Raw Config | 同上 |
| CLI | 编辑配置文件后重启 agy,用 /mcp 检查 | 全局 ~/.gemini/antigravity-cli/mcp_config.json;项目 .agents/mcp_config.json |
📋可复用模板
{
"mcpServers": {
"cloudrun": {
"command": "npx",
"args": ["-y", "@google-cloud/cloud-run-mcp"]
},
"context7": {
"serverURL": "https://mcp.context7.com/mcp"
}
}
}先不要做任何修改。请列出你现在可以使用的 MCP 工具,
按服务器分组,每个工具用一句话说明用途。
然后用 <服务器名> 执行一个只读操作验证连接,
比如:Find me the list of services running in Cloud Run.
Use context7 tools to look up how to implement flex grid
in react mui library, then apply it to @src/Layout.tsx📸官方界面截图
图源:Google Codelabs《Getting Started with Google Antigravity》《Antigravity CLI》《Spec-Driven Development in Antigravity》《SDD with ADK》,CC BY 4.0。
🤔思考题
同样是"让智能体查文档",用 context7 MCP 和直接让它上网搜索有什么区别?
context7 这类文档 MCP 返回的是结构化、针对具体库和版本的文档片段,噪音少、准确率高;网页搜索结果更杂,可能是过时的博客或问答。对于频繁使用的框架,配一个文档 MCP(或第 9 章的 mcpdoc + llms.txt)能显著减少"用了过时 API"的问题。
你团队最值得接入的 MCP 是哪个?怎么判断?
找你最常需要在 AI 和另一个系统之间复制粘贴的地方:经常把 Jira 需求贴给 AI?接 Atlassian。经常把报错日志贴给 AI?接日志或云平台 MCP。复制粘贴的频率越高,接入 MCP 的收益越大。
一个 MCP 服务器能做的事情,就是你凭据能做的事情。这意味着什么?
意味着 MCP 的风险上限等于你账号的权限上限。如果你的 GitHub token 有所有仓库的写权限,智能体通过 GitHub MCP 理论上也能改所有仓库。所以要给 MCP 单独准备权限受限的凭据,并对写操作保持人工批准。
📝小测验
1. 配置文件里用 serverURL 的 MCP 服务器是?
2. 为什么不建议安装很多用不到的 MCP 服务器?
🛠️操作手册:一步步跟着做
在桌面版、IDE、CLI 里分别添加 MCP,以及常用服务器的完整配置。
学完你能:理解 MCP 是什么,在桌面版、IDE 和 CLI 里添加和管理 MCP 服务器,知道常用 MCP 服务器能做什么。
预计用时:30 分钟
4.1 MCP 是什么
**MCP(Model Context Protocol,模型上下文协议)**是连接智能体和外部系统的标准协议。没有 MCP 时,智能体只能读写你本地的文件;有了 MCP,它可以:
- 列出、部署 Cloud Run 服务
- 读取 Stitch 里的设计稿
- 创建 GitHub PR、更新 Jira 工单
- 查询最新的技术文档
MCP 服务器分两种:本地(在你电脑上启动一个进程,用 command 配置)和远程(连接一个 URL,用 serverURL 配置)。
4.2 在桌面版里添加 MCP
-
打开 Settings → Customizations,找到 MCP 服务器配置区域,进入 Installed MCP Servers。
-
点 Open MCP Config 会打开配置文件
$HOME/.gemini/config/mcp_config.json,一开始是空的。熟悉配置格式的话,也可以直接编辑这个文件。 -
点 Add MCP,会看到大量预置的 MCP 服务器,尤其是各种 Google Cloud 服务,一键安装。
-
找到 Google Cloud Run,点 Add。
-
安装后它会出现在列表里,并显示它提供的所有工具。可以单独开关某个工具,也可以整体开关这个服务器。
-
再点 Open MCP Config,会看到配置文件里多了这一段:
{ "mcpServers": { "cloudrun": { "command": "npx", "args": [ "-y", "@google-cloud/cloud-run-mcp" ] } } } -
测试:在对话里输入一个需要用到它的请求,智能体会自动找到并使用 Cloud Run MCP:
Build and deploy a Cloud Run service
4.3 在 IDE 里添加 MCP
IDE 里有两个入口:
- MCP 商店:智能体面板顶部的 "..." 菜单 → MCP Servers,搜索并点 Install。(Agent Manager 里也能找到 MCP Servers 入口。)
- 手动编辑配置:智能体面板右上角的 "..." → MCP → Manage MCP servers → View Raw Config,会打开
mcp_config.json。编辑后记得保存。
4.4 在 CLI 里添加 MCP
CLI 有两级配置:
| 范围 | 配置文件位置 |
|---|---|
| 全局 | ~/.gemini/antigravity-cli/mcp_config.json |
| 工作区(当前项目) | .agents/mcp_config.json |
动手:接入 context7(查询最新技术文档)
-
退出当前的
agy会话(或新开一个终端),创建配置文件:echo '{ "mcpServers": { "context7": { "serverURL": "https://mcp.context7.com/mcp" } } }' > ~/.gemini/antigravity-cli/mcp_config.json注意
>会覆盖整个文件。如果你已经配置过其他 MCP 服务器,不要直接运行这条命令,而是用编辑器打开文件,把context7这一段合并进mcpServers里。 -
启动
agy,查看已配置的 MCP 服务器:/mcp -
测试:
Use context7 tools to look up how to implement flex grid in react mui library批准工具调用后查看结果。
4.5 常用 MCP 服务器配置示例
下面是一份可以直接参考的多服务器配置:
{
"mcpServers": {
"Snyk Security Scanner": {
"command": "snyk",
"args": [
"mcp",
"-t",
"stdio",
"--experimental"
],
"env": {}
},
"atlassian": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.atlassian.com/v1/sse"
]
},
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
},
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "******"
}
}
}
}
| 服务器 | 能做什么 |
|---|---|
| Snyk | 不离开工作区就能扫描代码和依赖的安全漏洞 |
| Atlassian | 连接 Jira 和 Confluence,用自然语言创建、搜索、更新工单和文档 |
| Playwright | 浏览器自动化:网页测试、数据抓取 |
| GitHub | 访问仓库:管理 PR、分拣 issue、分析代码 |
| Cloud Run | 列出、部署、管理 Cloud Run 服务 |
| context7 | 查询各种库和框架的最新文档 |
| Stitch | 读取 Stitch 设计稿(第 5 章) |
| ADK Docs | 查询 ADK 官方文档(第 9 章) |
注意 配置里的 token、API key 是敏感信息,不要把配置文件提交到代码仓库。
进阶MCP 不是越多越好。每个 MCP 服务器的工具描述都会占用上下文,工具多了智能体也更容易选错。建议:全局只放通用的,项目级通过 MCP 白名单(桌面版)或
.agents/mcp_config.json(CLI)按需开启。
🔗延伸阅读
- MCP 官方Model Context Protocol协议介绍、规范和官方服务器列表。
- MCP 官方MCP 架构概览Host、Client、Server 的关系,以及 Tools、Resources、Prompts 三类能力。
- Google Cloud在 Cloud Run 上托管 MCP 服务器想给团队提供自己的远程 MCP 服务器时参考。
实战一:从设计稿到网站(Stitch + MCP)
一句话生成高保真设计稿,再让智能体照着设计稿写出 React 网站。这是全手册最快看到成果的一章,也是理解"规范先行"思想最直观的例子:设计稿就是规范。
🎯学完这一章,你能
- 用 Stitch 一句话生成网页设计
- 通过 MCP 让智能体直接读取设计稿
- 理解 DESIGN.md 的作用和写法
- 让智能体生成模块化的 React 网站
- 用精确的反馈让它对照设计稿修正
🖼️一图看懂:设计稿如何变成代码
- 在 Stitch 选择 Web,模型切换到 Gemini 3
- 一句话描述产品、配色、页面区块
- 生成后把项目命名为
LaunchPad
先生成,再在 Stitch 聊天栏里微调,比一次写很长的提示词更有效。
- Stitch 设置里创建 API key
- Antigravity 的 MCP 商店安装 Stitch,填入 key
输入 List my Stitch projects.,返回 LaunchPad 即连接成功。
通过 MCP 读取设计稿,把色值、字体、布局规则写进 DESIGN.md。
审核 DESIGN.md:主色、字体、间距、圆角对不对?有问题先改它,再生成代码。
这一步把"图"变成了可审核、可复用的"文字规范"。
- 终端里搭建 React + Tailwind 项目
- 编辑器里编写模块化组件
- 启动开发服务器
在提示词里要求"严格遵循 DESIGN.md、组件模块化"。
- 在内置浏览器里对比设计稿
- 发现差异就精确描述:哪个元素、哪个属性
回到设计稿重新读取,再修正代码,而不是凭记忆猜。
💡为什么要这样做
设计稿是"唯一标准"
如果只用文字描述"做一个深蓝色科技感的落地页",每次生成的结果都不一样,也没法判断对错。有了设计稿,对错就有了客观依据:和设计稿一致就是对的。这正是第 6 章"规范驱动开发"的核心思想,只不过这里的规范是一张图。
为什么用 MCP,而不是截图给 AI
截图只有像素,AI 要靠"看"来猜颜色和间距,误差很大。通过 MCP,智能体拿到的是结构化的设计元数据:精确的十六进制色值、字体名称、字重、间距。而且修正时它可以随时回去重新读取,不依赖对话里的旧截图。
为什么要先生成 DESIGN.md
直接"照着设计稿写代码"也能做,但多一步 DESIGN.md 有三个好处:一是你能审核智能体对设计的理解对不对;二是它成为项目里的持久文件,以后新增页面也能参照;三是团队其他人(或其他智能体)也能读懂设计规范。
✅怎么用好:三个环节的要点
① 写设计提示词
说清楚产品是什么、给谁用、配色、页面区块、风格关键词。区块列得越具体,结构越接近预期。先生成,再在 Stitch 聊天栏里微调,比一次写很长的提示词更有效。
② 审 DESIGN.md
检查:主色和辅助色对不对?字体和字重有没有?间距和圆角规则有没有?深色和浅色模式是否都定义了?发现问题先改 DESIGN.md,再生成代码。
③ 精确地提修改
"不太像"没法执行。要说清哪个元素、哪个属性、和设计稿有什么差异,并让它"Refer back to the Stitch design"。一次只提一两个问题,便于确认效果。
📋可复用模板
Design a [页面类型,如 modern SaaS landing page]
for [产品名和一句话定位].
Target audience: [目标用户].
Palette: [主色] and [辅助色], [浅色/深色] theme.
Sections:
1. Hero with headline and a '[按钮文字]' button
2. [区块 2,如 3-column features grid]
3. [区块 3,如 glassmorphism pricing table]
4. Footer with [内容]
Style: [风格关键词,如 minimal, futuristic, rounded corners].Use the Stitch MCP to fetch the '[项目名]' project.
Extract the color palette, typography, spacing and
border-radius rules, then generate a DESIGN.md in the root.
I want to build this full website now. Use React and
Tailwind CSS. Follow DESIGN.md strictly. Ensure the
components are modular. Once finished, run the dev server
and show it to me in the integrated browser.
The '[元素]' [属性,如 padding / font weight] is slightly off.
Refer back to the Stitch design and update the Tailwind classes.📸官方界面截图
图源:Google Codelabs《Design to Code with Antigravity & Stitch》,CC BY 4.0。
🤔思考题
如果你们已经有设计系统(比如 Figma 组件库),这个流程该怎么调整?
核心思想不变:让智能体从权威来源读取设计规范,而不是凭截图猜。可以把现有设计系统的 token(颜色、字体、间距)整理成 DESIGN.md 放进项目,甚至写成一个 Skill(第 7 章)或 Rule(第 9 章),让每次生成 UI 都自动遵守。如果设计工具提供 MCP 服务器,也可以像 Stitch 一样直接接入。
"像素级还原"在什么情况下不是好目标?
当设计稿本身只是方向探索,或者需要适配多种屏幕时。过度追求和静态设计稿完全一致,可能牺牲响应式和可访问性。更好的目标是:设计 token 完全一致(颜色、字体、间距体系),布局在各屏幕上合理。
📝小测验
1. 通过 MCP 读取设计稿,相比给 AI 发截图,最大的好处是?
2. 下面哪个修改请求最有效?
🛠️操作手册:一步步跟着做
需要:Chrome、Antigravity IDE、Node.js v18+、Stitch 账号、开启计费的 Google Cloud 项目。
学完你能:用 Google Stitch 一句话生成高保真页面设计,通过 MCP 把设计接入 Antigravity,让智能体做出和设计稿一致的 React 网站,并对照设计稿修正。
预计用时:45 分钟
你需要:Chrome、Antigravity IDE、Node.js v18+、一个能登录 Stitch 的账号、一个开启了计费的 Google Cloud 项目
这是全手册最快看到成果的一章,很适合建立信心。
5.1 整体思路
Stitch 生成设计稿 ──MCP──> Antigravity 读取"设计 DNA"(颜色、字体、布局)
│
▼
生成 DESIGN.md → 写 React + Tailwind 代码
│
▼
内置浏览器预览 → 对照设计稿修正
Stitch 是 Google 基于 Gemini 的 UI 设计工具,用自然语言就能生成高保真界面。在这个流程里,Stitch 的设计稿是视觉上的唯一标准,智能体照着它写代码。
5.2 第一步:在 Stitch 里生成设计
-
在主界面的 Start a new design 里选择 Web(针对浏览器布局优化)。
-
点提示框里的模型下拉菜单(默认显示 3.0 Flash),切换到 Gemini 3,以获得更好的推理和布局效果。
-
在 "Describe your design" 输入框里填:
Design a modern SaaS landing page for a space-tech startup called LaunchPad. Use a midnight blue and neon purple palette. Include a hero section with a 'Get Started' button, a 3-column features grid, and a glassmorphism pricing table. -
点模型选择器旁边的箭头图标开始生成。
-
生成后,在顶部给项目命名为
LaunchPad。可以用右侧的聊天栏继续微调某些元素。
想快速开始的话,也可以直接用 Stitch 里 "Try these prompts" 区域的示例。
5.3 第二步:创建 Stitch API key
- 在 Stitch 右上角点头像 → Stitch settings。
- 找到 API key 区域,点 Create key。
- 立即复制并妥善保存这个 key,下一步要用。
5.4 第三步:在 Antigravity 里新建工作区
- 打开 Antigravity IDE,进入 Agent Manager(
CMD+E/CTRL+E切换)。 - 点 + Open Workspace → Open New Workspace,命名为
LaunchPad-Project,选一个本地文件夹。
单独建工作区的好处:智能体有一个明确的根目录来生成文件,不会弄乱其他项目。
5.5 第四步:安装 Stitch MCP
-
在新工作区里,回到 Agent Manager,选择 MCP Servers(或者从编辑器智能体面板顶部的 "..." 打开 MCP 商店)。
-
搜索 Stitch,点 Install。
-
提示时粘贴刚才的 Stitch API key。
-
验证:在智能体对话里输入:
List my Stitch projects.检查点返回了
LaunchPad,说明连接成功。
进阶为什么要用 MCP 而不是截图或复制代码:有了 MCP,智能体能直接拿到设计的结构化元数据(精确的色值、字体、间距、布局规则),不需要你手动导出设计 token 或复制十六进制色值。而且后面修正时,它可以随时回去重新读取设计稿。
5.6 第五步:提取设计规范
Use the Stitch MCP to fetch the 'LaunchPad' project. Extract the color palette and typography, then generate a DESIGN.md file in my root directory.
打开生成的 DESIGN.md,检查智能体提取的色值和布局规则。
进阶
DESIGN.md的作用:它把设计规范固化成项目里的一个文件,后续所有生成和修改都能参照它,也方便人工审核和修改。这和第 6、9 章"规范驱动开发"的思路一致:先把规范写成文档,再让智能体照着做。
5.7 第六步:生成网站
I want to build this full website now. Use React and Tailwind CSS. Ensure the components are modular. Once finished, run the dev server and show it to me in the integrated browser.
观察智能体的工作过程:它会在终端里搭建项目骨架,在编辑器里写组件,最后在内置浏览器里打开预览。
5.8 第七步:对照设计稿修正
把内置浏览器里的效果和 Stitch 原始设计对比。如果有不一致(比如按钮内边距、字重),直接告诉智能体:
The 'Get Started' button padding is slightly off. Refer back to the Stitch design and update the Tailwind classes.
智能体会重新读取设计稿并修正。
5.9 本章小结
- 用 Stitch + Gemini 3 一句话生成高保真设计
- 用 API key 配置 MCP,让 Antigravity 直接读取设计
- 智能体提取设计规范,生成模块化的 React + Tailwind 网站
- 用内置浏览器预览,对照设计稿迭代修正
🔗延伸阅读
- GoogleStitch MCP 文档Stitch MCP 服务器提供的能力和配置方式。
- GoogleGoogle Stitch用自然语言生成 UI 设计的工具。
规范驱动开发(SDD)入门:先写清楚,再让 AI 做
AI 写代码越来越快,真正的瓶颈变成了"说清楚要什么"。这一章讲透 SDD 是什么、为什么需要它、什么时候不该用它,以及怎么写出一份好规范。最后用一份规范生成相册应用,并一句话部署上线。
🎯学完这一章,你能
- 说清楚 SDD 和"凭感觉编程"的区别
- 判断一个任务值不值得用 SDD
- 写出一份可验证、无歧义的规范
- 把"验收方法"写进规范,让 AI 自己测试
- 出问题时改规范而不是改代码
- 用 MCP 一句话部署到 Cloud Run
🖼️一图看懂:凭感觉编程 vs 规范驱动开发
💡为什么需要 SDD
AI 让"写代码"变便宜了,"说清楚"变贵了
过去开发的瓶颈是写代码。现在 AI 几分钟就能写几百行,瓶颈变成了:它写的是不是你要的?如果需求本身含糊,AI 只会更快地产出含糊的结果。SDD 把精力从"写代码"转移到"把问题和方案描述清楚"上。
凭感觉编程在什么时候会崩
- 代码库变大:AI 每次只看到一部分,前后的决定互相矛盾。
- 功能互相影响:改 A 时破坏了 B,因为没有地方写着 B 的约定。
- 几周后回头看:没人说得清当初为什么这样做,决策只存在于某个已关闭的聊天里。
- 团队协作:新人(或者新的 AI 对话)只能从代码里反推意图。
SDD 带来了什么
- 一份可审查的"合同":AI 的输出可以对照规范逐条检查。
- 决策有记录:为什么选这个方案,写在 plan.md 和 research.md 里。
- 可重复:同样的规范在新的对话、甚至换一个模型,也能得到一致方向的结果。
- 修改更安全:需求变了,先改规范,影响范围一目了然。
代价也是真实的
SDD 每个功能都比凭感觉编程慢,因为要先写文档。它的收益是累积的:项目越大、活得越久、参与的人越多,越划算。对于一次性脚本和快速原型,Vibe Coding 往往才是正确选择。
⚖️什么时候用 SDD,什么时候不用
| 场景 | 建议 | 理由 |
|---|---|---|
| 一次性脚本、数据处理、探索性原型 | ❌ 不用,直接做 | 写完就扔,文档没有复用价值 |
| 改一个小 bug、加一个字段 | 🟡 轻量:/plan 就够 | Antigravity 内置的计划审批已经是迷你 SDD |
| 新功能,会长期维护 | ✅ 用 | 规范会被反复参考 |
| 涉及多个模块、多人协作 | ✅ 用,配合项目宪法 | 需要统一的约定和可追溯的决策 |
| 对正确性要求高(支付、权限、数据) | ✅ 必须用,并写详细测试规范 | 验收标准就是质量底线 |
🔄SDD 生命周期:点击每个阶段查看要点
前三步由人主导,后两步由 AI 主导,整个过程是一个持续循环。
① 需求收集
做什么:明确业务逻辑、用户需求、系统约束。
关键问题:给谁用?解决什么问题?成功的标准是什么?明确不做什么?
常见错误:直接跳到技术方案,"用 React 做一个……"。需求阶段不该谈技术。
② 架构设计
做什么:定义系统结构、数据模型、集成点。
关键问题:分几个模块?数据怎么流动?和哪些外部系统交互?用什么技术栈,为什么?
小技巧:可以让 AI 提出 2–3 个方案并比较优缺点,由你来选。
③ 系统规范与测试规范
做什么:写出高度结构化的文档:系统做什么(系统规范)、怎么验收(测试规范)。
核心原则:系统规范是蓝图,测试规范是裁判。没有测试规范,AI 就无法判断自己有没有做对。
④ 自动生成代码
做什么:AI 读取规范,生成代码。
你的角色:审核实施计划,批准后放手。如果 AI 偏离了规范,指出来让它修正。
注意:AI 可能因为配额、能力等原因悄悄调整方案,要在产物里留意它的说明。
⑤ 测试与验证
做什么:按测试规范自动验证,比如打开浏览器点击、运行测试套件。
发现问题怎么办:先判断是规范写错了还是实现错了。规范错了就改规范、重新生成;实现错了就让 AI 按规范修正。
这个循环可以接入现有的 CI/CD 流水线。
✍️怎么写好规范:六个特征
1. 可验证
每条要求都能判断"做到了没有"。"加载要快"不可验证;"首屏 2 秒内显示"可以验证。
2. 无歧义
同一句话不会有两种理解。"支持图片"是指上传、显示还是编辑?说清楚。
3. 写清边界情况
空数据、错误输入、最后一项之后、网络失败怎么办?相册例子里的"无限循环"就是边界情况。
4. 写明约束
技术限制、不许用的东西。不写的话,AI 很可能顺手引入一个框架和一堆依赖。
5. 写明不做什么
明确"本期不做"的内容(non-goals),防止 AI 自作主张扩大范围。
6. 包含验收方法
告诉 AI 怎么测试。写了测试步骤,AI 才能形成"实现 → 测试 → 修正"的闭环。
🔁写之前 vs 写之后:同一个需求的两种写法
帮我做一个好看的相册网页,
点图片可以放大。
- "好看"是什么标准?
- 多少张图?从哪来?
- 放大后怎么切换、怎么关闭?
- 能不能用框架?
- 怎么算做完了?
每个问题 AI 都会替你"拍板",结果是否符合预期全凭运气。
1. 视觉:标题 "My photo gallery",响应式全宽网格,
极简风格,统一间距,CSS 裁剪保持主体居中
2. 内容:20 张自然主题照片(风景/水景/天象/微距),
全部生成
3. 功能:点击进入灯箱,背景变暗;左右箭头切换;
第 20 张之后回到第 1 张;关闭按钮或点暗区退出
4. 约束:只用原生 JS/HTML/CSS,零依赖
5. 测试:浏览器打开;点图片确认灯箱;检查切换
每条都可验证,边界情况和约束明确,AI 还能按第 5 条自己测试。
✅怎么把 SDD 用好
✓ 推荐做法
- 规范放进代码仓库,和代码一起做版本管理
- 改需求先改规范,再让 AI 按新规范修改代码
- 按模块写规范:一个规范对应一个可以独立验证的功能
- 让 AI 帮你找规范里的漏洞:"这份规范有哪些地方含糊或遗漏?"
- 需求、方案、任务分开写,各自审核
✗ 常见误区
- 把规范写成技术实现说明,需求阶段就规定用哪个库
- 规范写完就不管了,代码改了几轮后两者完全对不上
- 一份规范覆盖整个系统,AI 上下文装不下也审不过来
- 只写功能、不写测试,验收全靠"看起来对"
- 对所有任务都用完整 SDD,连改个文案也要写三份文档
📋可复用模板
# [功能名称] 规范
## 1. 背景与目标
- 要解决的问题:
- 目标用户:
- 成功标准(可衡量):
## 2. 功能需求
- FR1:
- FR2:
## 3. 边界情况
- 输入为空 / 非法时:
- 数据量很大时:
- 外部服务失败时:
## 4. 非功能需求
- 性能:
- 兼容性(浏览器 / 设备):
- 可访问性:
## 5. 约束
- 技术限制:
- 禁止使用:
## 6. 本期不做(Non-goals)
-
## 7. 验收测试
- [ ] 步骤 → 预期结果
- [ ] 步骤 → 预期结果Given 灯箱中正在显示第 20 张图片
When 用户点击右箭头
Then 显示第 1 张图片
Given 用户未登录
When 访问 /orders
Then 跳转到登录页,并保留原目标地址在动手实现之前,请审查这份规范:
1. 哪些要求含糊、可能有多种理解?
2. 缺少哪些边界情况?
3. 哪些要求无法验证?
4. 有没有互相矛盾的地方?
请逐条列出,并给出修改建议。先不要写代码。规范已更新,变更点见 @spec.md 中标记 [CHANGED] 的部分。
请先列出受影响的文件和测试,给出修改计划,
我确认后再修改代码。修改完成后按第 7 节重新验收。📸官方界面截图
图源:Google Codelabs《Spec-Driven Development in Antigravity》《SDD with ADK and Antigravity》,CC BY 4.0。
🤔思考题
规范和代码不一致时,以谁为准?
在 SDD 里,规范是唯一事实来源。如果代码偏离了规范,要么是实现错了(让 AI 按规范修),要么是规范已经过时(先更新规范,再看代码是否需要调整)。最糟糕的情况是"代码改了、规范没改",几轮之后规范就失去了意义。所以要养成习惯:任何需求层面的改动,先落到规范上。
可以让 AI 来写规范吗?
可以,而且很高效:你给出核心想法,让 AI 扩展成结构化规范(第 8 章的 PM 角色就是这么做的)。但审核和拍板必须是人:AI 会替你补全很多默认假设,你需要逐条确认它们是不是你真正想要的。AI 写初稿、人做决定,是比较好的分工。
截图里智能体因为配额问题"悄悄"换了方案,你怎么看?怎么防止?
这是智能体的典型行为:遇到障碍时会自己找变通方法,以完成任务为目标。好在它在 Walkthrough 里说明了。防范方法:一是认真读产物里的 NOTE 和说明;二是在规范里写明"遇到无法满足的要求时,停下来问我,不要自行替代";三是让验收测试覆盖关键要求(比如"20 张图片互不相同")。
如果要在你的团队推行 SDD,第一步做什么?
不要一开始就要求所有功能都写完整规范。建议:先挑一个中等复杂度、会长期维护的新功能试点,用本章模板写规范,记录前后花费的时间和返工次数;然后把好用的模板沉淀成团队标准;再逐步引入第 9 章的项目宪法和 spec-kit 流程。让效果说话,比强制推行有效。
📝小测验
1. SDD 中发现需求变了,正确的做法是?
2. 下面哪种情况最不适合用完整的 SDD 流程?
3. 规范里写"验收测试",最重要的作用是?
🛠️操作手册:一步步跟着做
用一份结构化规范生成相册应用(附中英文规范),浏览器自动测试,然后通过 Cloud Run MCP 部署上线。需要 Google Cloud 项目,见附录 A。
学完你能:理解规范驱动开发(SDD)的思想,写出一份高质量的结构化需求,让智能体生成应用、自己用浏览器测试,并通过 MCP 一句话部署到 Cloud Run。
预计用时:60 分钟
你需要:Antigravity IDE、Python、gcloud CLI、一个开启了计费的 Google Cloud 项目(见附录 A)
6.1 什么是规范驱动开发(SDD)
从"提示词加打补丁"到"规范驱动"
很多人用 AI 写代码的方式是:随手写一句需求,AI 生成一堆代码,看着差不多就接受,不对再补一句……这叫 "prompt-and-patch"(提示词加打补丁),也有人叫 "vibe coding"(凭感觉编程)。写原型很快,但项目一大、功能一多,或者过几周回头看,就说不清当初为什么这么做了。
**规范驱动开发(Spec-Driven Development,SDD)**的做法是:先把需求、设计、验收标准写成结构化的规范文档,再让 AI 按规范生成代码。 它借鉴了瀑布模型中严谨的设计阶段,但因为 AI 实现和测试都很快,整个过程依然是敏捷迭代的:快速得到反馈,再用反馈完善文档。
核心理念
工程师的角色从**"写代码的人"转变为"系统架构师"。人的主要职责是把问题和解决方案描述清楚。这份文档是唯一事实来源(Single Source of Truth)**,AI 根据它来生成、验证和完善代码。
SDD 生命周期
| 步骤 | 内容 | 谁主导 |
|---|---|---|
| 1. 需求收集 | 明确业务逻辑、用户需求、系统约束 | 人 |
| 2. 架构设计 | 定义系统结构、数据模型、集成点 | 人 |
| 3. 系统和测试规范 | 写出高度结构化的文档:系统做什么、怎么验收 | 人 |
| 4. 自动生成代码 | AI 根据规范生成代码 | AI |
| 5. 测试和验证 | 自动按测试规范验证代码 | AI |
三条运作原则
- 设计和实现是一个循环:第 1–5 步不是一次性走完,而是持续循环。因为第 4、5 步基本自动化了,团队可以把精力集中在前三步。发现 bug 或需求变更时,改的是规范,不是代码,然后重新跑一遍循环。
- 模块要小:SDD 要应用在细粒度的模块上,而不是一整块巨大的系统。
- 隔离:某个模块验证失败,只需要重新编写这个模块的规范并重新生成。
- 可扩展:模块小、定义清楚,能减少 AI 的幻觉,让上下文窗口保持聚焦。
- 质量控制:系统规范是蓝图,测试规范是裁判。测试规范保证生成的代码始终符合预定的质量要求,整个过程也可以接入现有的 CI/CD 流水线。
进阶Antigravity 本身就内置了 SDD 的影子:
/plan生成的实施计划和任务清单,加上你的审批,就是"先规范、后实现"。本章用一份结构化需求体验 SDD 的核心;第 9 章会用 spec-kit 把它做成完整的工程化流程。
6.2 配置浏览器测试
智能体需要用浏览器自动测试应用,先做两个设置:
- 点右上角齿轮图标 → Open Antigravity User Settings。
- 左侧点 Agent,在 ARTIFACT 区域把 Review Policy 设为 Always Proceed。
- 左侧点 Browser,确认 Enable Browser Tools 已开启。
注意 Always Proceed 表示产物不等你审核就直接执行,这里是为了练习更流畅。正式项目建议改回需要审核。
6.3 用一份结构化需求生成相册应用
- 在电脑上建一个文件夹
Gallery(比如放在桌面)。 - 在 Antigravity 里点 Open Folder,选中
Gallery,会在这个文件夹里打开一个新工作区。 - 如果智能体面板没打开,点 Toggle Agent Pane。
- 在智能体面板里输入下面的需求。需求写得越清楚,结果越好。
英文版(已修正原文中 "photo granary" 的错字):
Create a photo gallery with following specs.
1. Visual Design & Layout
Title: The gallery must prominently display the title "My photo gallery" at the top.
Modern Grid: Images will be arranged in a responsive grid that spans the full width of the browser.
Clean Aesthetic: Use a minimalist design with consistent spacing (margins/padding) between photos and no heavy borders or shadows.
Image Scaling: Photos will automatically adjust their size to fit any screen (mobile to desktop) while maintaining their focus using modern CSS cropping techniques.
2. Photo Content
Quantity: The page will feature a total of 20 photos.
Nature Themes: The collection will include a diverse range of nature photography:
Landscape: Mountains, deserts, and forests.
Water: Waterfalls, oceans, and lakes.
Atmosphere: Northern lights, sunsets, and starry skies.
Macro: Close-ups of flowers, leaves, and moss.
Generate all the needed photos
3. Core Functionality (The "Lightroom" Effect)
Full-Screen View: Clicking any photo triggers a "Lightbox" mode where the background dims and the selected image appears in high resolution at the center of the screen.
Manual Navigation:
Right Arrow: Swaps the current view to the next image.
Left Arrow: Swaps the current view to the previous image.
Infinite Loop: Navigation is continuous; moving "next" from the 20th photo returns the user to the 1st photo.
Exit Strategy: Users can exit the full-screen view by clicking a "Close" button or tapping the dimmed area outside the image.
4. Technical Constraints (Strict)
Vanilla JavaScript Only: Absolutely no external libraries or frameworks (like jQuery, React, or Bootstrap). All logic must be written in raw, standard JavaScript.
Native HTML & CSS: Use only the built-in capabilities of modern web browsers to handle the layout and animations.
Zero Dependencies: The app should function perfectly as a standalone project with no need to download or link to outside scripts.
5. Perform the following tests
Open the App in a web browser
Click on the images and see the image opens in the lightbox
Check the navigation
中文版(效果相同,可以直接用):
按以下规范创建一个相册网页。
1. 视觉设计与布局
标题:页面顶部醒目显示标题 "My photo gallery"。
现代网格:图片以响应式网格排列,铺满浏览器全宽。
简洁风格:极简设计,图片之间间距一致,不使用粗边框或阴影。
图片缩放:使用现代 CSS 裁剪技术(如 object-fit),图片在手机到桌面各种屏幕上自动适配,同时保持主体居中。
2. 图片内容
数量:共 20 张图片。
自然主题:
风景:山脉、沙漠、森林。
水景:瀑布、海洋、湖泊。
天象:极光、日落、星空。
微距:花朵、树叶、苔藓特写。
生成所有需要的图片。
3. 核心功能(灯箱效果)
全屏查看:点击任意图片进入"灯箱"模式,背景变暗,选中的图片以高分辨率显示在屏幕中央。
手动切换:右箭头切换到下一张,左箭头切换到上一张。
无限循环:在第 20 张点"下一张"回到第 1 张。
退出方式:点击"关闭"按钮,或点击图片外的暗色区域退出全屏。
4. 技术约束(严格遵守)
只用原生 JavaScript:禁止使用任何外部库或框架(如 jQuery、React、Bootstrap)。
只用原生 HTML 和 CSS:布局和动画只用现代浏览器的内置能力。
零依赖:作为独立项目完整运行,不需要下载或引用任何外部脚本。
5. 执行以下测试
在浏览器中打开应用
点击图片,确认在灯箱中打开
检查左右切换功能
- 点 Run。智能体会先展示实施计划。
- 按提示确认:执行命令时点 Run,保存代码时点 Accept all。智能体会自动调用图片生成模型(Nano Banana)生成图片,并用选定的大模型写代码。
- 代码生成后,智能体会自己打开浏览器测试,并把测试结果告诉你。
- 如果提示,点 Accept All 保存智能体面板里生成的所有代码。
- 在 Explorer 里会看到生成的代码,包括
index.html。 - 自己验证一下:右键
index.html,复制文件路径,粘贴到浏览器地址栏打开。
拆解这份需求:为什么它有效
| 部分 | 作用 | 对应 SDD 的哪一步 |
|---|---|---|
| 视觉设计与布局 | 说清楚长什么样 | 需求 |
| 图片内容 | 说清楚放什么 | 需求 |
| 核心功能 | 精确描述交互行为,包括边界情况(无限循环、两种退出方式) | 系统规范 |
| 技术约束 | 限定实现方式,防止 AI 自作主张引入框架 | 架构约束 |
| 测试 | 告诉 AI 怎么验收,AI 就能自己测试、自己发现问题 | 测试规范 |
进阶写好需求的两个关键:一是写约束。不写的话,AI 很可能顺手引入 React 和一堆依赖。二是写验收方法。写了测试步骤,AI 才能形成"实现 → 测试 → 修正"的闭环,而不是写完就交差。这两点在任何 AI 编程任务里都适用。
6.4 部署到 Cloud Run
准备环境
- 打开 https://console.cloud.google.com,在左上角复制你的项目 ID。
- 在 Antigravity 里打开终端:Terminal → New Terminal。
- 设置环境变量,把
YOUR CLOUD PROJECT换成你的项目 ID。
Windows PowerShell 用户先以管理员身份打开 PowerShell,运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
然后按你的系统选择:
🔗延伸阅读
- GitHub BlogSpec-driven development with AIGitHub 介绍 spec-kit 的文章,解释了为什么"规范成为可执行的产物"。第 9 章会实际使用 spec-kit。
- Martin FowlerUnderstanding Spec-Driven-Development: Kiro, spec-kit, and Tessl对比三种 SDD 工具的思路,也讨论了 SDD 的局限和适用边界,适合想深入思考的读者。
- GitHubgithub/spec-kit开源的 SDD 工具包,包含规范、计划、任务模板和斜杠命令。
Skills:把你的经验写成智能体的操作手册
大模型是通才,但它不知道你团队的规范和做法。Skills 让你把这些经验写成"按需翻开的手册":平时只占一行描述,需要时才加载全文和脚本。这一章讲清楚原理、四种写法,以及怎么写出会被正确触发的 Skill。
🎯学完这一章,你能
- 解释"渐进式披露"为什么能省上下文
- 写出结构正确的 SKILL.md
- 写出会被正确触发的 description
- 根据场景选择四种 Skill 模式
- 用脚本保证关键检查的准确性
- 区分 Skills、Rules、Workflows、MCP
🖼️一图看懂:渐进式披露
传统做法把所有说明一次塞进上下文;Skills 分三层,按需加载。
💡为什么需要 Skills
问题:上下文饱和与工具膨胀
最直接的办法是把所有规范和工具一次性塞给智能体。但即使上下文窗口很大,塞进几万 token 用不上的内容也会带来三个问题:变慢、变贵、变笨。官方 lab 把最后一点称为"上下文腐烂"(context rot):无关信息太多,模型被干扰,表现变差。
解决:只在需要时出现
Agent Skills 是 Anthropic 提出的一种轻量、开放的格式,现在 Antigravity、Claude Code 等多个工具都支持。它的核心是渐进式披露:智能体平时只看到一份"菜单"(每个 Skill 一行描述),你的请求匹配到某一项时,才把那份手册的全文拿出来。
不只是指令,还能执行
Skill 可以附带脚本。需要确定性结果的事(校验、计算、调用老系统)交给脚本,智能体只负责调用和解读结果。这让它从"写文本的"变成"会用工具的"。
为什么这对团队特别有价值
团队里那些"老员工才知道"的做法:提交信息格式、部署步骤、数据库变更规范、代码审查清单……写成 Skill 后,每个人的智能体都会按同样的方式做事。Skill 文件放在仓库里,像代码一样评审和迭代。
🧪互动演示:渐进式披露模拟器
输入一个请求,看哪些 Skill 会被加载,以及上下文占用的差别。(token 数为示意估算)
真实的匹配是语义匹配(理解意思),不是这里演示的关键词匹配。但道理一样:description 决定了 Skill 会不会被想起来。
✍️怎么写好 description:最关键的一行
description 是唯一一直留在上下文里的部分,它决定了 Skill 会不会在正确的时候被触发。
| ❌ 差 | 问题 | ✅ 好 |
|---|---|---|
| Database tools | 太泛,什么请求都像又都不像 | Executes read-only SQL queries against the local PostgreSQL database to retrieve user or transaction data. Use this for debugging data states. |
| Helps with git | 没说做什么动作 | Formats git commit messages according to Conventional Commits specification. Use this when the user asks to commit changes or write a commit message. |
| 部署脚本 | 没说部署到哪里、什么时候用 | 把当前服务部署到 staging 环境并运行冒烟测试。当用户要求"部署""发到测试环境"时使用。不用于生产环境。 |
小技巧:在 description 里写不适用的场景(比如"不用于生产环境"),可以减少误触发。
🧱四种 Skill 模式:点击查看结构和适用场景
级别 1 纯指令 git-commit-formatter
只有 SKILL.md。规则能用几段话说清时用。
级别 2 引用资料 license-header-adder
大段固定内容放进单独文件,按需读取。
级别 3 示例教学 json-to-pydantic
给一对标准输入输出,一个好例子胜过十条规则。
级别 4 调用脚本 database-schema-validator
确定性的判断交给代码,明确要求"不要自己看"。
级别 1:纯指令模式
核心思想:把规则写清楚,让智能体来执行。
适合:格式规范、命名约定、审查清单、写作风格。
写法要点:给出格式、允许的取值、步骤和一个示例,比如 feat(auth): implement login with google。
级别 2:引用资料模式
核心思想:大段固定内容不放进 SKILL.md,需要时才读,既省 token 又防止抄错(比如法律文本)。
适合:许可证、API 文档、长篇规范、模板文件。
写法要点:在正文里写明"First, read resources/xxx",以及读取后怎么用。
级别 3:示例教学模式
核心思想:LLM 本质上是模式匹配引擎,看一个标准例子比读五十条规则更准确。
适合:代码转换、文档格式、报告模板、任何"看个例子就懂"的输出。
写法要点:示例要覆盖关键细节(比如嵌套对象拆成单独的类、null 变成 Optional),正文只写少量规则加"Follow the example"。
级别 4:调用脚本模式
核心思想:问 LLM "这个表结构安全吗",它可能因为 SQL "看起来对"就说没问题。需要准确结果的判断交给脚本。
适合:合规检查、数据校验、计算、调用内部工具或老系统。
写法要点:明确写"Do not read the file manually";规定用 run_command 执行;按退出码 0/1 解读结果。
🛠️互动工具:SKILL.md 生成器
填写表单,实时生成 SKILL.md,并检查常见问题。复制后保存到 .agents/skills/<name>/SKILL.md。
✅怎么用好 Skills
✓ 推荐做法
- 一个 Skill 只做一类事,名字一看就懂
- 正文写目标、步骤、示例、约束四块
- 长内容拆进 references/,复杂格式用 examples/
- 需要准确的检查用 scripts/,并要求"不要自己看"
- 项目专属的放项目级
.agents/skills/,提交到仓库让团队共享 - 没触发时,先改 description,而不是在提示词里反复点名
✗ 常见误区
- 没有 YAML 头信息,智能体根本看不见
- description 写得像标题,比如"Database tools"
- 一个 Skill 塞进十几种不相关的任务
- 把始终需要的规范写成 Skill(应该用 Rule)
- 脚本有副作用(删除、部署)却没有任何约束
| 你想要…… | 用什么 | 为什么 |
|---|---|---|
| 每次对话都遵守的规范 | Rule | 始终加载 |
| 某类任务的专门做法 | Skill | 按需加载,不占上下文 |
| 一串固定步骤,一个命令触发 | Workflow | 由你主动触发 |
| 访问外部系统 | MCP | Skill 是"大脑",MCP 是"手";Skill 可以指导怎么用 MCP |
📋可复用模板
---
name: <skill-name>
description: <做什么> <作用于什么>. Use when <触发场景>. Not for <不适用场景>.
---
# <Skill 标题>
## Goal
<这个 Skill 要达成什么,一两句话>
## Instructions
1. <第一步>
2. <第二步>
3. <第三步>
## Example
Input: <示例输入>
Output: <示例输出>
## Constraints
- Do not <最怕它做错的事>
- If <异常情况>, stop and ask the user.---
name: <checker-name>
description: Validates <对象> against <规则集>. Use when the user asks to check, validate or lint <对象>.
---
# <Checker 标题>
## Policies Enforced
1. <规则 1>
2. <规则 2>
## Instructions
1. **Do not inspect the file manually.** The rules are easy to miss by eye.
2. Run the script with the run_command tool:
`python scripts/<check>.py <path_to_file>`
3. Interpret the result:
- exit code 0: tell the user it passed.
- exit code 1: report each error printed by the script and suggest a fix.
刚才这个任务我纠正了你几次。请把这次的正确做法
整理成一个 Skill,保存到 .agents/skills/<name>/SKILL.md:
包含 description、步骤、一个示例和禁止事项。
新版本的斜杠命令里有 /learn,用途正是把最近的成功经验或纠正沉淀为 Skill 或 Rule。
📸官方界面截图
.agents/skills)、Global(~/.gemini/antigravity-cli/skills)、Shared(~/.gemini/skills)。图源:Google Codelabs《Getting Started with Antigravity Skills》《Getting Started with Google Antigravity》,CC BY 4.0。
🤔思考题
你写的 Skill 从来没被触发过,怎么排查?
按顺序检查:① 有没有 YAML 头信息,--- 分隔符是否完整;② 文件位置是否正确(.agents/skills/<name>/SKILL.md),用"What skills are available?"或 /skills 确认已加载;③ description 是否包含用户真实会说的词,试着把你的典型请求和 description 放在一起读,看是不是一眼就能对上;④ 有没有另一个 Skill 的描述更匹配,把它"抢"走了。
团队有一份 30 页的编码规范,应该写成一个 Skill、多个 Skill,还是 Rule?
通常是拆开:每次都必须遵守的几条核心约定(比如语言版本、目录结构)写成简短的 Rule;按场景使用的部分(数据库变更、API 设计、前端组件、测试写法)各写一个 Skill,长篇细节放进 references/。这样平时上下文很轻,用到哪部分才加载哪部分。
什么样的检查应该用脚本,而不是让模型判断?
满足任一条件就考虑脚本:规则可以精确描述(命名格式、必填字段);出错代价高(安全、合规、数据);需要一致的结果(同样的输入每次都应该得到同样的判断)。模型适合需要理解和权衡的判断,比如"这个命名是否表达清楚";脚本适合有标准答案的判断。两者结合效果最好:脚本给出事实,模型解读并给出修改建议。
你工作中有哪三件事最值得写成 Skill?
找"你经常要向 AI 或新同事重复解释的事"。比如:提交和发版规范、某个内部系统的调用方式、代码审查清单、事故复盘模板、某类报表的格式。先从最常重复的一件开始,用上面的生成器写个初版,用几次后再迭代。
📝小测验
1. SKILL.md 里哪一部分会一直留在智能体的上下文里?
2. 需要让智能体输出复杂且格式固定的代码转换结果,最有效的模式是?
3. 在调用脚本模式里,为什么要写"Do not read the file manually"?
🛠️操作手册:一步步跟着做
包含第一个 code-review Skill、四种模式的完整文件和练习、Agents CLI Skills 和 npx skills。
学完你能:理解 Skills 解决什么问题,掌握 SKILL.md 的格式和写法,从简单到复杂写出四种模式的 Skill,安装和管理第三方 Skills。
预计用时:90 分钟
7.1 为什么需要 Skills
问题:上下文饱和与工具膨胀
大模型是通才,但它不知道你项目的具体背景和团队规范。最直接的办法是把所有规范、所有工具一股脑塞给它,但这会导致:
- 上下文饱和(Context Saturation):即使上下文窗口很大,塞进四五万 token 用不上的工具描述,也会导致响应变慢、费用增加。
- 工具膨胀(Tool Bloat):工具太多,模型容易选错。
- 上下文腐烂(Context Rot):无关信息太多,模型被干扰,表现变差。
解决方案:渐进式披露
Agent Skills 最早由 Anthropic 提出,是一种轻量、开放的格式,现在 Antigravity、Claude Code 等多个工具都支持。核心思路是渐进式披露(Progressive Disclosure):
- 一开始,模型只看到每个 Skill 的一行简介(相当于一份菜单)。
- 只有当你的请求和某个 Skill 的简介匹配时,才加载它的完整指令和脚本。
例如,你让智能体重构认证中间件,它会加载安全相关的 Skill,而不会加载无关的 CSS 构建流程。上下文始终精简、快速、省钱。
Skill 的两个特点
- 按需加载:系统提示词始终存在,而 Skill 只在智能体判断相关时才加载。项目里有几十种工具时,这种选择性加载对性能和推理准确性至关重要。
- 能力扩展:Skill 不只是指令,还能附带 Python 或 Bash 脚本,让智能体在本地或网络上执行复杂的多步操作,从"只会生成文本"变成"会用工具"。
7.2 Skill 的结构
目录结构
my-skill/
├── SKILL.md # 必需:元数据 + 指令
├── scripts/ # 可选:Python、Bash 或 Node 脚本
│ ├── run.py
│ └── util.sh
├── references/ # 可选:文档或模板
│ └── api-docs.md
└── assets/ # 可选:图片、logo 等静态资源
这个结构把逻辑(scripts)、指令(SKILL.md)和知识(references)分开,和常规的软件工程实践一致。
SKILL.md 的两部分
第一部分:YAML 头信息(frontmatter)
这是唯一会被智能体"路由器"索引的部分。你发出请求时,智能体会把请求和所有 Skill 的 description 做语义匹配。
---
name: database-inspector
description: Use this skill when the user asks to query the database, check table schemas, or inspect user data in the local PostgreSQL instance.
---
| 字段 | 是否必需 | 说明 |
|---|---|---|
name |
可选 | 在同一范围内唯一,小写字母加连字符,比如 postgres-query、pr-reviewer。不写的话默认用目录名 |
description |
必需,最重要 | 相当于触发条件,必须描述得足够具体,让模型能识别出相关性 |
description 怎么写:
- 差:"Database tools",太模糊,永远不会被正确触发
- 好:"Executes read-only SQL queries against the local PostgreSQL database to retrieve user or transaction data. Use this for debugging data states"
好的 description 要说清楚:做什么动作、作用于什么对象、什么场景下使用。
第二部分:Markdown 正文
正文就是"保存在文件里的提示词工程"。Skill 被激活时,这部分内容会注入智能体的上下文。建议包含四块:
- 目标(Goal):这个 Skill 要达成什么
- 步骤(Instructions):一步一步的逻辑
- 示例(Examples):输入输出示例,引导模型的表现
- 约束(Constraints):"禁止"规则,比如"不准执行 DELETE 查询"
正文示例:
Database Inspector
Goal
To safely query the local database and provide insights on the current data state.
Instructions
- Analyze the users natural language request to understand the data need.
- Formulate a valid SQL query.
- CRITICAL: Only SELECT statements are allowed.
- Use the script scripts/query_runner.py to execute the SQL.
- Command: python scripts/query_runner.py "SELECT * FROM..."
- Present the results in a Markdown table.
Constraints
- Never output raw user passwords or API keys.
- If the query returns > 50 rows, summarize the data instead of listing it all.
脚本集成
Skill 最强大的能力之一是把执行交给脚本。有些事 LLM 做不了或做不可靠,比如运行二进制程序、复杂数学计算、对接老系统。脚本放在 scripts/ 目录,SKILL.md 里用相对路径引用。
7.3 Skill 放在哪里
| 范围 | 路径 | 适合放什么 |
|---|---|---|
| 项目级 | <项目根目录>/.agents/skills/ |
项目专属的任务:部署到特定环境、这个应用的数据库管理、内部框架的样板代码 |
| 全局(桌面版 / IDE) | ~/.gemini/config/skills/ |
通用工具:格式化 JSON、生成 UUID、代码风格审查、个人效率工具 |
| 全局(CLI) | ~/.gemini/antigravity-cli/skills/ |
同上,供 CLI 使用 |
npx skills / agents-cli 安装的位置 |
~/.agents/skills/ |
桌面版能读到,CLI 读不到,需要复制到上面的项目级或 CLI 全局目录 |
注意全局路径在官方资料里不完全一致:入门 lab 说
~/.gemini/config/skills/对所有产品(包括 CLI)都生效,Skills lab 后半部分又说 CLI 的全局目录是~/.gemini/antigravity-cli/skills/。最可靠的做法是放在项目级目录.agents/skills/,两边都能识别。需要全局共享时,按下面的方法验证是否生效。
怎么确认 Skill 已加载:
- 桌面版 / IDE:问智能体
What skills are available? - CLI:输入
/skills
7.4 热身:你的第一个 Skill(代码审查)
这是一个纯指令 Skill,只需要一个 SKILL.md。
-
在项目文件夹(比如
$HOME/agy2-projects/my-skills-project)里创建目录:mkdir -p .agents/skills/code-review -
在
.agents/skills/code-review/下创建SKILL.md:--- name: code-review description: Reviews code changes for bugs, style issues, and best practices. Use when reviewing PRs or checking code quality. --- # Code Review Skill When reviewing code, follow these steps: ## Review checklist 1. **Correctness**: Does the code do what it's supposed to? 2. **Edge cases**: Are error conditions handled? 3. **Style**: Does it follow project conventions? 4. **Performance**: Are there obvious inefficiencies? ## How to provide feedback - Be specific about what needs to change - Explain why, not just what - Suggest alternatives when possible -
在这个项目里开一个对话,问
What skills are available?,应该能看到code-review。 -
创建一个故意写得有问题的文件
demo_bad_code.py:import time def get_user_data(users, id): # Find user by ID for u in users: if u['id'] == id: return u return None def process_payments(items): total = 0 for i in items: # Calculate tax tax = i['price'] * 0.1 total = total + i['price'] + tax time.sleep(0.1) # Simulate slow network call return total def run_batch(): users = [{'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'}] items = [{'price': 10}, {'price': 20}, {'price': 100}] u = get_user_data(users, 3) print("User found: " + u['name']) # Will crash if None print("Total: " + str(process_payments(items))) if __name__ == "__main__": run_batch() -
新开一个对话,输入:
review the @demo_bad_code.py file
检查点智能体识别出 code-review Skill,加载它,然后按清单逐项审查。它应该指出:get_user_data 找不到用户时返回 None,run_batch 直接访问 u['name'] 会崩溃(id 3 不存在);循环里的 time.sleep 有性能问题;参数名 id 遮蔽了内置函数等。
7.5 四种 Skill 写法,由浅入深
下面四个例子来自示例仓库,分别展示一种设计模式。先准备好:
-
克隆示例仓库:
git clone https://github.com/rominirani/antigravity-skills -
进入
antigravity-skills/skills_tutorial目录,把下面四个文件夹复制到你项目的.agents/skills/下:git-commit-formatterlicense-header-adderdatabase-schema-validatorjson-to-pydantic
-
验证:桌面版问
What skills are available?,CLI 输入/skills,应该能看到这 4 个。
级别 1:纯指令模式(git-commit-formatter)
场景:开发者经常写敷衍的提交信息,比如 "wip"、"fix bug"、"updates"。靠人去执行 Conventional Commits 规范很繁琐,经常忘。把规则写进 Skill,让智能体来执行。
结构:
git-commit-formatter/
└── SKILL.md (只有指令)
SKILL.md:
---
name: git-commit-formatter
description: Formats git commit messages according to Conventional Commits specification. Use this when the user asks to commit changes or write a commit message.
---
Git Commit Formatter Skill
When writing a git commit message, you MUST follow the Conventional Commits specification.
Format
`<type>[optional scope]: <description>`
Allowed Types
- **feat**: A new feature
- **fix**: A bug fix
- **docs**: Documentation only changes
- **style**: Changes that do not affect the meaning of the code (white-space, formatting, etc)
- **refactor**: A code change that neither fixes a bug nor adds a feature
- **perf**: A code change that improves performance
- **test**: Adding missing tests or correcting existing tests
- **chore**: Changes to the build process or auxiliary tools and libraries such as documentation generation
Instructions
1. Analyze the changes to determine the primary `type`.
2. Identify the `scope` if applicable (e.g., specific component or file).
3. Write a concise `description` in an imperative mood (e.g., "add feature" not "added feature").
4. If there are breaking changes, add a footer starting with `BREAKING CHANGE:`.
Example
`feat(auth): implement login with google`
动手(需要本机装好 Git):
-
建一个测试仓库:
Create a folder named git_test in the workspace, initialize a git repository inside it, and create an initial file auth.py with def login(): pass. Stage this file and make an initial commit.提交时 Skill 会被触发,输出类似:
1. Created folder and initialized git repository: • Directory: git_test • Initialized empty Git repository in git_test/.git/ 2. Created initial file: • File: auth.py • Defined: auth.py:1-2 3. Staged and committed changes: • Commit message: feat(auth): add initial login function -
改一下代码:
In the git_test folder, modify auth.py to add Google Login functionality. -
提交:
Stage the changes in the git_test folder and commit them. Make sure to format the commit message using the Conventional Commits skill.智能体会运行
git add auth.py,分析 diff,判断这是auth模块的新功能,生成类似feat(auth): implement google login的提交信息,再执行git commit。 -
查看历史:
Show me the git log in the git_test folder.智能体会运行
git log -n 5,你能看到格式规范的提交记录。
适用场景:规范类、格式类的要求,规则能用几段话说清楚。
级别 2:引用资料模式(license-header-adder)
场景:公司项目的每个源文件都要加一段 20 行的 Apache 2.0 许可证头。如果把这段文字直接写进 SKILL.md:一是每次加载都浪费 token;二是模型可能把法律文本抄错。更好的做法是把大段固定文本放进单独的文件,需要时才让智能体去读。
结构:
license-header-adder/
├── SKILL.md
└── resources/
└── HEADER_TEMPLATE.txt (大段文本放这里)
SKILL.md:
---
name: license-header-adder
description: Adds the standard open-source license header to new source files. Use involves creating new code files that require copyright attribution.
🔗延伸阅读
- AnthropicEquipping agents for the real world with Agent SkillsAgent Skills 的原始设计文章,讲清了渐进式披露的思路和设计取舍。
- 开放规范Agent Skills OverviewAgent Skills 格式的开放规范站点。
- GoogleAntigravity Skills 文档Antigravity 对 Skills 的支持和存放路径。
- GitHubantigravity-skills 示例仓库本章四个示例 Skill 的完整源码。
- 规范Conventional Commits级别 1 示例所依据的提交信息规范。
多角色开发流水线:agents.md + Workflows
只用几个 Markdown 文件,就能搭出一个"产品经理 → 工程师 → 测试 → 运维"的 AI 开发团队,一条 /startcycle 命令从想法跑到可运行的应用。这一章重点讲流水线怎么设计:角色怎么分、文件怎么交接、审批关口放在哪里。
🎯学完这一章,你能
- 理解为什么要把任务拆给多个角色
- 用 Goal / Traits / Constraint 定义角色
- 设计"通过文件交接"的流水线
- 在正确的位置设置人工审批关口
- 用 Workflows 自定义斜杠命令
- 设计属于你自己的流水线
🖼️一图看懂:角色、交接文件与审批关口
🎮互动演示:体验审批关口
按下 /startcycle,试试"批注返工"几次,再批准。注意:返工发生在写代码之前,几乎没有成本。
💡为什么这样设计
为什么要拆角色
让一个 AI 同时当架构师、程序员、测试和运维,它很容易顾此失彼:边写代码边改需求,测试时不自觉地为自己的代码辩护。拆开后,每个阶段只有一个目标和一套约束。PM 被明确要求"从不写代码",QA 被要求"像一双新的眼睛"去挑错。
为什么通过文件交接,而不是聊天
聊天记录会越来越长,关键信息被淹没;文件是明确的交接物:PM 的产出就是那份规范,工程师只需要读它。文件还可以被你直接编辑和批注,也能纳入版本管理。app_build/ 和 .agents/ 分开,则保证了"AI 的指令"和"AI 的产出"不会混在一起。
为什么审批关口放在最前面
规范阶段改方向,只需要改几行文字;写完代码再改,要推倒重来。所以审批关口应该放在"昂贵或不可逆"的步骤之前。在这个流水线里,最昂贵的是写代码,所以关口放在 PM 之后。如果你的流水线包含生产部署,部署前也应该再加一个关口。
为什么 QA 要单独一步
AI 一次生成大量代码时难免有小错误:漏了依赖、未处理的 Promise、拼写错误。单独一个只找错的环节,能显著提高"一次就能跑起来"的概率。这对应业内常说的 evaluator-optimizer(评估者-优化者)模式。
🧠和业内设计模式的对应关系
Anthropic 在《Building Effective Agents》里总结了几种常见的编排模式,这条流水线用到了其中三种。
🔗 Prompt Chaining
把任务拆成固定顺序的步骤,前一步的输出是后一步的输入,中间可以加检查点。对应:PM → 工程师 → QA → 运维。
🚦 Gate(关口)
在步骤之间加程序化或人工检查,不通过就不继续。对应:规范必须等你回复 Approved。
⚖️ Evaluator-Optimizer
一个负责生成,另一个负责评估和改进。对应:工程师写代码,QA 审查并修复。
这也是业内所说的"图式编排"(graph engineering)的简化版:你规定步骤顺序和交接方式,AI 负责每个步骤里的具体工作。
✅怎么设计你自己的流水线
五个设计步骤
- 列出阶段:这个工作在人类团队里是怎么分工的?
- 定义交接物:每个阶段的输出是什么文件?放在哪里?下一个阶段读什么?
- 设置关口:哪些步骤昂贵或不可逆?在它们之前加人工审批。
- 写角色:每个角色一个目标、几条特质、几条硬约束。
- 写工作流:把顺序、交接和关口写进
.agents/workflows/。
✓ 推荐
- 角色约束写成"MUST / never"这类明确的句式
- 技能和技术栈解耦,由规范决定用什么技术
- 每个阶段的产出都保存成文件
- 先跑通最短的流水线,再逐步加角色
✗ 避免
- 角色太多,每个只做一点点,交接成本比收益高
- 没有审批关口,一口气跑到底
- 角色之间只靠聊天传递信息
- 技能里写死某个框架,换项目就要重写
📋可复用模板
## The <Role Name> (@<handle>)
You are a <资历和专长>.
**Goal**: <在流水线里具体负责什么>
**Traits**: <做事风格,2–3 个形容>
**Constraint**: You MUST <必须做的事>. You never <绝不做的事>.
You always save your output to `<目录>/`.
# Skill: <Name>
## Objective
Your goal as the <Role> is to <目标>.
## Rules of Engagement
- **Input**: Read `<上一步的产出文件>`.
- **Save Location**: Write your output to `<本步产出文件>`.
- **Approval Gate** (optional): Pause and ask the user to approve before continuing.
## Instructions
1. ...
2. ...---
description: Reproduce, diagnose and fix a bug with a human approval gate
---
When the user types `/fixbug <bug description>`:
1. Act as the **Investigator**: reproduce the bug and write
`bug_reports/<id>.md` with steps to reproduce,
root cause analysis and a proposed fix.
*(Pause. Ask the user to approve the root cause and the fix.
If the user comments in the file, revise and ask again.)*
2. Act as the **Engineer**: write a failing test that reproduces
the bug first, then implement the approved fix.
3. Act as the **Reviewer**: run the full test suite, check the diff
for unrelated changes, and fix any regressions.
4. Act as the **Release Writer**: summarize the change in
`bug_reports/<id>.md` for the PR description.
先写一个能复现 bug 的失败测试,再修复,是防止"修好了又坏"的常用做法。
📸官方界面截图
图源:Google Codelabs《Autonomous AI Developer Pipelines with Antigravity》,CC BY 4.0。
🤔思考题
这里的"四个角色"真的是四个智能体吗?
不是。工作流里写的是"Shift context, act as…",也就是同一个智能体按顺序切换身份。好处是简单可靠、上下文连贯;局限是不能并行,而且越往后上下文越长。如果需要真正并行(比如三个审查者同时审),可以考虑 CLI 的子智能体或 SDK。理解这一点,能帮你判断流水线的规模上限。
本章的技能是平铺的 .md 文件,没有 YAML 头信息,为什么也能生效?
因为工作流按文件名明确引用了它们("execute the write_specs.md skill"),智能体是被指示去读这些文件,而不是靠自动发现。它们更像"被工作流调用的参考文档"。如果你希望某个技能在工作流之外也能被自动触发,就按第 7 章的格式改成 技能名/SKILL.md 并加上 frontmatter。
你所在团队的哪个流程最适合改造成这样的流水线?
找步骤固定、交接物明确、目前靠人"传话"的流程。比如:需求文档 → 技术方案 → 实现 → 测试报告;事故告警 → 排查 → 修复 → 复盘文档;周数据 → 分析 → 报告 → 邮件草稿。每个"→"都是一次文件交接,在最关键的那个"→"之前放审批关口。
📝小测验
1. 自定义斜杠命令的文件应该放在哪里?
2. 人工审批关口最应该放在什么位置?
🛠️操作手册:一步步跟着做
初始化工作区、完整的 agents.md、五个技能文件、startcycle 工作流,以及运行流水线。
学完你能:定义一个 AI 开发团队(产品经理、工程师、测试、运维),给每个角色写技能手册,用一条自定义斜杠命令把整个开发流程串起来:从一句想法到一个跑起来的应用。全程不写编排代码。
预计用时:60 分钟
你需要:Antigravity IDE、Chrome、Node.js v18+ 或 Python、(可选)gcloud CLI
8.1 整体设计
只靠三种 Markdown 文件,就能搭出一条自动化流水线:
| 组成部分 | 位置 | 作用 |
|---|---|---|
| 团队定义 | .agents/agents.md |
定义团队里有谁:产品经理、工程师、测试、运维 |
| 技能手册 | .agents/skills/*.md |
每个角色的具体操作规范,以及交接规则 |
| 工作流 | .agents/workflows/startcycle.md |
定义 /startcycle 命令,把各角色串成流水线 |
外加两个用于交接的文件夹:
production_artifacts/:角色之间交接文档的地方,比如产品经理写好的需求文档放这里,工程师从这里读取app_build/:生成的应用代码,和 AI 指令文件分开
流水线流程:
你的想法
│
▼
@pm 写技术规范 ──> 等你审批 ──(你在文档里批注要求返工)──┐
│ ▲ │
│ └──────────────────────────────────┘
▼ (你回复 Approved)
@engineer 按规范写代码 → app_build/
│
▼
@qa 审查并修复 bug
│
▼
@devops 安装依赖、启动服务,给你访问链接
进阶为什么要拆成多个角色:如果让一个 AI 同时当架构师、程序员、测试和运维,它很容易顾此失彼。拆开后每个阶段只专注一件事:产品经理只管需求,工程师只管写代码,测试只管找 bug。
8.2 第一步:初始化工作区
- 打开 Antigravity IDE,进入 Agent Manager。
- 点 + Open Workspace → Open New Workspace,命名为
skills-codelab,选择一个本地文件夹。 - 切到编辑器视图,创建以下目录结构(在工作区根目录下):
mkdir -p .agents/workflows .agents/skills
mkdir production_artifacts app_build
完成后的结构:
<工作区根目录>/
├── .agents/
│ ├── workflows/
│ └── skills/
├── production_artifacts/
└── app_build/
注意 原 lab 的命令里先执行了
mkdir skills-codelab && cd skills-codelab,如果你的工作区本身就叫skills-codelab,这样会建出两层嵌套的同名文件夹,Antigravity 可能读不到.agents/。确保.agents/在 Antigravity 打开的那个根目录下。
.agents/ 是 Antigravity 原生识别的特殊目录,放在这里的文件会扩展智能体的内置行为。
8.3 第二步:定义团队(agents.md)
创建 .agents/agents.md:
🔗延伸阅读
- AnthropicBuilding Effective AgentsPrompt chaining、routing、parallelization、orchestrator-workers、evaluator-optimizer 五种模式的原始出处。
- GoogleAntigravity Rules 与 Workflows 文档Rules 和 Workflows 的格式、存放位置与触发方式。
工程化 SDD:spec-kit + ADK 智能体开发
把前面所有能力组合起来:让智能体先读懂一个陌生代码库,用项目宪法设定不可违反的原则,再通过 spec-kit 的六个阶段,给 ADK 智能体加上订座功能,全程不手写应用代码。这是从"会用"到"工程化地用"的一章。
🎯学完这一章,你能
- 让 Antigravity 快速建立对陌生代码库的理解
- 分清 Rules、Skills、Workflows 三级上下文
- 写出一份有约束力的项目宪法
- 走完 spec-kit 的六个阶段,知道每步审什么
- 用 mcpdoc + llms.txt 接入任何框架的最新文档
- 把这套方法迁移到自己的项目
🖼️一图看懂:你要改造的系统
起点是一个能搜菜单、记饮食偏好的 ADK 餐厅助手,目标是加上订座功能(右下角的 reservations 表目前标着 TODO)。
图源:Google Codelabs《SDD with ADK and Antigravity》,CC BY 4.0。
🧱三级上下文:Rules、Skills、Workflows
这一章同时用到三者。理解它们的分工,是设计一个"智能体友好"项目的基础。
另外还有 .specify/memory/constitution.md(项目宪法):它不是 Antigravity 的原生机制,而是 spec-kit 的约定,由 plan 和 analyze 阶段主动读取并检查。
💡为什么要这样工程化
Antigravity 内置规划已经是 SDD 了,为什么还要 spec-kit?
内置的 Planning 模式会生成实施计划和任务清单,这已经是"先计划后实现"。spec-kit 在此基础上加了三样东西:
- 分阶段的独立文档:需求(spec)、方案(plan)、任务(tasks)分开写、分开审,每一步的关注点不同。
- 持久化和版本管理:所有文档按功能分支存在
specs/<分支名>/,提交到 git。对话中断、几个月后回顾,决策都在。 - 质量关口:clarify 在规划前找出含糊之处,analyze 在实施前检查矛盾和遗漏,宪法检查保证方案不违反项目原则。
为什么第一步是"建立项目上下文"
真实项目往往文档过时、README 不准。如果智能体对项目的理解是错的,后面所有规范和方案都会建立在错误的基础上。先用 repo-research 生成一份 project-context.md 放进 Rules,相当于给智能体发了一份准确的入职手册,以后每个对话都能看到。
为什么要接入框架文档
模型对 ADK 这类快速迭代的框架,训练数据可能已经过时。通过 mcpdoc 读取官方的 llms.txt,智能体在规划时查的是最新的官方文档,大大减少用错 API 的情况。
🔄spec-kit 六个阶段:每一步产出什么、你审什么
点击阶段查看详情。带"可选"的是质量关口,复杂功能建议不要跳过。
/speckit.specify <功能描述>
产出:specs/<分支>/spec.md
定义做什么、为什么,面向用户、不谈技术。自动创建功能分支。
- 功能需求是否完整?
- 成功标准是否可衡量?
- 有没有混进技术细节(比如提到 SQL 表)?
/speckit.clarify
产出:更新 spec.md
扫描歧义和缺失,提出针对性问题,每个用一个选项或一句话回答,答案写回规范。
- 回答时想清楚真实需求,不要随手选默认项
- 简单功能可以跳过这一步
/speckit.plan <技术方向>
产出:plan.md、data-model.md、research.md
先调研代码库中的未知点,再设计方案和数据模型,并做宪法检查。
- 是否通过宪法检查?
- 改哪些文件、遵循什么模式?
- 数据模型的字段和类型合理吗?
- research.md 里的决策理由站得住吗?
/speckit.tasks
产出:tasks.md
把方案拆成有编号的任务,[P] 表示可并行,按 Setup → Foundational → User Stories → Polish 分阶段。
- 每个任务都能追溯到需求吗?
- 顺序和依赖对吗?
- 有没有遗漏测试任务?
/speckit.analyze
产出:分析报告
交叉检查 spec、plan、tasks:遗漏的边界情况、冲突的任务、需求缺口。违反宪法的标为 CRITICAL。
- 先解决所有 CRITICAL
- 再决定其他问题要不要处理
/speckit.implement
产出:代码改动 + Walkthrough
展示最终实施计划和任务产物,你批准后逐项执行并打勾。可以直接在产物上批注。
- 看 Walkthrough 和 diff
- 按 spec.md 的成功标准亲自测试
📜怎么写好项目宪法
宪法是什么
项目里不可违反的原则。plan 阶段会对照它检查方案,analyze 阶段会把违反之处标为 CRITICAL。如果宪法还是空模板,这些检查就形同虚设。
好原则的三个标准
- 可判断:看一眼方案就能判断违没违反。"代码要优雅"不可判断;"数据库操作只能通过 tools.yaml"可以判断。
- 是硬约束:违反了就必须改,而不是"最好这样"。软建议放到 Rules 或 Skills 里。
- 数量少:3–7 条。原则太多,每条的分量都会被稀释。
本章的三条原则
- 所有数据库操作通过
tools.yaml的 MCP Toolbox 工具定义,Python 代码里不写原生 SQL、不用 ORM。 - 会话状态只用 ADK
ToolContext,不自建状态管理、不用外部状态存储。 - 保持简单,严格遵循现有的文件和命名约定。
| ❌ 不好的原则 | ✅ 改写后 |
|---|---|
| 代码质量要高 | 所有新函数必须有单元测试,CI 中覆盖率不得下降 |
| 注意安全 | 密钥只能从 Secret Manager 读取,代码和配置文件中不得出现明文凭据 |
| 尽量保持简单 | 不引入新的前端框架;新增依赖必须在 plan.md 中说明理由 |
| API 要设计好 | 对外 API 只能新增字段,不能删除或改名已有字段 |
/speckit.constitution This is a <项目类型> maintained by <团队规模>.
Set <N> principles:
(1) <数据访问规则> — no <禁止的做法>.
(2) <状态 / 架构规则> — no <禁止的做法>.
(3) <依赖 / 复杂度规则>.
(4) <测试 / 质量门槛>.
(5) <安全规则>.✅怎么用好这套流程
✓ 推荐做法
- 先上下文、再宪法、后功能,顺序不要颠倒
- specify 时只写"做什么",技术方向留到 plan 的提示词里
- plan 的提示词里点名要用的工具和 Skill,比如"使用 ADK Docs 工具和 MCP Toolbox Skill"
- 每个阶段的产物都审完再进入下一步
specs/目录提交到 git,它就是项目的设计文档库- 项目变化后重新运行 repo-research,增量更新上下文
✗ 常见误区
- 跳过上下文建立,直接 specify
- 宪法写成一长串愿景和口号
- 每个阶段都无脑点"下一步",最后在 implement 时才发现方向错了
- 小功能也走完整六个阶段,包括 clarify 和 analyze
- AI 生成的文件名和表结构与教程不同就以为出错了(这是正常的)
📋可复用模板
Research this repository and create a project context document
in .agents/rules/project-context.md, and communicate efficiently.
Research the database schema and update the project context.
Update the project context with the new tool definitions./speckit.specify Add <功能> to <系统>.
<用户角色> should be able to <动作 1> by providing <输入>.
They should also be able to <动作 2>.
The system should <确认 / 校验行为> before <关键操作>
and handle <特殊情况,如 special requests>./speckit.plan <架构方向,如 split into multi-agent: menu and reservations>.
Utilize your access to <文档 MCP> and <相关 Skill> to implement it properly.
Follow the constitution.{
"mcpServers": {
"adk-docs-mcp": {
"command": "uvx",
"args": [
"--from", "mcpdoc", "mcpdoc",
"--urls", "AgentDevelopmentKit:https://adk.dev/llms.txt",
"--transport", "stdio"
]
}
}
}
把 --urls 换成 <名称>:<文档站>/llms.txt,就能接入其他框架的官方文档。很多文档站都提供 llms.txt,可以先在浏览器里访问 <文档站>/llms.txt 确认。
grep -i "reservation" tools.yaml
grep -i "reservation" restaurant_concierge/agent.py
git diff --name-only
# 重启 Toolbox,加载新的 tools.yaml
lsof -ti:5000 | xargs kill -9 2>/dev/null; echo "Done"
./scripts/setup_database.sh > database_setup.log 2>&1 &
uv run adk web .📸官方界面截图
图源:Google Codelabs《SDD with ADK and Antigravity》,CC BY 4.0。
🤔思考题
project-context.md 放在 Rules 里,它会越来越长,怎么办?
Rules 每次都加载,过长会挤占上下文。可以:只在 Rules 里保留高频必需的信息(技术栈、目录结构、核心约定);把详细的数据模型、API 列表等拆到 Skills 的 references/ 里按需读取;定期让智能体"精简 project-context.md,只保留每次对话都需要的内容"。
宪法检查通过了,就说明方案是好的吗?
不是。宪法只检查"有没有违反硬约束",不评判方案的质量、性能、可维护性。它是底线,不是上限。方案好不好仍然需要你审 plan.md 和 research.md。
如果要把这套流程用在你的项目上,最小可行的版本是什么?
三步就够起步:① 用 repo-research 类的提示词生成 .agents/rules/project-context.md;② 写 3 条宪法;③ 下一个中等功能用 specify → plan → tasks → implement 四步(先跳过 clarify 和 analyze)。跑通一次后,再根据体验决定要不要引入完整的 spec-kit。
这一章用了 Rules、Skills、Workflows、MCP、产物批注、宪法。如果只能保留两样,你选哪两样?
没有标准答案,但值得想一想。很多人会选 Rules(项目上下文)和 产物审批:前者保证智能体理解对了项目,后者保证你在关键节点把关。其他机制都是在这两者基础上提高效率和一致性。你的选择反映了你的项目最大的风险在哪里。
📝小测验
1. 下面哪个阶段会对照项目宪法做检查?
2. spec.md 里出现"在 reservations 表里加一个 special_requests 字段",问题在哪?
3. Skill 文件写好了却没被识别,最可能的原因是?
🛠️操作手册:一步步跟着做
环境准备、激活 Skills、配置 ADK 文档 MCP、生成项目上下文、制定宪法、完整的 SDD 循环、测试和清理。
gcloud services enable sqladmin.googleapis.com compute.googleapis.com
## A.5 用 Cloud Shell 还是本地终端
| | Cloud Shell | 本地终端 |
|---|---|---|
| 优点 | 浏览器里直接用,gcloud 已预装并登录 | 能和本地 Antigravity 桌面版和 IDE 配合 |
| 适合 | 第 3 章 CLI 练习 | 第 6、9 章(需要在 Antigravity IDE 里操作) |
| 打开方式 | Console 顶部搜索栏右边的终端图标;编辑器在 [ide.cloud.google.com](https://ide.cloud.google.com/) | 安装 [gcloud CLI](https://docs.cloud.google.com/sdk/docs/install-sdk) |
## A.6 关于数据隐私
使用 Gemini for Google Cloud 时:
- **Google 不会用你的提示词和回复训练模型**。
- 数据在传输过程中加密。
- AI 生成的内容可能看起来合理但实际有误,**代码要经过测试和安全检查后再使用**。
- 你对代码的安全性、测试和有效性负责,包括 AI 生成的部分。
详见 [Google 如何处理你的提示词](https://cloud.google.com/gemini/docs/discover/data-governance)。
---
## 参考资料
- Antigravity 官网:<https://antigravity.google/>
- 官方文档:<https://antigravity.google/docs>
- Skills 文档:<https://antigravity.google/docs/skills>
- Rules 和 Workflows 文档:<https://antigravity.google/docs/rules-workflows>
- CLI 文档:<https://antigravity.google/docs/cli-overview>
- 下载:<https://antigravity.google/download>
- 使用案例:<https://antigravity.google/use-cases>
- YouTube 频道:<https://www.youtube.com/@googleantigravity>
- spec-kit:<https://github.com/github/spec-kit>
- Skills 示例仓库:<https://github.com/rominirani/antigravity-skills>
- Agents CLI:<https://github.com/google/agents-cli>
- npx skills:<https://github.com/vercel-labs/skills>
本手册内容整理自以下 Google Codelabs(内容采用 CC BY 4.0 许可,代码示例采用 Apache 2.0 许可):
1. Getting Started with Google Antigravity
2. Antigravity CLI(GenAI for Developers)
3. Design to Code with Antigravity & Stitch
4. Getting Started with Spec-Driven Development in Antigravity
5. Getting Started with Antigravity Skills
6. Autonomous AI Developer Pipelines with Antigravity
7. SDD with ADK and Antigravity
🔗延伸阅读
- GitHubgithub/spec-kit本章使用的 SDD 工具包,包含完整的命令和模板。
- Martin FowlerUnderstanding Spec-Driven-Development对 spec-kit 等工具的批判性分析,帮助你判断什么时候值得用完整流程。
- GoogleAgent Development KitADK 官方文档。
- GoogleMCP Toolbox for Databases本章用来把数据库暴露成智能体工具的组件。
- 社区标准llms.txt"给大模型读的网站索引"提案,mcpdoc 就是读取它来提供文档。
速查、决策与排错
学完前面的章节后,这一页是你日常使用时的"随手查":遇到一个需求该用哪种能力、命令和文件放在哪里、出了问题怎么排查。
🧭互动工具:我想要……该用什么?
选择你的需求,查看推荐的能力、理由和对应章节。
确定性的判断交给脚本,在 SKILL.md 里明确写"Do not read the file manually",按退出码解读结果。
→ 第 7 章 四种模式
spec → plan → tasks → implement,每个阶段一份文档,全部纳入 git;宪法保证方案不越界。
→ 第 9 章 工程化 SDD → 第 6 章 为什么用 SDD
⭐用得更好的十个习惯
1. 大任务先 /plan 或 /grill-me
在方案阶段纠错,成本最低。
2. 用产物验收
看计划、diff、Walkthrough、截图,而不是听它说"做完了"。
3. 在产物上直接批注
比在聊天框里描述更精确。
4. 需求里写约束和验收方法
约束防止自作主张,验收方法让 AI 能自测。
5. 可验证的目标交给 /goal
测试全绿、构建成功这类目标最适合。
6. 重复叮嘱的话写成 Skill 或 Rule
写一次,长期生效;也可以用 /learn 沉淀。
7. 确定性的事交给脚本
不让模型凭感觉判断。
8. 按项目限制 MCP 和权限
上下文更干净,风险更小。
9. 复杂功能走 SDD
出问题时改规范,而不是直接改代码。
10. 读产物里的说明和 NOTE
智能体遇到障碍时可能会自行变通,它通常会在产物里写明。
📚完整速查表
命令、文件位置、能力选择、最佳实践、排错和安全提醒。
10.1 命令速查
桌面版 / IDE
| 命令或操作 | 作用 |
|---|---|
/plan <任务> |
先出实施计划,批准后执行 |
/browser <任务> |
浏览器子智能体(Chrome 需为默认浏览器) |
/schedule |
创建定时任务 |
/<工作流名> |
运行 .agents/workflows/ 下的自定义工作流 |
@文件名 |
引用文件作为上下文 |
CMD+E / CTRL+E |
切换 Agent Manager 和编辑器 |
Ctrl+L |
编辑器模式下打开聊天框 |
What skills are available? |
查看已加载的 Skills |
CLI
| 命令 | 作用 |
|---|---|
agy |
启动交互模式(在项目根目录运行) |
agy -p "提示词" |
非交互模式,适合脚本和 CI/CD |
/plan <任务> |
先出计划 |
/goal <任务> |
一直执行到目标完成 |
/grill-me <任务> |
动手前通过提问对齐需求 |
/artifacts |
查看产物 |
/diff |
查看改动 |
/context |
查看上下文用量 |
/agents |
查看子智能体 |
/tasks |
查看后台进程 |
/btw <问题> |
插入旁支问题 |
/config |
设置 |
/model |
查看或切换模型 |
/mcp |
查看 MCP 服务器 |
/skills |
查看 Skills |
/hooks |
查看 Hooks |
! <命令> |
直接执行 shell 命令 |
Ctrl+b |
把当前任务放到后台 |
spec-kit(第 9 章)
| 命令 | 产出 |
|---|---|
/speckit.constitution |
.specify/memory/constitution.md |
/speckit.specify |
specs/<分支>/spec.md |
/speckit.clarify |
更新 spec.md |
/speckit.plan |
plan.md、data-model.md、research.md |
/speckit.tasks |
tasks.md |
/speckit.analyze |
分析报告 |
/speckit.implement |
代码 + Walkthrough |
/speckit.checklist |
检查清单 |
10.2 文件位置速查
| 内容 | 桌面版 / IDE | CLI |
|---|---|---|
| MCP 全局配置 | ~/.gemini/config/mcp_config.json |
~/.gemini/antigravity-cli/mcp_config.json |
| MCP 项目配置 | 项目设置里的 MCP 白名单 | .agents/mcp_config.json |
| Skills 全局 | ~/.gemini/config/skills/ |
~/.gemini/antigravity-cli/skills/ |
| Skills 项目级 | .agents/skills/ |
.agents/skills/ |
npx skills 安装位置 |
~/.agents/skills/(能读到) |
读不到,需要复制 |
| Rules | .agents/rules/ |
— |
| Workflows | .agents/workflows/ |
— |
| 团队角色定义 | .agents/agents.md |
— |
| Hooks | — | 插件的 hooks.json 或 settings.json |
一个完整项目的 .agents/ 目录参考:
.agents/
├── agents.md # 角色定义(可选)
├── mcp_config.json # 项目级 MCP(CLI)
├── rules/ # 始终生效
│ └── project-context.md
├── skills/ # 按需加载
│ └── <技能名>/
│ ├── SKILL.md
│ ├── scripts/
│ ├── references/
│ └── examples/
└── workflows/ # 斜杠命令
└── <命令名>.md
10.3 能力选择指南:遇到什么情况用什么
| 你的需求 | 用什么 | 详见 |
|---|---|---|
| 让智能体访问外部系统(云服务、GitHub、数据库) | MCP | 第 4 章 |
| 每次对话都要遵守的项目规范 | Rules | 第 9 章 |
| 某类任务的专门做法,不想每次重复叮嘱 | Skills | 第 7 章 |
| 必须准确、不能靠模型猜的检查 | Skill + 脚本 | 7.5 级别 4 |
| 一串固定步骤,想用一个命令触发 | Workflows | 第 8 章 |
| 多个角色分工协作 | agents.md + Workflows | 第 8 章 |
| 复杂功能,需要可追溯的设计决策 | SDD(spec-kit) | 第 9 章 |
| 动作前后自动执行某些操作(格式化、检查) | Hooks | 3.16 |
| 定期自动执行的任务 | /schedule |
2.2 |
| 写进脚本或 CI/CD | agy -p |
3.14 |
10.4 用得更好的十个习惯
- 大任务先
/plan或/grill-me:在方案阶段纠错,成本最低。 - 用产物验收,不要只听智能体说"做完了":看计划、看 diff、看 Walkthrough、看截图。
- 在产物上直接批注:比在聊天框里描述"第三步改成……"更准确。
- 需求里写约束和验收方法:约束防止 AI 自作主张,验收方法让 AI 能自己测试。
- 能被机器验证的目标交给
/goal:比如测试全绿、构建成功。 - 反复叮嘱的话写成 Skill 或 Rule:写一次,永久生效。
- 确定性的事交给脚本:不让模型凭感觉判断。
- 按项目限制 MCP 和权限:上下文更干净,风险更小。
- 复杂功能走 SDD:出问题时改规范,而不是直接改代码。
- AI 生成的测试要人工审:它往往只覆盖了基本路径。
10.5 常见问题排查
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
agy: command not found |
没有把安装目录加入 PATH | 执行安装器输出的 PATH 命令,或新开终端 |
/browser 无法启动 |
Chrome 不是默认浏览器 | 把 Chrome 设为系统默认浏览器 |
| 没有出现 Proceed 按钮,智能体直接执行了 | 审核策略设为 Always Proceed | 在项目设置或用户设置里改回需要审核 |
| Skill 没有被触发 | 缺少 YAML 头信息,或 description 太模糊 | 检查 --- 和 name、description;把 description 写具体;或在提示词里点名 Skill |
| Skill 在桌面版能用、CLI 里不行 | 放在了 ~/.agents/skills |
复制到 .agents/skills/ 或 ~/.gemini/antigravity-cli/skills/ |
| 自定义工作流命令不出现 | 文件不在 .agents/workflows/,或 .agents/ 不在工作区根目录 |
检查目录位置,注意不要嵌套 |
| MCP 工具不可用 | 配置文件格式错误,或改完没重启 | 用 /mcp 检查;CLI 改完配置要重启 agy |
| 配置了新 MCP 后,原来的 MCP 不见了 | 用 echo ... > 覆盖了配置文件 |
恢复备份,手动合并配置 |
| 应用部署了但改动没生效(第 9 章) | Toolbox 没有重启 | 停掉 5000 端口进程,重新运行初始化脚本 |
| 额度消耗很快 | 分析大型仓库、长时间 SDD 流程 | 缩小分析范围;使用 caveman 等节省 token 的 Skill |
10.6 安全提醒
- 智能体会在你的机器上真实执行命令:安装依赖、启动服务、修改文件。不熟悉的命令要看清楚再批准。
- Always Proceed 和 Accept all 会跳过你的审核,只在练习或可信项目里使用。
- 不要盲目运行
curl ... | bash或curl ... | python3:先下载、看内容,再执行。 - 敏感信息:密码、API key、token 不要写进代码或提交到仓库;MCP 配置文件里的 token 也一样。生产环境用 Secret Manager。
- 公开访问:Cloud Run 的
--allow-unauthenticated意味着任何人都能访问,正式环境要加访问控制。 - 用完删除云资源:Cloud Run 服务、Cloud SQL 实例,或者直接删除整个练习项目。
Google Cloud 环境准备
第 3、6、9 章需要一个开启了计费的 Google Cloud 项目。如果你从没用过 Google Cloud,按这一页准备好即可,大约 20 分钟。
🗺️需要准备什么
① 项目
在 Console 创建项目,记下项目 ID(创建后不能修改)。
② 计费
为项目开启计费,新用户可用免费试用额度。
③ 登录
gcloud auth login 和 gcloud auth application-default login。
④ 启用 API
Vertex AI、Cloud Resource Manager,第 9 章另需 Cloud SQL 和 Compute。
auth login 给 gcloud 命令行工具用;application-default login 给你的程序和 SDK 用(应用默认凭据 ADC)。ADK 调用 Vertex AI、Cloud SQL 连接器依赖的是后者。🛠️详细步骤
第 3、6、9 章需要 Google Cloud 项目。如果你从没用过 Google Cloud,按以下步骤准备。
A.1 创建项目
- 登录 Google Cloud Console。没有 Google 账号的话先注册一个。
- 点左上角的项目选择器,创建新项目或选择已有项目。三个概念要分清:
- 项目名称(Project name):显示用的名字,随时可以改。
- 项目 ID(Project ID):全局唯一,创建后不能修改,删除后也不能再被使用。大多数命令里用的是它,通常记作
PROJECT_ID。 - 项目编号(Project number):系统分配的数字,部分 API 会用到。
- 用个人 Gmail 的话,位置选 "No organization" 即可。
A.2 开启计费
在 计费页面 为项目开启计费。新用户可以参加 300 美元免费试用。完成本手册的练习花费很少,甚至不花钱。
A.3 常用命令
在 Cloud Shell 或本地终端里: