ORANGE BOOK · CURSOR

第九章 Agents Window 与多代理


一、为什么需要"多 Agent"

我们先看一个真实场景。

你是一个独立开发者,今天想做三件事:

  1. 修一个长期搁置的 bug(要看 5 个文件,可能要花 1-2 小时)。
  2. 给一个新功能写个原型(小,30 分钟)。
  3. 把网站首页文案改一遍(小,15 分钟)。

传统做法:

  • 串行做。先做完 1 再做 2 再做 3。如果 1 卡了,整个晚上就卡了。
  • 或者你切换上下文:开三个分支,手动切换。

多 Agent 模式

  • 让 Agent A 在主分支修 bug。
  • 让 Agent B 在 feature/xxx 分支写原型。
  • 让 Agent C 在 content/copy-update 分支改文案。
  • 三个 Agent 并行,你是"指挥官",看进度、做决策、合并结果。

这就是 Cursor 3 引入 Agents Window 的核心理念。


二、Agents Window:你的"指挥中心"

2.1 怎么打开

Cmd+Shift+P,输入 Agents Window,回车。 或者按 Cmd+E(默认快捷键)。

打开后是一个独立窗口(也可以嵌在主编辑器里),长这样:

┌──────────────────────────────────────────────────────────┐
│  Agents Window                                           │
├─────────────┬─────────────┬─────────────┬────────────────┤
│  Agent A    │  Agent B    │  Agent C    │  + 新增 Agent  │
│  ─────────  │  ─────────  │  ─────────  │                │
│  修 bug     │  写原型     │  改文案     │                │
│  分支:main  │  分支:feat  │  分支:copy  │                │
│  状态:跑中  │  状态:等待  │  状态:完成  │                │
│             │             │             │                │
│  [对话窗]   │  [对话窗]   │  [对话窗]   │                │
└─────────────┴─────────────┴─────────────┴────────────────┘

每个 Agent 是一个独立的"对话",运行在自己的 worktree 里(2.4 节 详解)。

2.2 三种布局

Cursor 3.1 引入了 Tiled Layout(拼贴布局):

布局 长什么样 适合
Tabs 像浏览器标签页,一次看一个 Agent 数量多,逐个查看
Stacked 上下堆叠,一次看 2-3 个 想同时看几个 Agent 的进度
Tiled 网格布局,一次看 4+ 真正的"指挥中心"视图

切换:在 Agents Window 顶部的布局图标点一下。

2.3 创建一个新 Agent

点右上角"+",会问你:

  1. Branch / Worktree:在哪条分支跑?
    • "Use current branch":在当前分支
    • "Create new worktree":新建一个 worktree(推荐,互不干扰)
  2. Initial prompt:第一句话给它什么任务?
  3. Model:用哪个模型?

填好确认,新 Agent 立刻开始干活。

2.4 Worktree 是什么

git worktree 是 Git 的一个高级功能:一个仓库,多个工作目录,每个目录是一个独立的分支

打个比方:

  • 传统 Git:一个仓库 = 一个文件夹。切分支要先 git stash 或 commit。
  • Worktree:一个仓库 = 多个文件夹。每个文件夹一个分支,互不干扰
~/projects/my-app/                  # 主工作目录(main 分支)
~/projects/my-app-fix-bug/          # worktree 1(fix-bug 分支)
~/projects/my-app-new-feature/      # worktree 2(new-feature 分支)
~/projects/my-app-update-copy/      # worktree 3(update-copy 分支)

Cursor 3 用 worktree 让多个 Agent 真正并行——它们各自在独立的目录里改文件,不会冲突

2.5 用 /worktree 命令快速创建

在 Composer 输入框里:

/worktree fix-pomodoro-timer-bug
帮我修 PomodoroTimer 在 Safari 上倒计时漂移的 bug。

Cursor 会:

  1. 自动创建一个新 worktree ~/projects/my-app-fix-pomodoro-timer-bug/
  2. 在那里 checkout 一个新分支 fix-pomodoro-timer-bug
  3. 起一个新 Agent 在那个目录工作。
  4. 你的主目录"完全不受影响"。

完事后,让 Agent git push 这个分支,然后开 PR 合回 main。

2.6 同时跑多少个 Agent 合理

你的设备 推荐并行数
入门 Mac / 16 GB RAM 2-3 个
高配 Mac / 32 GB RAM 4-6 个
Mac Studio / 64+ GB 8+ 个

