多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Vibe Coding实践指南:从描述意图到边界把控

Vibe Coding实践指南:从描述意图到边界把控 前两天有人在群里问我“你支持 Vibe Coding 吗”我愣了一下不是因为不知道这个词而是因为我发现自己没法用“支持”或“反对”来回答。2025 年开春Vibe Coding 几乎成了 AI 编程圈最出圈的热词连不少写前端、写脚本、写自动化工具的朋友都在聊它。这个词最早来自 Anysphere 的创始人和 Cognition 的 CEO 在不同场合的分享大意是人负责描述想要的感觉和方向AI 负责把代码生成出来人再负责看、试、调整个过程像“跟着氛围走”一样所以叫 vibe coding。说句实在话我一开始对这四个字是有戒备的。程序员这个群体向来对“看起来很酷但实际不严谨”的东西保持警惕我也没例外。但后来我在多个真实项目里试了试踩了一些坑也积累了一些确定能复用的经验慢慢形成了自己的判断Vibe Coding 不是玄学也不是洪水猛兽它是一套新的工作方式只是大多数人要么把它用得太飘、要么对它排斥得太早。这篇文章不打算给你一个“支持还是反对”的站队式结论我想拆开它聊聊它到底解决什么问题、在什么场景下真能提效、在什么场景下会把你坑得很惨以及我从实际项目中摸出来的具体操作方法和判断边界。如果你是写代码的、带团队的、或者正在用 AI 辅助自己做小工具的人这篇文章应该能帮你少走不少弯路。1. Vibe Coding 到底是什么它跟“用 AI 写代码”有什么区别1.1 从“手写代码”到“描述意图”的分水岭很多人会把 Vibe Coding 和“用 ChatGPT 或 Copilot 写代码”画等号这其实是个误解。用 AI 写代码通常是一个“点”的操作我今天遇到一个排序问题让 AI 帮我写个快速排序我在调试一个 bug让它帮我看看哪里越界。这种用法本质上是把 AI 当成一个更聪明的搜索引擎或代码补全器你的任务还是“写代码”AI 只是被调用的工具。Vibe Coding 不一样。它的核心是把“写代码”这个动作本身从人的日常操作里拿掉换成“描述意图”和“验证结果”。你不再逐行思考这个函数怎么写而是告诉 AI我要一个带登录功能的待办事项网页数据存本地界面清爽一点。AI 会帮你把前端、后端、存储、路由都搭出来。然后你要做的是打开浏览器去用、去感受、去挑毛病这里交互太生硬了那里状态没保存把这个按钮改成圆角。也就是说你的工作从“生产代码”变成了“提出要求和审视结果”。这两种模式的分水岭不在工具的智能化程度而在人对“代码细节”的介入深度。传统编程里代码是实现意图的唯一载体你必须把每个细节都想透、写对在 Vibe Coding 里代码变成了一种“可以被生成和替换的中间产物”你的核心能力变成了把需求讲清楚、把结果判断准、把问题反馈到位。这其实是更接近产品经理和设计师的思维方式而不是传统意义上的“程序员思维”。我第一次真正体会到这个分水岭是在做一个小工具的时候。我想把每周的报销数据自动整理成表格还要按类别生成柱状图。放进以前我可能要花一个下午去查 pandas 的文档、调试中文乱码、处理日期格式那天我直接告诉 AI 我要什么它给了我完整脚本我只做了两件事跑了几个测试文件又让它把图表的配色改得更顺眼。整个过程大概四十分钟其中大部分时间是在“用”和“提要求”而不是“写”。1.2 这个词为什么会让人又爱又恨Vibe Coding 的“氛围”二字恰好戳中了它的争议点。支持者觉得它释放了创造力让不会写代码的人也能快速做出东西反对者觉得“凭感觉写代码”这句话本身就很不靠谱代码要的是严谨不是氛围。两边其实都在说真话只是各自站在了不同的项目规模和风险等级上。我观察到一个很有意思的现象技术圈里反对声最大的大多是做基础设施、核心中间件、数据一致性要求极高的工程师而认可度最高的往往是做内部工具、原型验证、个人项目和自动化脚本的人。这背后的逻辑很简单Vibe Coding 的容错空间决定了它是否适用。一个报销整理脚本出错最多浪费你几分钟重新跑一遍一个交易系统出错代价可能是资金损失。这不是技术高低的问题是“试错成本”的问题。换句话说Vibe Coding 真正改变的不是“代码能不能这样写”而是“哪些事本来就该用低成本的试错方式去做”。以前很多想法死在了“从想到做”的成本上一个非工程师想做一个自动汇总周报的工具光是要学 Python、学 API 调用、学部署就可能劝退一大半人。Vibe Coding 把门槛拉低了让“想法”和“第一个可用的版本”之间的距离从几周缩短到几小时。这个过程里不完美、有瑕疵、需要反复调都是正常的因为它本来就是一种快速逼近目标的工作法而不是一锤定音的交付模式。所以我对这个词的态度也从一开始的“嗤之以鼻”变成了“得具体问题具体分析”。它不是什么放之四海而皆准的新范式但也不是某些人嘴里的“邪路”。它是一套真实有效的工具只是需要你知道它的边界在哪。2. 支持与反对的两派各自站得住脚的理由2.1 支持派效率、注意力与创造力的三重解放先说支持派的逻辑这部分我能切身感受到。第一是效率提升。这个最直观但我想说点不一样的Vibe Coding 提效最明显的不是“把 10 个小时变成 1 小时”而是“把 1 个小时的启动时间变成 5 分钟”。我见过太多人有想法但一直没动手因为一想到要配环境、搭工程、处理各种琐碎细节就头大。Vibe Coding 大大压缩了“冷启动时间”你只要有想法马上能有一个粗糙但能跑的版本这种即时反馈会形成正循环促使你不断迭代下去。第二是注意力的重新分配。传统编程最难的一点是你要同时维护“对目标的理解”和“对代码的掌控”大脑很容易被细节吞没。你在调一个 div 的居中样式调了半小时可能早就忘了最初这个页面要解决什么问题。Vibe Coding 把你从“微观实现层”里抽出来你有更多精力去关注“这东西到底好不好用”“流程通不通”“逻辑对不对”。我自己的体验是用 Vibe Coding 做东西的时候我对项目整体走向的敏感度反而更高了因为我要持续地判断和决策。第三是创造力的释放。以前我脑袋里有一个“不知道实现成本高不高”的过滤器很多想法还没说出口就被自己毙掉了。现在这个过滤器还在但明显松了很多。我会更愿意去试那些“可能三小时能做个雏形”的念头因为就算失败了浪费的时间成本也可控。这个改变是潜移默化的但长期积累下来你会发现自己的尝试频率高了很多做出来的东西也随之变多。2.2 反对派质量、理解与失控的合理担忧反对派的理由也不能忽视而且很多都来自真实事故。最核心的问题是代码质量。Vibe Coding 生成的代码往往在“看起来能用”和“真正能稳定维护”之间存在缝隙。AI 擅长生成看起来很合理、跑起来也没问题的代码但如果你仔细审查可能会发现它对边界情况考虑不周、对异常处理过于草率、对性能没有优化。更麻烦的是这些问题通常在代码量小的时候不会暴露等项目膨胀到一定程度会一起爆发出来到时候排查成本比重新写一遍还高。第二个问题是理解缺失。这个我自己也踩过雷。有一次我让 AI 帮忙写了一个数据同步模块它用了某个库的内部方法当时跑得好好的。等这个库升级之后那个内部方法被移除了整个模块直接崩溃。我看了半天报错才意识到我根本不知道它当初依赖了什么、为什么这么写。你没有真正理解代码的时候就失去了快速修复它的能力。这不是 AI 的错是我的错——我偷懒了跳过了“理解”这个必经环节。第三个问题是规模失控。Vibe Coding 在几十行、几百行的项目里很好用但一旦到几千行、多个模块联动、多人协作的阶段情况就变了。AI 不理解你的项目的整体约定它只会根据当前上下文做局部修改很容易改一处坏一处。这个时候如果没有严格的 code review 机制和高度的抽象设计能力项目会迅速变成一个别人看不懂、自己也改不动的“屎山”。这不是危言耸听是我见过很多 Vibe Coding 项目最终走向的宿命。3. 我自己用 Vibe Coding 的实践路径3.1 什么项目适合“vibe”什么项目最好别碰经过几个月的实操和翻车我给自己定了一个选择标准分享给你参考。适合 Vibe Coding 的项目一般有几个特征单机或小范围使用、数据不敏感、逻辑不复杂、出错了可以快速恢复、核心价值在于“快速看效果”。比如个人用的效率工具、内部团队的管理后台原型、教学演示代码、爬虫脚本、简单的自动化流程、一次性数据处理。这些项目的特点是“结果导向”用户不多出 bug 的影响面小迭代速度比代码优雅度更重要。不适合 Vibe Coding 的项目也有明显的共性涉及安全、资金、用户隐私、高并发、强一致性的系统以及需要长期维护五年以上的核心业务模块。不是说 AI 生成的代码一定有问题而是这些场景对“确定性”的要求极高你需要对每一行代码负责而这种负责建立在对代码完全理解的基础上。Vibe Coding 的“随性”底色跟这些场景是天然冲突的。我的判断方法是问自己一个问题如果这个项目发布后立刻出严重 bug我的损失有多大如果答案是“损失不大重新改就行”那就放心地 vibe如果答案是“用户数据没了、钱错了、口碑崩了”那就老老实实一行一行写清楚把 AI 定位成辅助工具而不是主力。3.2 我的实操步骤从描述到验证的完整闭环如果你想试试 Vibe Coding又不想翻车我建议你按照下面这个流程走。这套流程是我踩了不少坑之后总结出来的每一步都有目的不是走形式。第一步把需求写成“给一个聪明但完全不了解背景的新同事听”的说明。你不能只说“我要一个记账软件”你得说清楚它给谁用、要记什么、数据存哪、需不需要多端同步、界面大概什么样、哪些功能是核心、哪些可以以后再加。这个描述越具体AI 生成的代码跑偏的概率越低。第二步把大任务拆成可以验证的小版本。不要一上来就让 AI 给你一次性生成一个“完美系统”而是让它先做“最小可用版本”比如先做记账的添加和列表展示跑通了再加分类统计再加图表和导出。每加一个功能你都亲自用一遍确认符合预期再继续。这样做的好处是出问题的时候你永远知道是最近这次改动引起的排查范围很小。第三步让 AI 给你解释它写的代码。这个很多人都忽略了但极其重要。你不要只看结果能跑要挑几个关键模块问它这一段是干什么的为什么用这个方案如果数据量变大哪里会先出问题它的解释能帮你建立对代码的基本理解以后出 bug 的时候你不会完全懵。第四步建立你自己的验证清单。我会给每个项目准备一个简单的测试套路正常路径跑一遍、异常输入试一遍、连续操作用一遍、数据量大一点压一遍。把这些写成提示词告诉 AI让它自己先自查一遍再交给你。实测这个做法能挡掉相当一部分低级 bug。第五步保持“代码所有权”意识。哪怕每一行都是 AI 写的你也要当成自己写的来负责。这就意味着关键逻辑你要看得懂核心路径你要测过后续修改你要知道影响范围。做到这一点Vibe Coding 对你来说就是效率工具而不是失控的开始。3.3 新手最容易犯的三个错误最开始玩 Vibe Coding 的人几乎都会犯下面这三个错误我也不能免俗。错误一把 AI 当成万能的。你以为它什么都会实际上它会一本正经地编造不存在的 API、用明显过时的语法、甚至为了让你满意而给出“看起来对但经不起推敲”的答案。解决方法是永远对 AI 的输出保持“合理怀疑”跑起来比嘴上说“看起来没问题”重要一万倍。错误二需求描述太模糊。你只跟 AI 说“做一个好看的首页”它大概率会给你一个通用模板跟你心里想的好看差了十万八千里。你需要给它参照物和标准“像 Notion 那样简洁左侧有导航主区域用卡片式布局配色偏暖字体用系统默认就好”。描述得越具象结果越贴近你的预期。错误三省略验证直接交付。有次我让 AI 写了段从外部 API 拉数据的代码我用一组数据测过没问题就直接放到定时任务里了。结果第二天发现API 返回了空数据时程序直接崩了。AI 没处理这种边界情况我也没测。这个教训让我养成了习惯凡是 AI 生成的代码必须测异常路径不能只测“最好的一天”。4. Vibe Coding 的边界什么时候该停下来亲手写代码4.1 安全、性能与长期维护三条红线Vibe Coding 用着用着你一定会碰到一个时刻不知道是该继续让 AI 改下去还是自己接管过来写。我给自己划了三条红线碰到任何一条就果断切换模式。第一条红线是安全与合规。只要涉及用户密码、支付、个人信息、权限控制我就不会全权交给 AI。不是说 AI 一定写不对而是在这些领域里一个小小的疏漏可能造成远超代码本身的影响。密码哈希方案、权限校验逻辑、敏感数据脱敏这些我会自己掌握核心实现或者至少请懂行的同事帮我仔细 review 每一行。第二条红线是性能与稳定性。当你发现 AI 生成的代码在数据量小的时候没事数据量一上去就卡死、超时、内存爆掉这就是明确的信号该自己优化了。AI 生成的代码通常走的是“最直接实现”的路线很少考虑缓存、并发、连接池、索引这些性能层面的细节。到了这个阶段你对算法和架构的理解就成为不可替代的东西。第三条红线是长期维护。如果这个项目要活很久会被团队里的人持续修改那么它必须有一个清晰的约定命名规则、模块划分、错误处理方式、代码注释风格。这些东西没法靠 vibe 生成得靠人来定规矩。我会先花一些时间把骨架和约定搭好再让 AI 在我规定的框架里填充内容这样既保住了生成效率又守住了长期可维护性。4.2 我的个人选择混合模式是常态说了这么多你可能会觉得我是在“限制”Vibe Coding。其实恰恰相反我认为 Vibe Coding 最好的用法不是“全部交给 AI”也不是“完全不用”而是“混合模式”。我自己现在的状态是这样想法阶段和原型阶段我几乎全程 vibe——让 AI 出方案、生成初版、快速迭代为的就是用最低成本验证“这事值不值得做”。一旦确认这个方向值得继续投入我就会开始切换核心数据结构自己设计、关键流程自己把关、AI 负责实现外围功能和重复性代码。这个切换点越清晰项目的成功率越高。再具体一点我自己用 AI 生成代码的比例在项目初期可以到 90%后期大概会降到 50% 左右。不是 AI 能力变弱了而是项目越到后期越需要“确定性”而这种确定性恰恰来自人的理解和把控。这不丢人也不违背 Vibe Coding 的初衷——它的初衷是让人做更有价值的事而不是把所有责任都推给工具。5. 常见问题与排查实录我发现这些坑最多5.1 我踩过的坑和对应的解决方案下面这几个问题是我在 Vibe Coding 实操中反复遇到的整理成表方便你对照排查。问题现象根因我的处理方式生成的代码第一次跑就报错报错信息看不懂AI 用了过时的 API 或你环境里没有的依赖把完整报错信息贴回去让它解释并修正必要时先让它列出需要的依赖清单逐个安装后再跑功能看起来实现了但数据刷新后丢失没有处理持久化数据只存在内存里明确告诉 AI 数据需要存到本地或数据库并让它给出存储方案再实现修改一个小功能结果别的地方也坏了AI 没有把握全局只做了局部修改每次修改前先让它理清涉及范围修改后跑一遍完整的验证清单AI 连续几次给的方案都不一样你给的目标描述不够明确它只能靠猜收敛需求描述给出明确的输入、输出和约束条件必要时自己把关键流程画给它看代码能用但完全看不懂也不敢动跳过了“理解”环节代码成了黑盒强制自己读一遍关键部分让 AI 用大白话解释设计思路再考虑后续修改这里面我特别想展开讲一下“AI 连续几次方案不一致”的问题。这类问题最让人抓狂因为它会让人产生“我是不是在跟一个随机生成器对话”的感觉。我的经验是问题的钥匙十有八九在提示词里。你如果只给出“帮我写一个用户注册功能”它每次实现方式都可能天差地别如果你加上“用 Flask 实现邮箱和手机号都可以注册密码用 bcrypt 加密注册后发送欢迎邮件”它的方案就会收敛很多。约束条件越具体AI 输出的稳定性越高这是一个屡试不爽的规律。5.2 一个真实项目的复盘从三天到三十分钟我想用一个我自己的真实例子给你展示 Vibe Coding 的完整运作画面包括成功和翻车。当时我需要写一个小工具用来把公司某个系统导出的 Excel 对账单按照业务员维度拆分后自动发给对应的人。这个需求如果用传统方式我得先研究 Excel 的读取库处理各种格式兼容问题再研究邮件发送的配置做附件处理写日志……保守估计三天。那次我决定试试 Vibe Coding。我的提示词大概是这样的从某个文件夹里读取所有 .xlsx 文件每个文件里有一个“业务员”列按业务员拆分后各自生成一个 PDF并以邮件形式发给对应邮箱收件人邮箱也存在该文件的某列里程序要有日志出错不能静默。AI 大概花了三十秒就给出了完整脚本我第一次跑的时候确实报错了原因是 Excel 里有一列格式不是统一的文本。我把报错信息贴给它它加了一段统一转字符串的处理再跑就成功了。整个从开始到跑通不到四十分钟。但真正让我印象深刻的不是“快”而是后面那件事两周后业务方说“某些人的邮箱收不到邮件”。我排查发现问题出在数据源里有些邮箱地址有空格AI 生成的时候没做 trim 处理。我以前传统写代码的话大概率会天然加上 strip。这事让我意识到Vibe Coding 生成的代码天然缺少“程序员直觉”里那些防御性处理——你以为它是常识的东西AI 并不知道。从那以后我的提示词里都会显式加上“对用户输入做空格清理和容错处理”这一类细节这句话能挡住相当一部分后患。6. 我自己的结论把 Vibe Coding 当成一种思维工具如果说经历这么多之后我到底“支不支持 Vibe Coding”我的回答是我支持把 Vibe Coding 当作一种思维工具而不是一种信仰。说它是思维工具是因为它真正教会我的不是“让 AI 替我写代码”而是“重新认识我自己的价值”。当代码的生成成本趋近于零的时候我作为开发者的价值不再体现在“我能写出多少行没有 bug 的代码”上而是体现在“我能定义出什么值得做的东西、我能判断什么是对的、我能为最终结果承担多少责任”上。这个转变比工具本身的效率提升更有意义。我见过很多人一听说 Vibe Coding 就兴奋地“把一切都交给 AI”然后项目到后期完全失控也见过很多人听了反对派的话就根本不碰结果错过了一个很趁手的效率工具。我希望你看完这篇文章以后能落到一个更务实的坐标上小成本验证、快速试错、内部工具大胆用核心系统、高风险场景、长期维护谨慎用而不管哪种场景理解、验证、负责这三个词永远是底线。最后再分享一个小经验我后来再跟人聊这个话题的时候不再问“你支持 Vibe Coding 吗”我会改问“你什么时候会用、什么时候不会用”。能清晰回答这个问题的人才是真正把 Vibe Coding 用明白的人。如果你读完这篇也想试试从一个小到不能再小的工具开始吧。先体验一次“描述、生成、验证、迭代”的完整闭环再回来判断它适不适合你。亲测这个过程本身就很有价值。
返回列表