视频信息
- Title: How To Get The Most Out Of Vibe Coding | Startup School (如何最大限度地利用Vibe Coding | 创业学校)
- Author: Y Combinator
- URL: https://www.youtube.com/watch?v=BJjsfNO5JTo
Overview
这期视频的核心论题是,“Vibe Coding”——即利用AI工具进行编程——并非漫无目的的“凭感觉”编码,而是一套可以学习和掌握的、系统性的最佳实践。Y Combinator的合伙人Tom通过结合YC创始人们的实战技巧和他自己总结的15条黄金法则,为开发者提供了一份详尽的“AI辅助编程”操作手册。视频的最终结论是,通过将AI视为一个需要清晰规划、详尽上下文和严格测试的“初级程序员”,并结合版本控制、模块化架构和持续实验等软件工程原则,开发者可以极大地放大自己的生产力,将AI从一个简单的代码片段生成器,转变为一个能够处理复杂功能、调试、重构乃至DevOps和设计任务的全能编程伙伴。
按照主题来梳理
第一节:来自YC创始人的前线战报——Vibe Coding实战技巧
视频开篇,Tom第一分享了来自Y Combinator(简称YC)生态系统内创始人们在日常开发中总结出的宝贵经验。这些技巧并非理论,而是从真实的产品开发和创业压力中提炼出的实用智慧,旨在解决在使用AI编程工具时最常遇到的问题。
- 1. 切换工具解决“卡顿”
- 问题:AI编程助手(如Cursor, Windsurf)有时会陷入“思考循环”或无法解决一个特定的调试问题。
- 解决方案:不要在一个工具上死磕。一个超级有效的技巧是,直接将卡住的代码片段和问题,复制粘贴到大型语言模型(LLM)的原生网页界面(如ChatGPT, Claude的官网)中去提问。有时,这种“换个环境”的做法能奇迹般地得到直接在IDE插件中无法获得的解决方案。
- 2. 并行使用,提升效率
- 思路:不同的AI工具有不同的优缺点,列如思考速度和生成代码的风格。通过同时使用多个工具,可以取长补短,最大化效率。
- 实践:一位创始人会在同一个项目上同时打开Cursor和Windsurf。他发现Cursor一般响应更快,适合快速的前端修改;而Windsurf思考时间更长,但可能生成更深思熟虑的后端逻辑。他会在等待Windsurf思考时,切换到Cursor去完成其他任务,实现“人机并行”。更有趣的是,他有时会给两个工具完全一样的指令,然后同时按下回车,比较它们生成的不同实现方案,并择优采用。
- 3. 将Vibe Coding视为一门“新语言”
- 观念转变:Vibe Coding的本质,不是用代码编程,而是用自然语言进行编程。你需要像学习一门新的编程语言(如Python或Java)一样,去学习如何与AI进行准确、无歧义的沟通。
- 实践:这意味着你需要提供极其详尽的上下文和信息。不能想当然地认为AI“应该知道”你在想什么。指令越具体、背景信息越充分,得到的结果就越好。
- 4. 从测试用例开始
- 思路:这是一个将经典的“测试驱动开发”(TDD) 理念应用于AI编程的强劲技巧。核心是先由人类定义好“成功的标准”(即测试用例),然后让AI在这个“护栏”内自由发挥。
- 流程:
- 第一步:手动编写高层次的集成测试用例,不要让AI代劳。这些测试应该能验证一个功能的端到端正确性。
- 第二步:将这些测试用例交给AI,并指示它编写代码,目标是**“让所有测试通过”**。
- 优势:这样做可以让你从微观管理AI生成的每一行代码中解放出来。只要所有测试都变成绿色,就意味着功能已经按预期实现,你可以自信地进入下一步,只需检查一下代码的整体结构和模块化程度即可。
- 5. 优先规划架构
- 问题:直接让AI在一个复杂的代码库中开始工作,很容易导致它“信马由缰”,生成一些不符合整体架构、难以维护的代码。
- 解决方案:在启动任何编码任务之前,先花足够的时间在纯粹的LLM聊天界面(而非IDE插件)中,与AI一起规划和设计你将要构建的功能的范围和技术架构。你需要和AI“讨论”并确定好模块划分、接口定义、数据流等。只有当这个蓝图清晰之后,再把它交给IDE中的编码助手去具体实现。
- 6. 识别和避免“兔子洞”
- 警惕信号:你需要敏锐地识别AI是否陷入了“兔子洞”,即一种无效的、重复性的工作状态。信号包括:AI不断地重新生成类似但依然无效的代码;或者你发现自己一直在重复地将同一个错误信息粘贴给它。
- 应对策略:一旦识别出这种迹象,应立即暂停。退后一步,重新评估问题。可以明确地告知AI:“让我们退一步,分析一下为什么会失败?” 这一般意味着你没有提供足够的上下文,或者当前的问题可能超出了AI的能力范围。
第二节:Tom的最佳实践——系统化你的Vibe Coding工作流
在分享了YC创始人们的零散技巧后,Tom将这些思想系统化,并结合自己的经验,提出了一个包含15个要点的、更为全面的Vibe Coding最佳实践框架。这个框架覆盖了从工具选择、项目规划到调试、重构的全过程。
- 规划与设置
- 1. 选择合适的工具:新手提议从Replit或Lovable这类提供实时可视化界面的工具入手;有经验的开发者则可以直接使用Cursor, Windsurf或Claude Code等更专业的工具。
- 2. 制定并遵循详细计划:与AI合作制定一份详细的、分步骤的Markdown计划文档。严格按照计划,一次只实现一小部分,每完成一步都进行测试和Git提交,并让AI更新计划文档的完成状态。
- 3. 频繁使用Git:将Git作为最终的、最可靠的回滚机制。在AI进行任何大的修改前,确保你的工作区是干净的。如果AI把代码搞得一团糟,不要犹豫,使用git reset –hard HEAD彻底回滚,然后用一个更清晰的指令重新开始。
- 4. 编写高层次测试:让AI编写高层次的、模拟用户真实行为的集成测试,而非低层次的单元测试。这套测试不仅能验证功能正确性,还能在你进行后续修改时,捕获AI可能无意中引入的回归错误。
- 5. 编写详细指令文件:充分利用工具提供的指令文件(如Cursor的rules文件),在其中编写数百行关于你的项目架构、编码规范、技术选型等详细指令,这能极大地提升AI的效率和准确性。
- 6. 提供本地文档:不要指望AI能完美地从网络上读取实时API文档。最佳实践是,将你使用的第三方库的文档下载到本地,放在项目的一个子目录中,并明确指示AI在编码前先阅读这些本地文档。
- 执行与交互
- 7. 将LLM用于非编码任务:拓宽你对AI的想象力。它可以帮你配置DNS服务器、设置Heroku托管、创建Favicon图标,甚至编写一个脚本来自动调整图片尺寸和格式。
- 8. 将LLM作为教师:当你使用AI实现了一个你不熟悉的技术时,可以让它逐行地向你解释代码的实现原理。这是一个绝佳的“做中学”的机会。
- 9. 利用截图和语音输入:现代AI工具大多支持多模态输入。你可以直接将UI bug的截图粘贴给AI,或者将一个你喜爱的设计截图作为参考。同时,可以尝试使用Aqua等工具进行语音输入,其输入速度远超打字,且AI对微小的语法错误有很好的容忍度。
- 调试与复杂功能处理
- 10. 有效调试:遇到bug时,第一步永远是直接将完整的错误信息(包括堆栈跟踪)粘贴给AI。对于复杂bug,先让AI头脑风暴几种可能的缘由,然后逐一尝试。每次尝试失败后,记得回滚代码,避免在错误的代码上叠加新的错误。
- 11. 处理复杂功能:如果你要实现一个超级复杂的功能,一个好方法是先在一个全新的、干净的独立项目中,让AI实现一个最小化的参考版本。当这个参考版本能工作后,再将它作为范例,指示AI在你主代码库的复杂环境中,模仿这个参考实现来构建完整功能。
- 架构与重构
- 12. 注重小文件和模块化:AI在处理小而美的、接口清晰的模块化代码时,表现得远比处理庞大、耦合的单体应用要好。拥抱微服务或模块化架构,会让AI辅助开发变得更加轻松。
- 13. 选择合适的工具栈:AI的表现严重依赖于其训练数据的质量和一致性。选择像Ruby on Rails这样拥有20年历史、社区规范高度统一的成熟框架,AI的表现会出奇地好,由于它有海量的高质量、风格一致的代码可供学习。相反,在一些较新的、小众的语言(如Rust, Elixir)上,AI的成功率可能会较低。
- 14. 频繁重构:当一个功能已经能工作,并且有测试覆盖时,就是进行重构的最佳时机。你可以大胆地让AI帮你识别代码中的坏味道(如重复代码),并执行重构操作,由于测试会保证重构的安全性。
- 持续进化
- 15. 持续实验:Vibe Coding的技术日新月异。你需要保持开放的心态,不断尝试每个新发布的模型版本和新工具,找到在不同任务(规划、实现、调试、重构)上表现最佳的组合。例如,Tom发现Gemini在项目规划上最强,而Claude Sonnet 3.5在代码实现上更胜一筹。
框架 & 心智模型
要真正地将Vibe Coding融入日常开发并发挥其最大潜力,你需要一个超越零散技巧的系统性框架,并完成一次深刻的心智模型转变。
最大化Vibe Coding产出的系统框架:“P-T-G-T-R”五步循环
- 第一步:计划
- 核心心智:采纳“架构师思维”,而非“码农思维”。
- 行动:在写任何代码之前,与AI进行高层次的对话,共同制定一份详尽的、分步骤的Markdown计划文档。明确范围,定义模块和接口。
- 第二步:测试
- 核心心智:采纳“测试驱动开发”(TDD)思维。
- 行动:在实现任何功能之前,先手动编写高层次的、端到端的集成测试。这个测试定义了“完成”的标准。
- 第三步:生成
- 核心心智:将AI视为一个“初级程序员”,你需要提供清晰的指令和完整的上下文。
- 行动:将计划中的一小部分,连同相关的上下文(本地文档、指令文件),交给AI去生成代码。目标是让测试通过。
- 第四步:验证与提交
- 核心心智:采纳“版本控制是生命线”的思维。
- 行动:当测试通过后,快速地人工审查AI生成的代码,主要关注其结构和可读性。然后,立即使用Git提交这次小批量的、可工作的更改。
- 第五步:重构
- 核心心智:采纳“童子军军规”(即离开时让营地比你来时更干净)。
- 行动:在功能稳定、有测试覆盖后,积极地让AI协助你进行代码重构,保持代码库的健康。然后,回到第一步,开始下一个功能的循环。
所需的核心心智模型转变
- 1. 从“AI是魔术师”到“AI是初级程序员”
- 旧心智:AI是一个神奇的黑箱,我给它一个模糊的想法,它就应该能完美地实现它。当它失败时,我会感到失望和沮ET。
- 新心智:AI是一个超级有才华、速度极快、但毫无经验和常识的“初级程序员”。它需要一个“高级程序员”(也就是你)来为它提供清晰的需求文档(计划)、严格的质量保证(测试)、完整的项目背景(上下文),并对它的产出进行Code Review。你需要管理它,而不是期望它。
- 2. 从“追求一次性完美”到“拥抱快速迭代”
- 旧心智:我希望通过一个完美的提示,一次性就让AI生成所有我想要的代码。
- 新心智:与AI协作是一个高度迭代的过程。核心是“小步快跑”。通过“计划-测试-生成-提交”的快速循环,将一个大问题分解成无数个小问题来解决。不要害怕回滚,Git是你最好的朋友。完美的最终产品,是由一系列不完美的、但不断被修正的迭代步骤所构成的。
- 3. 从“代码的创作者”到“系统的编排者”
- 旧心智:我的主要价值在于亲手编写代码。
- 新心智:我的主要价值在于思考、规划、设计和验证。AI负责具体的代码实现(“How”),而我负责定义要做什么(“What”)和为什么这么做(“Why”)。我的角色从一个“工匠”提升到了一个“架构师”和“项目经理”,我编排包括AI在内的各种资源,来最高效地达成目标。
- 4. 从“孤立的开发者”到“开放的实验者”
- 旧心智:我只使用我最熟悉的一款工具。
- 新心智:AI编程领域瞬息万变,没有“银弹”。我必须保持一个开放的、实验性的心态,不断地尝试新的工具、新的模型、新的工作流。我需要成为一个乐于分享和学习的社区成员,由于今天最好的实践,可能在下周就会被新的范式所取代。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...