Cursor 3 之前限制 8 个,3.0 之后无上限。但是人脑只能同时管 3-4 个——超过你就会失控。


三、Best-of-N:让多模型 PK 同一个任务

3.1 这是什么

/best-of-n 是 Cursor 3 的杀手级功能:同一个任务,让多个模型同时跑,最后让你挑最好的那一份

3.2 怎么用

在 Composer 输入:

/best-of-n 重构 @File auth.ts,让它更易测试、更易扩展到第三方登录。

Cursor 会问你:

  • "用几个模型?"(默认 3)
  • "选哪些模型?"(默认 composer-2、claude-4.6-sonnet、gpt-5.4-medium)

确认后,它在 3 个 worktree 里同时跑 3 个 Agent,每个用不同模型做同一个任务。

完成后,Agents Window 里列出 3 份结果,每份带:

  • 改了哪些文件
  • 总共改了多少行
  • 一段"它是这样想的"摘要

你点其中一个"使用这份",那份的改动被合并回主分支,其他两份的 worktree 自动清理。

3.3 什么任务适合 Best-of-N

  • 重构:不同模型有不同审美,让你看见多种风格。
  • 难题:哪个模型解出来你用哪个。
  • 创意类:写文案、写产品描述、设计 UI 时,三选一。
  • 学习:你不知道"标准答案",多看几个 AI 的解法。

3.4 什么任务适合 Best-of-N

  • 有标准答案的任务(比如"加一个特定 API"):浪费 token。
  • 超大任务(比如"重写整个项目"):每份都要花很多 token,三份就更贵。
  • 需要快速迭代的小改动:单 Agent 更快。

3.5 一份典型 Best-of-N 选择

任务:给番茄钟加"白噪音"功能

3 份结果对比:

[ ] composer-2
    - 用 Web Audio API 合成雨声(不引入文件)
    - 改 2 个文件,新增 80 行
    - 优点:零依赖
    - 缺点:合成音质一般

[ ] claude-4.6-sonnet  ← 选这个
    - 内联 base64 编码的 5 秒雨声(循环播放)
    - 改 1 个文件,新增 120 行
    - 优点:音质好、循环无缝
    - 缺点:HTML 体积 +200KB

[ ] gpt-5.4-medium
    - 用 noise.js 库(CDN 引入)
    - 改 3 个文件,新增 60 行
    - 优点:实现简单
    - 缺点:违反"不引入依赖"原则

你看了一眼,选 claude 的方案,点"应用",结束。

总耗时:单 Agent 5 分钟 vs Best-of-N 7 分钟。多花 2 分钟,但是质量提升 30%。


四、Cloud Agents:在云端 24 小时打工

4.1 这是什么

Cloud Agents 是 Cursor 3 的另一个杀手级功能:你布置任务给一个 Agent,它在云端虚拟机里跑,完全脱离你的电脑

你关掉笔记本回家,它继续干。第二天早上你打开 Cursor,看到一份 PR 已经准备好了。

4.2 它的优势

维度 本地 Agent Cloud Agent
你电脑要开着
速度 取决于你电脑 云端高配 VM
模型档位 受订阅限制 总是 Max Mode
适合任务 互动式 后台长任务

4.3 怎么用

方式 1:在 Cursor 桌面里

  1. 打开 Agents Window。
  2. 点"+",选"Cloud"。
  3. 给任务和初始 prompt。
  4. Cursor 把你当前的代码同步到云端,开始跑。

方式 2:在浏览器里(cursor.com/agents)

  1. 打开 https://cursor.com/agents
  2. 登录你的 Cursor 账号。
  3. 选一个连接到的 GitHub 仓库。
  4. 给任务,开始跑。
  5. 从手机上也能查看进度

方式 3:从 Slack / GitHub Issue / Linear 触发

  • Slack 集成:在频道里 @cursor 修一下 #issue-123 那个 bug,Agent 就动手了。
  • GitHub Issue 集成:在 issue 里 @cursor 评论,Agent 来读 issue + 写 PR。
  • Linear 集成:把任务分配给 @cursor,Agent 自动开始。

4.4 适合 Cloud Agent 的 5 类任务

任务 1:长时间重构

"把整个项目从 Vue 2 迁移到 Vue 3" —— 几个小时活,本地跑你电脑发烫,云端跑你下班吃饭。

任务 2:批量补测试

"为所有 utils/ 下的函数补单元测试" —— 重复劳动,云端慢慢做。

