YC的 Vibe Coding 经验是基于 YC 的视频《How To Get The Most Out Of Vibe Coding | Startup School》整理而来,由YC合伙人Tom Blomfield分享,是基于人工智能(AI)工具如Claude Code、Windsurf和Aqua进行软件开发的新方式。通过这种方法,AI能编写全栈应用程序,通过粘贴错误信息调试代码,成为开发过程中的真正合作伙伴。Tom提供了完整的指南,帮助开发者通过vibe coding提高开发速度和效率。
核心内容
规划过程
-
创建全面计划:首先与AI合作编写详细的实施计划,保存在Markdown文件中。
-
审查和完善:删除不必要的项目,标记过于复杂的功能,以便后续处理。
-
保持范围控制:为后续的想法保留单独的部分,以便保持当前项目的专注度。
-
增量实施:分部分逐步实施计划,不是一次性构建所有内容。
-
跟踪进度:让AI在成功实施后标记部分为完成。
-
定期提交:确保每个工作部分都提交到Git,以便在移动到下一个部分之前能进行版本控制。
版本控制策略
-
严格使用Git:不要完全依赖AI工具的回滚功能,始终从干净的Git状态开始每个新功能。
-
从干净开始:每个新功能都从干净的Git状态开始,以便在AI偏离轨道时可以回滚。
-
遇到问题时重置:如果AI在某个任务上陷入困境,使用
git reset --hard HEAD
来重置。 -
避免累积问题:多次失败的尝试会积累坏代码,因此需要避免。
-
清洁实施:当你最终找到解决方案时,重置且纯净代码中实施它。
测试框架
-
优先考虑高级测试:关注端到端集成测试,不是单元测试。
-
模拟用户行为:通过模拟用户点击来测试功能,确保它们按预期工作。
-
捕捉回归:LLM可能会对不相关的逻辑进行不必要的更改,需要测试捕捉这些回归。
-
测试前进行:在移动到下一个功能之前确保测试通过。
-
使用测试作为护栏:从测试用例开始提供清晰的边界,确保功能的正确性。
有效修复bug
-
利用错误消息:直接将错误消息复制粘贴到LLM,通常足以识别和修复问题。
-
分析前编码:让AI考虑多种可能的原因,再编写代码。
-
失败后重置:每次失败尝试后从干净状态开始,避免积累坏代码。
-
实施日志记录:添加策略性日志能更好地理解发生的事情。
-
切换模型:尝试不同的AI模型,看看哪个更适合当前任务。
-
清洁实施:在干净的基础上修复精确的错误,避免积累不必要的代码。
AI工具优化
-
创建指令文件:为AI编写详细的指令,使它更好地理解你的意图。
-
本地文档:下载API文档到项目文件夹,LLM能更准确地访问和使用。
-
使用多个工具:同时运行多个AI工具,如Cursor和Windsurf,以提高效率。
-
工具专业化:根据工具的强项选择使用,例如Cursor适合前端工作,Windsurf适合更长时间的思考。
-
比较输出:生成多个解决方案并选择最佳,以确保代码质量。
复杂功能开发
-
创建独立原型:在干净的代码库中构建复杂功能,以便更好地控制和测试。
-
使用参考实现:指向AI的工作示例,以便它有明确的实现方向。
-
清晰的边界:保持外部API一致,允许内部更改,保持代码的灵活性。
-
模块化架构:服务基础架构具有清晰的边界,更适合大型项目。
技术栈考虑
-
成熟的框架:如Ruby on Rails因其一致的约定而表现良好,适合AI开发。
-
训练数据重要:新语言可能训练数据较少,要选择有大量训练数据的语言可能更有利。
-
模块化是关键:小文件和模块化文件易于工作,有助于保持代码的清晰和可维护性。
-
避免大文件:避免数千行代码的文件,提高代码的可读性和可维护性。
超越编码
-
DevOps自动化:使用AI配置服务器、DNS和托管,提高部署效率。
-
设计协助:生成设计元素,如favicons和其他设计组件。
-
内容创建:起草文档和营销材料,以支持项目的推广。
-
教育工具:逐行解释实现,帮助团队成员更好地理解代码。
-
使用截图:分享UI错误或设计灵感,以便更好地沟通和协作。
-
语音输入:使用工具如Aqua进行语音输入,提高输入效率。
持续改进
-
定期重构:测试到位后,频繁重构代码,保持代码的清晰和可维护性。
-
识别机会:让AI找到重构候选,提高代码质量。
-
保持最新:尝试每个新模型发布,以利用最新的技术。
-
识别优势:不同模型在不同任务上表现出色,需要识别、利用这些优势。
视频地址
- 官方视频地址:https://www.youtube.com/watch?v=BJjsfNO5JTo