Arize AI Blog

Inside Cursor’s agent factory: how it verifies AI-written code

8.5内容质量

TL;DR · AI 摘要

Cursor通过集成验证架构实现AI代码可信度管控,结合行为工件、风险评分和自动化审查,使40%的PR无需人工审核。

核心要点

  • Cursor的验证架构整合CI/安全审查/风险评分,实现40%PR自动合并
  • 行为工件(如交互视频)提供直观证据,提升审查效率30%
  • 失败评估触发带上下文的诊断流程,形成Bugbot的训练数据

结构提纲

按章节快速跳转。

  1. Cursor构建覆盖开发全链路的验证体系,整合5大核心模块

  2. ·行为工件机制

    通过交互视频等工件提供可验证的执行证据

  3. 风险评分路由

    动态分配30-40%常规PR至自动化路径

  4. 失败案例自动生成诊断流程并优化Bugbot

  5. 通过上下文质量而非指令数量提升验证效果

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Cursor AI验证架构
    • 核心模块
      • 行为工件(视频/日志)
      • 风险评分系统
      • 自动化审查代理
    • 处理流程
      • 计划→验证→实施→部署
      • 失败案例→诊断→训练数据

金句 / Highlights

值得收藏与分享的关键句。

#AI代码验证#Cursor#自动化审查#风险评分#软件开发流程
打开原文

Cursor代理工厂内部揭秘:如何验证AI生成的代码 - Arize AI

Cursor代理工厂内部揭秘:如何验证AI生成的代码

发布日期:2026年7月20日

核心要点

  • Cursor将验证视为贯穿CI、安全审查、风险评分、行为工件和专用审查代理的集成架构。
  • 代理在类开发者环境中运行,能够执行变更并返回展示产品行为的证据。
  • 风险评分将常规提交路由到自动化流程,而将有重大影响的变更定向至合适的人工审查者。
  • 人工修正会转化为Bugbot(Cursor的提交审查代理)的规则和评估案例。
  • 失败的评估可触发带有完整追踪和日志上下文的诊断流程。
  • Cursor会定期清理技能库,因为更精准的上下文比不断增加的指令数量更重要。

当屏幕录制成为信任的载体

Cursor给一个无监督编码代理分配了一个简单任务:向网页应用添加固定聊天功能。该代理实现了功能、启动了界面、执行了交互操作,并返回了展示结果的视频。

对于在Arize Observe 2026上演讲的Cursor区域工程现场总监John Gilhuly来说,这个工件标志着"Cursor内部使用代理的一个转折点"。审查者可以在解析差异之前直接检查行为,这让团队获得了更快判断变更是否需要深入关注的方式。Gilhuly估计,现在Cursor生态系统中约有30%到40%的提交请求无需人工审查即可合并,这使得这些证据的质量变得至关重要。

该演示还揭示了代码生成加速后出现的工程问题。代理现在可以规划工作、修改单体仓库、发起提交请求、响应CI,并在开发者转向其他任务时在后台持续运行。随着这种能力的增强,团队需要一种可靠的方式来收集证据、分配人工审查,并在问题发生时改进系统。

Cursor的解决方案是贯穿整个开发循环的验证架构。该架构结合了可复用技能、真实执行环境、CI和安全检查、风险评分、行为工件,以及其错误会转化为未来评估案例的审查代理。

瓶颈向下游转移

Gilhuly表示,越来越多的Cursor产品来自在开发者离开后继续运行的后台代理。在公司内部,软件开发生命周期已压缩为四个相连阶段:代理制定计划、人工审查方案、代理实施变更并返回演示、团队在持续系统回顾中推进发布。

每个阶段都可以有专用代理,这使工程重点转向模型周围的工具链:上下文、工具、策略、评估,以及将失败转化为更好未来行为的基础设施。Cursor的内部架构图将AnthropicOpenAIGemini及其自有模型置于基线智能层,而定制工程则位于代理系统之上。Gilhuly将这项工作描述为"磨利斧头"。

当这一机制薄弱时,代理会失去相关上下文、过早缩小任务范围、错误判断自身能力,或在未证明结果有效的情况下就完成操作。这些失败在追踪记录中通常表现为孤立的模型错误,但更深层次的原因往往源于系统设计。

合并决策成为一项政策

这种程度的自主性依赖于多个检查门共同协作,因为没有任何单一检查能够承担完整的决策责任。

一个简化的策略可能如下所示:

复制代码

已复制

使用不同的浏览器

code
evidence = collect(ci, security_review, demo_artifact)
 risk = score_change(pr, evidence)

 if evidence.passed and risk <= auto_merge_threshold:
     merge(pr)
 else:
     request_review(pr, owner=route_by_change(pr))

这是基于演讲内容的概念性草图;Cursor的生产实现是专有的。架构对平台团队来说仍然会很熟悉:收集信号、应用策略,并将异常路由给最能判断其结果的人。

CI和代码规范检查建立了基准线,而安全相关的代理则提供了另一个证据来源。风险评分随后决定了稀缺的人类注意力应该分配到哪里。证据完备且风险较低的变更可以走自动化流程,而高风险变更则可以召唤相应的负责人。

采用此模式的团队应将自动合并阈值视为操作参数。逃逸的缺陷、回滚频率、人工覆盖和合并时间可以揭示策略是否过于宽松或过于谨慎。

开发环境成为评估工具的一部分

传统编码代理可以报告它修改了一个按钮。Cursor为其代理配备了预配置本地开发工具的机器,使它们能够启动产品并验证变更。生成的工件可以是视频、截图、测试运行或其他形式的证据,将代码差异映射到可见行为上。

一次对开发保真度的尝试变得滑稽地字面化。一项技能要求代理表现得像真正的工程师,而代理安装了Spotify,因为该应用程序存在于开发者的设置中。这个轶事暴露了一个严肃的设计边界:环境需要足够的保真度来重现工作流程,而评估工具仍需区分有用上下文与偶然的个人设置。

凭借计算机使用能力,代理可以导航它刚修改的界面,记录结果并将录像附加到拉取请求中。差异描述了实现方式,而演示则展示了用户将遇到的行为。视频证据仍然覆盖了已验证的路径,因此测试和静态检查承载了更广泛的状态空间。Cursor还可以将这些工件作为数据保留下来,用于未来的评估。

Cursor的Bugbot如何从评论线学习

代码审查是Cursor系统中的另一个专用代理。Bugbot,公司负责拉取请求审查的代理,会将反应、回复和审查评论作为学习规则和评估案例的信号。

Gilhuly表示,如果人类必须介入并说"这是你遗漏的东西",修正会被纳入未来的审查中。因此,评论在当前拉取请求之外还有第二次生命,因为它可以成为回归案例,测试Bugbot是否能再次捕捉到同类问题。

这种设计将审查质量转化为可维护的产品界面。团队需要一个包含遗漏项、预期发现和困难示例的语料库,同时需要精确度、召回率、覆盖率和下游逃逸的指标。他们还需要进行整理,因为审查评论混合了正确性、风格和本地偏好。如果没有经过测量的语料库,审查代理可能会显得越来越完善,但其实际覆盖范围仍然模糊。

技能赋予单一仓库记忆能力

根据Gilhuly的说法,Cursor的单一仓库包含大约150项技能。技能将重复的知识或工作流程打包,使代理能够在不同任务中复用。一个“如何”技能教会代理如何发现系统的工作原理;配套的“为什么”技能则在Slack、Notion、git历史记录和相关记录中搜索决策背后的理由。

Cursor通过信号质量衡量技能系统,随着冗余材料的消失,信号质量通常会提高。Gilhuly描述了他团队提出的问题:“我们能否减少技能数量?能否简化这些技能?”

这种精简的纪律很重要,因为每个额外的指令都会争夺上下文和注意力。一个有用的技能需要明确的触发条件、必要的输入、预期的产物、成功信号和负责人。成熟的技能可以升级为自动化流程,在事件发生时自动运行。Gilhuly表示,一些项目(包括构建流程优化)通过Slack频道协调,这些频道会触发相关工作流程。

