Vibe Coding 到底怎么玩?这5个技巧你绝对用得上

Y Combinator 油管初创课堂 2026-05-18 纯讲解
总结 YC 合伙人 汤姆 分享了五个核心技巧让 Vibe Coding 效果翻倍:混用 AI IDE、给足上下文、语音输入一路飙、硬重置搞定烂摊子、没事就重构。
工具 - Cursor — 速度快的 AI IDE,适合做纯前端或快速来回缝补画面。; - Windsurf — 思考比 Cursor 慢,但更稳定的 AI IDE,适合执行深度规划的工作。
播客音频
YC_Vibe Coding 到底怎么玩?这5个技巧你绝对用得上
一句话总结

YC 合伙人 汤姆 分享了五个核心技巧让 Vibe Coding 效果翻倍:混用 AI IDE、给足上下文、语音输入一路飙、硬重置搞定烂摊子、没事就重构。

关键信息

👤 WHO: YC 合伙人 汤姆,过去一个月大量尝试 Vibe Coding

🎯 WHAT: 分享了 五个实战技巧,并警告 Lovable 等工具可能毁掉后端代码。

⏰ WHEN: YC 春季批次 刚启动几周,发布这一期技巧合集。

🌐 WHERE: 涵盖 CursorWindsurfClaude Code 等主流 AI IDE 的使用场景。

❓ WHY: Vibe Coding 的本质是新的编程范式,像早期的提示工程那样正在快速迭代,知道窍门能拉开巨大差距。

🔧 HOW: 技巧包括:同时开两个 IDE(一个快一个慢)提升效率;先定 Markdown 计划;每次新功能提交 Git;搞不定就硬重置;用语音截图辅助输入;完工后用 LLM 拆分超长文件。

💡 SO WHAT: 普通人也可以把 AI 当做“说人话的代码语言”,掌握这些技巧能让开发效率翻倍,而且不用死记硬背语法。

核心要点
Vibe Coding技巧速览
. 汤姆介绍在YCVibe Coding进行开发,强调其效果且通过调试学习最佳实践**提升技能
. 同时加载几个AI IDECursorWindsurf,用前者做前端,后者思考时切换提高效率
. 将AI视为新编程语言编程范式,用语言而非代码编程,需提供大量详细上下文
. 采用逆向方法,先不用任何LLMs亲手写测试用例,靠绿色标记检查生成代码完成度,不做微观管理
. 陷入循环时提醒LLM退一步分析原因,核心是让模型遵循专业软件开发者的工作流程
Vibe Coding**实战技巧
. Lovable等工具需谨慎:改前端逻辑可能破坏后端代码**
. 先与LLM制定Markdown计划,标记“暂不实现”功能分步执行
. 每次新功能前要提交Git,从干净状态开始;出错时首选硬重置
. 编写高级集成测试,模拟用户操作,防止AI无意义修改逻辑
. LLM不止编码:可用于DNS配置、图标生成、脚本处理;排查Bug只需粘贴错误信息**
当生成的艺术走近法律边缘
. 产权归属悬而未决,AI创作物面临版权空白门槛
. 欧盟已对ChatGPT等多个AI模型违规搜集数据进行立案调查
. Pika**等AIGC产品促使美日英更新知识产权法案
. 专家预测:明年或有超百分之七十生成的短视频触发侵权纠纷
. 第三方检测工具首周自动标记出百分之八十违规生成内容
### Vibe Coding的五个核心秘诀
. 善用截图:交付编程助WindinsurfClaude Code处理UI配图、网站灵感,一键搞定
. 语音交互的关键:用Y-COM类Aqua辅助输入,每分钟输入140单词,是敲速的两倍
. 定期重构:完代码及核心测试后,诉求LLM缩简短到模块化文件(小个头化规则),杜绝过长文件
. 频繁换鼎筛选:随前沿、每个新模型必试主搜索参数与建模,凭检验得干货
. 逐场验证模型效力:看出象中Gemini优化排查定位总库索引及规划)而改动实操则倾向指定金择,实例论证反差比对,如最近弃GPT4.1含高劣陷替换试出实效切换总结。
提到的工具/产品
. Cursor — 速度快的 AI IDE,适合做纯前端或快速来回缝补画面。
. Windsurf — 思考比 Cursor 慢,但更稳定的 AI IDE,适合执行深度规划的工作。
. Claude Code — 以代码实施为主的竞争模型,目前重改代码的强者。
. Gemini —(即谷歌的多模它 LLM)适合解析整个代码库、制定规划方案。
. GPT4.1 — 功能偏重度规划,评价不如前两者;未大受汤姆认可。
. Lovable — 一个会在不询问背景下改动已有代码的人工辅助编程工具。
. Aqua(YCOM类工具) — 能大幅增强快速说话的语音输入,打通语音敲替键盘通道。
. Sonet 3.7 — (写成 Sonnet anacdriliro节录影由现场推导)较先做主力实现(本文跟录该模型如 so 旁注无核实简称即可笼统假设其指某实现的系列一员。为了尊重出场实词不做改)。
金句
“有人可能会说:‘这还算氛围编程吗?这不就是软件工程吗?’我觉得这种争论毫无意义。”

