Cursor创始团队:AI将重塑编程的未来

Cursor创始团队在Lex Fridman播客中深入探讨了AI如何改变编程。他们解释了为何要分叉VS Code以构建一个AI原生的编程环境,详细介绍了Cursor Tab等核心功能背后的技术原理,如混合专家模型和推测性编辑,并展望了未来AI代理在软件开发中的角色。他们认为,编程的本质将从纯粹的代码编写,转向更高效的人机协作与意图表达。

Michael Truell, Swli Asff, Arvid Lumark, Amman Singger

导语

Cursor团队在Lex Fridman的播客中,分享了他们从Vim和VS Code用户转向构建AI原生代码编辑器的心路历程。他们认为,随着大语言模型能力的飞速提升,传统以代码文本为中心的编辑器已无法满足需求。因此,他们选择分叉VS Code,从底层重新设计一个能够深度整合AI的编程环境,旨在将编程活动本身转变为一种更高效、更直觉的人机协作过程。

大纲与深读 9 章

展开「深读」看每一段讨论的问题与论据。

01

代码编辑器的定义与价值

08:50
  • 代码编辑器是程序员构建软件的场所,是高度增强的专用文字处理器。
  • 它通过语法高亮、导航、错误检查等功能帮助处理代码的结构。
  • 编辑器应该有趣且快速,快速的体验本身就很吸引人。
深读这一段

讨论的问题:代码编辑器的本质是什么,它对程序员的核心价值在哪里?

论据 / 案例:将代码编辑器比作“为程序员准备的超级增强版文字处理器”,并强调“快速就是有趣”的开发哲学。

02

Cursor的起源故事

09:13
  • 团队成员最初是Vim用户,为了使用GitHub Copilot而转向VS Code。
  • Copilot是大语言模型的第一个真正成功的消费者产品,证明了AI编程助手的价值。
  • 2022年底获得GPT-4早期访问权限,其能力的巨大飞跃促使团队决定构建全新的编程环境。
深读这一段

讨论的问题:Cursor团队是如何从使用VS Code和Copilot,发展到决定自己创建一个新的代码编辑器的?

论据 / 案例:团队成员因Copilot(2021年发布)从Vim转向VS Code;GPT-4(2022年底)的早期体验让他们坚信编程环境需要根本性变革。

03

为何分叉VS Code

17:43
  • 构建插件在控制力上存在根本限制,无法实现深度集成的AI功能。
  • AI模型能力在持续快速进步,仅做插件会被锁定在旧有框架内。
  • 作为初创公司,他们能更灵活、更快地进行研究和实现,以推动AI编程的上限。
深读这一段

讨论的问题:为什么选择分叉VS Code而不是开发一个插件,这个决策背后的核心逻辑是什么?

论据 / 案例:团队希望“不受限制地构建最有用的东西”,并认为“模型能力每年都在提升,领先几个月甚至一年的产品会更有用”。

04

核心功能:Tab与智能跳转

24:15
  • Cursor Tab不仅预测光标后的字符,还能预测下一步整个代码变更或光标跳转位置。
  • 目标是消除编码中所有低信息量(零熵)的机械操作,让模型代劳。
  • 其愿景是让编程中未来五分钟可预测的步骤,可以通过连续按Tab键快速完成。
深读这一段

讨论的问题:Cursor Tab这个核心功能的智能程度和终极目标是什么?

论据 / 案例:目标是实现“零熵编辑”,即消除所有意图已明确但仍需手动输入的步骤;模型需要预测“下一个动作”而非仅仅是下一个词。

05

Diff界面与代码审查

32:03
  • 针对不同场景(自动补全、大块代码、多文件)优化了不同的差异比较界面。
  • 目标是让差异评审尽可能快速和直观,引导用户关注最重要的部分。
  • 未来可让模型智能高亮重要代码或标记潜在错误,改善大型代码变更的审查体验。
深读这一段

讨论的问题:如何设计差异比较界面来有效引导程序员审查AI生成的代码变更?

论据 / 案例:团队尝试了多种界面迭代,包括删除线、高亮提示等;提出“验证问题”,即随着模型生成更大变更,需要更智能的界面来辅助人类审查。

06

模型应用:草稿与Apply模型

