导言:Vibe Coding 是一项可测量的技能
Vibe Coding 并不是简单地让 AI 随意生成代码,而是一种可以持续提升、并有衡量标准的实践。就像几年前的"提示工程"一样,现在人们每周都在发现新的最佳实践。要想获得最好的结果,你所使用的技术往往与一名优秀的专业软件工程师所采用的技术是相同的。
创始人实战分享:来自 YC 孵化营的建议
在深入探讨具体的 Vibe Coding 技巧之前,先看看 YC 创始人们在实践中总结出的经验:
- 在 IDE 遇到困难时切换到 LLM 网站:如果 AI IDE 陷入无法实现或调试的循环,可以直接将代码粘贴到 LLM 的官方网站(如 Claude、ChatGPT 等)中,往往能得到 IDE 内无法给出的解决方案。
- 同时使用多个工具:在一个项目上同时使用 Cursor 和 Windsurf。Cursor 更快,适合前端和全栈任务;Windsurf 思考时间较长,更适合复杂任务。并行使用能得到不同的迭代结果,从中选择最佳方案。
- 用语言编程,提供详细上下文:把 AI 视为一种新型编程语言。为了获得好结果,必须以非常详细的方式提供上下文和必要信息。
- 从测试用例开始(逆向 Vibe Coding) :先手动编写测试用例,而不是依赖 LLM。测试用例是护栏,一旦通过,就不必对代码库进行微观管理。
- 先定义架构和范围:花时间在纯 LLM 环境中梳理项目范围和架构,再交给 IDE 工具执行。这样能避免生成大量无效代码。
- 警惕陷入"兔子洞" :一旦 LLM 不断循环生成奇怪的代码、重复粘贴错误,就要退后一步,检查是否缺乏上下文,而不是盲目继续。
Vibe Coding 核心工作流程:规划、版本控制与测试
1. 从详尽的计划开始
不要直接编写代码,而是先与 LLM 合作写一份完整的计划,存放在项目目录的 Markdown 文件中。反复迭代和精炼计划,把不打算做的功能明确标记出来。然后逐段实现:先做一部分,运行测试并提交 Git,再继续下一步。
2. 严格使用版本控制(Git)
Git 是 Vibe Coding 的好伙伴。开始新功能之前确保工作区干净,这样即使 AI 出错,也能随时回退。遇到反复修复失败的情况,建议 git reset --hard
,从干净的状态重新让 AI 实现。
3. 编写测试并用好测试
LLM 擅长生成测试,但往往是细粒度的单元测试。更推荐使用端到端的集成测试,从用户角度验证功能是否真正可用。测试能有效捕捉回归,避免 LLM 在修改过程中引入无关错误。
解决 Bug 与高级实践
Bug 处理最佳实践
- 复制粘贴错误信息:第一步永远是把报错信息直接输入给 LLM,通常就能解决问题。
- 复杂 Bug 的思路:让 LLM 先推理几种可能的原因,再决定修改方案。
- 重置与切换模型 :修复失败就执行
git reset
,避免代码堆积"残渣"。必要时切换模型,不同模型的表现常常互补。
高阶技巧与架构思路
- 编写 LLM 指令文件 :将详细的规则写进
cursor_rules
、windsurf_rules
等文件,能显著提升 AI 编码效率。 - 文档处理:把 API 文档放到本地目录供 LLM 使用,效果通常比在线搜索更好。
- 让 LLM 解释代码:逐行解释代码是学习新技术的好方法。
- 模块化与干净环境:复杂功能可以在干净的小项目里先实现,再迁移回主库。模块化、小文件、清晰的 API 边界会让 LLM 更高效。
- 选择合适的工具栈:像 Ruby on Rails 这种训练数据丰富的框架,AI 辅助表现更好;Rust、Elixir 等新语言成功率相对低。
AI 交互方式与未来趋势
- 截图输入:将截图粘贴到 LLM,能直观展示 UI Bug 或提供设计灵感。
- 语音输入:使用语音工具与 AI 交互,速度更快,也不怕转录不完美。
- 频繁重构:在测试的保护下可以大胆重构,甚至要求 LLM 自动识别重复或冗余代码。
- 不断实验:不同模型在不同任务上表现差异很大。比如 Gemini 擅长代码库索引和规划,Claude 更适合具体实现。保持尝试,才能跟上技术发展的节奏。