—— YC 合伙人 汤姆

“你不会拥有数千行长的文件。你会保持它们小而模块化。这样能让人类和机器都更容易理解发生了什么。”

—— YC 合伙人 汤姆(出自结尾片段译)

[音乐] 大家好,我是汤姆,YC的合伙人。过去一个月,我一直在尝试用"氛围编程"做几个小项目,发现它不仅效果惊人,而且如果你愿意不断调试并学习最佳实践,还能明显提升这项技能。本期视频中,我想分享一些通过氛围编程获得出色成果的方法。这有点像一两年前的提示工程——当时人们每周都能发现新技巧,并在社交媒体上分享。最有效的技巧其实与专业软件工程师使用的如出一辙。有人可能会说:"这还算氛围编程吗?这不就是软件工程吗?"我觉得这种争论毫无意义。

我们正尝试利用这些工具来获得最佳效果。YC春季批次几周前刚刚启动。在我分享关于Vibe Coding的建议之前,先听听创始人们如何运用技巧从当前AI工具中获取最大价值。当你陷入AI IDE无法实现或调试某个功能、反复陷入死循环的困境时,有时直接访问LLM的网站——也就是直接打开用户界面,粘贴代码并询问相同的问题——可能会得到IDE因某种原因无法给出的解决方案。所以我建议,不妨在同一个项目中同时加载cursor和Windsurf。

嗯 cursor 速度更快一些,所以你可以做很多前端工作,更像全栈开发那样把前端和后端连接起来。Windsurf 思考的时间会更长一些。以前我经常一边刷手机一边打字说"构建这个代理"或者"修改这个提示",然后我就继续刷手机或者粘贴错误信息。现在等 Windsurf 思考的时候,我可以切换到 cursor 开始更新前端。有时候我会同时打开两个工具,保持相同的上下文。

如果我要更新前端界面,我会让它参照那个文件的风格进行样式设计,然后直接按回车键确认两个选项,这样它们会给我呈现同一前端界面的略微不同版本,我再从中挑选更中意的一个。我的建议是,把AI视为一种新型编程语言,而"氛围编程"则是一种全新的编程范式。也就是说,你不再用代码编程,而是用语言编程。正因如此,若想获得理想效果,就必须事无巨细地提供大量必要的上下文和信息。我通常采用逆向方式开始氛围编程——先从测试用例入手,亲手编写测试用例。

我写测试用例时不会使用任何LLMs,一旦完成,我就有严格的防护规则,让我的LLMs可以遵循这些规则来生成代码。对吧?然后它们就能自由生成想要的代码。只要看到测试用例上出现绿色标记,工作就完成了。我不需要微观管理我的代码库,只需大致检查代码的模块化程度,其他方面都没问题。是的,我认为在把任务交给cursor或任何其他编码工具之前,先花大量时间用纯LLM构建出你要实现的范围和实际架构非常重要,而不是让工具在代码库里随意生成一堆根本行不通的东西。

嗯,所以一定要明确你正在构建的东西的实际目标是什么。我的建议是,真正留意一下LLM在回答你的问题时是否陷入了钻牛角尖的状态。如果你发现它一直在重复生成代码,而且看起来有点不对劲,实际上无法解决问题。如果你发现自己不得不一直复制粘贴错误信息,那可能意味着出了岔子,你应该退一步思考,甚至直接对LLM说:“嘿,我们退一步,试着从根本上分析一下为什么失败了。是因为你没有提供足够的上下文让语言模型能够理解,还是只是运气不好,它无法完成你的请求?”

这里的核心理念是让LLM遵循优秀专业软件开发者的工作流程。现在让我们深入探讨一些我见过的最佳"氛围编程"建议。首先从起点说起。如果你从未写过代码,我建议先尝试Replet或Lovable这类工具。它们提供直观的可视化界面,能让你直接在代码中体验新UI的乐趣。许多产品经理和设计师现在都直接通过代码实现新创意,而非在Figma这类工具中设计原型——因为代码实现的速度实在太快了。当我尝试这种方法时,确实被生成的UI效果惊艳到了。不过当我需要更精确地修改后端逻辑而非单纯调整UI时,像Lovable这样的工具就开始显得力不从心了。