任务 3:周期性巡检

"每天凌晨跑一次 lint + 安全扫描,发现问题开 issue" —— 配定时任务,自动跑。

任务 4:依赖升级

"把所有依赖升到最新版,跑测试,跑通的提 PR" —— 标准化流程。

任务 5:从 Issue 到 PR

"读 #issue-123 的描述,复现问题,修,开 PR" —— 完全自动化。

4.5 本地 ↔ 云端 Handoff

Cursor 3 最优雅的设计之一:你可以随时切换任务的执行位置。

  • 你在公司用 Cloud Agent 起一个长任务。
  • 你回家了,想接着调试。
  • 在 Cursor 里点"Move to Local",整个 Agent 状态、文件改动、对话历史完整迁回你电脑
  • 你接着干。

反过来:

  • 你在本地修一个 bug,做了一半要去吃晚饭。
  • 点"Move to Cloud",让它在云端继续跑。
  • 你回来打开 Cursor,看完成结果。

这种"无缝迁移"是其他工具都没有的。

4.6 Cloud Agent 的成本

  • Cloud Agent 默认按 token 计费 + 一些云端 VM 费用。
  • 一个中等任务(修 bug + 写测试 + 开 PR)约 $0.5-2。
  • Pro 月费里包含一定额度,超出按量付费。
  • Ultra 用户:基本无限制。

具体看 cursor.com/pricing


五、Design Mode:让 AI 看着 UI 改 UI

5.1 这是什么

Design Mode 是 Cursor 3 引入的视觉协作模式:你直接在浏览器里用鼠标圈出"这块不对",AI 看着截图改前端代码。

它解决了一个老大难问题:前端反馈很难用文字描述。"按钮太大"是多大?"颜色不对"是哪里不对?

5.2 怎么开启

  1. Cursor 内置浏览器打开你的网页(或挂个 localhost)。
  2. 顶部出现"Design"开关,打开它。
  3. 进入 Design Mode 后,浏览器变成"涂鸦模式"。

5.3 三种交互方式

方式 1:Shift + 拖拽框选

按住 Shift,拖一个矩形框出来,框住"我有意见的区域"。 弹出输入框,写:"这块的间距太挤,再宽 50%"。

方式 2:Option + 单击

按住 Option(Win 是 Alt),点击具体某个元素。 该元素被选中,弹输入框,写:"这个按钮换成边框样式,不要实心"。

方式 3:Comment 模式

在元素旁边点击,加一条"评论"。 AI 看到评论后改对应代码。

5.4 Design Mode 适合做什么

  • 微调样式:颜色、间距、圆角、字号、阴影。
  • 改布局:左右换、上下换、对齐、对比。
  • 加细节:悬停效果、过渡动画、加个图标。
  • 响应式调整:在手机视图下圈一下"这里太挤"。

5.5 一个真实的 Design Mode 工作流

回到你 第二章 的简介页 my-profile

  1. Cursor 内置浏览器打开 index.html
  2. 开 Design Mode。
  3. Shift+拖:框住顶部 nav,写"导航字号小一点,再加点字间距"。
  4. Option+点:项目卡片的"查看"按钮,写"换成深色 outline 风格"。
  5. 点页脚加 comment:"这里加一行版权声明"。
  6. 点"Apply All",AI 一次性改完所有改动,浏览器自动刷新。

整个过程你一行 CSS 都没碰

5.6 Design Mode 的限制

  • 只对 Cursor 内置浏览器有效(外部 Chrome 不行)。
  • 截图分辨率有限,太细的差异它可能看不出来。
  • 复杂的"动效设计"还是要文字描述。

六、Background Agent:让 AI"在你睡觉时"工作

6.1 这是什么

Cloud Agent 的子集——真正的"后台运行"模式。你布置任务后完全不需要任何 UI,Agent 在云端自己跑、自己提 PR。

类比:Cloud Agent 像"远程工作的同事",你能随时看进度;Background Agent 像"晚上加班的同事",你早上看结果。

6.2 触发方式

触发 1:定时

@cursor 每天凌晨 3 点跑一次 lint + 测试,
失败时给我开 issue,写明哪个文件哪一行。

触发 2:Webhook

GitHub 收到 push 事件 → 触发 Cursor Agent → Agent 写 changelog → 评论到 PR

触发 3:Issue / PR 事件

@cursor 修这个 bug → Agent 读 issue → 修 → 开 PR

