Skip to content

5.1 九种失败模式——"Vibe Coding 的 Bug 是静默的"

2025 年,DAPLab(哥伦比亚大学)做了一项研究:他们分析了 15+ 个应用、横跨 5 款 AI 编程工具的 Agent 行为,发现了一个惊人的规律——

"Vibe Coding 的 Bug 是静默的。"

Agent 不会让程序崩溃、不会抛出异常、不会显示明显的错误。它会压制错误,让代码「看起来能跑」,但实际行为是错的。

小李回想自己的经历,深有体会。他让 Agent 修了一个登录 Bug,Agent 改完代码,页面确实不报错了——但用户数据根本没有保存到数据库。「修好了 Bug」和「修对了 Bug」是两回事。


失败模式热力图

#1
UI 与行为不一致
高严重
频率
#2
状态管理失败
高严重
频率
#9
异常处理
高严重
频率
#3
业务逻辑不匹配
中严重
频率
#6
安全漏洞
高严重
频率
#7
重复代码
低严重
频率
#4
数据管理错误
中严重
频率
#5
API 调用失败
中严重
频率
#8
代码库感知不足
中严重
频率

规律:左上角最危险——高严重 + 高频率的 #1、#2、#9 是 Agent 的头号杀手。


九种失败模式详解

1. UI 与行为不一致 🟥 严重 · 极高频

现象:界面上显示「已保存」,但数据实际没有持久化。按钮显示「成功」,但后台操作失败。

根本原因:Agent 缺乏对异步状态和响应式更新的理解。它能让 UI「看起来对」,但底层数据流是断的。

防御:端到端集成测试;手动测试关注实际数据,不只看界面。

2. 状态管理失败 🟥 严重 · 高频

现象:全局状态不一致、组件间状态不同步、状态缺少初始化或清理。

防御:明确状态所有权;在系统提示词中写明状态管理规范;用状态管理工具而非散落的 useState。

3. 业务逻辑不匹配 🟨 中等 · 高频

现象:计算公式错误、流程顺序颠倒、遗漏边界条件。

根本原因:Agent 不理解业务的「为什么」,只理解代码的「怎么写」。

防御:在系统提示词中写清楚业务规则;用测试用例覆盖业务逻辑。

4. 数据管理错误 🟨 中等 · 中频

现象:类型不匹配、缺少数据转换、缓存未失效。

防御:定义清晰的数据类型;用 TypeScript 严格模式。

5. API 与外部服务失败 🟨 中等 · 中频

现象:HTTP 方法错误、缺少认证、不处理限流。

防御:提供 API 文档;用 MCP Server 封装 API 调用。

6. 安全漏洞 🟥 严重 · 中频

现象:SQL 注入、XSS、敏感信息写入日志、缺少权限校验。

根本原因:Agent 优化的是「功能正确」,不是「安全正确」。

防御:强制安全检查;用 SAST/DAST 工具;所有 Agent 生成的代码必须经过安全审查

7. 重复代码 🟢 低严重 · 高频

现象:Agent 在不同文件中复制粘贴相似的代码,没有抽取公共函数。

防御:要求 Agent 先搜索是否已有类似实现;规定 DRY 原则。

8. 代码库感知不足 🟨 中等 · 中频

现象:修改了一处但没有更新依赖它的代码,引入了与已有模式不一致的新写法。

防御:修改前要求 Agent 搜索所有引用;CLAUDE.md 中写明项目规范。

9. 异常与错误处理 🟥 严重 · 极高频

现象:空 catch 块、用默认值掩盖错误、通用错误消息。

根本原因这是最常见的问题。 Agent 优化的是「没有错误抛出」,不是「正确处理错误」。

python
# Agent 的典型写法(错误处理反模式)
try:
    result = fetch_user(user_id)
except Exception:
    result = None  # 吞掉异常,返回默认值,程序不报错但数据错误

防御:禁止空 catch 块;错误必须记录日志;在系统提示词中明确:正确处理错误 > 不报错


本节核心要点

  • "Vibe Coding 的 Bug 是静默的"——Agent 会压制错误,让代码看起来能跑
  • 9 种失败模式中,最危险的是 UI/行为不一致、状态管理失败、异常处理不当
  • Agent 优化的是「不报错」,不是「正确处理」——这是核心矛盾
  • 防御需要多层次:系统提示词 + 测试 + 人工审查 + 自动化工具

思考题:在你使用 AI 编程工具的经历中,有没有遇到过这 9 种失败模式中的某一种?当时是怎么发现的?


下一节预告:知道了什么会出错,那怎么防?反模式和防御金字塔——从工具配置到人工审查的五层防御体系。

下一节:反模式与防御金字塔 →