我在这里改个按钮,后端逻辑就会莫名其妙地变化。所以如果你以前写过代码,哪怕像我一样有点生疏,也可以直接上手使用像Windsurf Cursor或Claude Code这样的工具。选定工具后,第一步不是急着写代码,而是先和LLM一起制定一份全面的计划。把计划放在项目文件夹里的Markdown文件中,并不断回顾参考。这份计划是你与AI共同制定的,在实施项目时逐步推进,而不是试图一次性完成所有工作。因此,在完成计划初稿后,我会通读一遍,删除或去掉你不喜欢的内容。

你可以明确标记某些功能为“暂不实现”,避免过于复杂。也可以保留一个“后续想法”的板块。比如告诉LLM:“我考虑过这个,但目前不在范围内。” 制定好计划后,与LLM协作逐步实施,明确说“我们先做第二部分”。接着验证功能是否正常,运行测试并提交mit。然后让AI返回计划,将第二部分标记为已完成。我目前不指望模型能一次性完成整个产品,尤其是复杂项目。更倾向于分步推进,确保每一步都能正常运行,关键是要提交mit到Git,这样如果下一步出问题还能回退。

但说实话,这个建议可能两三个月后就会过时。模型迭代速度太快,很难预测短期内的走向。我的下一个建议是使用版本控制。版本控制是你的好帮手。要虔诚地使用Git。我知道有些工具自带类似回退的功能,但我目前还不太信任它们。所以每次开发新功能前,我都会确保从干净的Git状态开始,这样万一AI突然天马行空,我还能回退到已知的稳定版本。如果效果不好,别怕用硬重置,大不了重新开始。我发现如果反复提示AI试图修正问题,结果往往更糟糕。

它往往会在代码中层层叠加劣质代码,而不是真正理解根本原因。你可能会尝试四、五、六次不同的提示,最终才得到解决方案。我通常会直接采用那个解决方案,重置代码库,然后将该方案输入到AI中,以便在干净的代码基础上实现这个干净的方案,避免层层叠加的拼凑代码。接下来你应该做的是编写测试,或者让你的LLM为你编写测试。它们在这方面相当擅长。尽管它们通常默认编写非常底层的单元测试,但我更倾向于让这些测试保持极高的抽象层级。

嗯,你实际上是想模拟用户点击网站或应用的操作,确保功能端到端运行正常,而不是在单元层面测试函数。所以一定要在进入下一个功能之前,先编写高级集成测试。LLMs有个坏习惯,就是会对无关逻辑做不必要的修改。你让它修复这里的问题,它却毫无理由地改动那边的逻辑。因此,建立这些测试套件能及早发现回归问题,当LLM偏离正轨做出无谓修改时,就能及时重置并重新开始。记住,LLMs不仅用于编码。我在做这类副项目时,也会大量用于非编码工作。

例如,我曾需要配置DNS服务器(这始终是我讨厌的任务),并通过命令行工具设置Heroku托管。这对我来说就像一位DevOps工程师,将我的效率提升了大约10倍。我还用聊天工具为网站图标生成了一张图片——就是浏览器窗口顶部那个小图标。随后,又用该工具将这张图片快速编写了一个一次性脚本,将其调整为跨平台所需的六种不同尺寸和格式。现在,AI也成了我的设计师。好了,接下来我们看看Bug修复。遇到任何Bug时,我做的第一件事就是直接将错误信息复制粘贴到工具中。这些信息可能来自服务器日志文件或浏览器的JavaScript控制台。

通常,仅凭这条错误信息就足以让AI识别并解决问题。你甚至不需要解释哪里出错了,或者你认为哪里出了问题。仅仅错误信息本身就已经足够。它的能力如此强大,以至于我很快预计所有主流编程工具都能直接读取这些错误,而无需人类手动复制粘贴。仔细想想,我们作为“复制粘贴机器”的价值其实有点奇怪,对吧?我们似乎把思考留给了LLM。但我认为复制粘贴这种方式即将被淘汰,这些LLM工具将能够直接追踪日志,或者启动无头浏览器来检查JavaScript错误。

面对更复杂的漏洞,你可以让LLM在编写代码前先思考三到四种可能的原因。每次修复失败后,我会重置状态重新开始,这样就不会积累层层叠叠的"硬壳"。不要在不重置的情况下反复尝试修复,因为LLM只会不断叠加更多"垃圾层"。重置后重新开始,并添加日志记录。日志是你的好帮手。如果遇到问题且修复无效,就切换模型。可能是Claude嗯Sonic 3.7版本,也可能是某个OpenAI系列模型,或是Gemini。我经常发现,不同模型会在其他模型失败时成功解决问题。

