Cursor 团队进行了一项大规模实验:让数百个并发 agents 在单个项目上长时间运行,生成超过 100 万行代码、数万亿 tokens。
最具代表性的案例:用 GPT-5.2 在一周内构建了一个浏览器,300 万+ 行代码,跨数千文件。
核心发现
1. 单 Agent 的天花板
单个 agent 处理聚焦任务没问题,复杂项目会失控。最初尝试让 agents 通过共享文件互相监控,失败。
2. 协调机制的试错
锁机制:agents 持锁太久或忘记释放,一旦挂掉系统死锁。
乐观并发:更稳健,但没解决根本问题。
分布式系统思路:agents 行为不可预测,经典模式失效。
团队角色模拟:增加沟通成本,开会浪费 tokens。
3. 最终架构:Planner + Worker + Reviewer
突破来自角色分离和减少协调:
Planner → 持续探索代码库、生成任务(看地图)
Worker → 只管执行分配的任务,不与其他 Worker 沟通(开车)
Reviewer → 判断是否完成、是否继续迭代(验收)
核心原则:减少协调、明确边界、容忍失败。
三个关键启示
1. 模型选择关键
GPT-5.2 在长时间自主任务上显著优于其他模型。
长时间运行需要特定能力组合:
- 上下文保持:跨越数小时甚至数天不丢失目标
- 自我纠错:迭代时能发现并修复之前的错误
- 规划稳定性:执行过程中不跑偏
GPT-5.2 系列在这些维度上表现突出:更能遵循指令、保持专注、避免偏离,实现上更加精确和完整。
相比之下,Opus 4.5 倾向于更早结束任务、在方便的时候走捷径,更快把控制权交还给用户。
另一个发现:不同模型在不同角色上各有所长。即便 GPT-5.1-codex 是专门为编码训练的,GPT-5.2 依然是更好的规划者。现在他们针对每个角色选择最适合的模型,而不是依赖单一通用模型。
2. 简单架构 > 复杂设计
最反直觉的发现。
直觉上应该有效的方案:
分布式系统思路(Kubernetes for agents):锁机制、共识协议、任务队列。问题是 agents 不是进程,行为不可预测,一个 agent 持锁后走神系统就死锁。
团队模拟思路:模拟人类团队的 PM、架构师、开发者角色。问题是增加了沟通成本,agents 在开会上浪费 tokens,实际产出下降。
最终有效的方案反而极简。
核心洞察:agents 不是人,也不是进程。它们需要专门为其特性设计的协调模式:减少协调、明确边界、容忍失败。
3. Prompt 工程被低估
小的 prompt 调整带来的收益超出预期,甚至超过框架和部分模型选择的影响。
具体体现:
- 任务描述的粒度:太粗 agent 会乱搞,太细 agent 没有发挥空间
- 角色定义的措辞:Planner 的 prompt 里一个词的差异,可能导致它过度拆分或拆分不足
- 失败处理的指令:告诉 agent 遇到错误时先回退再重试 vs 遇到错误时尝试其他方案,行为完全不同
引申:好的 evals(评估体系)极其重要。没有 evals,你不知道哪个 prompt 变体更好;有了 evals,prompt 调优就变成可量化的实验。
可复用的工程经验
1. 任务边界设计
- 单个 Worker 任务应自包含:改完能编译、能测试
- 避免跨 Worker 的隐式依赖:同文件任务要合并或显式排序
- Planner 职责是维护全局视图,不是执行细节
2. 失败处理策略
- 乐观重试:Worker 失败就丢弃,重新分配
- 不追求完美协调:允许冲突,事后由 Reviewer 清理
- 渐进式验收:能编译 → 能跑测试 → 功能正确,逐层过滤
3. 依赖与集成
浏览器项目使用了 Servo 解析器、QuickJS 等成熟库,这是正确的工程决策:
- 让 agents 专注于胶水代码和集成逻辑
- 避免在已解决问题上浪费 tokens
- 真正难点是理解库的 API 并正确组装
4. Prompt 的领域适配
针对具体项目注入领域知识:
- 项目结构约定
- 核心流程阶段划分
- 依赖库调用示例
领域化 prompt 比通用 prompt 有效得多。
实际成果
从零构建浏览器:1 周,300万+ 行代码,数千文件
Solid → React 迁移:3 周,+266K / -193K 行
视频渲染优化:25x 性能提升(Rust 重写)
核心结论
三点启示是递进关系:
- 选对模型 → 基础能力到位
- 用对架构 → 发挥模型能力
- 调对 prompt → 榨干最后的性能
目前行业可能过度关注模型本身,低估了架构和 prompt 的杠杆效应。Agent 设计是一个新领域,需要新的模式,而非照搬已有范式。
推荐阅读 Cursor 团队的完整博客,里面有更多技术细节和案例:https://cursor.com/cn/blog/scaling-agents