The Pragmatic Engineer 订阅 登录 The Pragmatic Engineer 与 Varun Mohan 共同打造 Windsurf 106441×0:00 当前时间:0:00 / 总时长:-1:27:54 -1:27:54 您的浏览器不支持音频播放,请升级。与 Varun Mohan 共同打造 Windsurf Windsurf CEO Varun Mohan 分享了打造 AI-native IDE 如何重塑软件开发——从优化 LLM 延迟到让非工程师也能交付代码。 Gergely Orosz 2025年5月7日 106644 分享文字记录收听最新一期节目立即在 YouTube、Spotify 和 Apple 上收听和观看。文字记录见本页顶部,时间戳见页面底部。
Modal —— 用于构建 AI 应用的云平台
CodeRabbit —— 将代码审查时间和 bug 数量减半。使用代码 PRAGMATIC 可免费试用一个月。当 LLM 遇上真实世界的代码库时会发生什么?在本期 The Pragmatic Engineer 中,我与 Varun Mohan(Windsurf 的 CEO 兼联合创始人)一起探讨。Varun 向我介绍了打造 AI-native IDE(Windsurf)的技术挑战,以及这些工具如何改变软件的构建方式。打造自动驾驶汽车的经历给 Windsurf 团队带来了哪些关于评估 LLM 的启示面向文本的 LLM 缺少哪些编程所需的能力,例如“fill in the middle” Windsurf 敢于押注并从失败中学习的文化催生 Cascade(agentic 能力)的突破 Windsurf 的非开发员工如何使用 Windsurf 构建定制化 SaaS 应用 Windsurf 如何让工程师专注于更有趣的问题随着 AI 接管更多代码库,哪些技能仍然有价值对话中讨论的一些最有趣的话题如下:
1. 拥有完善的“eval suite”是 Windsurf 等 LLM 产品工具的必备条件。每当 Windsurf 考虑接入一个新模型——并将该模型发布给客户时——他们都需要回答一个问题:“这个模型够好吗?”
为此,他们搭建了一套 eval suite 来给这些模型“打分”。这是一项相当复杂的工作。同时,任何基于 LLM 构建产品的团队都应该借鉴这种做法。AI 产品开发中的“eval testing”,感觉就像传统软件开发中的“unit testing”或“integration testing”。
2. AI 驱动的 IDE 让工程师更“无畏”,并能减轻精神负担。我问 Varun,使用 Windsurf 如何改变了工程师的工作负荷和产出——尤其是考虑到团队中大多数人在 LLM 编程助手出现之前就已经是软件工程师了。Varun 的几个观察:工程师更敢于“无畏地”跳进代码库中不熟悉的部分——而过去,他们可能会等着去问更熟悉这段代码的人。开发者越来越倾向于先向 AI 求助,再去 ping 其他人(从而避免打断别人)。精神疲劳减少了,因为繁琐的任务可以交给 prompt 或 AI agent 处理。
Varun 强调,他并不认为 Windsurf 这类工具会消除对熟练工程师的需求:它只是改变了工作的性质,并能提高潜在产出。
3. 以“正确”方式 fork VS Code 意味着要做大量看不见的工作。虽然 VS Code 是开源的,可以被 fork,但 VS Code Marketplace 和许多 proprietary extensions 并非如此。例如,当你 fork VS Code 时,你的 fork 不被允许使用 Python language servers、remote SSH 和 dev containers 等扩展。Windsurf 团队不得不从零开始构建自定义扩展——这花费了大量时间,而用户甚至可能没注意到有什么差别!然而,如果 Windsurf 没有这样做,而是违反了这些扩展的 license,他们可能会陷入法律纠纷。所以,以“正确”方式 fork VS Code,并不像大多数开发者通常想象的那么简单。
4. 我们是否会看到更多非开发者创建“工作软件”?也许吧。一个非常令人惊讶的故事是,Windsurf 的 partnership lead(一名非开发人员)通过向 Windsurf 发送 prompt,创建了一个报价工具。这个工具替代了公司此前付费购买的一个定制化的、无状态的工具。
Varun 和我都认同,拥有大量状态和其他功能的复杂 SaaS 并不是“被内部替代”的目标。但是,简单的软件现在可以由业务用户通过 prompt 来创建。我对此的长期可维护性持怀疑态度:想想就连大型科技公司里由单个开发者搭建的内部工具,当这个开发者离职后,都没人愿意接手。关于大规模 GPU 使用和延迟优化:
Gergely:“你们如何处理推理?你们正在管理的系统每天可能要处理数十亿甚至数千亿个 token,就像你刚才说的,而且要做到低延迟。你们采用了哪些巧妙的方法?研究过哪些优化手段?”
Varun:“延迟对我们来说至关重要,重要性远超那些 API 提供商。对 API 提供商来说,time to first token 很重要。但这个时间是不是 100 毫秒并不重要。对我们来说,这才是我们要追求的目标。我们能否把它降到几百毫秒以内,然后达到每秒数百个 token 的输出速度?这比所有提供商目前的吞吐输出要快得多。而且你可以想象,我们还有很多其他事情想做。比如怎么做 speculative decoding 或 model parallelism?我们如何确保能够正确地对请求进行 batch,从而在最大化 GPU 利用率的同时不损害延迟?
GPU 非常强大,拥有巨大的算力。如果拿 CPU 做类比,GPU 的计算能力比 CPU 高出大约两个数量级。在更新的 GPU 上,这个差距可能更大,但请记住这一点。但 GPU 的内存带宽只比 CPU 高出一个数量级。这意味着,如果你做的事情不是计算密集型的,你就会受限于内存带宽。所以,要想充分发挥处理器的计算潜力,你就必须并行处理大量任务。但如果你需要等待大量任务并行处理,就会损害延迟。因此,我们需要在各种因素之间做出权衡。”
关于 fill-in-the-middle 的模型能力,以及 Windsurf 为何必须自研模型:
Varun:“fill-in-the-middle 的核心思路是这样的:如果你审视编写软件这项任务,它与聊天应用截然不同。在聊天中,你总是在末尾追加内容,可能再附加一条指令。但写代码时:你会在一行的中间、一个代码片段的中间进行编写。这些 LLM 模型在消费文件时,实际上是对文件做 tokenize。这意味着它们不是逐字节消费,而是逐 token 消费。但当你在写代码时,代码片段被 tokenize 后的结果,看起来并不像是训练分布内的内容。举个例子:你觉得在这些模型的训练数据中,有多少次会看到 return 这个词只出现 RETU 而没有 RN?可能一次都没有。它可能从来没见过这种情况。然而,当你输入 RETU 时,我们需要预测出‘RN’。这听起来是个非常小的细节,但如果你想做好这款产品,这一点至关重要。
fill-in-the-middle 是一种无法通过后期训练赋予模型的能力。你需要在模型基础上进行相当大量的训练,或者通过预训练才能获得这种能力。对我们的用户来说,提供 fill-in-the-middle 是基本要求。这迫使我们在非常早期就搭建自己的模型,并摸索 training recipes。”
软件工程师喜爱的具备 GenAI 功能的 IDE 2024 年面向软件工程师的 AI 工具:现实检验 AI 辅助编程将如何改变软件工程:残酷真相给软件工程师的 AI 工具,但褪去炒作
(13:03) Windsurf 目前的规模与业务范围
(16:04) Windsurf 发现的 LLM 在用于编程时缺失的能力
(20:40) Windsurf 在企业内部开展 fine-tuning 的工作
(24:00) 随着代码库规模扩大,开发者在使用 Windsurf 及类似工具时面临的挑战
(27:06) Windsurf 的技术栈以及对 FedRAMP 合规性的解释
(29:22) Windsurf 如何保障低延迟,以及本地数据中尚未解决的问题
(33:40) Windsurf 索引代码的流程
(40:00) Embedding 数据库的优缺点
(42:15) “分裂思维”困境——Windsurf 如何平衡当下与长远
(44:10) Windsurf 为何拥抱失败,以及从中获得的教训
(46:30) 推动 Cascade 取得突破的关键因素
(48:43) 让 Windsurf 能够轻松 dogfood 的内部开发者模式
(50:00) Windsurf 中一位经常用其构建应用的非开发者重度用户
(52:40) 哪些 SaaS 产品不太可能被取代
(56:20) Windsurf 的工程流程发生了怎样的变化
(1:00:01) 软件工程师的疲惫感,以及 AI 工具如何提供帮助
(1:02:58) Windsurf 为何选择 fork VS Code,并为 JetBrains 构建插件
(1:08:30) MCP 的当前应用及其不足
(1:12:50) 过去使用 C# 编程的方式,以及 MCP 可能的演进方向
(1:14:05) Varun 对 vibe coding 的看法,以及非开发者遇到的问题
(1:19:10) 未来仍有需求的工程师类型
(1:21:10) AI 将如何影响软件开发岗位与软件行业的未来
LinkedIn: https://www.linkedin.com/in/varunkmohan/
Show Stopper!: The Breakneck Race to Create Windows NT and the Next Generation: https://www.amazon.com/Show-Stopper-Breakneck-Generation-Microsoft/dp/0029356717
Salesforce CodeGen: https://www.salesforceairesearch.com/projects/CodeGen
什么是 SOC 2 合规性?:https://www.a-lign.com/articles/what-is-soc-2-complete-guide-audits-and-compliance
Nicholas Moy 的 LinkedIn:https://www.linkedin.com/in/nicholas-moy/
Anshul Ramachandran 的 LinkedIn:https://www.linkedin.com/in/anshul-ramachandran/
Visual Studio Code:https://code.visualstudio.com/
Model Context Protocol:https://github.com/modelcontextprotocol
Dario Amodei 的 X:https://x.com/darioamodei
The Idea Factory: Bell Labs and the Great Age of American Innovation: https://www.amazon.com/Idea-Factory-Great-American-Innovation/dp/0143122797