从零搭建AI软件工厂:Cursor工程师的多Agent协作实战经验

Cursor工程师分享构建AI多Agent软件工厂的实战经验与方法论
Cursor工程师Eric分享了从零构建AI软件工厂的完整路径。他将软件自动化分为六个层级(从自动补全到全自主暗工厂),并阐述了构建工厂的三大核心要素:代码模式、护栏设计和赋能器。关键转变是从工人心态转为管理者心态,通过隔离环境并行运行多个Agent,同步规划异步执行。他还展示了智能Code Owner、PR评论学习、Feature Flag自动清理等自动化飞轮案例,强调规则应动态涌现、持续迭代改进。
引言:软件工厂的愿景与现实
Cursor工程师Eric在AI Engineer大会上分享了他在Cursor内部dogfooding产品、逐步构建"软件工厂"的实战经验。所谓dogfooding,是指公司内部日常使用自己开发的产品,这一实践源自微软早期"eat your own dog food"的文化,目的是在真实工作场景中发现产品的不足并快速迭代改进。Eric坦言,虽然我们还没有完全达到全自动化的软件工厂阶段,但公司内部的许多子系统已经在相当自主地运行。
正如现实世界的硬件工厂需要流水线、管理层和可观测性一样,软件工厂同样需要借鉴这些概念。这次分享涵盖了从自主性层级、工厂构建前提、运行工厂到规模化扩展的完整路径。

