不久前,我在同一个子Reddit上发布了关于Vibe编码的痛苦和喜悦,同时试图构建不会在vibe coding中崩溃的实际产品:一,二,三。
YCombinator发布了一份名为“如何充分利用Vibe编码”的指南。
YCombinato说的话啊,只能一半都能当段子听!我可是用血泪教训验证过的:上次赶项目时差点没被AI逼疯,像个神经病似的反复改指令,最后简直是在和电脑吵架,那场面...(突然压低声音)说出来你可能不信,我家合伙人和AI对喷的架势,跟菜市场大妈砍价一模一样!
以下是他们的建议:
验证码:动手写代码前,先用AI合计合计。
- 整点实在的计划:别上来就瞎写,先用AI帮你把想法捋清楚,制定个靠谱的计划。
- 这就是你的开发圣经:把这个计划当成最重要的行动指南。
管理你的想法:
- “今天不行,撒旦”:有些事情你现在不想干或者觉得麻烦,就先标记一下,暂时别碰。
- “以后再说”的筐:有些不靠谱或者太疯狂的点子,先扔到一个“以后再说”的地方,别让它们干扰你现在的工作。
挑选你的工具(选你的“毒药”):
- 新手推荐:如果你刚开始学,可以试试 Replit 这种用起来比较简单、友好的工具。
- 喜欢折腾:如果你喜欢挑战,就去用那些功能强大但可能复杂的工具,比如“充分光标”(Full Cursor,这里可能是指功能齐全的IDE)或者“冲浪”(Surge,可能指一些前沿或命令行工具)。
- 想搞点事情:你也可以两个都用,看看哪个更顺手,或者让它们互相“打一架”(比较一下优劣)。
Git 还是后悔(Git or Regret):
- 每次搞定一点就提交:只要你写的一小部分代码能正常工作了,马上用 Git 提交保存。没商量,必须这么做!
- 别太信“撤销”:软件里的“撤销”按钮有时候不靠谱,别指望它能救你。
- AI要是抽风了就“核平”重来:如果你用 AI 生成的代码乱七八糟,没法收拾了,干脆把整个代码库恢复到之前的版本,重新开始。
测试,但要灵活点:
- 集成单元测试:要写测试代码,重点关注用户能直接看到和用到的功能。
- 先写测试再写功能:在你开始写新功能之前,先把测试用例写好。别跳过这一步!
- 测试就是你的“心理安全带”:测试能给你信心,尤其是在你“重构”(也就是改代码,很容易改出问题)的时候。
把AI当成你的“心理医生”:
- 把错误信息喂给GPT:程序出错了,把错误信息复制给像 GPT 这样的人工智能,问问它觉得是哪里出了问题。
- 让AI动手前先动脑:在让AI帮你改代码之前,先和它一起分析一下问题的原因。
- 别在一堆烂摊子上打补丁:如果代码已经乱七八糟了,别想着修修补补,不如干脆重来。
- 多加点日志:在代码里多加一些记录信息(日志),就像在壁炉里多添点柴火一样,能帮你搞清楚程序是怎么运行的,哪里出了问题。
- 这个AI不行就换一个:如果一个AI模型老是犯傻,试试换个别的模型。(毕竟它们学习的“教材”不一样。)
把AI当成你的初级程序员:
- 给它清晰的任务:给AI布置任务的时候,要把需求说得非常详细、清楚。
- 把文档存本地:AI模型不太擅长自己去网上找东西看,所以相关的文档最好存在本地,直接给它。
- 用截图说话:程序哪里坏了,截个图给AI看,就像在犯罪现场指认一样清晰明了。
- 试试语音输入:有人说用语音输入提示词,速度能快一倍(比如用Aqua这个工具)。不过我对此还抱有怀疑态度。
“成年人”的编程架构:
- 小文件,模块化:把代码分成一个个小文件,让每个部分功能独立(模块化)。要想着你的代码以后可能会有真人来看。
- 用那些“无聊”但靠谱的框架:选择那些经过很多人验证、稳定可靠的开发框架。AI通常对这些主流框架更熟悉。
- 在“沙盒”里搞创新:如果想尝试一些疯狂的新功能,先在你的主代码库之外单独创建一个“沙盒”环境去试验,别直接影响到主要项目。
- 保持清晰的接口边界:让你程序的不同部分之间能够像有礼貌的同事一样,通过清晰的接口(API)进行沟通和协作。
- 单独测试“危险品”:在把一些可能不稳定的、有风险的新东西加到你那“可爱又脆弱”的项目里之前,一定要先单独测试它们。
AI还能干这些:
- 你的DevOps实习生:可以让AI帮你处理一些服务器配置、网站部署(比如DNS服务器、托管)之类的运维工作。
- 你的平面设计师:可以让AI帮你设计图标、图片、网站小图标(favicons)。
- 你的老师:可以让AI给你解释它生成的代码是什么意思。
AI不仅仅是个工具:
- 它是你有点“神经质”的帮手:AI就像你的第二双手,虽然有时候可能不太靠谱,但能帮你不少忙。
- 你现在是“老板”了:你要主导整个开发过程,像个老板一样去管理和引导AI。
- 设定好背景上下文Context,引导它,不行就重置:要给AI提供足够的上下文信息,引导它按照你的想法工作。如果它跑偏了,或者写出糟糕的代码,别客气,直接让它重来,别被它带沟里去。