08 · 常见反模式与翻车现场

08 · 常见反模式与翻车现场

前七篇的负片合集。每一条都是别人交过的学费。

为什么要做负片合集

前七篇都是"应该怎么做"。这篇反着来——别怎么做

翻车一次是学费,翻两次是智商税。这里列的每一条都对应前面某一篇。看完你手里就有一张"故障地图":下次出问题,按症状反查,直接定位到病根。

12 个反模式

① 把 CLAUDE.md 当 README 写

📍 对应 01

症状:CLAUDE.md 前三段都是"本项目是 xxx 致力于 yyy"。

根因:没理解 CLAUDE.md 是写给 Claude 看的,不是给人看的。

修正:第一行就下规则。项目介绍去 README。


② 用记忆替代 Hook

📍 对应 06

症状:CLAUDE.md 写了"每次改 TS 必须过 typecheck",Claude 还是经常不跑。

根因:把自动化需求偏好写。记忆是参考,不是强制。

修正:出现"每次 / 必须 / 一旦"关键词 → 写 hook,不是记忆。


③ 跳过 Plan 直接 Execute

📍 对应 04

症状:"我说'加个按钮',它把整个表单重构了。"

根因:没对齐"做完长什么样"。Claude 按自己理解干。

修正:3+ 文件 / API / 数据结构 / 安全相关 → 强制 "先给我方案"。


④ 盲信子 Agent / Claude 的总结

📍 对应 05、04

症状:"Claude 说都改好了 / 测试都过了",合并后翻车。

根因:总结是"意图",不是"事实"。

修正:看 git diff、自己跑测试、UI 实际打开浏览器。Claude 不能代替你的眼睛


⑤ 记忆囤积症

📍 对应 02

症状:auto-memory 里几十上百条记忆,重要的被噪声淹没。

根因:把"代码能推导的"、"一次性的"、"可能过期的"全塞了进去。

修正:记忆判断公式——跨会话 + 非冗余 + 不能从代码推导。三个都满足才存。


⑥ Skill 膨胀 / 万能 skill

📍 对应 03

症状:一个 skill 既能加地区又能删地区又能改地区,description 写成功能清单。

根因:把"方便"当设计目标,忽略了"description 是触发条件的生死线"。

修正一个 skill 一个动作。多功能拆多 skill。


⑦ 过度拟人,错失工具性

📍 对应 01、04

症状:对 Claude 说"你自己看着办"、"按你理解的来"。

根因:把 Claude 当成有你的偏好的人类同事。它没有。

修正具体、可执行的指令。"按 xxx 风格,改 yyy 文件的 zzz 函数"。


⑧ 在错误层次给反馈

📍 对应 02

症状:每次对话都重复"别写尾注"、"用中文回答"——Claude 本次会听,下次会忘。

根因:把跨会话的偏好写在了一次性对话里。

修正:反复说 2 次 → 固化到 auto-memory(个人)或 CLAUDE.md(项目)。


⑨ UI 改完不实际打开

📍 对应 04、07

症状:Claude 说"tsc 通过、测试通过",你就合并——线上发现按钮错位。

根因类型检查验证代码正确性,不验证功能正确性

修正:UI 改动必须打开浏览器实操。自动化测试永远补不上眼睛。


⑩ 用 --no-verify 绕过 hook

📍 对应 06、07

症状:pre-commit hook 报错,一怒 git commit --no-verify

根因:把 hook 当成"烦人的障碍",而不是"质量保证"。

修正修 hook 报的问题,不是关掉 hook


⑪ 盲信过期记忆

📍 对应 02

症状:记忆里写"项目用 React 17",Claude 按 React 17 的 API 写代码——实际已升到 19。

根因:记忆是当时的快照,不等于现在的事实

修正:引用具体版本 / 路径 / 函数的记忆,用前先 grep 验证。一条没验证的记忆不是事实,只是线索


⑫ Hook matcher 太宽

📍 对应 06

症状:配了 "matcher": ".*",每次 Read / Grep 都要跑 typecheck → 会话卡到崩溃。

根因:hook 是每次工具调用都要过的税,matcher 不精准 = 每笔交易都扣税。

修正:matcher 精确到真正需要的工具(Edit|Write)+ 配合 path / 扩展名过滤。


症状 → 病根反查表

你遇到的症状看第几篇
Claude 反复犯同样的错1(CLAUDE.md)或 2(记忆)或 6(hook)
Claude 方向跑偏,做了超出请求的改动4(Plan)
Claude 说完成了但实际不对4(Review)或 5(子 Agent 验证)
感觉 Claude "记不住"2(记忆层次选错)或 6(该 hook 的没 hook)
每次都要重复同样的引导2(feedback 没固化)
Skill 不被触发 / 乱触发3(description 问题)
Hook 拖慢整个会话6(matcher 太宽 / 任务太重)
Commit 历史一团糟7(没拆、没 why)
团队同事抱怨看不懂 PR7(PR 三段式)

全系列一页纸总结

一句话总结
1. CLAUDE.md交通标志,不是说明书。规则要可执行,不是价值观。
2. 记忆三层位置决定命运。项目的入 CLAUDE.md,个人的入 auto-memory,其余留对话。
3. Skill文字规则不够用时的升级。80% 的工夫在 description
4. Plan → Execute → Review没 Plan 是赌博,没 Review 是幻觉。
5. 子 Agent隔离不是甩活。五要素 brief 是生命线。
6. Hook唯一的硬保证。出现"每次"就该想到它。
7. Commit / PR写给未来的自己,不是写给现在。
8. 反模式每一条都是别人交过的学费——你不用再交一次

压缩到极致的三句话

如果只能带走三句:

1. 规则写在该写的地方。
项目的进 CLAUDE.md,个人的进 auto-memory,强制的做 hook。

2. 先对齐再动手。
Plan 阶段省下来的 30 秒,能避免 Execute 阶段浪费的 30 分钟。

3. 信任但验证。
看 diff、跑测试、打开浏览器。Claude 的自我叙述不是事实,代码和运行结果才是。

毕业

八篇走完了。你现在应该具备:

  • 配置层:能写出精准的 CLAUDE.md、合理分层的 auto-memory、有效的 hook
  • 架构层:知道什么时候写 skill、什么时候开子 Agent、什么时候拆文档
  • 协作层:知道怎么引导 Plan、怎么 brief 子 Agent、怎么 Review
  • 纪律层:commit 不混、PR 写 why、hook 不绕、危险操作不手滑

最后一个建议

把 Claude 当成一个有工具权限的、记忆力不稳定的、需要明确指令的合作者

它不是人。别对它煽情,别给它"价值观"。 它也不是魔法。别期望它自己把一切做对。

明确的规则 + 精准的指令 + 执拗的验证——这三件事做好,Claude 能帮你把效率翻倍。 做不好,它就是个到处翻车的小助手。

剩下的,在实战里自己长出来。


← 07 · Commit / PR 工作流 | 目录 | 示例:模板 & 速查 →