软件自动化的六个层级
Eric引用了Dan Shapiro在今年初发布的博文,将软件自动化分为六个层级:
- Level 0-1:辣味自动补全(Spicy Autocomplete),这是Cursor在2022-2023年的起点
- Level 2-3:结对编程阶段,人与Agent来回交互,Agent生成大部分代码,人类负责审查
- Level 4:管理者模式,尽可能将工作委派给Agent,人类主要审查输出而非代码本身
- Level 5:暗工厂(Dark Factory),完全黑盒运行,Agent自主编码、测试、部署,人类只提供意图和指令
"暗工厂"这一概念源自制造业术语,指完全无人值守、甚至无需照明的全自动化工厂——因为没有人在里面工作,所以不需要开灯。在软件领域,这意味着从需求理解、代码生成、测试验证到部署上线的全流程无人干预,系统像一个黑盒一样持续产出可用的软件制品。
Eric表示自己目前处于Level 4阶段——对大多数软件项目,他会尽可能将工作委派给Agent,偶尔才会直接查看代码。
为什么要构建AI软件工厂
构建软件工厂的核心动机有三个:
吞吐量提升:Agent可以7×24小时运行,不需要睡眠和食物,你可以同时运行更多Agent来提高产出。
一致性输出:流水线式的工作方式能产生一致的输出。如果工厂构建得当,产出质量会非常稳定。但如果缺乏护栏,Agent的行为会越来越随机——这恰恰是需要加强约束的信号。
放大创造力:你可以更好地发挥自己的品味和创意,而不是等待自己一行行写出代码。
构建工厂的核心要素
原语与模式(Primitives & Patterns)
代码结构至关重要。模块化的代码库让Agent能够在单一目录下发现所有相关文件,而不需要在整个代码库中grep搜索。Eric提出了一个精辟的观点:如果你作为人类能轻松上手一个新代码库,Agent大概率也能做到。
使用模式同样重要——是否有标准化的认证方法、启动脚本、测试编写方式?如果有这些样板代码,你就可以让Agent参照已有实现来复制。这本质上是将隐性知识显性化:当团队的最佳实践被编码为可复用的模板,无论是新入职的人类工程师还是AI Agent,都能快速理解"这里应该怎么做"。
护栏设计(Guardrails)
护栏包含三个维度:
- 钩子(Hooks):限制Agent不能修改特定敏感代码区域,如加密、认证等模块。钩子本质上是一种预提交检查机制,类似于Git的pre-commit hook,在Agent尝试执行某些操作前进行拦截和验证。
- 规则(Rules):Eric强调规则应该动态涌现,而非预先安装所有可能的规则。当你发现Agent偏离轨道时,才应该创建对应规则。这与敏捷开发中"恰好足够"的文档理念一脉相承——过度的前置规则会造成维护负担,而响应式创建的规则往往更精准、更有针对性。
- 测试(Tests):让Agent能验证自己的工作,运行测试确认没有破坏现有功能
赋能器(Enablers)
这是最令人兴奋的部分——给Agent更多能力:
- 技能与MCP:让Agent访问外部上下文、理解如何实现特定功能。MCP(Model Context Protocol)是Anthropic于2024年底推出的开放协议,它为AI模型与外部工具、数据源之间的交互定义了标准化接口,类似于AI世界的USB接口。通过MCP,Agent可以连接数据库、调用API、读取文档等,大幅扩展其能力边界。
- Feature Flag:Agent可以自主添加feature flag,合并PR后告诉你"如果想试试就开启这个flag,不喜欢就回滚"。Feature Flag(功能开关)是一种成熟的软件工程实践,允许团队在不重新部署代码的情况下动态启用或禁用特定功能。它广泛应用于灰度发布、A/B测试和风险控制——当Agent生成的新功能出现问题时,只需关闭开关即可瞬间回滚,无需回退代码。
- 环境自启动:Agent能否自行启动开发环境?如果可以,就能在独立VM上无限扩展
运行工厂:从工人到管理者的转变
心态转换
当工厂运转起来后,最重要的是转变心态:
- 从工人变为管理者
- 从同步变为异步
- 从写代码变为审查输出
Eric指出,这与人类组织管理的原则完全一致:小团队→增加人手→需要经理→经理的经理。Agent世界也是如此,你只是不断向上攀升抽象层级。
并行化与上下文管理
作为管理者,你需要思考如何划分和并行化工作。关键原则:
- 一个工作单元对应一个Agent
- 避免两个Agent同时修改同一代码区域(会产生合并冲突)
- 保留代码的"部落知识"——理解数据流向、用户需求、关键模块
- 前置加载上下文:通过计划或详细规格说明,在发送任务前给Agent足够信息
"部落知识"(Tribal Knowledge)是软件工程中一个重要概念,指那些存在于团队成员头脑中但未被文档化的隐性知识——比如"这个API之所以这样设计是因为历史上某个客户的特殊需求",或者"这段代码看起来冗余但删了会导致边缘case崩溃"。在Agent协作中,将这些知识显性化并注入上下文变得尤为关键。
Eric分享了他的日常工作模式:通常同时运行5-10个Cloud Agent,在等待期间要么规划下一个任务,要么处理同步的小事务。他喜欢"同步规划,异步执行"的节奏。
隔离环境的重要性
Eric强烈推荐使用隔离的VM环境而非共享工作区:
每个VM可以运行独立的数据库、内部工具和Cursor应用本身。虽然更贵,设置也更复杂,但一旦搭建好,就能扩展到100甚至1000个Agent。
Cursor内部每天可能运行数千个Agent,都在代码库的副本上工作。这种隔离策略借鉴了容器化和微服务架构的思想——每个Agent拥有完全独立的运行时环境,彼此之间不会产生资源争用或状态污染,从而实现真正的水平扩展。
自动化飞轮:实际案例
Eric展示了Cursor内部的多个自动化实践:
日报自动化:自动从Slack和GitHub聚合信息,生成每日工作总结。
PR评论学习:自动收集合并PR中的人类评审意见,作为高价值信号存储,帮助Agent持续学习。这里的核心洞察是:代码评审中的人类反馈包含了大量关于代码质量、架构偏好和团队规范的隐性知识,是比任何静态文档都更鲜活的训练信号。
智能Code Owner:替代传统的静态code owner机制。系统会评估PR风险等级——低风险(如变量重命名)直接自动批准,高风险则拉入相关人员审查。这解决了20%情况下code owner造成的瓶颈问题。传统的CODEOWNERS文件是GitHub提供的一种机制,指定特定代码路径的审查负责人,任何对该路径的修改都必须经过指定人员批准才能合并——但在高频提交的团队中,这常常成为流程瓶颈。
持续学习插件:自动分析历史对话记录,提取记忆和规则。比如你反复纠正Agent"用这个组件而不是那个",系统会自动生成对应规则。
Feature Flag自动清理:当feature flag以100%比例运行超过两周,系统自动创建Linear工单,触发Cloud Agent移除该flag。这解决了软件工程中一个常见的技术债问题——feature flag如果不及时清理,会导致代码中充满条件分支,增加复杂度和维护成本。
规模化:从5个Agent到1000个Agent
观察与改进
规模化的核心是建立反馈飞轮:
- 观察Agent产出的结果
- 发现偏差(如错误的数据库schema命名)
- 创建规则或设计系统来纠正
- 让Agent在下次迭代中使用这些改进
这本质上是一个PDCA(Plan-Do-Check-Act)循环在AI协作场景下的应用——持续观察、持续改进,让系统的输出质量随时间单调递增。
GUI测试与验证
Eric演示了使用Cloud Agent的computer use功能进行GUI测试——Agent启动本地服务器,实际点击界面元素,录制操作视频供人类快速验证。这对于前端变更的验证尤其有价值。Computer use是一种让AI Agent直接操作图形界面的能力,Agent可以像人类一样移动鼠标、点击按钮、输入文字,从而验证UI层面的正确性。
Cursor Workers:本地化扩展
Cursor刚发布的Workers功能允许在任何机器上运行与Cloud Agent相同的基础设施和编排层。你可以在Mac mini、本地VM或任何云平台上启动worker守护进程,通过Cursor Cloud统一管理。这意味着团队可以利用已有的计算资源(如闲置的开发机或私有云)来运行Agent,而不必完全依赖Cursor的云端资源,同时在数据敏感的场景下也能满足合规要求。
关键建议与总结
Eric最后给出了五条核心建议:
- 明确意图:清晰思考要解决的实际问题
- 不要外包重要决策:安全、支付、认证等关键决策必须由人类做出
- 构建工具和系统:找到飞轮并将其代码化
- 存储上下文:保存Agent对话记录和优质产出物,帮助Agent理解什么是好的
- 让Agent自由:思考Agent需要什么。Lovable的一个团队给Agent设置了"吐槽工具",Agent会在Slack频道抱怨自己无法访问的资源——这些抱怨反而成了极有价值的改进线索
软件工厂不是一蹴而就的,它需要持续的投入和迭代。但随着模型能力的提升,构建和维护这些系统的投入会越来越值得——因为它们提供的是框架和护栏,而这比手动编写代码本身更有长期价值。
核心要点
- 软件自动化分为六个层级,从自动补全到完全自主的暗工厂,当前大多数开发者处于Level 2-3的结对编程阶段
- 构建软件工厂需要三大核心要素:代码原语与模式、护栏(钩子/规则/测试)、赋能器(技能/MCP/隔离环境)
- 从工人到管理者的心态转变是关键——同步规划、异步执行,前置加载上下文,使用隔离VM环境实现无限扩展
- 自动化飞轮包括智能Code Owner、PR评论学习、Feature Flag自动清理、持续学习插件等实际案例
- 规则应该动态涌现而非预设,存储上下文和构建工具系统比手动编码更有长期价值
相关推荐
教程攻略Cursor+Codex双IDE协同:开源项目二开实战方法论
基于实战经验总结的开源项目二次开发完整方法论,详解Cursor+Codex双IDE协同工作流,涵盖二开七环节、MVP验证、AI读源码技巧,帮助开发者三天跑通项目、两周完成业务集成。
教程攻略Cursor多Agent实战:50分钟搭建Next.js全栈博客
使用Cursor IDE多Agent协作模式,50分钟内从零搭建全栈博客。涵盖Next.js、Clerk认证、Supabase数据库集成,详解4个AI Agent分阶段开发流程与关键避坑经验。
教程攻略ReAct与CodeAct深度对比:Agent工具调用的两种核心方法
深入解析Agent工具调用的两大主流架构ReAct与CodeAct,从论文原理到代码实战,对比推理+行动模式与代码执行模式的优劣,帮助开发者选择合适的Agent架构方案。