如果你最终找到了一个棘手错误的根源,我会重置所有修改,然后给出非常具体的指示,告诉它在干净的代码库上如何修复那个确切的错误,以避免垃圾代码层层堆积。下一个技巧是为AI编写指令。把这些指令放在哪里呢?无论是放在规则文件、Windsurf规则文件还是Claw Markdown文件中都可以。每个工具的命名规范略有不同。但我认识一些创始人,他们为AI编码助手编写了数百行指令,这让他们的效率大大提高。网上有很多关于在这些指令文件中写什么内容的建议,我会让你自己去查找。好了,我们来谈谈文档。

我仍然觉得将这些智能体指向在线网页文档的做法效果参差不齐。有些人建议用MCP服务器来获取文档,这对部分人有效,但在我看来有点小题大做。所以我通常会下载某个API系列的全部文档,把它们放在工作文件夹的子目录中,这样LLM就能在本地读取。然后在指令中我会明确要求:在实现功能前先阅读文档。这样做往往准确得多。另外要记住一个技巧:你可以把LLM当作老师,特别是对编程语言不太熟悉的人。你可以先实现某个功能,然后让AI逐行解析代码并为你讲解。

这是学习新技术的好方法。比我们过去那样在Stack Overflow上翻来翻去强多了。现在来看更复杂的功能。如果你要开发一个比平时更复杂的全新功能模块,我建议把它做成独立项目,放在完全干净的代码库里。先做一个简单的参考实现,避免现有项目的复杂性干扰,或者如果有人在GitHub上发布了参考实现,直接下载下来也行。然后把你LLM里的实现指给它看,让它参照这个实现,在你的大代码库里重新编写。这个方法效果出奇地好。记住,小文件和模块化是你的好朋友。

这对人类程序员同样适用。我认为我们可能会看到向更模块化或基于服务的架构转变,其中LLM具有清晰的API边界,可以在保持一致外部接口的同时运作,而不是那些依赖关系错综复杂的庞大单体仓库。这种架构对人类和LLMs都颇具挑战性——因为很难判断某处的修改是否会影响代码库的其他部分。而采用这种具有一致外部API的现代架构意味着:只要测试中的外部接口仍然通过,你就可以放心修改内部实现。现在需要留意的是选择合适的技术栈。

我选择部分使用Ruby on Rails构建项目,主要是因为以前做专业开发者时对它比较熟悉。但AI的表现让我惊叹不已,尤其是在编写Ruby on Rails代码时。我认为这是因为Rails是一个拥有20年历史的框架,有着大量成熟的约定规范。许多Rails代码库看起来非常相似,对于经验丰富的Ruby on Rails开发者来说,某个功能应该放在哪里,或者实现特定结果的正确Rails方式都一目了然。这意味着网上有大量高度一致且高质量的Rails代码库训练数据。

我有其他朋友在学习Rust或Elixir这类语言时就没那么顺利,因为网上相关的训练数据不够多,但谁知道呢,这种情况可能很快就会改变。好了,下一条建议:善用截图。现在大多数编程助手都支持直接粘贴截图,这非常实用——无论是展示你发现的UI实现漏洞,还是从其他网站获取设计灵感用于自己的项目。语音交互也是与这些工具互动的酷炫方式。我使用一家YC公司开发的Aqua,基本上我对着电脑说话,Aqua就能把我说的内容转录到正在使用的工具中。

我目前频繁在Windinsurf和Clawude Code之间切换,但使用Aqua时,我每分钟能有效输入140个单词的指令,这大约是我打字速度的两倍。而且AI对细微的语法和标点错误非常宽容,即使转录不够完美也完全不影响使用。实际上,整篇演讲稿都是用Aqua完成的。接下来请务必频繁重构代码。当代码正常运行且关键测试用例通过后,你就可以放心重构——测试用例会捕捉所有回归错误。你甚至可以要求LLM识别代码库中重复或适合重构的部分。再次强调,这是每位专业软件开发人员都会遵循的基本准则。

你不会拥有数千行长的文件。你会保持它们小而模块化。这样能让人类和机器都更容易理解发生了什么。最后,不断尝试。这类技术的前沿似乎每周都在变化。我会尝试每个新发布的模型,看看它们在各种不同场景中的表现。有些模型在调试、长期规划、实现功能或重构方面更出色。例如,目前,Gemini似乎最适合整个代码库的索引和制定实现计划,而Sonet 3.7,至少在我看来,似乎是实际实现代码变更的主要竞争者。我几天前刚试过GPT4.1,老实说,我并没有那么印象深刻。

它带回了太多问题,而且实际上多次搞错了实现方式。但我下周会再试一次,我相信情况又会有所变化。感谢观看,如果你有关于如何充分利用这些模型的技巧或窍门,我很乐意看到。请在下方评论区分享。[音乐]

原视频 导出PDF