40:03
  • 前沿模型擅长规划和生成代码草稿,但直接生成精确的diff(特别是大文件)容易出错。
  • 他们训练专门的“Apply模型”来准确地将代码草稿应用到现有文件中,生成最终的diff。
  • 这种“前沿模型规划 + 小模型实施”的架构,平衡了智能水平、速度和成本。
深读这一段

讨论的问题:Cursor如何结合不同模型的能力来高效、准确地生成代码变更?

论据 / 案例:指出前沿模型在生成diff时“会计数行数等愚蠢错误”,而确定性算法在apply时“至少40%的时间会失败”。

07

技术优化:速度与上下文

41:03
  • 通过“推测性编辑”变体来加速代码生成:利用现有代码作为先验,批量处理可预测的行。
  • 缓存至关重要,设计提示时必须考虑缓存感知,以避免重复计算和GPU过载。
  • 他们开发了名为“Preempt”的内部系统,像响应式网页设计一样动态管理有限的上下文窗口。
深读这一段

讨论的问题:为了让交互体验流畅,Cursor在模型推理速度和上下文管理上做了哪些关键的技术创新?

论据 / 案例:使用“推测性编辑”实现流式快速输出;内部系统“Preempt”用JSX-like声明来优先排列输入到提示中的信息。

08

模型评估与基准测试

48:07
  • 现实编程是“肮脏”、模糊的,而基准测试是良好规格化的面试题,两者差距巨大。
  • 公开基准(如SWE-bench)存在严重的数据污染问题,模型可能已见过具体问题。
  • 评估严重依赖“人类反馈”和“氛围测试”,即程序员的定性感受和经验。
深读这一段

讨论的问题:现有的AI编程基准测试在多大程度上反映了真实世界的编程能力,评估的真正难点是什么?

论据 / 案例:以SWE-bench为例,指出模型可能“幻觉出正确的文件路径和函数名”;强调“真实的编程是上下文依赖的,需要理解人类意图”。

09

智能体与编程的未来

56:16
  • 智能体(Agent)在定义明确、可长时间运行的任务(如修复特定Bug)上潜力巨大。
  • 但大多数编程的价值在于快速迭代和探索,即时反馈比预先完全规划更重要。
  • 未来可能是混合模式:后台智能体处理耗时任务,同时人类在前台进行快速交互式开发。
深读这一段

讨论的问题:像Agent这样的自动化系统将在未来的编程工作中扮演什么角色,它的适用边界在哪里?

论据 / 案例:举例说明适合Agent的任务:修复“聊天输入框无法复制粘贴”这类明确问题;强调“很多编程的价值在于迭代,你并不真正知道自己想要什么,直到看到初版”.

金句

  • "What a code editor is is going to change a lot over the next 10 years as what it means to build software may start to look a bit different." —— 代码编辑器的定义在未来十年将发生巨大变化,因为构建软件的方式将开始变得截然不同。

  • "It felt like this wasn't just going to be a point solution thing, this was going to be all of programming was going to flow through these models. It felt like that demanded a different type of programming environment, a different type of programming." —— 我们感觉这不仅仅是一个孤立的解决方案,而是所有的编程工作都将通过这些模型进行。这要求一种全新的编程环境和一种全新的编程方式。

  • "I think one of the things that draws a lot of people to building stuff on computers is this insane iteration speed. Coding is this amazing thing where it's you and the computer. That alone, you can build really cool stuff really quickly." —— 我认为,吸引许多人用计算机创作的一点,就是这种疯狂的迭代速度。编程是一件奇妙的事情,只有你和计算机。仅凭这两者,你就能非常快地构建出真正酷的东西。

  • "The goal of Cursor Tab is: let's eliminate all the low entropy actions you take inside of the editor. Then, when it's effectively determined, let's just jump you forward in time." —— Cursor Tab的目标是:消除你在编辑器内进行的所有低信息熵操作。然后,当它被有效确定时,就让你在时间上向前跳跃。

  • "I don't think we think that that's the case because a lot of programming, a lot of the value is in iterating. You don't actually want to specify something up front because you don't really know what you want until you've seen an initial version." —— 我们不认为代理会接管所有编程工作,因为编程的很多价值在于迭代。你实际上不想一开始就精确指定,因为在看到初始版本之前,你并不真正知道自己想要什么。

原文链接

查看完整访谈

完整内容见原文:Lex Fridman Podcast · Cursor创始团队:AI将重塑编程的未来