Skip to content

5.2 反模式与防御金字塔

九种失败模式讲了「什么会出错」。这一节讲「为什么会出错」以及「怎么防」。

区分:失败模式是 Agent 写的代码出了问题(Agent 的问题),反模式是你和 Agent 互动的方式出了问题(你的问题)。反模式会放大失败模式——互动方式越错,代码质量越差。


六种实用反模式

反模式一:假设 Agent 理解了你的意图 🚫

小李:帮我优化一下这个页面

Agent:(优化了 CSS 动画)
小李:不是,我要的是优化性能
Agent:(优化了图片加载)
小李:也不是,我要的是优化用户体验

问题:「优化」这个词太模糊了。Agent 会按自己的理解去「优化」,而它的理解通常和你不一样。

正确做法:提供精确的上下文——"优化首页加载速度,目标是 LCP 从 3s 降到 1.5s 以内"。


反模式二:在死胡同里坚持 🚫

小李:这段代码有个 Bug,帮我修
Agent:(尝试修了 3 次,每次都引入新问题)
小李:再试一次
Agent:(第 4 次尝试,还是不行)
小李:继续
……

问题:连续 2-3 次修正失败后,Agent 的上下文已经被错误尝试污染,继续尝试只会更差。

正确做法:失败 2-3 次后,开新对话,换一种方式描述问题,或者人工介入定位。


反模式三:浪费 Token 在探索上 🚫

小李:帮我理解这个项目
Agent:(花了 50 步探索整个项目结构)

问题:让 Agent 自己探索整个项目效率很低。你应该先定位关键文件,再让 Agent 分析。

正确做法:人类先花 2 分钟浏览项目结构,告诉 Agent "重点看 src/routes/ 和 src/models/",Agent 就能更快进入正题。


反模式四:接入太多 MCP Server 🚫

问题:每个 MCP Server 都是工具选项,选项越多,Agent 的决策越困难。而且每个 Server 都是安全风险点。

正确做法:只连接当前任务需要的 Server,按场景分组——开发场景用一组,部署场景用另一组。


反模式五:记忆文件过度膨胀 🚫

问题:CLAUDE.md / .cursorrules 里塞了太多信息,大部分对当前任务无用,反而干扰 Agent 决策。

正确做法:只保留真正需要持久化的信息——项目规范、技术栈、关键约束。定期清理过时内容。


反模式六:忠于单一工具/模型 🚫

问题:没有一款工具在所有场景下都是最优解。忠诚于单一工具意味着在某些场景下接受次优结果。

正确做法:根据任务特点选择工具。搜索用 Explore,创意用 Claude,批量操作用 Agent。


Simon Willison 的审查原则

知名开发者 Simon Willison 提出了几条 Agent 审查原则:

核心原则

  1. 永远不要不经审查就提交 Agent 生成的 PR
  2. 仍然要拆分小 PR——Agent 生成的也是代码,大 PR 同样难以审查
  3. PR 必须包含上下文和测试证据——Agent 的决策摘要、测试截图、哪些是 Agent 做的、哪些是人改的

Willison 的核心洞察:Agent 擅长实现,不擅长判断。它能把 80% 的活干完,但剩下 20% 的审查和判断必须由人类完成。


防御金字塔

把所有防御措施从底层到顶层排列,形成防御金字塔

5. 人工审查 —— 最后一道防线
4. 自动化测试 —— 持续验证
3. 标准与约束 —— Skills / 规则
2. 架构与上下文 —— CLAUDE.md / 项目规范
1. 工具选择与配置 —— 基础设施层

第 1 层:工具选择与配置

选择合适的工具,配置正确的权限。

  • 只连接需要的 MCP Server
  • 设置三级权限体系(自动/确认/禁止)
  • 配置只读连接用于敏感操作

第 2 层:架构与上下文

在 CLAUDE.md / .cursorrules 中写清楚项目规范。

  • 技术栈和约定
  • 安全约束("禁止操作生产数据库")
  • 代码风格规范
  • 哪些模式不能用、哪些必须用

第 3 层:标准与约束

用 Skill / Rule 定义 Agent 的行为标准。

  • 代码修改后必须跑测试
  • 错误处理必须记录日志
  • 安全相关代码必须人工审查

第 4 层:自动化测试

测试是 Agent 的安全网。

  • 单元测试覆盖核心逻辑
  • 集成测试验证端到端流程
  • 安全扫描检测注入和漏洞

第 5 层:人工审查

最后一道防线,不可跳过。

  • 审查 Agent 的执行轨迹
  • 验证关键操作的输出
  • 检查安全和业务逻辑

防御的成本

防御不是免费的。每增加一层防御,就增加一些成本:

防御层时间成本效果
工具配置一次性 30 分钟减少 30% 的问题
项目规范一次性 1-2 小时减少 40% 的问题
Skills/规则每个 15-30 分钟减少 20% 的问题
自动化测试持续投入减少 80% 的回归问题
人工审查每次任务 10-30 分钟捕获 95%+ 的问题

投入建议

前两层(工具配置 + 项目规范)是必须的,投入小收益大。第三层按需添加。第四层(自动化测试)长期来看最划算。第五层不可跳过。


本节核心要点

  • 失败模式 = Agent 代码问题;反模式 = 你与 Agent 互动问题;反模式会放大失败模式
  • 6 种反模式:意图模糊、死胡同坚持、浪费 Token 探索、MCP 过多、记忆膨胀、忠于单工具
  • Willison 原则:Agent 做 80%,人做 20% 审查
  • 防御金字塔五层:工具配置 → 项目规范 → Skills/规则 → 自动化测试 → 人工审查
  • 前两层是必须投入的,最后一层不可跳过

思考题:检查你当前的项目,防御金字塔的每一层你做到了几层?最薄弱的是哪一层?


下一节预告:理论够多了,来看看真实世界——好的 Agent 和坏的 Agent 到底长什么样?

下一节:真实案例 →