ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Vibe Coding与智能体驱动:全栈开发工程化实践指南

Vibe Coding与智能体驱动:全栈开发工程化实践指南 今年圈子里最热的开发词Vibe Coding 绝对算一个。起因是 Karpathy 在 2025 年初随口提了一句“程序员开始边哼调子边写代码”这个说法就像病毒一样扩散开来——开发者不再逐行敲键盘而是用自然语言描述需求AI 直接把代码生成出来人负责感受整体节奏发现问题就丢一句反馈AI 再迭代一版。听起来很玄但背后其实是代码生成能力跨过了一个临界点模型从“补全下一个 token”进化成了“理解意图并执行任务”。我身边不少做全栈开发的朋友现在已经开始把工作流切换成这种模式。前端页面、后端接口、数据库表结构、部署脚本整条链路都能交给 AI 智能体去推进人更像戴着工程帽的指挥官。这篇文章我想聊透的就是这件事Vibe Coding 背后的智能体驱动机制到底是什么它怎样把全栈开发的流程重新切片哪些环节能放手、哪些环节必须把住方向盘以及如何把它沉淀成一套能长期迭代的工程化开发范式。不管你是被 Vibe Coding 点燃的独立开发者还是想帮团队提效的 Tech Lead下面这些内容应该都有参考价值。我会把原理、工具、流程和踩坑经验放在一起说尽量做到看完就能在真实项目里试一把。1. Vibe Coding 的“底层真相”是什么让它变成新一代开发范式1.1 从“补全”到“执行”智能体才是真正的拐点很多人把 Vibe Coding 理解成“让 AI 凭空生成代码”这其实只看到了冰山一角。Vibe Coding 真正依赖的不是某个聊天窗口里的代码补全而是能够自主行动的智能体。智能体的工作循环大致是感知当前仓库状态制定一个改动计划生成补丁执行测试或构建命令观察结果发现问题再回到计划继续修。它不是一个单向的输出机器而是一个具备“感知—行动—反馈”闭环的执行单元。这个区别很关键。传统 IDE 里的代码补全本质是“猜你接下来要敲什么”模型看到前面的字符补出后面几十个字符就已经很了不起了。但 Vibe Coding 场景下你给一句“把订单接口加上库存校验不够就返回 400”智能体需要自己找到订单服务、找到库存表、确认校验逻辑、写测试、跑一遍验证。这一整套动作里包含大量隐性决策改哪个文件、用什么错误码、怎么处理事务回滚。换句话说你从“写代码”变成了“提需求、验结果”。我见过不少人第一次上手时会犯同一个错误把 Vibe Coding 当成搜索引擎用。对着聊天窗口问“库存校验怎么写”拿到一段代码粘贴进去就完事。这不是智能体驱动这只是在用更昂贵的方式复制粘贴。真正的智能体驱动开发是把自然语言当成一种可执行的“委托语言”你委托给 AI 一个完整的小任务它自主完成、自证结果你只负责验收。这里有个很贴切的类比以前写代码像自己下厨从洗菜切菜到调味装盘全程亲力亲为传统 AI 辅助像是多了个帮你递调料瓶的帮厨而智能体驱动则像你把一整道菜交给副厨去炒你在旁边尝咸淡、看火候、决定要不要翻锅。Vibe Coding 这个“Vibe”说的正是尝咸淡那个动作——不是真的随心所欲而是用直觉和品味去引导执行。1.2 Vibe Coding 与传统 AI 辅助编程的边界要理解 Vibe Coding 在整个开发方式光谱里的位置我一般习惯把开发模式分成四档对比看会非常清晰。模式自动化程度人的角色典型产出最大风险人工编码全部人工定义、实现、测试每一行都由人写出体力消耗大、周期长传统 AI 辅助局部补全负责架构和主要逻辑用 Tab 键补全的函数、片段上下文割裂容易拼错Vibe Coding连续生成描述意图、验收体验由自然语言反馈驱动迭代的完整功能缺少边界质量不可控智能体驱动工程化全过程委托编排任务、评审结果、守住质量可验证、可回滚、有测试的应用治理失效会导致失控从这张表能看出来Vibe Coding 和传统 AI 辅助之间不是简单的升级关系而是“人机协作的位置”变了。传统 AI 辅助里人是真正的驾驶员AI 只是副驾驶Vibe Coding 里AI 变成了主驾驶人坐到了导航和监考的位置。这个转变带来一个非常直接的好处人的注意力不用消耗在语法、样板代码和琐碎的调试上可以更集中在“这个功能到底应该怎么设计”。但危险也在这。坐副驾驶的人如果睡着了车就可能冲下悬崖。Vibe Coding 的核心矛盾从来不是“AI 写的代码能不能用”而是“AI 把代码写得越来越快人的判断跟不跟得上”。这就解释了为什么现在大家开始强调“智能体驱动”而不是单纯“Vibe Coding”——前者是在 Vibe Coding 的生成能力之上增加了一整套工程化约束。1.3 为什么全栈开发领域最先被改写同样是软件开发全栈开发是受智能体冲击最明显的领域这不是偶然。全栈开发有一个先天特点链路长、技术栈杂、重复度高。今天你可能在写 React 组件下午就要调 Prisma 的数据库查询晚上还得研究 Dockerfile 怎么优化。每一层都有大量“模式化”的工作CRUD 接口、表单校验、列表页、详情页、部署配置。这些代码的特征是熟练工友好、复杂度高但创新度低恰恰是语言模型最擅长生成的类型。另一个更微妙的原因是上下文切换成本。传统全栈开发者最头痛的事情不是某个技术不会而是频繁在前后端之间切换导致大脑缓存失效。你刚记住前端组件状态怎么流转转头就要去理清数据库事务的隔离级别。智能体没有这个负担它可以瞬间把思维从一个文件切到另一个文件而且永远记得你几个会话之前改过什么。我用一个例子来感受差异。以前做一个带用户认证、任务管理的小型全栈应用我的典型时间分配是数据库模型设计占 20%后端接口和校验占 30%前端界面和联调占 40%剩下 10% 花在部署和环境配置上。在智能体驱动模式里数据库模型、接口、前端骨架都可以交给 AI 在极短时间内生成人真正要花时间的变成了“确认数据权限边界”“验证业务流程是否符合预期”“评审 AI 生成的校验逻辑是否严密”。这本质上是一次工程重心的迁移从“写得出”迁移到“想得清楚、审得明白”。2. 工程化范式转型从“手写每一行”到“编排智能体”2.1 传统开发流程与智能体驱动流程的差异传统全栈开发的流程可以简化成一条直线需求分析 → 架构设计 → 编码实现 → 测试验证 → 上线发布。这条线天然适合人脑工作因为每个阶段都需要大量显式的思考决策比如接口怎么定、表结构怎么分、权限模型怎么设计。但也正因为是直线反馈循环特别长。你可能花了两天写接口联调时才发现自己设计的请求参数在真实使用场景里根本不合理只能推倒重来。智能体驱动开发把这条直线打散成了无数个小循环。每个小循环都是提出一个明确的小任务 → 智能体实现 → 跑测试或构建 → 人工评审 → 进入下一个小任务。表面上每一步的产出变小了但整体节奏反而快了因为错误的代价被大幅压缩。我第一次在真实项目里感受到这种差异时主观体验是“过去是一周崩溃一次现在是一小时崩溃一次但每次都是小崩五分钟就能修回来”。这里要强调一点不是所有环节都适合交给智能体。需求本身来自业务方架构决策影响全局这些是人的主场。智能体真正接管的是“实现层”——在边界和约束已经划清楚之后把代码写出来、把细节补齐、把测试跑通。所以工程化范式的本质是重新划定人机边界人负责“做什么、为什么、验收标准”AI 负责“怎么实现、怎么补齐、怎么自测”。2.2 把“Vibe”变成“可控”工程化三板斧Vibe Coding 最被人诟病的一点是“不可控”。但我在实践里的体会是不可控的不是 AI而是工程方法。如果把下面这三样东西做到位Vibe Coding 完全可以被驯化成一条可控的流水线。第一样是契约。契约指的是数据模型、API 签名、组件 Props 这类跨模块的约定。智能体在同一段代码里改得再天马行空也必须遵守已经定义好的接口形状。我在项目里一般会让智能体先定义 TypeScript 类型和 Zod Schema之后再写实现。这样前后端都被同一个类型约束住AI 很难在修改时“顺手”把一个字段名改飞。第二样是检查点。检查点是“Definition of Done”也就是每个任务结束之前必须完成的验证动作。比如“写完订单接口后必须运行一次测试和构建”“改完组件后必须跑一遍类型检查”。检查点的作用是把验收这件事从“人肉回忆”变成“命令强制”。智能体天然会顺着指令走只要你把检查点写进系统约定它每次都会执行这就规避掉了“AI 改完代码直接说完成了、其实根本没跑”的尴尬。第三样是上下文。上下文包括项目文档、架构说明、技术栈约定、常用命令、历史决策记录。很多 Vibe Coding 翻车是因为智能体根本不了解项目背景就开始乱写。你给它一个干净的AGENTS.md或CLAUDE.md它就像是拿到了项目说明书生成质量会立刻上一个台阶。这三板斧合在一起就把不可预测的“Vibe”变成了可以被流程夹住的生产力。2.3 角色重新分配开发者、架构师、审阅者转向智能体驱动还有一个很实际的问题团队里每个人的角色会微妙地变化。过去我们按技能分工前端工程师、后端工程师、运维工程师。现在更合理的分工变成了架构编排者、实现执行者、验收把关者。架构编排者决定哪些任务可以委托、以什么顺序委托实现执行者就是智能体验收把关者负责评审代码、验证行为是否符合预期。这个转变对资深开发者和新人的影响完全不同。资深开发者的核心竞争力从“代码写得快”变成了“判断力强”——知道哪个地方容易出问题知道什么时候应该让 AI 停下来知道哪些重构值得做。新人的成长路径却变得非常有意思过去写代码要大量输入才能形成手感现在新人可以在一天内生成一个全栈应用再通过评审 AI 代码来学习“什么是有问题的写法”。我甚至见过一些转行学习者通过系统性地对比“AI 的答案”和“资深工程师的修正”学得比之前看教程快得多。当然角色变化也意味着一种新的风险团队里如果每个人都在问 AI、AI 生成、然后无人真正理解代码那这个项目就变成了一个黑盒。所以无论角色怎么变团队里至少要保证有一个人足够理解核心架构能回答“为什么要这样做”的问题。工具可以交付代码但工具不会为故障承担责任。3. 完整实操用智能体从零跑通一个全栈项目3.1 开工之前把仓库与上下文改造成“智能体友好”任何一次 Vibe Coding 全栈项目第一步都不是写业务代码而是先给智能体做“入职培训”。一个陌生的智能体进入你的仓库它默认只知道泛化的编程知识不知道你的工程约束、命名习惯和测试方式。你要做的是把这些信息固化在仓库里。我的标准做法是这样的初始化 Git 仓库后立刻创建两个目录docs/和scripts/并在根目录放一个AGENTS.md文件。这个文件是智能体开始任何工作前都要先读取的“员工手册”。内容不需要很长但必须覆盖四个关键信息技术栈、常用命令、代码组织约定、禁止事项。# 技术栈 - Next.js 14 App RouterTypeScript 严格模式 - Prisma PostgreSQL本地开发可用 SQLite - 样式 Tailwind CSS组件目录使用 kebab-case - 测试使用 Vitest端到端测试使用 Playwright # 常用命令 - 本地启动pnpm dev - 数据库迁移pnpm db:migrate - 类型检查pnpm typecheck - 单元测试pnpm test # 代码组织约定 - 所有 API 入参必须使用 zod schema 做校验 - 业务逻辑放在 server/ 目录不要散落在页面组件里 - 数据库 schema 变更必须先提供 migration 计划确认后再执行 # 禁止事项 - 不要手动修改 Prisma Client 生成的文件 - 不要在没有跑测试的情况下标记任务完成 - 不要引入 package.json 里不存在的依赖这个文件看起来不起眼但它决定了智能体输出的“下限”。我在多个项目里测试过有这份手册和没这份手册AI 写出不符合规范的代码概率差出好几倍。尤其是“禁止事项”这一块儿能挡掉很多 AI 的无意识行为比如偷偷升级依赖、直接改自动生成文件。3.2 从需求提示词到第一版骨架完成仓库初始化之后就要开始用提示词和智能体交互了。很多人在这一步会踩同一个坑一次性给出一个巨大无比的需求。比如“帮我做一个完整的任务管理系统要用户、项目、任务、评论、通知页面也要好看”。这种提示词对于智能体来说已经超出单轮会话的合理处理范围结果往往是一个看似热闹、实则漏洞百出的骨架。我的经验是把需求拆成“轮次”每一轮只让智能体完成一个可验证的交付物。第一轮通常是“理解与规划”不直接动代码。举个例子我会这样发指令任务阅读仓库根目录的 AGENTS.md、package.json 和 README用列表形式总结当前项目的技术栈和已有结构并给出你认为的第一版全栈应用文件骨架。在我确认之前不要创建任何文件。这一步看起来保守但特别有用。它强迫智能体先建立对项目的完整认知也让我有机会纠偏如果 AI 对技术栈理解错了比如以为用的是 Express 而不是 Next.js现在改还来得及。等它输出骨架并确认之后再进入第二轮“创建目录与配置”。任务按我确认的骨架创建目录和配置文件。本轮只需要完成基础设施不要写任何业务逻辑。完成以后运行 pnpm typecheck 并汇报结果。这里的关键是“每轮只做一件事、每轮都有验证动作”。把任务粒度控制在一两个文件级别智能体的成功率会非常高同时你的人工评审压力也会小很多。全栈开发本身就复杂好的工程化范式不是让 AI 一次性挑战所有复杂度而是把复杂度拆成它可以一口吃下的小块。3.3 后端、数据库与接口的实现细节当骨架搭起来项目正式进入业务实现阶段。这里我最想分享的心得是数据库和接口这两层必须让智能体先把设计拿出来再写代码。很多开发者习惯直接丢提示词“给我建一个用户表和订单表”。智能体确实能一秒生成 Schema但设计质量完全看运气外键缺失、索引没建、枚举类型定义不合理这些都是常见毛病。所以我要求智能体先输出数据模型设计等人工确认再落地。这既控制了质量又让智能体自己保留了对模型的理解后续生成接口时会和 Schema 高度一致。一个典型的后端任务提示词大概长这样任务为“任务管理系统”设计数据库模型。 上下文用户可创建项目项目下可以建立多个任务任务有状态字段。 要求 1. 先输出 Prisma Schema 草案标出外键关系和索引 2. 说明每个枚举值的使用场景 3. 等我确认后再修改 schema.prisma 并生成 migration 4. 不要现在实现接口。这种提示词会把 AI 拉回“先想再做”的模式。Schema 确认之后接口实现就可以放开让智能体做。这里可以再加一条纪律要求它先基于 Schema 生成一组 zod Schema 作为 API 契约再写对应的 service 函数。这样无论 AI 把代码写成什么样至少入参出参的形状是被锁死的前端后续对接时不会莫名其妙多出来一个篡改的字段。到这一步真正能体现智能体价值的是“写完就跑”的自觉。在规则文件里写清楚“完成后必须运行 pnpm test 和 pnpm build”你会发现智能体经常真的发现自己的类型错误并当场修掉。这个自证环节比它闷头输出十段代码更有价值。3.4 前端联动与“缝合”技巧全栈项目里前端是最容易“风格漂移”的部分。智能体生成的前端页面经常出现这里一个按钮风格、那里一个弹窗风格好像两个不同的人写的一样。这是因为前端组件库和设计系统的约束不像后端类型检查那样硬性。我的做法是给前端任务一个专门的前置步骤确认设计约束。如果项目里有现成的 UI 组件库比如 shadcn/ui 或 Ant Design我要求在规则文件里写明“组件样式统一使用 ui/ 目录里的基础组件不自己写大量内联样式”。如果没有组件库至少要指定颜色变量和间距变量的位置。前端和后端缝合时最常见的坑是类型对不上。智能体在后生成了接口又在前面写了一个 fetch但它可能凭感觉构造请求参数跟后端 schema 不一致。我一般会让智能体先手动读一遍 API 契约文件或者直接生成类型安全的客户端。以 Next.js 项目为例如果用了 OpenAPI 定义了所有接口可以让智能体在scripts/里加一个自动生成 API Client 的命令前端只调用生成的 client绝不手写请求 URL。这样就把“缝合”变成了一件机械工作留给 AI 去完成。如果前端是从别的工具生成的视觉稿比如 v0 或 Figma 导出记得要把这些代码当作“视觉参考”而不是“最终代码”。我会先把视觉稿里可复用的组件抽到项目的ui/目录再让智能体把数据绑定到真实接口上很多样式污染和组件滥用的问题会自然消失。4. 工具选型不同智能体怎么搭配更高效4.1 三类智能体工具的分工逻辑工具太多也会让人焦虑。其实主流智能体工具大致可以分成三类每一类的分工逻辑是不同的。第一类是 IDE 内嵌智能体典型代表是 Cursor 这样的 AI 编辑器。它最大的优势是“人还坐在代码里”你在编辑器里看到的文件和 AI 改的文件是同一个评审 diff、局部回滚都非常顺手。这类工具适合日常开发尤其适合需要高频迭代的时段。第二类是命令行智能体像 Claude Code、Gemini CLI 这类在终端里运行的工具。它们不用依赖某个编辑器可以执行更复杂的多步骤任务例如批量重构、自动修复测试失败、跨多个目录搜索。这类工具更像是“能接管终端的外包工程师”但也更需要你用规则文件给它定边界。第三类是一键生成型工具比如 Bolt.new 这类浏览器里的全栈生成器。它们对冷启动极其友好你描述一个想法它直接给你生成可运行的前后端项目甚至能直接预览。缺点是项目一旦复杂控制权就迅速衰减。我把这类工具定位成“灵感孵化器”和“原型加速器”不适合作为正式产品的唯一开发环境。4.2 主流工具横向对比我根据自己的使用经验把这四类场景下的常见工具做了一个横向对比工具类型代表工具最佳使用场景注意点IDE 内 AgentCursor、Windsurf、Trae 等日常全栈开发、逐文件修改、评审式迭代需要预设项目级规则否则 AI 可能到处改命令行 AgentClaude Code、 Gemini CLI、Aider 等跑测试、批量重构、流水线脚本、跨目录操作对终端操作有权限务必先限制命令范围全栈生成器Bolt.new、Replit Agent 等冷启动原型、Demo、技术验证项目变大后难掌控适时迁移代码组件生成器v0 等前端组件、页面视觉稿生成生成的代码需要抽组件、绑真实数据不要直接全量使用组合拳比单一工具更重要。就我自己而言日常主力是 IDE 内 Agent因为大部分工作流里我还是希望自己看得到代码遇到“跑完测试再报错清单”这类需要多步操作的事我会切到命令行 Agent让它在终端里自动执行循环直到通过偶尔想快速验证一个产品点子才会用全栈生成器花半小时做个能点的 Demo。这套组合下来既有速度又不失去掌控感。4.3 上下文管理与规则文件工程化工具选定了接下来最值得花时间的工程化动作是把上下文管理好。智能体的能力上限很大程度上等于它看到的信息质量。你不可能每次都把整个代码库丢给模型也不应该期待它跟你有相同的记忆。你需要做的是把项目知识外置到文件里让智能体“知道该去哪里看”。我的做法是在不同层级放不同的上下文文件。根目录的AGENTS.md放全局约定后端目录放一份AGENTS.md专门描述业务逻辑和数据库规范前端目录放一份描述 UI 组件库和视觉规范。这样当智能体处理某个子模块时它能读到更精准的信息而不是被根目录的泛泛说明误导。另外我强烈建议在docs/decisions/里记录关键架构决策。比如“为什么订单表使用软删除”“为什么缓存选 Redis 而不是 Memcached”。这些决策如果不记录下来三个月后新加入的智能体可能会在重构时把它推翻。有了决策记录你可以在每次任务开始时要求智能体先扫描决策目录减少“重复发明轮子”或“推翻历史设计”的情况。最后一点是会话记录。智能体的工作记忆有限跨会话之后它基本会忘记之前做了什么。我习惯了让智能体在完成每个阶段任务后把当前状态和下一步计划写进docs/progress.md。这样做有两个好处第一下次会话你能快速告诉 AI “按 progress.md 继续”第二就算你换一个工具新工具也能通过这个文件无缝接管。5. 工程化治理让 AI 生成代码能进主干5.1 全程检查点测试、构建、评审把智能体生成的代码直接合并到主干这几乎是一场灾难。生成速度越快越需要工程化的闸门来控制质量。我在项目里会强制设置三层检查点一层在本地一层在远程一层在人工。本地检查点是智能体完成任务的必要条件。我要求的“完成”不是“代码写好”而是“命令跑过”。在每个任务提示词的 Definition of Done 里我会明确写运行pnpm typecheck、pnpm test、pnpm build并把输出贴回来。这能挡住一大半低级错误。远程检查点指的是 CI。让每次合并请求自动跑 lint、测试和构建智能体和团队成员都要被同样的规则约束。CI 的好处是它人类无法绕过也不依赖人的心情。我见过太多时候开发者嘴上说“我先跑一下测试”然后直接 pushCI 一跑红了一大片。智能体也差不多如果没有强制手段很多 AI 生成任务会直接宣布完成。人工评审是最后一个闸门。即使是智能体开发的范式代码评审也不应该消失只是评审的关注点变了。人不需要逐行看语法和命名但要看三件事第一改动是否符合本来的业务需求第二是否覆盖了异常分支和安全边界第三是否引入了不必要的复杂度。我经常跟团队说AI 赋予了代码生命但人是它的监护人。5.2 安全检查依赖、密钥、敏感操作智能体驱动的开发节奏快安全问题反而更容易被放大。我最担心的不是 AI 的代码逻辑本身而是它在“看不见的角落”里埋雷。第一个雷是幻觉依赖。AI 经常引用一些包名看起来合理实际根本不存在。或者更阴险一点它引用的包确实存在但是一个多月前刚发布的、只有几十个下载量的可疑包。这已经超出了技术和工具的范围变成一个供应链风险。我的对策是要求智能体在引入新依赖之前必须告知理由并在我确认之后才能修改package.json。即使确认了我也习惯使用npm audit或pnpm audit先看一遍风险报告。第二个雷是密钥和敏感配置。AI 生成的代码里偶尔会暴露.env内容或者硬编码数据库连接字符串。规则文件里我会明确写任何密钥变量只能在.env中引用不得出现在提交代码里。如果发现智能体把 secrets 写进配置文件我会立刻撤销那部分改动并要求它在安全策略里重新学习。第三个雷是敏感操作。数据库迁移、删除表、重置数据、批量更新这些操作在 AI 手里必须加上“先预览后执行”的约束。在数据库相关的提示词里我通常会写“生成 migration 文件即可不要直接执行只在得到人工确认后运行”。这条小小的限制能避免很多“哦 no我把生产环境的表删了”的惨案。5.3 架构与文档沉淀不让项目变成“一团乱”Vibe Coding 模式下最常见的失败曲线是项目前两周进展神速第三周开始寸步难行所有改动都很容易互相干扰。原因很简单AI 生成代码的速度快但持续演进的前提是架构清晰。如果每个智能体都在一个越来越大的代码堆上自由发挥迟早会纠缠成一团乱麻。避免这个问题的关键就是文档沉淀。要求智能体在完成每一个重要模块后同步更新对应的docs/文档。比如数据库模型变了就更新docs/data-model.md新加了一个决策就写一篇docs/decisions/xxx-ADT.md。这不是形式主义而是为了让下一轮智能体有据可查。如果没有这些文档智能体会在重复探索上浪费大量上下文窗口甚至可能因为看不全架构在局部优化时摧毁整体设计。另一个习惯是“定期复盘重构”。智能体也好人也罢连续输出之后都会积累技术债。我每个迭代周期会让智能体做一个只读审计任务内容大概是找出重复代码、圈复杂度最高的模块、被过度耦合的地方以及建议的重构顺序但明确要求“不要执行任何重构”。拿到这份审计报告我再决定哪些重构有切实收益、哪些应该暂缓。有了这个机制项目既保住了 AI 带来的速度又不会让技术债滚成雪球。6. 真实翻车现场与排查日志6.1 高频事故复盘Vibe Coding 最大的谎言是“AI 几乎不会错”。真实的现场是AI 会以各种意想不到的方式翻车但翻车的模式高度相似。把这些事故复盘下来会比自己多踩几遍坑划算得多。第一个高频事故是“幻觉依赖”。有一次我让智能体给图片生成加一个裁剪功能它在代码里引入了crop-img-helper这个包我当时没细看直接跑安装结果 npm 报错说包不存在。这就是典型幻觉。从那以后我用一条硬性规则锁死了这个问题新依赖先pnpm view package version再过审算是把这条防线焊死了。第二个高频事故是“AI 的乐观主义”。智能体实现完一个功能后默认输出是“已完成”可它根本没有跑过测试或者测试根本没有覆盖关键逻辑。更隐蔽的情况是它写了测试但断言写得稀烂比如断言response.status是 200却不检查业务字段是否正确。现在我收到“完成”消息的默认反应不是信任而是看它贴出来的命令输出和 diff。第三个高频事故是“跨文件串改”。AI 写一个接口时顺手把另一个服务里一个看起来名字很像的字段改了结果牵连出好几个文件编译失败。智能体又会在错误追踪里陷入局部修复改一个报错又冒出一个新报错循环好几轮。对付这个问题的办法有两个一是任务拆分尽量小二是遇到连环报错时立刻打断它说“先不要继续修改分析一下这个错误的源头列出所有相关文件等你给我方案再动”。6.2 常见问题速查表实践里的问题其实高度集中我把它们整理成一个速查表方便你在现场直接对照排查。症状可能原因排查与解决智能体引入不存在的依赖模型幻觉训练数据里没有这个包规则文件写明“新依赖必须人工确认”用pnpm view验证包存在性和版本测试全绿但功能实际是坏的测试断言过弱没有覆盖业务行为要求 AI 列出关键断言用 mutation 方式临时改错代码看测试是否变红修改一个文件导致多处类型报错跨文件契约被破坏类型共享没做先不继续改让智能体输出所有相关文件清单再统一修复防止局部乱改智能体生成的组件风格不一致前端缺少设计约束样式规则没固化在规则文件里指定组件库、色彩变量和间距规范新建组件前先要求参考现有组件数据库迁移状态混乱Schema 和 migration 文件不同步规则文件写清“只允许通过 Prisma Migrate 修改”要求每次 Schema 变更前先说明影响面修改越改越差了进入死循环智能体陷入局部试错没有停下来复盘打断它命令它先分析根因写出方案再决定下一步必要时直接撤销本次所有改动部署后接口路径对不上前后端路由定义出现偏差用统一 API 契约文档或者 OpenAPI 生成客户端前端不要手写 URL生成代码大量重复没有足够 DRY 意识或任务上下文不够定期让 AI 做只读代码审计找出重复模块人工审阅后安排重构这个表格里的每一项我都亲自经历过至少一遍。最大的感悟是八成故障其实不是 AI 能力不足而是我们没有提前给它划定边界没有在流程里设置检查点。6.3 我自己的长期经验与心态调整走到最后想聊点更真实的东西。Vibe Coding 这个热词正在快速褪去新鲜感但它留下的开发范式会沉淀下来。我自己的心态也从“哇AI 什么都能写”变成了“我要怎么设计一个 AI 摔不坏的轨道”。我现在已经不太区分 Vibe Coding 和普通开发了。日常工作中AI 就是一个随时待命的智能体我需要它的时候就给它一个清晰的小任务它完成我就验不好我就打回去。真正让项目走远的不是某个工具多惊艳而是项目有没有可被理解的架构、有没有能自动验证的测试、有没有持续更新的文档。这些工程化底座AI 是替代不了人去建立的。当然我也承认 Vibe Coding 改变了我写代码的方式。现在更愿意把精力花在“定义”上——定义数据模型、定义接口契约、定义验收标准剩下的大量实现工作交给智能体。它像一个反应极快但需要你的品味来指导的执行者你把方向盘握得越稳它跑得就越让人放心。如果你正准备把团队或自己的开发流切换到这个模式我只有一条最朴素的建议不要急着让 AI 生成得更多先把如何验收 AI 的产出想清楚。真做到这一步你会在项目里感受到一种很独特的松弛感——所有环节都在飞快运转但你心里清楚每一处关键的转折点都是由人完成的判断。
返回列表