一、Vibe Coding 的五大原则
Planning is Everything
从零生成项目,书写好PRD.md,TDD.md,AGENTS.md是保证LLM生成的代码不偏移预期的核心
Mnimum Viable Product
任何一个可以称为产品的软件项目都有非常多的功能,但是只有一个功能是最核心的。MVP思维就是先做最简单、最能用的版本,然后再慢慢完善。
按照自己的编程经验来说,比较合理的软件开发流程是:先完成最核心功能,然后再在这个demo的基础上逐步增加其他补充功能。
使用MVP思维有几个明显的好处: 1.降低难度:不需要一次性解决所有问题,只需要解决最重要的那一个。 2.快速验证:可以很快做出一个能用的版本,验证想法是否可行。 3.方便调整:如果发现方向不对,你可以快速调整,不会浪费太多时间。
那Vibe Coding模式下,和AI对话时,最好也是采用MVP思维,先在Plan阶段书写好整个项目的框架,然后再逐步完善功能(每个功能就是几轮对话 / 一个对话记录)
迭代优于完美
这个思维针对于每个小功能的开发过程
一个小功能的实现可以拆分成几个小步骤,按照步骤来,LLM每次生成的压力不大,出错的概率低,满足预期的概率高。
那其实可以有两种迭代做法:
- 第一:在一次对话的prompt中,自己将该功能的实现步骤分点写进prompt,让LLM按照该步骤一次给出该功能的所有代码
- 这比较吃LLM的编程能力,以及个人写prompt的能力(需要自己对编程有足够的开发经验,不然很容易偏离脑中预期)
- 但是很省时间,效率会高
- 第二:多轮对话,每个小步骤对应一次对话,逐步完善
上下文信息
由于LLM有最长的token接收限制,所以在一个中大型项目开发时,玩玩会开多个对话框。每个对话框对于LLM来说,都是全新的,在对话时需要先补充已有项目的上下文信息,这样才能保证LLM输出的代码不那么偏离预期。
补充上下文的技巧:
- 在prompt中使用@,指出需要参考的文件
- cursor支持全局上下文,以及项目上下文,可以在该文件中写下此项目的技术栈,需求文档,代码结构的信息
- 最重要的是写好当轮对话的prompt,这样聚焦小功能时,AI关注其他混淆信息的概率就低了
产品经理思维
产品经理需要:
- 理解用户的真正需求,把需求拆解为清晰的功能点:这里对应写prompt时是否足够具体,足够详细
- 考虑用户体验的每一个细节:这里对应功能的实现细节(比如用户提示)
- 在功能,时间,质量之间做好权衡
二、对话工程技巧
对比提示词工程
提示词思维:在一次prompt中将所有的需求将清楚(有什么组件,要什么风格,、、、)
对话思维:在和AI的多轮对话中,逐步明确所有需求。这里人开头应该明确告知(接下来,你需要和我一起讨论这个项目的所有需求细节,你问我答,直到我认为这个项目的所有细节都已经涵盖)
使用对话思维有几个明显的好处: 1.降低认知负担:你不需要一次性想清楚所有细节,可以边聊边想。 2.更容易发现问题:AI的提问会帮你发现自己遗漏的地方。 3.结果更准确:通过多轮交流,AI能更准确地理解你的需求。
迭代式对话
- 从大到小,逐步细化,分步骤提问与实现
- 具体而非抽象:需求要具体,具体到所见即所得的描述
- 提供参考或示例:直接上传参考图片 / 具体描述每个地方的布局
- 用提问引导思考:直接问AI,解决某个问题有没有什么建议
如何清楚描述需求
以一个系统化的框架来组织需求prompt:
- 是什么(What):要做什么功能或组件?
- 为什么(Why):这个功能的目的是什么?
- 怎么做(How):技术实现有什么要求?
- 什么样(Style):外观和交互有什么要求?
- 什么情况(When/Where):在什么场景下使用?
- 受众(Audience):这个功能是给谁用的?他们的技术水平如何?
此外最好在每轮对话的开头说明技术栈与代码规范
描述期望的输出,明确自己想要的输出格式(只要修改的代码,还是全部代码,需不需要有代码注释?)
对话模版库
开始新功能的模版
我要开发一个新功能:【功能描述】。我的技术栈是【技术栈】。请帮我:
1)分析这个功能的核心需求
2)建议一个合理的实现方案
3)列出可能遇到的问题
我要开发一个【功能名称】功能。
需求:
1. 【需求 1】
2. 【需求 2】
3. 【需求 3】
技术栈:【技术栈】
请帮我:
1. 分析实现方案
2. 列出需要的组件和函数
3. 给出核心代码
调试问题的模版
我遇到了一个问题:【问题描述】。报错信息是:【错误信息】。相关代码是:【代码片段】。请帮我:
1)分析可能的原因
2)给出解决方案
3)解释为什么会出现这个问题
优化代码的模版
这是我的代码:【代码片段】。它的功能是【功能说明】。请帮我:
1)找出可能的性能问题
2)改进代码的可读性
3)指出潜在的 bug
请审查这段代码:
【代码】
请从以下角度分析:
1. 代码质量(可读性、可维护性)
2. 性能问题
3. 潜在的 bug
4. 改进建议
性能优化模版
这段代码的性能不够好:
【代码】
场景:【使用场景和数据规模】
请帮我:
1. 分析性能瓶颈
2. 给出优化方案
3. 说明优化后的性能提升
文档生成模版
请为这个【组件/函数】生成文档:
【代码】
文档应该包括:
1. 功能说明
2. 参数说明
3. 返回值说明
4. 使用示例
5. 注意事项
学习知识的模版
我想学习【技术/概念】。请:
1)用简单的语言解释它是什么
2)给我一个实际的使用例子
3)告诉我什么时候应该用它