AI 辅助编程领域一个不得不提的工具—— Cursor,五一假期无意看到了 Cursor 的联合创始人兼 CPO(首席产品官)Sualeh Asif 参与录制的一个播客节目,讲述了他们是怎么从零开始,把 Cursor 做成现在这样一个人见人爱的产品的?他的回答挺有意思,信息量很大,我给大家捋一捋,然后分享一下我的理解。

一切的开始:从“卧槽,Copilot 牛逼!”到“我们能做得更好”

Sualeh 他们几个创始人,背景都挺硬核,搞过算法竞赛,也在 Stripe 这样的大厂干过。他们很早就对 “Scaling Laws”(规模法则)和语言模型(LLMs)这块儿特别感兴趣。Sualeh 自己还搞过类似搜索引擎的项目,那时候就觉得,语言模型这玩意儿潜力巨大,应该能把全世界的信息都压缩起来,搞个端到端的互联网搜索索引,比现在那些靠规则堆出来的强多了。

转折点是 GitHub Copilot 的出现。Sualeh 说,Copilot 刚出来的时候,简直是“魔法”,又快又神奇。但问题是,之后的很长一段时间,Copilot 似乎没啥大进步。等到 GPT-4 出来的时候,他们觉得,哇,模型能力天花板这么高,能做的产品上限肯定也水涨船高啊!而且模型还在不断变强,未来的可能性简直太诱人了。

加上他们自己本来就是 hardcore coder,天天写代码,就想着能不能搞个自己用着爽的工具。于是,Cursor 就这么诞生了,一开始很大程度上就是给自己做的。后来发现大家也都很喜欢,那纯属意外之喜了(当然,我猜他们心里早有预期)。

有趣的是,他们团队一开始居然是 Vim 党!后来是因为 Copilot 这“杀手级应用”太香了,才逐渐转到了 VS Code 阵营。这也解释了为啥 Cursor 是基于 VS Code 魔改,而不是另起炉灶或者基于 Vim——他们想站在巨人的肩膀上,用大家最熟悉的方式,渐进式地把编码带入 AI 时代。

产品迭代心法:疯狂实验,但只上“自己离不开”的功能

Cursor 的早期文化就是各种实验。他们尝试过各种姿势来用 LLMs 辅助编程:

  • 是不是应该搞个文档,你在里面写需求,模型帮你生成代码?
  • 能不能预测你的下一步操作,光标应该跳到哪,帮你改啥?
  • 能不能直接对整个代码库进行大规模修改?

有些想法很快落地成了核心功能,比如现在很受欢迎的“预测下一个编辑位置”(就是你按 Tab 就能跳到下一个该改的地方,甚至帮你把改动生成好),这个功能他们打磨了快一年了,据说马上还要有大升级。还有些想法,比如跨整个代码库的编辑,还在持续迭代中,因为这玩意儿挑战太大了。

Swale 提到一个关键点,我觉得特别实在:很多想法在内部原型阶段就被毙掉了,原因很简单——他们自己试用后觉得不够好用,甚至自己日常开发都用不起来。比如那个 Agent 功能,他们内部搞了至少三个版本都没发布,就是因为觉得模型有时候会“掉链子”,不够可靠,怕砸了口碑。直到他们觉得这东西真的能在日常工作中帮上忙了,才推出来。

这种“dogfooding”(自己吃自己的狗粮)的文化,我觉得是他们产品做得好的一个重要原因。不像有些产品,发布时吹得天花乱坠,实际用起来各种坑。

技术细节:长上下文、模型蒸馏和“好玩”的秘密

聊到技术,Sualeh 透露了不少干货:

  1. 上下文窗口是关键: 早期模型(4K、8K 上下文)能力有限,连当前文件都塞不进去,别说理解整个项目了。现在模型能处理几十万 token 的上下文,成本也下来了,这才让很多酷炫的功能(比如代码库级别的理解和编辑)成为可能。
  2. 模型蒸馏大法: 那个“Apply”按钮(就是让 AI 把生成的代码块自动放到文件里的正确位置)为啥感觉那么丝滑,甚至有点像确定性算法?其实背后是个模型在重写整个文件。他们先训练一个大模型,上线收集用户数据,然后用这些数据蒸馏(distill)出更小、更快的模型,再上线,再收集,再蒸馏… 这样不断迭代,让模型又快又好,现在处理一两千行的文件基本感觉不到延迟。
  3. “好玩”也是生产力: Sualeh 的观点是,“好玩”其实是个综合体验指标。比如,为啥很多人觉得用 Claude Sonnet 模型比 o1 更爽?因为 Sonnet 延迟低,交互起来更流畅,更能让你保持“心流”状态。这种“好玩”的感觉会直接影响你的编码意愿和效率。所以他们会优先选择那些延迟低、连贯性好的模型(比如 Sonnet),甚至自己训练模型去优化这些体验。他们会考虑:
    • 模型是不是太“聒噪”了?在你思考的时候老跳出来建议,烦不烦?
    • 模型能不能记住你最近打开的文件?老是需要重复提醒,烦不烦?
    • 那个连按 Tab 就能完成整个重构的功能,是不是让你觉得很爽?为了实现这种“爽”,需要做什么样的模型优化?

