导语
Cursor团队在Lex Fridman的播客中,分享了他们从Vim和VS Code用户转向构建AI原生代码编辑器的心路历程。他们认为,随着大语言模型能力的飞速提升,传统以代码文本为中心的编辑器已无法满足需求。因此,他们选择分叉VS Code,从底层重新设计一个能够深度整合AI的编程环境,旨在将编程活动本身转变为一种更高效、更直觉的人机协作过程。
Cursor创始团队在Lex Fridman播客中深入探讨了AI如何改变编程。他们解释了为何要分叉VS Code以构建一个AI原生的编程环境,详细介绍了Cursor Tab等核心功能背后的技术原理,如混合专家模型和推测性编辑,并展望了未来AI代理在软件开发中的角色。他们认为,编程的本质将从纯粹的代码编写,转向更高效的人机协作与意图表达。

Cursor团队在Lex Fridman的播客中,分享了他们从Vim和VS Code用户转向构建AI原生代码编辑器的心路历程。他们认为,随着大语言模型能力的飞速提升,传统以代码文本为中心的编辑器已无法满足需求。因此,他们选择分叉VS Code,从底层重新设计一个能够深度整合AI的编程环境,旨在将编程活动本身转变为一种更高效、更直觉的人机协作过程。
展开「深读」看每一段讨论的问题与论据。
讨论的问题:代码编辑器的本质是什么,它对程序员的核心价值在哪里?
论据 / 案例:将代码编辑器比作“为程序员准备的超级增强版文字处理器”,并强调“快速就是有趣”的开发哲学。
讨论的问题:Cursor团队是如何从使用VS Code和Copilot,发展到决定自己创建一个新的代码编辑器的?
论据 / 案例:团队成员因Copilot(2021年发布)从Vim转向VS Code;GPT-4(2022年底)的早期体验让他们坚信编程环境需要根本性变革。
讨论的问题:为什么选择分叉VS Code而不是开发一个插件,这个决策背后的核心逻辑是什么?
论据 / 案例:团队希望“不受限制地构建最有用的东西”,并认为“模型能力每年都在提升,领先几个月甚至一年的产品会更有用”。
讨论的问题:Cursor Tab这个核心功能的智能程度和终极目标是什么?
论据 / 案例:目标是实现“零熵编辑”,即消除所有意图已明确但仍需手动输入的步骤;模型需要预测“下一个动作”而非仅仅是下一个词。
讨论的问题:如何设计差异比较界面来有效引导程序员审查AI生成的代码变更?
论据 / 案例:团队尝试了多种界面迭代,包括删除线、高亮提示等;提出“验证问题”,即随着模型生成更大变更,需要更智能的界面来辅助人类审查。
讨论的问题:Cursor如何结合不同模型的能力来高效、准确地生成代码变更?
论据 / 案例:指出前沿模型在生成diff时“会计数行数等愚蠢错误”,而确定性算法在apply时“至少40%的时间会失败”。
讨论的问题:为了让交互体验流畅,Cursor在模型推理速度和上下文管理上做了哪些关键的技术创新?
论据 / 案例:使用“推测性编辑”实现流式快速输出;内部系统“Preempt”用JSX-like声明来优先排列输入到提示中的信息。
讨论的问题:现有的AI编程基准测试在多大程度上反映了真实世界的编程能力,评估的真正难点是什么?
论据 / 案例:以SWE-bench为例,指出模型可能“幻觉出正确的文件路径和函数名”;强调“真实的编程是上下文依赖的,需要理解人类意图”。
讨论的问题:像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." —— 我们不认为代理会接管所有编程工作,因为编程的很多价值在于迭代。你实际上不想一开始就精确指定,因为在看到初始版本之前,你并不真正知道自己想要什么。