分享几个超有效的Vibe Coding技巧
在实践中,我们常常会遇到 AI 卡壳、反复犯错的窘境。我摸索总结了一些或许能给你带来启发的技巧,希望能帮助你更高效地与 AI 协作。
在实践中,我们常常会遇到 AI 卡壳、反复犯错的窘境。我摸索总结了一些或许能给你带来启发的技巧,希望能帮助你更高效地与 AI 协作。
1. 让 AI 自己看 Log 来 Debug
当你遇到一个非常刁钻的 Bug,无论怎么修改提示词,AI 似乎都无法解决时,请控制住自己手动 Debug 的冲动。试试这个方法:
- 注入详细日志:让 AI 帮你修改代码,在每一个关键节点,甚至每一行,都加上详尽的日志打印。你可以让它设计日志的详细级别(verbose level),以便在不需要时关闭。
- 让 AI 自我诊断:接着,让 AI 自己去运行这段带有详细日志的代码。然后,将完整的、可能长达数千行的日志输出,直接喂给 AI。
- 相信 AI 的分析能力:告诉它:“这是程序的运行日志,请分析并找出问题所在。”很多时候,当 AI 看到程序运行的完整轨迹时,它能瞬间定位到我们肉眼难以发现的问题根源。这远比我们亲自下场去大海捞针要高效得多。
2. 强强联合:用一个 AI 思考,另一个 AI 编码
不同的 AI 模型有不同的“性格”和擅长的领域。当你的主力编码 AI (比如 Claude) 卡住时,不妨引入一个擅长深度思考的“顾问” AI (比如 Gemini 2.5 Pro)。
- 分工合作:让 Claude 帮你把问题、上下文、项目结构和所有相关日志全部总结好。
- 请求深度思考:将这些材料一股脑地丢给 Gemini,并明确告诉它:“不要写代码,请专注于深度思考这个问题出在哪里,并提出解决思路和方案。”得益于其百万级上下文窗口,你可以提供非常详尽的信息。
- 反馈给编码 AI:Gemini 经过长时间思考后,会给出一份详尽的分析。即使你不能完全看懂,也没关系。把这份分析完整地复制给 Claude,并告诉它:“这是 Gemini 的建议,供你参考,但请用你自己的判断来解决问题。”
- 激发灵感:很多时候,经过“顾问”AI 的这一点拨,编码 AI 会茅塞顿开,灵感爆发,轻松解决之前你尝试了十几次都搞不定的问题。
3. 化繁为简:隔离问题,逐个击破
当一个特定问题在一个庞大而复杂的项目中无法解决时,很可能是因为过多的上下文干扰了 AI。
- 创建最小复现环境:将这个特定问题从大项目中剥离出来,新建一个微型项目(a small, isolated project)。
- 专注解决核心:在这个全新的、干净的上下文中,让 AI 专注于解决这一个核心问题。没有了主项目的干扰,AI 通常能更快地找到解决方案。
- 一旦你在小项目中得到了一个可以工作的最小可行版本(minimum working version),就可以把它作为参考。将这个小项目的代码丢给 AI,对它说:“这是一个能解决问题的参考实现,请分析它为什么能工作,并借鉴它的思路来修复我们大项目中的问题。”有了成功的先例,AI 就能顺藤摸瓜,解决更复杂场景下的问题。
4. 核心瓶颈:拓宽你与 AI 的沟通带宽
AI 解决不了你的问题,很多时候不是它能力不行,而是我们与它之间的“沟通带宽”太窄了。你输入的那一小段文字,无法传递足够的信息。
- 拥抱语音输入:打字时,我们边想边打,思路容易中断,也倾向于简化表达。尝试用语音输入,你的思维和语言会更流畅,可以传递更丰富、更连贯的信息。不用担心啰嗦、中英文夹杂,AI 都能理解。
- 善用记忆功能:像 Cursor 这类工具提供了项目级别的“记忆”功能。把你对项目的理解、你的编码偏好、常用指令等固化下来,AI 在每次交互时都能参考,这极大地增加了沟通带宽,避免了重复解释。
5. 频繁 Git Commit 与策略性回滚
Git 是你和 AI 协作时最重要的安全网。
- 何时 Commit:在 AI 生成代码后,测试通过且基本功能实现时,进行 commit。不要在测试前或代码完全错误时提交。
- 明确 Commit Message:在 message 中清晰地写下“实现了什么功能,但还有什么已知 Bug 尚未修复”。这能让你在历史记录中快速定位。
- 优雅地修复 Bug:当修复一个 Bug 经历了多次凌乱的尝试后,不要直接 commit 最终结果。这样做会留下很多“技术债”。正确的做法是:
- 让 AI 总结出最终有效的、最简洁的修复方案。
- 复制这个方案。
git reset回滚到 Bug 出现前的那个干净状态。- 让 AI 一次性地应用那个简洁的修复方案,然后进行 commit。这样你的代码历史会非常清爽。
6. 保持清醒:适时清空上下文
AI Coding Agent 的上下文长度是有限的,并且服务商为了节省成本,会用各种策略压缩它。一个冗长、混乱的对话历史,会让 AI 变得“更傻”。
- 一事一议:当解决了一个复杂问题,或者要开始一个新任务时,果断地清空上下文(Clear Context),让 AI 轻装上阵。
- 任务打包策略:对于一个大问题,一定要单独处理。但如果是几个互相关联的小修改,可以放在一个对话里,这样能节省 Token,因为 AI 只需在开始时分析一次代码。
7. 划定边界:让 AI 在指定模块内工作
把你的代码划分成清晰的模块。在提要求时,明确告诉 AI:“请只在用户管理模块内进行修改”。如果你让它改一个 UI,它却动了数据库的代码,这就是一个强烈的危险信号,你应该立刻警惕并考虑回滚。
8. 一图胜千言:善用截图沟通 UI 设计
用语言描述界面布局和风格是非常困难的。
- 直接上图:想做一个什么样的界面?直接截图发给 AI。
- 更进一步:用一个多模态大模型(如 Gemini)分析你的参考截图,让它总结出网站的色彩、字体、风格和布局结构。然后,把“截图 + 风格总结”一起发给你的编码 AI。这样做,它生成漂亮界面的概率会大大提高,避免了默认生成那些千篇一律的“丑”界面。
9. 谋定而后动:先让 AI 生成项目计划书
开始一个新项目时,不要急着写第一行代码。
- 找一个“思考型”AI,打开语音输入,详细、甚至啰嗦地描述你的项目需求。
- 让它帮你生成一份详尽的项目计划书(Markdown 格式),包括:
- 项目整体描述
- 核心功能列表
- 推荐技术栈
- 主要功能模块划分及关系
- 一步一步的详尽实现计划
- 仔细阅读并确认这份计划,它将是你和 AI 协作的蓝图。
10. 步步为营:严格遵循计划,一次一事
严格按照项目计划书,一步一步地推进。
- 明确指令:每次都告诉 AI:“现在,我们来实现计划的第 X 步,不要管其他的。”
- 检查边界:检查 AI 的改动是否超出了当前步骤的范围。
- 标记进度:完成一步后,在你的 Markdown 计划书里把它标记为
DONE。 - 清空并继续:清空上下文,然后开始下一步。
11. 范式转移:成为 AI 的指挥官,而非代码的修正者
这是与 AI 协作最核心的心法转变:不要去手动修改 AI 生成的代码,更不要去逐行审查。
把 AI 生成的代码看作是编译器生成的汇编代码——你相信它,但你不会去改它。如果发现问题,正确的做法是回滚,然后修改你的提示词(指令),让 AI 重新生成。你的核心技能正在从“写代码”转变为“与 AI 高效沟通”。
12. 放弃单元测试,拥抱端到端测试
既然我们不关心 AI 实现的细节,那就不必为这些细节编写单元测试。我们应该让 AI 直接编写高级别的、模拟用户真实行为的端到端(End-to-End)测试。这能确保功能在宏观上是正确的,也更符合我们的“指挥官”角色。
13. 当 AI 遇到新 API:给它一本说明书
如果 AI 在使用某个新版 API 时反复出错(特别是这个 API 发布于它的知识截止日期之后),最好的办法是:去官网把这个 API 的完整文档下载下来,存放在项目目录中,然后在提示词里明确告诉 AI:“请参考本地的 api-docs.md 文件来实现这个功能。”
14. 不止于编码:让 AI 成为你的全能杂活助手
你的 AI 编码助手不光能写业务代码,还能帮你处理各种“杂活”,例如:
- 生成 SVG 文件作为网站的 favicon。
- 写一个一次性脚本来批量缩放图片。
- 编写并运行构建脚本(比如复杂的
xcodebuild命令)。 - 撰写项目文档和 Release Note。
把这些你觉得没意思但又必须做的事情交给 AI,解放你的创造力。
希望这些技巧能帮助你更好地驾驭 AI,享受 Vibe Coding 带来的流畅与高效。