6.3 适合的场景

  • 依赖更新巡检:每周跑一次 npm outdated,发现重要更新自动开 issue。
  • 死链接检查:每周扫描文档里的链接,挂掉的自动报告。
  • 性能巡检:每晚跑一次 Lighthouse,得分降低自动通知。
  • i18n 检查:每次 main 有 push,扫一下"是否有新加的中文未翻译成英文"。

6.4 怎么配置

.cursor/background.yaml 写:

agents:
  - name: lint-and-test
    schedule: "0 3 * * *"           # 每天凌晨 3 点
    prompt: |
      跑一次 npm run lint 和 npm test。
      如果挂了,把第一个错误开成 GitHub issue,
      标题是 "[自动检测] xxx",内容包含完整错误堆栈。
    model: composer-2

  - name: dep-check
    schedule: "0 9 * * 1"           # 每周一早上 9 点
    prompt: |
      跑 npm outdated --json,找出所有"主版本号落后"的依赖。
      把超过 1 个主版本的开成单独 issue。
    model: gpt-5.4-medium

存档后 Cursor 自动注册到云端。


七、BugBot:自动审查代码的机器人

7.1 这是什么

BugBot 是 Cursor 提供的 GitHub App,装到你的仓库上之后,每次有 PR 提交,它自动审一遍,留意见。

类比:一个"24 小时在线、永远不睡觉、永远耐心"的高级工程师 reviewer。

7.2 怎么装

  1. 访问 https://cursor.com/bugbot
  2. 用 GitHub 账号登录授权。
  3. 选你想装的仓库。
  4. 完成。

7.3 它会做什么

每次 PR 创建或更新:

  1. 自动拉取改动
  2. 跑 lint / 类型检查
  3. 找潜在 bug:未捕获异常、空指针、死循环、安全漏洞。
  4. 找性能问题:N+1 查询、大文件读全内存、忘了 dispose。
  5. 找代码质量问题:复杂度太高、重复代码、命名不一致。
  6. 在 PR 里评论:每条问题加一个 inline comment,说明位置和建议。

7.4 一个真实的 BugBot 评论

🤖 BugBot

Hey! I noticed a potential issue in src/api/login.ts:42

```javascript
const user = await db.users.find({ email });
const matched = bcrypt.compareSync(password, user.password);
//                                            ^^^^
//                                            user 可能是 null
```

如果数据库找不到这个 email,user 会是 null,
读 user.password 会报 TypeError。

建议改成:

```javascript
const user = await db.users.find({ email });
if (!user) return res.status(401).json({ error: 'Invalid credentials' });
const matched = bcrypt.compareSync(password, user.password);
```

附带:这种类型问题已经在你最近 30 天的 5 个文件里出现过,
我开了一个 issue 跟踪:#234

普通人 + BugBot = 比一个团队 reviewer 还细致。

7.5 BugBot 的成本


八、综合实战:用多 Agent 一晚上做完三件事

我们把本章学的全部用上,模拟一个"超高效晚上"。

场景

你晚上 8 点回家,今晚目标三件事:

  1. 修番茄钟在 Safari 上倒计时漂移的 bug。
  2. 给番茄钟加"白噪音"功能。
  3. 把网页文案从中性改得更有人情味。

8 点到 8 点 10 分:开三个 Agent

打开 Agents Window,开三个 Agent:

Agent A

/worktree fix-safari-drift
@File app.js
修一下 Safari 上倒计时每分钟漂移 1-2 秒的 bug。
我猜原因是 setInterval 在后台被节流。请用 requestAnimationFrame + Date.now() 重写计时核心。

Agent B

/worktree add-white-noise
@File app.js @File index.html
加一个"白噪音"功能:
- 工作模式下可选播放雨声 / 海浪声 / 咖啡馆环境音。
- 用 Web Audio API 合成(不引入外部音频文件)。
- 顶部加一个小图标切换。
- 音量可调。

Agent C(用 Best-of-N 跑文案):

/best-of-n 3
@File index.html
把页面所有文案改得更有人情味,参考"少数派"或"即刻"的语气:
- 不要 "Get Started",而是 "好,开始 25 分钟"
- 不要 "Settings",而是 "调一调"
- 标题不要 "Pomodoro Timer",而是"番茄钟 · 给认真的你"
请保持产品逻辑不变,只改文字。

三个 Agent 同时跑。你切到 Tiled 布局,能看到三个并行进度。

