ByteNoteByteNote

字节笔记本

2026年8月28日

Antigravity:并行编排一堆编码代理

API中转
¥120

一个人盯一个编码代理时,长任务很容易把会话卡住:测一遍、搜一遍仓库、改一堆文件,主对话窗口就被占满。Google Antigravity 把这件事拆开:主代理负责架构和决策,慢活丢给并行子代理和后台任务,你自己只盯结果。

下面按「桌面 2.0 / CLI / 自定义代理」写一份能落地的用法,官方文档入口在 Background tasks & subagentsAsynchronous 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 表示它只当打工的,不出现在主会话可选列表里。

下面这个只读审计角色可以放进仓库:

markdown
---
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. 每条发现给可执行的改法,不要空泛说「加强校验」。

全局复用的写法类似:

bash
mkdir -p ~/.gemini/config/agents/code-reviewer
cat << EOF > ~/.gemini/config/agents/code-reviewer/agent.md
---
name: code-reviewer
description: 盯边界条件和安全问题的代码审查。
---
你是代码审查。看 diff,核边缘情况,别顺手改实现。
EOF

tools 里的名字必须是平台认识的(view_filegrep_searchrun_command 这类)。写错或写了没映射的工具,子代理有可能卡死在启动阶段,官方文档把这标成已知问题。

commandExecutionPolicy 默认 sandbox。需要跑更宽的 shell 再改 auto / eager,先想清楚这个角色该不该碰写文件和网络。

在 CLI 里盯并行进度

终端里输入 /agents 回车,打开 Agent Manager 面板。上半是可选的自定义主代理,下半是当前会话拉起来的子代理,按触发它的那条 prompt 分组。

状态就四种:runningdoneerrorkilled。常用键:

作用
↑ / ↓在组、子代理、可选主代理之间移动
Enter展开/折叠组,或打开某条子代理的完整日志
K杀掉当前这条 running 子代理(以及它的子线程)
Esc退回输入框;如果刚切了主代理,在这里生效

切主代理会分叉对话,不会改已经发生的历史。别指望切完还在同一条时间线上改前面的决定。

非代理类的后台活(直接跑的 shell、测试套件、/btw 丢出去的查询)用 /tasks。那里看的是 stdout,也能停掉失控的终端进程。两类别混:子代理看 /agents,普通后台命令看 /tasks

审批别把流程打断

子代理要写文件或跑受保护命令时,请求会冒到主界面。CLI 给了两条少切面板的路径:

  • Alt+J:从当前输入框跳进下一个等你批准的子代理详情,处理完 Esc 回来。
  • Ctrl+K:输入框上方那条摘要直接快批。
  • /agents 列表里也可以 A 批准、D 拒绝。

权限是向上冒泡的。子代理继承父级的目录范围、允许的命令前缀和沙箱设置。父代理能看子代理的工作区,包括它临时建的 worktree。

怎么拆任务才值得并行

不是所有活都该开子代理。上下文隔离意味着它看不见你刚才聊过的取舍,你得把目标、约束、验收标准写进委派 prompt。适合并行的大致是:

  1. 互不依赖的扫描:一边 research 找调用链,一边 code-auditor 扫仓库,一边跑测试。
  2. 慢且可隔离的改动:用 branch worktree 让某个子代理改模块 A,另一个改模块 B,最后由你或父代理合并。
  3. 验证和实现分开:实现的子代理不要同时当审查,审查角色把写工具收掉。

不适合一上来并行的:需要连续判断的架构决策、共享同一文件且会互相覆盖的改动、还没说清楚做成什么样的模糊需求。后面这种,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 给规划器去挑。

最小可跑的一天

  1. 装好 Antigravity(已有 IDE 的会提示升到 2.0,开发者建议两个都留着)。
  2. 在当前仓库放一个 code-auditor/agents 里能看到它。
  3. 对主代理说清楚:实现你来,审计丢给 code-auditor,测试用后台任务。
  4. 开跑后用 /agents 看子代理,用 /tasks 看测试;卡住就 Alt+J
  5. 有循环或跑飞的,高亮那一行按 K

先把「一个主代理 + 一个只读审查 + 一组后台测试」跑顺,再加 research 或第二个实现角色。并行的收益来自互不抢上下文,不来自同时开十个窗口。

分享: