AI 纪元 追踪人工智能最新进展,深度解读前沿技术

Cursor 2.0 多 Agent 实战:先拆任务,再审 diff

Cursor 2.0 支持多个 Agent 在隔离副本中并行改代码。效率高不高,关键不在启动数量,而在任务边界、共享契约、合并顺序和 diff 审查。

0 次阅读 约 2404 字 5 分钟 AI 生成
Cursor 2.0 多 Agent 实战:先拆任务,再审 diff cover image
Cursor 2.0 多 Agent 实战:先拆任务,再审 diff cover image

打开 Cursor 2.0,最明显的变化不是多了一个聊天窗口,而是可以让多个 Agent 同时处理不同任务。

Cursor 此次发布了两项更新:首个自研代码模型 Composer,以及重新设计的多 Agent 界面。每个 Agent 在独立的代码副本中工作,完成后交出自己的 diff,开发者再决定接受、修改还是放弃。

这套机制很适合边界清楚的工作。比如在同一个仓库里,页面重构、后端中间件和测试更新可以分开处理。但并行不是越多越好。任务一旦共享接口、类型或鉴权规则,拆得越碎,合并时越容易出问题。

别急着全开,先把职责拆清楚

假设手上是一个 Next.js 全栈项目,需求有三项:调整用户设置页的数据获取方式、抽离权限校验逻辑、更新受影响的测试。

前两项可以先交给不同 Agent。

Agent A:重构页面数据层

调整 /settings 页面的数据获取方式,保留现有 UI 组件,只修改数据层。完成后检查页面渲染和错误处理,并列出所有改动文件。

Agent B:整理权限中间件

在 middleware.ts 中整理权限校验逻辑,复用项目现有的类型和工具函数。检查 Edge Runtime 兼容性,不引入 Node.js 专有 API,并说明接口行为是否发生变化。

测试任务不必同步启动。由于 Agent 工作在隔离副本中,测试 Agent 看不到另外两个 Agent 尚未合并的代码。更稳妥的顺序是:先审查并合并页面与中间件的 diff,再启动第三个 Agent。

Agent C:补齐测试

根据当前仓库中的最终改动,更新受影响的单元测试和 E2E 测试。覆盖未登录、凭证失效和权限不足等路径。每个新增用例都要写清输入、操作和预期结果。

少一个 Agent 同时开工,看起来没那么热闹,却能避免测试建立在过期代码上。

能不能并行,先看是否共用一份契约

页面样式调整、独立接口开发、测试补充和文档更新,通常容易拆开。它们涉及的文件不同,直接互相覆盖的概率较低。

真正麻烦的是共享契约。两个任务如果都要修改接口定义、数据结构或鉴权流程,就不适合直接并行。一个 Agent 改了函数签名,另一个仍按旧版本调用,最后可能得到两份单独看都合理、合在一起却跑不通的代码。

任务描述也要收窄。“优化项目性能”几乎无法验收;“检查 /settings 页面的重复请求,不修改公共缓存策略”就清楚得多。后者明确了入口、问题范围和禁止改动的区域,拿到 diff 后也更容易判断是否完成。

多 Agent 省下的是执行时间,不会自动替开发者划定边界。任务没拆好,一次返工很容易变成多份返工。

Composer 很快,但先别只盯着速度

Composer 是 Cursor 首个自研代码模型。Cursor 官方称,它的速度是相近智能水平模型的 4 倍,多数交互轮次可在 30 秒内完成。它面向 Cursor 内的低延迟 Agent 编码场景,覆盖代码库理解、代码修改和多步骤任务执行。

返回得快,不等于改得合适。审查时至少要看三件事:

  • 有没有复用仓库现有的类型、组件和工具函数;
  • 有没有完整列出受影响的文件;
  • 有没有说明尚未确认的假设。

如果 Agent 很快写出一套与项目现有能力重复的工具函数,后续清理可能比手写更费时间。任务说明里可以直接要求它先搜索已有实现,新增抽象前必须解释原因。

大型仓库尤其需要限制范围。与其让 Agent 自己摸索整个项目,不如给出入口文件、相关目录和禁止修改的区域。范围越明确,最终 diff 越容易审。

隔离副本挡住文件覆盖,挡不住逻辑冲突

每个 Agent 在隔离副本中工作,可以避免它们同时写坏同一个文件,却也制造了信息差。

例如,页面 Agent 认为 session 字段是 userId,权限 Agent 却把它整理成 id。两边都可能通过各自的局部检查,直到合并后才暴露问题。文件没有重叠,不代表逻辑没有冲突。

审查多份 diff 时,应优先核对这些共享部分:

  • API 的请求与返回结构;
  • 类型定义和字段命名;
  • 数据库模型;
  • session、token 与权限规则;
  • 公共工具函数的参数和返回值。

如果多个任务依赖同一份契约,先由开发者确定契约,再让 Agent 分头实现。另一种做法是先让一个 Agent 修改公共定义,完成审查和合并后,再启动后续任务。

测试变绿,不等于合并没有问题

测试通过,只能说明现有用例没有发现错误,不能证明多份修改天然兼容。

每次审查 diff,可以固定检查下面几项:

  1. 是否修改了任务范围之外的文件;
  2. 是否新建了与现有能力重复的工具函数;
  3. 是否改变了接口、类型或数据结构;
  4. 异常路径和边界条件是否仍然保留;
  5. 测试是在验证真实行为,还是只为覆盖代码行。

测试 Agent 尤其容易跑偏。如果任务只有“提高覆盖率”,它可能补出一批能运行、但无法证明关键行为的用例。与其追一个覆盖率数字,不如明确写出正常路径、边界条件、异常路径和预期结果。

开发者要做的,是调度和验收

过去,开发者通常按顺序完成页面、接口和测试。Cursor 2.0 允许其中一部分同时推进,但省下来的时间并不会凭空出现。开发者需要把精力转到任务拆分、契约确认、合并排序和 diff 审查上。

能否提效,不取决于同时启动多少 Agent,而取决于三个问题:任务能不能独立验收,依赖关系有没有提前说清,合并后是否做了完整测试。

刚开始使用时,可以先开两个 Agent。一个处理功能改动,另一个负责相对独立的文档、测试准备或代码检查。等拆分方式和审查节奏稳定后,再增加并行任务。

清晰、重复、可验证的实现工作,适合交给多个 Agent 分头完成。架构取舍、接口契约和最终合并,仍然需要开发者拍板。Cursor 2.0 改变的是代码工作的调度方式,而不是责任归属。

相关阅读