核心摘要

Cursor 3 的后台 Agent 让你把编码任务异步委派出去——就像给一位手脚麻利的初级开发者派工单,他干活时你专注于别处。本文讲清它到底是什么、五种在日常工作中站得住脚的工作流模式、如何配置规则与云端环境、Agent 在哪里会力不从心,以及当 Agent 无人值守、连上你的系统时要守住的安全底线。它带来的吞吐是真实的,但这份吞吐只在你能审查得过来的范围内才有用。

目录

后台 Agent 到底是什么

后台 Agent 独立于你当前的编辑会话运行。与行内补全或同步对话不同,它不会阻塞你的工作流——你描述一个任务,Agent 去做,完成或需要输入时通知你。

它的心智模型是委派,而不是指挥:

graph LR A["开发者"] -->|"分配任务"| B["Agents Window"] B --> C["Agent 1:本地 Worktree"] B --> D["Agent 2:云端 VM"] B --> E["Agent 3:远程 SSH"] C -->|"完成"| F["PR 就绪"] D -->|"完成"| F E -->|"完成"| F F -->|"审查"| A

每个 Agent 都有自己隔离的环境:

  • 本地 worktree Agent 跑在你机器上一个单独的 Git worktree 里,避免与你的工作目录冲突。
  • 云端 Agent 跑在带完整开发环境的独立 VM 上——合上笔记本后它仍在继续。
  • 远程 SSH Agent 在你自己的服务器或开发机上执行。

关键点在于:Agent 不只是生成片段。它会克隆仓库、安装依赖、编写代码、运行测试、在失败时自我修正,并开出 PR。这是全流程的工作——这正是为什么末尾的审查环节不可省略。一个能无人值守跑完整个循环的 Agent,也可能自信地在整个循环里都是错的。

还不了解 AI Agent?可以先读我们的 AI Agent(智能体) 术语解释,建立基础概念。

Agents Window 上手

Agents Window 是你运行 Agent 的控制中心。它把每个 Agent 呈现为一个带实时状态的标签页:

状态 含义
🟢 运行中 Agent 正在编码、测试或构建
🟡 等待 Agent 需要人工输入或确认
🔵 完成 任务结束——PR 或 diff 待审查
🔴 失败 Agent 遇到不可恢复的错误

你可以把多个 Agent 平铺并排来监控多项任务。每个标签页会显示当前步骤、文件改动 diff、终端输出,以及(对 UI 任务而言)浏览器截图。

启动一个 Agent,本质上就是描述任务:

typescript
// 在 Cursor 的命令面板或对话框中:
// "创建一个后台 Agent,为用户注册表单添加输入校验"

// Agent 会:
// 1. 创建一个新的 Git worktree
// 2. 分析现有表单代码
// 3. 用 Zod schema 添加校验逻辑
// 4. 编写单元测试
// 5. 运行测试并修复失败
// 6. 呈现一份 diff 供你审查

无论什么语言,流程都一样——Agent 定位相关文件,做出改动,补上测试,跑一遍,然后把结果交给你检查。

五种实战工作流模式

这些模式来自日常使用。每一种都对应一类具体的开发场景。

模式一:分配并遗忘——机械重构

最简单的模式。描述一个终态明确的重构,然后就去忙别的:

code
任务:"将支付服务重构为策略模式。
把每种支付方式(Stripe、PayPal、Apple Pay)抽取为各自的
策略类。保持与现有测试的向后兼容。"

适合规则清晰的机械重构、风格迁移(比如 class 组件 → 函数式组件)和可预测的依赖升级。当终态明确无歧义时使用它——但仍然要读 diff,因为"对你无歧义"不等于"被 Agent 正确理解"。

模式二:并行测试覆盖冲刺

一次启动多个 Agent,每个负责一个不同的模块:

graph TD A["开发者:冲刺计划"] -->|"Agent 1"| B["auth/ 模块测试"] A -->|"Agent 2"| C["payments/ 模块测试"] A -->|"Agent 3"| D["notifications/ 模块测试"] A -->|"Agent 4"| E["user-profiles/ 模块测试"] B --> F["合并为一个 PR 审查"] C --> F D --> F E --> F

每个 Agent 拿到一条限定范围的指令:

typescript
// Agent 1 的任务:
`为 src/auth/ 编写单元测试。
遵循 src/auth/__tests__/login.test.ts 里已有的模式。
用 MSW mock 外部服务。覆盖错误与边界情况,而不只是顺利路径。`

用它在发布前提升覆盖率——但要把合并后的结果当作一个大 PR 去审查,而不是因为某个数字涨了就当作可以信任的覆盖率。Agent 写出的测试可能通过,却断言了错误的行为。

模式三:审查预处理——Agent 预审

在请人工审查之前,让一个 Agent 先分析这个 PR:

code
任务:"审查 PR #247 的改动。标记可能存在的:
1. 安全问题(注入、XSS、鉴权绕过)
2. 性能退化(N+1 查询、缺失索引)
3. 缺失的错误处理
4. 破坏性的 API 变更
以摘要形式给出发现。"

这能在人类审查者花时间之前浮现出明显的问题。把它的输出当作一份该看什么的清单,而不是定论——一份说"未发现问题"的预审,并不是安全放行,人工审查照旧进行。

模式四:Worktree 隔离做实验

为投机性的工作开一个完全隔离的分支:

code
/worktree 试试把 API 层的 Express 换成 Hono。
迁移 3 个有代表性的端点。对比请求吞吐。
只报告结果,不做合并。

Agent 在自己的 worktree 里工作,你的工作目录保持不动;如果实验失败,你零成本丢弃它。适合评估库、做架构实验,以及在正式投入前想先试的高风险迁移。

模式五:Best-of-N 多模型竞速

让同一个任务同时跑在多个模型上,保留最好的结果:

code
/best-of-n composer, claude-sonnet, gpt-5
用滑动窗口算法实现一个限流中间件。
它必须能用 Redis 处理分布式场景。

Cursor 为每个模型创建一个单独的 worktree。全部跑完后,你把各个实现并排比较,合并胜出的那个。它的价值是廉价的并行选项加上你的比较——哪个模型"胜出"因任务而异,所以这把"猜哪个模型最好"换成了"针对这个具体问题的证据"。选择前先读每个候选;diff 更短或更长都不自动等于更好。

决定产出质量的配置

配置是"勉强能用的 Agent"和"稳定产出可审查、可上生产的代码的 Agent"之间的分水岭。

项目规则

规则文件把项目的约定告诉 Agent——把它当作给新贡献者的上手文档:

yaml
# .cursor/rules
project:
  name: "acme-api"
  language: "TypeScript"
  framework: "NestJS"
  test_runner: "Jest"

conventions:
  - "通过 NestJS provider 使用依赖注入"
  - "所有端点必须带 @Auth() 装饰器"
  - "数据库访问只能走仓储模式(repository pattern)"
  - "错误响应使用 ProblemDetails(RFC 7807)"
  - "生产代码里不用 console.log —— 改用 Logger 服务"

testing:
  - "单元测试放在源码相邻的 __tests__/ 里"
  - "集成测试放在项目根目录的 test/ 里"
  - "用 nock mock 外部 API"

规则要短、要具体、要可检验。具体的规则("所有端点必须带 @Auth()")会切实改变产出;含糊的规则("写干净的代码")毫无作用。

云端环境配置

对云端 Agent,声明式地描述环境,让每次运行可复现:

json
{
  "image": "node:20-bookworm",
  "setup": {
    "commands": ["npm ci", "npx prisma generate"]
  },
  "services": {
    "database": "postgres:16",
    "cache": "redis:7-alpine"
  },
  "secrets": ["DATABASE_URL", "STRIPE_SECRET_KEY", "JWT_SECRET"]
}

用名字从 Secrets 设置里引用密钥,让它们在构建时注入,绝不写进 Agent 的工作区或提交到仓库。

多仓库配置

较新的版本允许 Agent 跨多个仓库工作,每个仓库有自己的规则:

yaml
# .cursor/multi-repo.yaml
repositories:
  - path: "./backend"
    rules: "./backend/.cursor/rules"
    language: "Python"
  - path: "./frontend"
    rules: "./frontend/.cursor/rules"
    language: "TypeScript"
  - path: "./shared-types"
    rules: null  # 使用根规则
    language: "TypeScript"

# 跨仓库任务示例:
# "更新 shared-types 里的 User 类型,然后同步更新 backend
#  的序列化器和 frontend 的组件以匹配。"

多仓库能力和文件名在不同版本间会变化,所以在依赖它之前,先到 Cursor 官方文档确认当前格式。

Agent 力所不及的地方

后台 Agent 有用,但不是魔法。以下这些边界是真实存在的:

  1. 架构决策。 Agent 在界定清晰的任务上执行得很好,但不擅长决定要不要用微服务还是单体、事件溯源还是 CRUD。把战略决策留给人。
  2. 超大上下文需求。 非常大的 monorepo 可能超出上下文窗口。如果一个 Agent 需要同时把握 50+ 个文件,它可能会漏掉关联——把工作拆成更小的单元。
  3. 探索性或创造性工作。 当目标含糊("让 UX 感觉更好")时,Agent 会产出泛泛的东西。它们需要具体的验收标准。
  4. 微妙的状态机。 带边界情况的多步业务逻辑,通常需要人机迭代协作,而非纯委派。

共同的主线是:Agent 强在执行一个已明确定义的任务,弱在判断任务本身该是什么。判断留给你。

写可验证的任务

typescript
// ❌ 含糊
"把代码写好点"

// ✅ 具体且可验证
"重构 src/services/email.ts:
- 把 HTML 模板渲染抽取到一个 TemplateService
- 为 SMTP 失败加上重试逻辑(3 次尝试,指数退避)
- 为重试行为加单元测试,包含'重试耗尽'这一情况
- 运行现有测试,确保没有回归"

Agent 无人值守时的安全

一个无人值守跑完整个循环、并连上你系统的 Agent,是带着真实权限在运作。有几条边界不因工作流多方便而移动:

  • 只授予刚好够用的最小访问。 一个能克隆你仓库、访问你服务、开 PR 的云端 Agent,是一个强大的身份。把它的凭据和环境访问权限限定在任务范围内,而不是给它全部。
  • 认证是身份,不是授权。 当 Agent 接入内部系统(常通过 MCP)时,一个有效的 Token 证明的是在调用——而不是该调用方有权对某条具体记录行动。连接背后的服务端仍必须在每一次请求上强制对象级和租户级的访问控制。
  • 预审不是安全控制。 Agent 那句"未发现问题"的摘要标记的是它注意到的东西;它不构成合并授权。涉及安全的改动仍然需要人工审查和你的常规检查。
  • 测试和绿色 CI 只证明它们覆盖的东西。 Agent 可能写出通过却断言了错误行为的测试,所以一次绿色的运行,只对测试真正断言的那部分行为构成证据。

这些都不削弱后台 Agent 的价值——它们界定的是"这份价值在什么条件下能安全地收下"。

后台 Agent vs Claude Code vs Copilot Agent

合适的异步编码工具取决于你的工作流。可长期参考的区别在于形态,而非某个排行榜:

维度 Cursor 后台 Agent Claude Code GitHub Copilot Agent
界面 GUI(Agents Window) 终端 CLI VS Code + GitHub UI
执行位置 本地 worktree / 云端 VM / SSH 本地终端 / CI GitHub 托管 runner
并行任务 多个 Agent 同时跑 单会话(可经 SDK 多开) 通常每个 Issue 一个
触发来源 IDE、聊天、GitHub、项目工具、移动端 终端、CI、SDK GitHub Issue、PR 评论
多仓库 原生(较新版本) 手动带上下文 每个 Agent 单仓库
离线/本地 支持(worktree 模式) 支持(原生) 不支持(仅云端)
最契合 并行编排、本地云端混用 终端优先、CI/CD GitHub 原生工作流

具体的限制和定价经常变动,所以把这张表当作一张"设计形态地图",并到各厂商核对当前细节。想针对你自己的任务得出可复现的结论,参阅如何自己评测 Cursor、Claude Code 与 Copilot;想看更宏观的全景,参阅 2026 年 AI 编程工具怎么选:对比方法

日常使用最佳实践

1. 像写工单一样写任务,而不是像聊天。 包含上下文、验收标准和约束。Agent 没法在跑到一半时来问你澄清。

2. 从低风险任务开始。 别把第一个 Agent 就派去修生产环境的关键热修。先从测试生成、文档、依赖升级开始,逐步建立信任。

3. 任何实验性工作都用 worktree。 丢弃它零成本。把它们当作永不触碰工作副本的草稿分支。

4. 有意识地纠正产出。 当你审查并修好了某处,把这条约定记进规则文件,让这次改进在后续运行里持续生效,而不是每次都重新习得。

5. 把相关任务批量并行——但只到你审查得过来为止。 四个 Agent 各覆盖一个模块,胜过一个 Agent 覆盖整个应用,但前提是你真的能检查四个 PR。

6. 仔细读 diff,别橡皮图章式盖章。 Agent 会精确展示改了什么。把审查精力花在这里,绝不合并一个你没读懂的多文件改动。

7. 保持规则文件更新。 项目演进,规则也要跟着演进。它是产出质量上最有影响力的杠杆——本质上是为整个项目做的提示词工程

核心要点

  • 后台 Agent = 异步委派。 分配任务、拿到结果,不阻塞你当前的工作。
  • 五种模式覆盖大多数场景: 分配并遗忘、并行测试冲刺、审查预处理、worktree 实验、best-of-n 竞速。
  • 配置质量决定产出质量。 在规则文件和可复现环境上投入。
  • 并行放大的是生成,不是审查。 Agent 数量要匹配你能认真检查的量。
  • 认清边界。 Agent 擅长界定清晰的执行,不擅长处理含糊与架构。
  • 自主性抬高了赌注。 最小权限访问、服务端的真实授权、对涉安改动的人工审查,这些不可让步。

想更深入了解 Cursor 3 的设计思路,可读我们的 读懂 Cursor 3:Agent-first IDE 背后的设计思路

常见问题

后台 Agent 的代码质量可靠吗?

它对界定清晰的任务最可靠,但没有哪个跑分数字能替你保证它在你的代码库上的表现。把 Agent 当作一个需要代码审查的初级开发者,而不是无条件信任的高级工程师——你仍然要审查每一个 PR。

如何控制 Token 消耗?

后台 Agent 的 Token 消耗取决于任务复杂度和代码库大小。各档位的具体额度和价格随版本变动,请到 Cursor 官方定价页核对当前数值,并据此规划你要并行多少个 Agent。

它和 Vibe Coding 是什么关系?

Vibe Coding 是一套指挥 AI 的工作纪律,强调表达意图、拆解为可验证的小步骤。后台 Agent 是结构化的异步委派。两者互补:用 Vibe Coding 的纪律把任务讲清楚,用后台 Agent 去异步执行——但无论哪种,审查产出的责任都在你。

相关资源