字节笔记本
2026年8月28日
Antigravity:并行编排一堆编码代理
一个人盯一个编码代理时,长任务很容易把会话卡住:测一遍、搜一遍仓库、改一堆文件,主对话窗口就被占满。Google Antigravity 把这件事拆开:主代理负责架构和决策,慢活丢给并行子代理和后台任务,你自己只盯结果。
下面按「桌面 2.0 / CLI / 自定义代理」写一份能落地的用法,官方文档入口在 Background tasks & subagents 和 Asynchronous Subagents。
先分清三层表面
Antigravity 现在不是单一 IDE。并行编排会碰到三个入口:
| 表面 | 适合干什么 | 你看到的编排界面 |
|---|---|---|
| Antigravity 2.0 桌面应用 | 多会话、按 Project 分组、定时任务,不绑死某个仓库 | Agent Manager,同步/异步都能开 |
| Antigravity CLI | 终端里跑代理、看后台子代理、杀进程 | /agents、/tasks |
| Antigravity IDE | 还在编辑器里写代码时顺手委派 | IDE 里的 Agent Manager(后续会拆走) |
2.0 的定位是指挥中心:会话按 Project 分组,一个 Project 可以挂多个工作区,权限和设置跟 Project 走,不再跟单个 git 仓库绑死。CLI 则是同一套 harness 的键盘界面。新上手可以先装 桌面版,开发者再并排开自己的 IDE。
子代理实际在干什么
父代理调用 invoke_subagent 时,会新开一条并发会话,带自己的角色和初始 prompt。这条会话:
- 不继承父代理的对话历史,上下文是干净的。
- 可以立刻开跑,父代理可以同时再开几个。
- 工作区可选:跟父级同一目录(
inherit)、独立 Git worktree(branch)、或共享目录(share)。 - 跑完把结果回给父代理,父代理继续拼架构,不会被测试日志或全库搜索刷屏。
内置几类现成的:
research:逛仓库、找结构和调用关系。browser:沙箱浏览器里点页面做交互测试,通常要显式/browser。self:克隆当前代理,同样的系统提示和工具集。
临时任务也可以用 define_subagent 当场定义,不必先落盘。长期复用的角色还是写成 Markdown 更稳。
写一个可被委派的自定义代理
CLI 和桌面会自动扫这些位置:
- 仓库内:
.agents/agents/<name>.md或.agents/agents/<name>/agent.md - 本机全局:
~/.gemini/config/agents/ - 插件包里的
plugins/<plugin>/agents/
description 很关键:规划器靠它决定这种活该不该丢给这个人。subagent: true 才允许父代理用 invoke_subagent 叫它;mainAgent: false 表示它只当打工的,不出现在主会话可选列表里。
下面这个只读审计角色可以放进仓库:
---
name: code-auditor
description: 安全审计、静态分析和代码质量检查。需要扫漏洞、硬编码密钥或注入点时委派给我。
tools:
- view_file
- grep_search
- run_command
subagent: true
mainAgent: false
model: pro
commandExecutionPolicy: sandbox
---
# System Prompt
你是安全审计和代码审查。只看不改,除非用户明确要求修。
# Review Guidelines
1. 先列可疑文件和模式,再逐个打开。
2. 注入、未校验输入、硬编码密钥单独标出来。
3. 每条发现给可执行的改法,不要空泛说「加强校验」。全局复用的写法类似:
mkdir -p ~/.gemini/config/agents/code-reviewer
cat << EOF > ~/.gemini/config/agents/code-reviewer/agent.md
---
name: code-reviewer
description: 盯边界条件和安全问题的代码审查。
---
你是代码审查。看 diff,核边缘情况,别顺手改实现。
EOFtools 里的名字必须是平台认识的(view_file、grep_search、run_command 这类)。写错或写了没映射的工具,子代理有可能卡死在启动阶段,官方文档把这标成已知问题。
commandExecutionPolicy 默认 sandbox。需要跑更宽的 shell 再改 auto / eager,先想清楚这个角色该不该碰写文件和网络。
在 CLI 里盯并行进度
终端里输入 /agents 回车,打开 Agent Manager 面板。上半是可选的自定义主代理,下半是当前会话拉起来的子代理,按触发它的那条 prompt 分组。
状态就四种:running、done、error、killed。常用键:
| 键 | 作用 |
|---|---|
| ↑ / ↓ | 在组、子代理、可选主代理之间移动 |
| Enter | 展开/折叠组,或打开某条子代理的完整日志 |
| K | 杀掉当前这条 running 子代理(以及它的子线程) |
| Esc | 退回输入框;如果刚切了主代理,在这里生效 |
切主代理会分叉对话,不会改已经发生的历史。别指望切完还在同一条时间线上改前面的决定。
非代理类的后台活(直接跑的 shell、测试套件、/btw 丢出去的查询)用 /tasks。那里看的是 stdout,也能停掉失控的终端进程。两类别混:子代理看 /agents,普通后台命令看 /tasks。
审批别把流程打断
子代理要写文件或跑受保护命令时,请求会冒到主界面。CLI 给了两条少切面板的路径:
Alt+J:从当前输入框跳进下一个等你批准的子代理详情,处理完Esc回来。Ctrl+K:输入框上方那条摘要直接快批。/agents列表里也可以A批准、D拒绝。
权限是向上冒泡的。子代理继承父级的目录范围、允许的命令前缀和沙箱设置。父代理能看子代理的工作区,包括它临时建的 worktree。
怎么拆任务才值得并行
不是所有活都该开子代理。上下文隔离意味着它看不见你刚才聊过的取舍,你得把目标、约束、验收标准写进委派 prompt。适合并行的大致是:
- 互不依赖的扫描:一边
research找调用链,一边code-auditor扫仓库,一边跑测试。 - 慢且可隔离的改动:用
branchworktree 让某个子代理改模块 A,另一个改模块 B,最后由你或父代理合并。 - 验证和实现分开:实现的子代理不要同时当审查,审查角色把写工具收掉。
不适合一上来并行的:需要连续判断的架构决策、共享同一文件且会互相覆盖的改动、还没说清楚做成什么样的模糊需求。后面这种,2.0 里可以先 /grill-me 把细节问清楚,再 /goal 让它跑到做完。
更大一块工程(多文件重构、长研究)可以看 /teamwork-preview,那是按里程碑拆、并行实现、再独立验收的团队模式,见官方 Teamwork 文档。日常拆两到四个子代理就够用,先别上完整团队。
2.0 还加了 Scheduled Tasks:/schedule 可以把指令丢到某个时间点或 cron,不必人盯着再点一次。适合每天跑一遍测试报告这种,不适合还在改接口的热路径。
容易踩的坑
- 自定义代理文件要放在
agents/目录里,直接扔到配置根目录扫描器看不见。 K只对running有效。已经done的去按 Enter 看日志。- 子代理之间可以按会话 ID 发消息,idle 的会被叫醒并保留自己之前的上下文。杀了就不能醒,临时 worktree 会清掉,历史记录还在 JSONL 里。
- 浏览器相关能力现在要显式
/browser,否则代理可能故意不用浏览器原语。 - 并行会放大权限面。审查类角色收工具、沙箱打开;能改生产配置的角色不要随手
subagent: true给规划器去挑。
最小可跑的一天
- 装好 Antigravity(已有 IDE 的会提示升到 2.0,开发者建议两个都留着)。
- 在当前仓库放一个
code-auditor,/agents里能看到它。 - 对主代理说清楚:实现你来,审计丢给
code-auditor,测试用后台任务。 - 开跑后用
/agents看子代理,用/tasks看测试;卡住就Alt+J。 - 有循环或跑飞的,高亮那一行按
K。
先把「一个主代理 + 一个只读审查 + 一组后台测试」跑顺,再加 research 或第二个实现角色。并行的收益来自互不抢上下文,不来自同时开十个窗口。