这种对“体感”的极致追求,可能也是他们能在一众竞品中脱颖而出的秘诀。

基础设施和模型选择:自己动手,丰衣足食

Cursor 不仅做应用层,底层基建也没少下功夫:

  • 自建索引设施: 为了让 AI 能快速理解你的代码库(尤其是大项目),他们搞了一套索引系统,每天处理几十亿个文件。这套系统基于 S3 和类似 TurboBuffer 这样的向量数据库(存算分离架构),并且还在不断优化,比如研究怎么更高效地支持团队共享代码库的索引(类似 Git 分支的向量数据库实现)。
  • 自建推理服务: 无论是做代码嵌入(embedding)还是跑那个高频使用的 Tab 补全模型,他们都自己搭了推理服务。Sualeh 提到他们的 Tab 模型(基于 DeepSeek V2 定制)每天调用量上亿次,这计算量想想都吓人。
  • GPU 资源调度: 这是个甜蜜的烦恼。GPU 资源是有限的,怎么分配给大项目索引和小项目索引?怎么平衡不同用户的需求?目前还没有完美的“Serverless GPU”方案,他们也在摸索最佳实践。
  • 模型选择的眼光 : Sualeh 很淡定地说,他们用 DeepSeek 的模型(从 1.5 到 V2)已经很久了,选它的原因很简单——模型底子好,预训练扎实,尤其是在代码方面表现突出,而且推理成本相对可控。这让我感觉,他们对模型技术的判断确实有两把刷子,不是跟风型的。

未来展望:编码方式的进化是渐进的,但潜力无限

聊到未来,Sualeh 认为编码的方式会持续进化,AI 会越来越多地参与进来,但核心还是让开发者坐在驾驶位上

  • 更强大的 Agent: 现在的 Agent 还比较初级,未来随着模型连贯性(coherency)的提升(通过更好的 RL 和 Post-training),Agent 能处理更复杂的任务,比如你只要说一句“把我项目中 gRPC 安全传输部分的实现,切换为使用 rustls 这个TLS库。”,它就能理解你的整个项目结构,自动完成跨文件的修改。Agent 的价值在于帮你省去写冗长需求文档的麻烦,让模型自己去探索和理解代码库。
  • 渐进式变革: 他不认为软件开发岗位会突然消失,或者出现一个“完全不需要程序员”的工具。变革会像 Copilot 的普及一样,是逐步发生的,大家会很自然地适应新的、更高效的编码方式。从一开始的“卧槽,这能行?”,到后来的“真香”,这个过程可能比我们想象的要平滑。
  • 人人都是架构师?: 随着 AI 的加持,开发者可以更大胆地尝试更复杂的项目,无论是个人项目还是公司项目。过去因为怕麻烦、怕返工而不敢做的大型重构或实验,未来可能会变得更容易。这可能会催生更多的创新。

写在最后

听完 Sualeh 的讲述,我最大的感受是,Cursor 的成功不是偶然。这帮人既有技术前瞻性(很早就看好 LLM 和 Scaling Laws),又有深厚的技术功底(能自己搞定模型、索引、推理),更重要的是,他们非常务实,始终以开发者自身的体验和需求为核心,坚持迭代那些“自己用了都说好”的功能。他们不追求短期噱头,而是稳扎稳打地提升产品的核心价值和用户体验。

对于我们开发者来说,有 Cursor 这样的工具是幸运的。它不仅提升了我们的生产力,也让我们提前感受到了未来编码方式的变革。至于未来会怎样,谁也说不准,但可以肯定的是,AI 正在让写代码这件事变得越来越“好玩”,也越来越强大。

大家对 Cursor 或者 AI 编程有什么想法,欢迎在评论区留言交流!