Vibe Coding 调试指南:当 AI 不听话时,如何识别、诊断、修正与兜底
发布时间:2026/10/12 13:59:35 锦皓数字建站

文档教程Vibe Coding示例工程【免费下载链接】vibe-vibeThe First Systematic Vibe Coding Open-Source Tutorial | From Zero to Full-Stack, Empowering Everyone to Build Products with AI | Live at: www.vibevibe.cn 首个系统化 Vibe Coding 开源教程 | 零基础到全栈实战让人人都能用 AI 开发产品 | 在线地址www.vibevibe.cn项目地址https://gitcode.com/datawhalechina/vibe-vibe点击查看免费下载本文基于开源项目 vibe-vibe 的《3.6 当 AI 不听话时调试、修正与兜底策略》一章整理成文。Vibe Coding 中你的角色不是写代码而是指挥与验收。本文带你系统掌握 AI 输出问题的六种类型、AI 幻觉的四种形态与供应链安全威胁Slopsquatting、三分钟快速诊断法、根因分析四象限、四种修正策略、错误驱动开发、死亡螺旋止损以及从发送前自检到混合开发模式的完整防御体系并结合仓库中 demo-01-todo、demo-02-todo-auth 的真实源码与测试用例给出可复制、可验证的实战依据。核心心法AI 出错不可怕可怕的是不知道它错了。与人类错误不同AI 的错误往往是可预期的、有规律的。提示词写得好3.1-3.4 的技巧迭代对话也在进行3.5但 AI 依然可能「不听话」给的代码跑不起来、理解的意思和你想的不一样、推荐了根本不存在的库、反复修改却越改越乱。一旦你掌握了 AI 犯错的规律就能从「慌张」变成「从容」——知道问题出在哪知道怎么修也知道什么时候该换个方案。这正是《3.6 当 AI 不听话时》一章章节索引要传授的能力也是本文展开的全部内容。一、AI 常见的六种「不听话」表现AI 的「不听话」表现看似五花八门但归纳起来主要有六种类型详见 3.6.1 小节类型症状典型案例答非所问AI 理解错了你的意图你要登录页它给了注册页过度发挥做了你没要求的事情你要简单时钟它给了带时区切换的全功能版偷工减料少做了关键部分没有错误处理缺少边界检查自相矛盾前后逻辑不一致注释说「返回数组」代码实际返回对象幻觉编造不存在的内容推荐不存在的库调用不存在的 API死循环反复犯同一个错误你指出问题它改了下次又改回去1. 答非所问场景你让 AI 做「用户登录功能」它却给了你完整的「用户注册 登录 找回密码」三件套。为什么会这样AI 基于大量训练数据进行模式匹配看到「登录」会联想到常见的用户认证系统然后「好心」地给你全套方案。识别信号输出的内容比你要的多很多包含了你没提到的功能模块AI 在解释时说「我假设你还需要...」。2. 过度发挥场景你只想要一个显示当前时间的简单组件AI 却加上了时区选择、12/24 小时切换、自定义格式等功能。为什么会这样AI 见过太多「完整」的解决方案倾向于给出「全面」的实现即使你只需要最简单的版本。识别信号代码量远超预期引入了你不认识的第三方库包含大量你不需要的配置选项。3. 偷工减料场景AI 给的代码能跑但没有处理「用户输入为空」「网络请求失败」等异常情况。为什么会这样为了让代码看起来简洁或者因为你没有明确要求AI 省略了防御性代码。识别信号代码中没有 try-catch 或错误处理没有输入验证「Happy Path」理想路径能跑边界情况会崩。仓库实证在 demo-01-todo 的查询层中useTodos在fetch失败时会throw new Error(获取待办失败)而 demo-02-todo-auth 的创建接口用try/catch兜底、失败返回 500 与错误信息。这类「请求失败怎么办、输入非法怎么办」的防御性代码正是 AI 最常偷工减料的部分——验收时务必逐条核对。4. 自相矛盾场景AI 说「这个函数返回用户列表」但实际代码返回的是单个用户对象。为什么会这样AI 生成注释和生成代码是相对独立的过程有时会出现不同步。识别信号注释与代码行为不符函数名暗示的功能与实际实现不一致前面说的方案和后面的代码不匹配。5. 幻觉重点详见下一节这是最危险的问题类型下文单独展开。6. 死循环场景你指出代码有问题AI 修改后下一轮又改回了原来的写法。为什么会这样对话上下文太长早期的修正内容被挤出上下文窗口AI 无法看到你的修正指令不够明确任务本身超出了 AI 的能力范围。识别信号同样的错误反复出现AI 的修改越来越「绕」修一个问题引入两个新问题。二、AI 幻觉识别、危害与供应链安全AI 幻觉Hallucination是指 AI 生成看起来正确但实际错误的内容。在编程场景中这可能导致代码无法运行甚至引入安全漏洞。代码幻觉的四种类型类型表现危害程度示例包幻觉推荐不存在的 npm/pip 包 高安全风险npm install super-easy-utils包不存在API 幻觉编造不存在的函数或方法 中调用array.findLast()在旧版 JS 中不存在逻辑幻觉代码逻辑与描述不符 中说「返回去重后的数组」实际没有去重版本幻觉使用已废弃的语法或 API 中使用 React 旧版类组件生命周期1. 包幻觉最危险的幻觉类型为什么包幻觉的危害程度最高因为它涉及到软件供应链安全。仓库的 5.3.5 小节对这类威胁做了完整剖析。真实案例2024-2025 年的安全研究发现了一种名为「Slopsquatting」的攻击方式研究人员测试了 16 种主流 AI 模型发现它们推荐的包中约20% 是不存在的德克萨斯大学等机构 2025 年的研究显示约19.7%开源模型幻觉率高达21.7%即使是 GPT 系列也有5.2%更令人担忧的是43%部分研究统计为 58%的幻觉包名会在多次询问中重复出现因此可被预测攻击者可以注册这些 AI 经常「幻觉」出的包名植入恶意代码当开发者按 AI 建议安装这些包时就会中招。攻击链条AI 幻觉出包名 → 攻击者注册该包名 → 植入恶意代码 → 开发者按 AI 建议安装 → 系统被入侵真实威胁2024-2025 年间安全研究人员发现了利用这种技术的恶意活动。仓库记录了两个真实案例Python 库aiocpa2024 年 11 月在 0.1.13 版本中植入恶意代码将用户的 Crypto Pay API Token 通过 Telegram Bot 发送给攻击者被发现前已被下载超过 12,000 次npm 上的solana-systemprogram-utils2024 年 12 月伪装成 Solana 工具库在 2% 的交易中悄悄将资金转到攻击者地址因比例低而难以被立即发现。攻击者还会通过注册 AI 幻觉出的包名窃取开发者的 npm tokens、GitHub 凭证等敏感信息。核心原则AI 推荐的包 ≠ 存在的包 ≠ 安全的包。在安装任何新依赖之前花 30 秒去官方仓库验证npmjs.com / pypi.org / pkg.go.dev / crates.io可以避免很多麻烦。对 AI 生成的 GitHub Actions 配置特别是涉及密钥和凭证的部分也要仔细审查。2. API 幻觉看起来对但跑不起来典型场景// AI 生成的代码 const lastItem myArray.findLast(item item.active);问题findLast()是 ES2023 引入的方法在旧版浏览器或 Node.js 中不可用。AI 可能混淆了不同版本的 API。常见的 API 幻觉模式混淆不同库的 API把 Lodash 的方法当成原生方法使用已废弃的 API编造不存在的配置选项。3. 逻辑幻觉代码能跑但结果不对典型场景你让 AI 写一个「去重函数」它给了你function removeDuplicates(arr) { // 去除数组中的重复元素 return arr.filter((item, index) arr.indexOf(item) index); }代码看起来没问题注释也对。但如果数组中包含对象这个方法就失效了因为对象比较的是引用而不是值。4. 版本幻觉用的是「过时」的写法典型场景你让 AI 用 React 写一个组件它给了你类组件写法class MyComponent extends React.Component { componentWillMount() { // ... } }问题componentWillMount在 React 16.3 后已被废弃React 18 中会产生警告。验证技巧速查表面对 AI 生成的代码用这份清单快速验证验证包是否存在# npm 包 npm search 包名 # 或直接访问 https://www.npmjs.com/package/包名 # Python 包 pip index versions 包名 # 或直接访问 https://pypi.org/project/包名在官方仓库中搜索到包后还需检查可信度指标周下载量是否较高数千以上、最近是否有更新、作者是否为知名组织、是否被其他流行项目依赖、是否有关联源码仓库。如果 AI 推荐了一个你从未听过的包先搜索引擎检索是否有人在技术论坛或博客讨论过找不到任何信息则很可能是幻觉。验证 API 是否正确查阅官方文档不要只相信 AI 的解释检查兼容性查看库的版本说明确认 API 引入版本小范围测试先在独立环境跑一下确认能用。要求 AI 提供来源当 AI 推荐了你不熟悉的库或 API 时追问「请给出这个库的官方文档链接」「这个 API 是在哪个版本引入的请给出参考来源」。如果 AI 无法给出有效链接或者链接打开是 404那很可能是幻觉。验证逻辑正确性用边界情况测试空数组、空字符串、null、超大数值用反例测试故意输入「应该失败」的数据看是否正确处理让 AI 自己检查请检查上面的代码列出可能的边界情况和异常情况以及当前代码是否正确处理了它们。仓库实证对「边界情况」的验证可以对照 demo-01-todo 的测试用例其中「标题为空时应该返回 400」「缺少标题字段时应该返回 400」正是用反例验证输入校验。而对应的 Zod 校验 schema 定义了title至少 1 个字符、最多 200 字category限定为inbox/work/personal枚举——这类「空输入、超长输入、非法枚举值」正是逻辑幻觉的高发地带。三、诊断问题AI 错在哪里当 AI 输出不符合预期时首先要回答一个问题详见 3.6.2 小节是我没说清楚还是 AI 没做对这个问题的答案决定了下一步行动如果是你没说清楚 → 补充上下文重新描述如果是 AI 没做对 → 换种问法或者换个策略。三分钟快速诊断法在深入分析之前先用这三步快速排查能捕获约 60% 的常见问题。第一步运行代码检查30 秒# 如果是 JavaScript/TypeScript 项目 npx eslint 文件名 # 检查语法和格式问题 npx tsc --noEmit # 检查类型错误如果用 TypeScript能发现的问题语法错误少了括号、拼错关键字、类型不匹配、未定义的变量。第二步检查依赖和 API60 秒对照代码中的 import 语句检查引入的包是否存在调用的方法是否真的存在于该包中版本是否匹配能发现的问题包幻觉、API 幻觉、版本兼容问题。第三步运行现有测试90 秒如果项目有测试用例npm test # 或你项目的测试命令能发现的问题行为变更原来能跑的功能被改坏了、逻辑错误、边界情况处理不当。仓库实证在 demo-01-todo 的 package.json 中可以看到test: vitest run脚本以及 TypeScript 5.9 等依赖。运行pnpm test即可复现「三分钟诊断法」的第三步而 测试用例 中对 GET 接口返回 200、按分类过滤的断言就是捕获「行为变更」与「逻辑错误」的典型手段。根因分析四象限如果三分钟诊断没有定位到问题用这个四象限来分析根本原因我说得清楚 ↑ ┌─────────────┼─────────────┐ │ │ │ │ AI 出错 │ 补充上下文 │ 简单任务 │ → 换问法 │ → 重新描述 │ 复杂任务 │ │ │ ├─────────────┼─────────────┤ │ │ │ │ 拆分任务 │ 重描述拆分 │ │ → 分步做 │ → 降低复杂度│ │ │ │ └─────────────┴─────────────┘ ↓ 我没说清楚象限一简单任务 我说得清楚 → AI 出错特征任务很明确、信息足够完整但 AI 的输出明显不对。应对换一种问法重新描述、给出正确示例让 AI 参考、尝试不同的 AI 工具。原提示词写一个判断闰年的函数 问题AI 给的逻辑不对 换种问法 请写一个判断闰年的 JavaScript 函数。 闰年规则 1. 能被 4 整除且不能被 100 整除是闰年 2. 能被 400 整除也是闰年 请严格按照这个规则实现。象限二简单任务 我没说清楚 → 补充上下文特征任务本身不复杂但你假设了 AI 知道某些背景AI 按自己的理解做了和你想的不一样。应对补充项目背景、明确技术栈和约束、说明期望的输出格式。原提示词写一个表单验证 问题AI 用了你项目没有的验证库 补充上下文 我的项目使用 React Zod 做表单验证。 请用 Zod 写一个用户注册表单的验证 schema包括 - 邮箱格式验证 - 密码至少 8 位 - 确认密码要一致仓库实证demo-01-todo 恰好就是「React Zod」技术栈——validation.ts 用z.object声明了标题长度与分类枚举约束demo-02-todo-auth 的创建接口则进一步用z.enum([low,medium,high])校验优先级。这类「明确技术栈 约束」的上下文能显著减少象限二类偏差。象限三复杂任务 我说得清楚 → 拆分任务特征任务涉及多个步骤或模块你描述得很清楚但 AI 的输出质量不稳定。应对把大任务拆成小任务一次只让 AI 做一件事分步骤完成后再整合。原提示词太大 实现一个完整的用户认证系统包括注册、登录、找回密码、JWT 令牌管理 拆分后 第一轮先实现用户注册功能只需要邮箱和密码 第二轮现在加上登录功能返回 JWT 令牌 第三轮加上令牌验证中间件 第四轮最后加上找回密码功能象限四复杂任务 我没说清楚 → 重新描述 拆分特征任务复杂你自己可能也没完全想清楚AI 的输出和你想的差很远。应对先退一步理清自己的需求用 3.4 节的 PRD 方法整理思路然后拆分成小任务逐个完成。原提示词模糊又复杂 帮我做一个类似 Notion 的笔记应用 理清需求后 我想做一个个人笔记应用MVP 版本只需要 1. 创建/编辑/删除笔记 2. 笔记列表页 3. 本地存储 先帮我实现第一个功能创建和显示笔记列表。 技术栈React localStorage参考阅读3.4 第一份 PRD 提供了把模糊想法整理成可执行任务书的方法。诊断 Prompt让 AI 复述理解在开始任务之前或者发现问题之后可以用这个 Prompt 让 AI 复述它的理解在继续之前请先回答以下问题 1. **你理解的任务目标是什么** 用一句话描述 2. **你计划使用什么技术方案** 列出关键技术点 3. **有哪些地方你不确定需要我澄清** 如果没有就说无 请先回答这些问题确认理解一致后再开始写代码。为什么这招有效提前暴露 AI 的误解让你在写代码前就发现问题比事后修改成本低得多。常见问题的快速定位症状最可能的原因下一步代码无法运行报语法错误AI 生成了不完整的代码让 AI 给出完整代码运行时报 undefined缺少变量定义或异步问题检查数据流补充初始化功能和描述不符AI 误解了需求用更具体的语言重新描述引入了不认识的库AI 过度发挥明确约束指定只用某些库代码能跑但结果不对逻辑幻觉用边界测试验证让 AI 自查编译报类型错误API 幻觉或版本问题查官方文档确认 API改了这里坏了那里任务太大上下文丢失拆分任务分步进行四、修正策略怎么让 AI 改对问题定位之后进入修正环节详见 3.6.3 小节。在 3.5.3 中我们学过如何给 AI 有效反馈本节聚焦于问题已经发生后的修正策略。四种修正策略策略适用场景核心思路精确指出问题你知道具体哪里错了给出位置 问题 期望给出正确示例格式或结构不对展示正确的「样子」分步重做任务太复杂导致出错拆解后逐个完成换种问法同一问法反复失败改变描述角度或方式策略一精确指出问题适用场景你能定位到具体是哪行代码、哪个函数有问题。你在 [位置] 的代码有问题 **问题**[描述具体问题] **当前行为**[代码现在做了什么] **期望行为**[代码应该做什么] 请修正这个问题其他部分保持不变。示例你在 handleSubmit 函数第 15 行的代码有问题 **问题**使用了 localStorage但这是服务端渲染项目 **当前行为**直接调用 localStorage.setItem()在服务端会报错 **期望行为**先检查是否在浏览器环境或者使用 cookies 请修正这个问题其他部分保持不变。这个示例与 Next.js 场景高度吻合——仓库 demo-02-todo-auth 的 safe-action 通过next-safe-action中间件统一处理服务端会话正是「区分客户端与服务端环境」的工程化示范。策略二给出正确示例适用场景AI 理解了任务但输出的格式、结构不符合你的要求。输出格式不对。 **当前格式** [展示 AI 给的格式] **期望格式** [展示你想要的格式] 请按期望格式重新输出。示例函数返回格式不对。 **当前格式** 直接返回数据如 return userData **期望格式** 统一返回格式 { success: boolean, data: any, error?: string } 成功时{ success: true, data: userData } 失败时{ success: false, data: null, error: 错误信息 } 请按期望格式修改所有 API 函数的返回值。策略三分步重做适用场景任务太复杂AI 一次性输出的代码问题较多修补不如重来。这个功能我们分步骤来做。 **第一步当前**[最小核心功能] 只需要实现这一个功能其他的后面再加。 完成后我会确认然后我们再做第二步。策略四换种问法适用场景同一个问题用同样的方式问了两三次AI 还是给出类似的错误答案。原问法换种问法直接要结果先问原理再让 AI 基于原理实现用技术术语用生活化语言描述需求描述「要什么」描述「解决什么问题」从功能角度问从用户角度描述场景示例原问法反复失败 写一个防抖函数 换种问法 用户在搜索框输入时我不想每敲一个字就触发搜索请求 而是希望用户停止输入 300 毫秒后再发起请求。 请帮我实现这个延迟触发的逻辑。错误驱动开发把 AI 变成调试助手当你遇到错误时不必自己分析——可以直接把错误信息扔给 AI让它帮你定位和修复。工作流程发现错误 → 复制完整错误信息 → 给 AI 分析 → 应用修复 → 验证 → 如有新错误则重复操作模板运行代码时遇到以下错误[粘贴完整的错误信息]相关代码 [语言] [粘贴相关代码片段]请分析错误原因并给出修复方案。**示例** markdown 运行代码时遇到以下错误TypeError: Cannot read properties of undefined (reading map) at UserList (UserList.jsx:12:23)相关代码 jsx function UserList({ users }) { return ( ul {users.map(user li key{user.id}{user.name}/li)} /ul ); }请分析错误原因并给出修复方案。AI 通常会告诉你错误原因是 users 可能是 undefined修复方案是添加空值检查或默认值。 **仓库实证**仓库 [Advanced 篇的调试心法](https://link.gitcode.com/i/1608006df785a68432e6d9e37413ab77)进一步总结了「完整日志 操作步骤 预期结果」的调试沟通公式——只复制最后一行错误信息给 AI 会多耗 1 轮追问只说「报错了」会多耗 2 轮**一次性给全信息可以做到 0 轮追问直接定位**。循环修复模式通常 2-3 轮解决不要放弃。示例中的 ECONNREFUSED、Could not resolve 等错误都有对应的完整分析模板。 **调试公式**完整错误日志操作步骤你做了什么预期结果你想要什么 快速解决方案### 警惕「死亡螺旋」 「死亡螺旋」是指你让 AI 修问题它修了一个又引入两个新问题你再让它修问题越来越多代码越来越乱。 **识别信号**修改轮次超过 3 次问题还没解决AI 的代码量越改越多、越改越复杂修了 A 问题 B 功能又坏了AI 开始「绕圈」给出的方案和之前类似。 **止损策略**——一旦识别到死亡螺旋果断止损 **选项 1回退重来** markdown 这个方向走不通。请忘掉之前的修改我们从头开始。 [重新清晰地描述需求可能需要拆分成更小的任务]选项 2保留能用的手动修复剩余部分请把目前能正常工作的代码整理一下给我 有问题的部分用注释标注出来我自己来修。选项 3换一个 AI 工具试试不同的 AI 模型在不同任务上表现不同一个工具反复卡住时换一个可能有惊喜。修正 Prompt 模板库修复运行时错误这段代码报错了 错误信息[错误信息]代码 [语言] [代码]请修复这个错误。如果需要更多上下文请告诉我需要什么信息。**修复逻辑错误** markdown 这段代码可以运行但结果不对 **输入**[描述输入] **期望输出**[描述期望结果] **实际输出**[描述实际结果] 代码 [语言] [代码]请找出逻辑问题并修复。**修复样式问题** markdown 样式和预期不符 **期望效果**[描述或截图链接] **实际效果**[描述当前问题] 当前代码 css [样式代码]请修改样式使其符合期望效果。**要求 AI 自查** markdown 请检查上面的代码 1. 有哪些潜在的边界情况没有处理 2. 有哪些可能导致运行时错误的地方 3. 有哪些可以优化的地方 列出问题后请给出修复后的完整代码。关联阅读3.5.3 有效反馈的艺术 提供的 SBI 框架情境-行为-影响与反馈粒度金字塔方向级 → 功能级 → 代码级是上述修正模板的「底层语法」有效反馈 具体位置 具体问题 期望结果。五、兜底策略当 AI 真的搞不定有些时候问题不在于怎么修正而是 AI 真的做不到详见 3.6.4 小节。认识 AI 的能力边界AI 擅长的事领域具体任务标准化代码实现常见功能、转换数据格式、生成模板代码文档和解释解释代码逻辑、生成注释、编写文档模式识别识别代码问题、找到类似方案、重构建议快速原型生成 UI 组件、搭建项目骨架、实现 MVPAI 不擅长的事领域原因示例复杂环境配置涉及本地路径、系统权限、网络配置等 AI 无法访问的信息Docker 网络配置、环境变量设置需要实时验证的任务AI 无法真正运行代码验证结果调试性能问题、排查内存泄漏高度项目特定的逻辑依赖大量项目上下文超出对话窗口容量复杂业务规则、遗留系统集成安全敏感操作涉及密钥、凭证等不应该暴露的信息配置 API 密钥、处理用户密码实时数据操作无法访问真实数据库、外部 API数据库迁移、线上问题排查识别「AI 做不到」的信号你已经提供了所有能想到的上下文AI 还是给不出正确答案AI 反复给出「看起来对但实际不能用」的方案问题涉及你无法通过文字描述的内容如视觉效果、本地环境修改了 5 轮以上问题还没解决。三种兜底方案方案一换一个 AI 工具不同的 AI 模型有不同的训练数据和擅长领域。换工具时注意重新整理一遍需求描述不要把前一个 AI 的错误代码带过去避免干扰只描述问题本身和期望结果。方案二搜索引擎找现成方案很多问题已经被其他人遇到并解决过了。高效搜索技巧[错误信息关键词] site:stackoverflow.com[技术栈] [功能描述] github[库名] [具体问题] 官方文档示例TypeError map undefined react site:stackoverflow.com找到方案后让 AI 帮你理解和适配我在 Stack Overflow 上找到了这个解决方案 [粘贴找到的代码] 请帮我 1. 解释这段代码的原理 2. 根据我的项目情况[描述你的技术栈]进行适当修改方案三用 AI 理解概念自己动手实现当 AI 生成的代码不可靠时退一步——让它帮你理解原理然后你自己写代码让 AI 解释原理不要写代码。请解释 [概念/功能] 的工作原理包括 - 核心思路是什么 - 有哪些关键步骤 - 有哪些常见的坑需要注意让 AI 提供伪代码请用伪代码不是真正的代码描述实现步骤 让我理解整体逻辑。你自己编写代码遇到具体问题再问 AI。这种方式的好处避免 AI 幻觉导致的错误你对代码有完整的理解后续维护更容易。混合开发模式「混合开发」是一种务实的策略让 AI 做它擅长的部分你来补充它做不好的部分。模式一AI 做骨架你做细节请生成一个 [功能] 的代码框架包括 - 基本的文件结构 - 主要函数的签名参数和返回值 - 每个函数的功能注释 不需要实现具体逻辑我自己来写。模式二AI 做初版你来审查修改工作流让 AI 生成完整代码 → 你来审查标记有问题的地方 → 简单问题让 AI 修正 → 复杂问题你自己改。审查要点清单代码逻辑是否正确边界情况是否处理引用的库和 API 是否存在是否有安全隐患是否符合项目规范模式三分工协作AI 负责你负责生成标准 CRUD 代码复杂业务逻辑编写单元测试模板关键算法实现生成 UI 组件骨架交互细节和动画编写文档注释架构设计决策何时寻求外部帮助应该寻求帮助的信号问题涉及你完全不理解的领域如安全、性能优化、DevOps卡住超过 2 小时没有任何进展问题可能影响到数据安全或系统稳定性需要做出可能影响长远的架构决策。去哪里寻求帮助Stack Overflow技术细节、已有成熟答案的问题GitHub Issues特定库或框架的问题社区论坛/Discord需要讨论的开放性问题付费咨询/顾问复杂的架构问题、安全问题。如何有效地提问——无论是问 AI 还是问人好的问题能大大提高获得帮助的概率**我想做什么**[一句话描述目标] **我遇到的问题**[具体问题描述] **我已经尝试过** 1. [尝试过的方法 1] 2. [尝试过的方法 2] **相关代码/错误信息** [附上最小可复现的代码或完整错误信息] **我的环境**[技术栈版本等信息]六、预防胜于治疗减少「不听话」的概率前面几节讲的是「出了问题怎么办」本节讲「如何从一开始就不出问题」详见 3.6.5 小节。发送前自检清单在按下发送键之前花 10 秒过一遍这份清单可以避免大部分问题任务是否聚焦这次只让 AI 做一件事上下文是否充足AI 有足够的背景信息理解任务目标是否明确说清楚了「什么算完成」约束是否清晰说明了「不要什么」格式是否指定告诉 AI 期望的输出格式这与 3.1.3 学的「五大错误」一次说太多、一次说太少、期待读心、忽视格式、不做约束一一对应。养成习惯后这个检查只需要几秒钟。提问质量自评表在开始重要任务前用这个表格评估你的提示词质量维度差1分中2分好3分任务范围包含多个不相关的功能有主次之分但都要做只聚焦一个功能上下文只说了要做什么说了技术栈或部分背景技术栈项目背景约束都有验收标准没说什么算完成模糊描述了期望给出了具体的验收条件约束条件没有任何限制有技术栈限制技术栈不做清单格式要求评分解读10-12 分很棒发送吧7-9 分可以发送但准备好迭代4-6 分建议补充信息后再发送4 分以下重新组织提示词。让 AI 先复述这是一个简单但非常有效的预防技巧在让 AI 开始写代码之前先让它复述对任务的理解。在开始写代码之前请先回答以下问题 1. **你理解的任务目标是什么** 用一句话描述。 2. **你计划使用什么技术方案** 列出关键技术点和实现思路。 3. **有哪些地方你不确定需要我澄清** 如果没有请说无。 请先回答这三个问题我确认理解一致后你再开始写代码。为什么这招有效提前暴露误解统一预期纠正一个误解比修改一堆错误代码快得多。使用时机✅ 开始一个新功能时✅ 任务比较复杂时✅ 你不确定 AI 是否理解了你的意思时❌ 简单的小修改不需要。小步快跑策略「小步快跑」是指把大任务拆成小任务每完成一步就验证一下确认没问题再继续。一次做完小步快跑问题累积到最后才发现每步都能及时发现问题出错后难以定位是哪步出的问题问题范围明确容易定位修复成本高可能要大改修复成本低只改最近一步AI 上下文容易丢失每步上下文都是新鲜的拆分粒度建议任务类型建议拆分粒度单个功能核心逻辑 → 错误处理 → 边界情况 → 样式多个功能每个功能单独一轮对话完整页面布局骨架 → 各组件 → 交互逻辑 → 数据获取数据流程数据模型 → API 接口 → 前端调用 → 状态管理小步快跑的节奏第一步让 AI 做最小核心功能 ↓ 验证能跑吗结果对吗 ↓ 确认 OK → 第二步加一个小功能 ↓ 验证还能跑吗新功能对吗之前的功能还正常吗 ↓ 重复...及时纠偏发现问题后立即反馈不要等到最后。为什么要及时AI 刚输出完上下文还在修改最容易知道问题就出在最近这一步问题隔离成本低一个错误不纠正后面可能越错越多。情况行动发现理解偏差立即澄清让 AI 重新理解技术方案不对立即指出给出正确方向代码有明显错误立即反馈在继续之前先修正功能缺失列出缺失项让 AI 补充纠偏 Prompt 示例暂停一下。 上面的代码有个问题[描述问题] 在继续之前请先修正这个问题。其他部分可以保留。等等这不是我想要的。 我要的是 [正确的需求]不是 [AI 做的]。 请重新理解我的需求后再继续。预防检查清单开始前我清楚知道这次要让 AI 做什么一件事我准备好了必要的上下文信息我知道什么算「完成」。发送后AI 的复述和我的意图一致吗AI 的技术方案合理吗AI 用的库和 API 我认识吗收到代码后代码能跑吗结果符合预期吗边界情况处理了吗七、仓库实战把「调试 AI」能力落到真实项目以上方法论并非空谈。在 vibe-vibe 仓库的 demos 目录中有三个可运行的示例项目它们既是 Vibe Coding 的产出物也是验证「AI 输出质量」的最佳试验场demo-01-todoNext.js 16 · Drizzle ORM · Vitest完整 CRUD含前端乐观更新、后端校验与测试demo-02-todo-authBetter Auth · 游标分页 · 虚拟列表在 CRUD 基础上叠加认证、权限与分页demo-03-social-schemaDrizzle ORM 纯脚本Schema 设计、事务与高级查询。对照本文的六种「不听话」表现可以在这些源码中找到一一对应的验收点防「偷工减料」检查每个接口是否有输入校验与错误分支。例如 demo-01-todo 的 Zod schema 定义了标题长度与分类枚举约束demo-02-todo-auth 的 POST 接口 用safeParse校验、失败返回 400 与首条错误信息全程try/catch兜底返回 500——这正是「Happy Path 之外」的防御性代码标准。防「逻辑幻觉」运行测试是最直接的验证手段。仓库中的 todos.test.ts 不仅断言正常创建201还断言了「标题为空返回 400」「缺少标题字段返回 400」等反例场景GET 测试则覆盖了分类过滤参数。把这类测试交给 AI 生成后自己补反例是捕获逻辑幻觉的高效流程。防「错误处理缺失」queries.ts 中每个请求都检查res.ok并抛出带中文语义的错误如「获取待办失败」「添加失败」配合 TanStack Query 的onError回滚乐观更新——这正是「错误驱动开发」想要达到的工程标准错误信息完整、可定位、可回滚。「三分钟诊断法」落地在 demo-01-todo 目录下pnpm tsc --noEmit检查类型、pnpm test运行 Vitest 用例即可在三分钟内覆盖「语法/类型 → 依赖 → 测试」三层排查。「能力边界」对照demo-02-todo-auth 的 safe-action.ts 把会话校验抽成中间件未登录直接抛错——这类涉及认证、会话的敏感逻辑正是 3.6.4 中指出的「AI 不擅长/应谨慎对待」的领域建议按「AI 做骨架、你写核心」的混合开发模式处理。本章总结至此你已经完整掌握了「当 AI 不听话时」的五步应对体系识别问题六种常见的 AI「不听话」表现特别是危险的 AI 幻觉包幻觉、API 幻觉、逻辑幻觉、版本幻觉与 Slopsquatting 供应链威胁诊断问题三分钟快速诊断法运行检查 → 依赖验证 → 测试运行 根因分析四象限任务复杂度 × 描述清晰度修正问题四种修正策略精确指出、给出示例、分步重做、换种问法 错误驱动开发 死亡螺旋止损兜底方案换 AI 工具、搜索现成方案、用 AI 学原理后自己实现以及混合开发模式预防问题发送前自检、提问质量自评、复述技巧、小步快跑、及时纠偏。记住这个心法AI 出错不可怕可怕的是不知道它错了。在 Vibe Coding 中你的角色是指挥官不是执行者。你负责把握方向、验收结果、处理异常。掌握了本节的技能你就能从容应对 AI 的各种「不听话」把它调教成一个可靠的助手。延伸阅读继续学习 5.3.5 Slopsquatting 详解 与 5.3.6 永远审查代码或阅读 Advanced 篇的调试心法 获取「完整日志 循环修复」「让 AI 自己 Build」等进阶招式。赞分享文档教程Vibe Coding示例工程【免费下载链接】vibe-vibeThe First Systematic Vibe Coding Open-Source Tutorial | From Zero to Full-Stack, Empowering Everyone to Build Products with AI | Live at: www.vibevibe.cn 首个系统化 Vibe Coding 开源教程 | 零基础到全栈实战让人人都能用 AI 开发产品 | 在线地址www.vibevibe.cn项目地址https://gitcode.com/datawhalechina/vibe-vibe点击查看免费下载相关推荐Vibe Coding 兜底策略实战当 AI 搞不定时如何止损、换路与混合开发Vibe Coding 兜底策略实战当 AI 搞不定时如何止损、换路与混合开发 导读 在 vibe vibe 开源教程的第三章「技法」中3.6 节系统讲文档教程Vibe Coding示例工程识别 AI 输出的六种「不听话」行为vibe-vibe 教程中的代码幻觉识别与验证实战识别 AI 输出的六种「不听话」行为vibe vibe 教程中的代码幻觉识别与验证实战 本文基于 vibe vibe 教程章节「3.6.1 AI 常见的不听话文档教程Vibe Coding示例工程ai-guide Vibe Coding 幻觉与死循环处理实战从识别到修复让失控的 AI 重回正轨ai guide Vibe Coding 幻觉与死循环处理实战从识别到修复让失控的 AI 重回正轨 本文是 ai guide 仓库《Vibe Coding文档教程知识库人工智能创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。