8 点 10 分到 8 点 30 分:边看边吃晚饭

Agent A、B 各自在自己的 worktree 跑。 Agent C 是 Best-of-N,会同时起 3 个子 Agent,9 个进度条同时滚。

你边吃边看,发现:

  • Agent A 改完了 → 切过去看 diff,没问题,点"Merge to main"。
  • Agent B 改了一半 → 看进度。
  • Agent C 出来 3 份方案 → 你挑了"最有少数派味"那份,应用。

8 点 30 分到 8 点 50 分:用 Design Mode 微调

Agent B 改完,但是新加的"白噪音"图标位置你不喜欢。

打开 Cursor 内置浏览器看 localhost。 开 Design Mode。 Shift+拖:框住图标,写"图标移到顶部右上、改成圆角方块、悬停时浅色背景"。 Apply。AI 微调代码,5 秒后浏览器自动刷新。

完成。

8 点 50 分到 9 点:一个 Cloud Agent 兜底

最后给一个 Cloud Agent 一个长任务:

把整个项目跑一遍 ESLint 和 Prettier,自动修复所有可修复的问题。
跑测试,确保没有破坏什么。
然后开一个 PR,标题"chore: lint & format"。

你点"Move to Cloud",关掉电脑,去看电视。 第二天早上一看,PR 已经躺在那里,点 merge 就行。

总结

一个晚上完成 4 件事,每件事质量都不差。如果你独自手敲代码,至少 3 个晚上。


九、多 Agent 时代的"心法"

心法 1:你是指挥官,不是工人

不要试图"和 Agent 一起编程"——你的角色是"指方向、做决策、看进度"。 让 Agent 干,你看。

心法 2:批处理你的"待办"

平时把所有"待办"列在一个清单里。 晚上集中"派发"给多个 Agent,一晚上做完。

心法 3:worktree > 切分支

能用 worktree 就别在主目录切分支。 worktree 让你"上下文不丢",多任务并行。

心法 4:Best-of-N 用在"创意"上

不要每个任务都 Best-of-N(贵)。 但凡是 "我自己也不知道哪个方案最好" 的任务,Best-of-N 一定值。

心法 5:Cloud 跑长任务、本地跑短任务

长任务(> 30 分钟)扔 Cloud。 短任务(< 5 分钟)本地。 不确定的,先本地起一下,30 秒后觉得太长就 Move to Cloud。

心法 6:Design Mode 是前端的解药

所有"用文字说不清"的视觉调整,都用 Design Mode。 节省的时间会让你重新爱上前端。

心法 7:BugBot 是免费的高级 reviewer

个人公开项目装一个,相当于免费请了个高级工程师做 code review。


十、对应章节关系

第四章 Composer/Agent          ← 单个 Agent 怎么用
   ↓
第九章 Agents Window 与多代理   ← 多个 Agent 怎么编排(你在这)
   ↓
第十章 MCP 与扩展能力          ← 让 Agent 用更多外部工具

本章一图回顾

Cursor 3 的多 Agent 武器库
═══════════════════════════════════════════════
  Agents Window     ←  你的指挥中心
  /worktree         ←  独立分支独立目录,互不干扰
  /best-of-n        ←  多模型 PK 同一任务,挑最好
  Cloud Agents      ←  云端 24 小时打工,关电脑也跑
  Background Agent  ←  定时 / 触发,全自动后台
  Design Mode       ←  圈出 UI,AI 看着改前端
  BugBot            ←  自动 PR review 机器人

适用场景
─────────────
  worktree     →  并行做多个不相关任务
  best-of-n    →  重构 / 创意 / 难题
  cloud        →  长任务 / 离开电脑后跑
  background   →  巡检 / 定时 / Webhook 触发
  design       →  前端微调
  bugbot       →  PR 自动 review

7 条心法
─────────────
  1. 你是指挥官
  2. 批处理待办
  3. worktree > 切分支
  4. Best-of-N 用在创意上
  5. Cloud 跑长 / 本地跑短
  6. Design Mode 是前端解药
  7. BugBot 装一个不亏

下章预告

多 Agent 之后,下一个层次是"让 Agent 用更多外部工具"。下一章 第十章 MCP 与扩展能力 我们讲 MCP(Model Context Protocol)——它让 Cursor 能调用 Notion、Figma、Slack、GitHub、Postgres、Stripe 等真实工作工具。配 10 个普通人优先安装的 MCP 推荐。