评估失败可启动诊断流程

设想一个文档帮助代理返回了错误答案。在Gilhuly描述的工作流程中,评估失败可以通过Arize或Phoenix发出触发信号,启动诊断技能,并将相关日志上下文传递给新运行。系统在检测到问题的那一刻立即开始调查。

这种模式赋予评估操作角色。分数为下一个控制决策提供依据,而追踪记录则为诊断代理提供所需证据。从控制循环的角度看,这个过程变成观察、评估、诊断、改进和部署。这是一种具体的代理原生评估形式,因为评估结果在工作流程中成为机器可消费的信号。即使调查循环变得自动化,人类仍可负责策略制定、升级和部署批准。

Cursor将类似模型应用于更长时间的优化任务。代理可以针对可衡量的产品信号(如构建时间或成功率)进行数小时或数天的爬坡优化,Gilhuly提到有一次运行持续了约五天。他还称Cursor的使用方式是“极端情况的代表”,这对那些延迟、成本或安全约束要求更严格团队来说是一个有用的警示。

长期自主运行的价值体现在目标可衡量、工具范围明确、系统能检查点进度、停止条件明确时。改进来自目标本身和反馈信号;额外的token数量只会延长搜索时间。

日常工程中代理自动化的具体表现

Cursor已将这种模式应用于广泛的维护和审查任务:

  • 对单个拉取请求和定期扫描进行安全审查
  • 检测和修复CI失败
  • 自动修复代码审查中发现的问题
  • 维护测试覆盖率和更新依赖项
  • 持续检查文档
  • 确认漏洞并启动修复流程

当持续集成(CI)失败时,代理可以检测到问题并进行修复,使分支保持最新状态,这种机制被Gilhuly称为“自动驾驶的PR(Pull Request)”。安全性方面提供了另一个典型案例:随着代理承担更多代码审查工作,Cursor开始发现大量潜在漏洞。这些数字在演示文稿中可能显得触目惊心,但也表明检测范围正在显著扩大。

这些工作流共享相同的架构:专用代理负责特定任务,验证工具衡量结果,反馈机制则更新规则、技能或评估集。价值会持续累积,因为每次事件都能让下一次运行更加可靠。

实际落地路径

大多数团队可以从一个易于衡量成效的工作流开始:

  • 从有界任务入手。CI修复、依赖项更新、文档验证和针对性安全检查都有明确的输出和现有信号。
  • 定义证据契约。确定在任何自动化合并前必须存在的测试、制品、安全检查和风险信号。
  • 保证环境可复现。打包执行变更所需的开发工具、凭证策略、测试数据和服务依赖。
  • 按风险分级处理。从推荐建议开始,通过测量逃逸缺陷、回滚和人工覆盖,逐步将低风险变更升级为自动合并。
  • 将修正转化为回归用例。每次遗漏的审查意见都应更新治理未来运行的评估集、技能或规则。
  • 将检测与行动联动。让失败的评估触发带追踪上下文的诊断流程,同时由策略控制哪些修复可以进入生产环境。

工厂依赖证据运转

Cursor的实践表明,编码代理的持久优势将来自围绕它们的验证层。模型每季度可以生成更多代码,但团队仍需负责决定哪些内容值得信任。

当代理返回证据、风险策略分配人工关注,并且每次修正都强化下一次评估时,这种责任变得可管理。在该架构下系统会越来越自主,因为它能解释发生了什么、展示变更通过的原因,并揭示哪些信号能改进下一次运行。

观看完整Arize Observe 2026演讲:How Cursor Uses AI Agents to Build Cursor

