YC 发布的《Vibe Coding 指南》
1、规划流程
- 制定详细计划:先与 AI 一起在 Markdown 文件中制定一份具体的开发计划。
- 审查并精简:删掉不必要的内容,对于太复杂不打算实现的功能直接标注“不会做”。
- 控制开发范围:把一些“以后再说”的想法单独整理在一栏,避免影响当前工作重点。
- 分段实施:不要试图一次构建全部功能,按模块、按阶段逐步实现。
- 追踪开发进度:每完成一部分就请 AI 标记为“完成”,便于可视化进度管理。
- 按步提交代码:每当完成一个可运行的模块,及时提交到 Git,然后再进行下一个任务。
2、版本控制策略
- 严格使用 Git:不要过度依赖 AI 编辑器的“撤销”或“还原”功能。
- 干净开始每个功能:每开发新功能前都从一个干净的 Git 状态开始,避免旧代码干扰。
- 出问题就重置:如果 AI 出现“灵感暴走”或越走越偏,就执行 `git reset --hard HEAD` 回到起点。
- 避免“代码堆积病”:不断尝试失败会堆出层层坏代码,问题会越来越难找。
- 找到正确方案后重新实现:一旦确定了有效方案,建议重置项目并从头用干净的方式写一遍。
3、测试框架建议
- 优先做端到端测试:比起单元测试,更建议进行从前端到后端的整体流程测试。
- 模拟真实用户:通过“用户点击网页或操作应用”的方式来检验功能是否正常。
- 防止逻辑回退:大语言模型有时候会无意中修改本不该动的逻辑,测试可以及时发现这类问题。
- 测试通过再继续:每加完一个功能都应先确保相关测试通过,再继续下一个。
- 把测试当“护栏”:一些创业者建议一开始就写好测试用例,能有效界定开发边界和功能范围。
4、高效修 Bug 方法
- 善用报错信息:直接把错误提示复制粘贴给 AI,往往就能定位到问题。
- 不急着动手:修复前先让 AI 分析可能的几种原因,再决定方案。
- 一次失败就回炉重来:每次修复失败后都从干净代码状态重新开始,避免陷入更深的坑。
- 加日志看得清:在关键流程中加上日志记录,有助于你和 AI 更好理解系统行为。
- 多试几个模型:有时候换个 AI 模型就能解决当前卡住的问题。
- 修好后重构实现:找到 bug 的解决办法后,建议清空现有实现,重新整理并实现一次干净版本。
5、AI 工具优化建议
- 编写清晰指令文件:为你的 AI 明确地写好操作规则,分别保存到 cursor.rules、windsurf.rules 或
claude.md 等文件中。
- 本地保存文档:将 API 文档下载到项目本地,有助于确保调用时准确无误。
- 多工具协同:有些创业者会在同一个项目中同时使用 Cursor 和 Windsurf,各取所长。
- 工具擅长方向不同:Cursor 在前端开发上速度较快,而 Windsurf 更适合慢节奏、深入思考的场景。
- 多方案对比:生成多个解决方案,通过比较选出最佳实现方式。
6、复杂功能的开发策略
- 单独搭建原型:先在干净的环境中搭建复杂功能,避免与主项目互相干扰。
- 参考已有示例:给 AI 指定可以正常运行的代码作为模板,会提高输出质量。
- 明确接口边界:对外接口保持一致,对内实现可以灵活变动,有利于系统维护。
- 推崇模块化架构:服务化架构,边界清晰,通常比大型 monorepo 更易于扩展和管理。
7、技术栈选择建议
- 老牌框架更稳定:像 Ruby on Rails 这样的框架,凭借 20 年的稳定规范,在项目落地中依然表现出色。
- 语言的训练数据影响大:Rust、Elixir 等新兴语言因训练数据较少,AI 支持度可能不如老语言。
- 模块化有利于协作:小而清晰的模块文件更利于 AI 分析,也便于团队协作。
- 谨慎对待巨型文件:尽量避免使用上千行的大文件,会影响维护效率和 AI 理解。
8、AI 用于编码之外的领域
- DevOps 自动化利器:利用 AI 来自动配置服务器、DNS 和部署流程,提高效率。
- 辅助设计工作:自动生成 favicon 等 UI 元素,提升设计输出速度。
- 内容撰写助手:可以用 AI 来写初版技术文档或产品营销内容。
- 教学与学习工具:让 AI 按行解释代码实现,帮助理解复杂逻辑。
- 利用截图交流问题:通过截图快速描述 UI 问题或传达设计灵感。
- 语音输入提升效率:像 Aqua 这样的工具支持每分钟 140 字的语音输入,非常适合快速记录灵感。
9、持续提升开发质量
- 经常性重构:当测试覆盖率达到一定程度后,应定期对代码进行结构优化。
- 善用 AI 找问题:可以请 AI 主动识别哪些部分适合重构或优化。
- 紧跟模型更新:每次新模型发布都可以尝试使用,找到最适合你项目的版本。
- 不同模型有不同强项:要了解各模型的优势,针对性地用在合适任务上。