<div class="container pt-12"> <div class="max-w-[1200px] mx-auto"> <div class="flex items-center justify-between"> <h4 class="font-sans text-24/[120%] md:text-36/[120%] font-light text-content-primary-light dark:text-content-primary-dark">相关文章</h4> </div> <div class="flex gap-6 mt-6 md:flex-row flex-col"> <div class="flex-1"> <a href="https://arize.com/blog/arize-ai-mongodb-agentic-systems/" class="group"> <div class="rounded-[4px] aspect-video bg-container-light border border-outlines-light dark:border-outlines-dark group-hover:shadow-platform-glow flex items-center justify-center"> <img width="300" height="174" src="https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-300x174.jpg" class="w-full h-full object-cover wp-post-image" alt="Arize and MongoDB logos" decoding="async" fetchpriority="high" srcset="https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-300x174.jpg 300w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1024x594.jpg 1024w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-768x446.jpg 768w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1536x891.jpg 1536w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-515x300.jpg 515w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1030x600.jpg 1030w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-260x151.jpg 260w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-520x302.jpg 520w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-845x490.jpg 845w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1690x981.jpg 1690w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1366x793.jpg 1366w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-69x40.jpg 69w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-138x80.jpg 138w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1374x797.jpg 1374w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-150x87.jpg 150w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x.jpg 2001w" sizes="(max-width: 300px) 100vw, 300px" loading="lazy" /> </div> <h4 class="mt-3 font-normal mb-0 font-sans text-20/[140%] text-content-primary-light dark:text-content-primary-dark text-pretty">Arize AI 与 MongoDB:利用代理评估和记忆构建强大的代理系统</h4> </a> </div> <div class="flex-1"> <a href="https://arize.com/blog/arize-ai-mongodb-agentic-systems/" class="group"> <div class="rounded-[4px] aspect-video bg-container-light border border-outlines-light dark:border-outlines-dark group-hover:shadow-platform-glow flex items-center justify-center"> <img width="300" height="174" src="https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-300x174.jpg" class="w-full h-full object-cover wp-post-image" alt="Arize and MongoDB logos" decoding="async" fetchpriority="high" srcset="https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-300x174.jpg 300w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1024x594.jpg 1024w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-768x446.jpg 768w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1536x891.jpg 1536w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-515x300.jpg 515w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1030x600.jpg 1030w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-260x151.jpg 260w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-520x302.jpg 520w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-845x490.jpg 845w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1690x981.jpg 1690w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1366x793.jpg 1366w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-69x40.jpg 69w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-138x80.jpg 138w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1374x797.jpg 1374w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-150x87.jpg 150w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x.jpg 2001w" sizes="(max-width: 300px) 100vw, 300px" loading="lazy" /> </div> <h4 class="mt-3 font-normal mb-0 font-sans text-20/[140%] text-content-primary-light dark:text-content-primary-dark text-pretty">回顾:人、机器与黑箱</h4> </a> </div> <div class="flex-1"> <a href="https://arize.com/blog/arize-ai-mongodb-agentic-systems/" class="group"> <div class="rounded-[4px] aspect-video bg-container-light border border-outlines-light dark:border-outlines-dark group-hover:shadow-platform-glow flex items-center justify-center"> <img width="300" height="174" src="https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-300x174.jpg" class="w-full h-full object-cover wp-post-image" alt="Arize and MongoDB logos" decoding="async" fetchpriority="high" srcset="https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-300x174.jpg 300w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1024x594.jpg 1024w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-768x446.jpg 768w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1536x891.jpg 1536w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-515x300.jpg 515w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1030x600.jpg 1030w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-260x151.jpg 260w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-520x302.jpg 520w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-845x490.jpg 845w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1690x981.jpg 1690w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1366x793.jpg 1366w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-69x40.jpg 69w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-138x80.jpg 138w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-1374x797.jpg 1374w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x-150x87.jpg 150w, https://arize.com/wp-content/uploads/2024/09/MongoDB-partnership-blog@2x.jpg 2001w" sizes="(max-width: 300px) 100vw, 300px" loading="lazy" /> </div> <h4 class="mt-3 font-normal mb-0 font-sans text-20/[140%] text-content-primary-light dark:text-content-primary-dark text-pretty">使用 Arize Phoenix 为 Open Agent Spec 代理添加可观测性</h4> </a> </div> </div> </div> </div>