让 AI 写出生产级代码:我把 Vibe Coding 做成工程化的五层体系
本文整理自团队内部实践。
半年前刚用 Claude Code 时,体验是这样的:丢一个需求过去,AI 噼里啪啦写完一段代码,复制粘贴跑一下,跑不通就再问,跑通了就提交。一个简单的 CRUD 接口,来回 20 多轮对话,代码能跑但质量一塌糊涂——没有错误处理、没有日志、没有测试、命名混乱、SQL 拼接还有注入风险。
那段时间每天都在感叹 AI 厉害,但每天提交的代码都比自己手写的差。
后来花了几个月时间,把团队用 Claude Code 的方式彻底工程化,建立了一套五层体系:规则层、流程层、记忆层、技能层、协作层。现在团队的平均需求,AI 一次生成的代码就能直接进 PR,人工审核时间从 40 分钟降到 8 分钟。
一、问题诊断:为什么"裸用 AI"写不出生产级代码
观察团队两周,统计了 50 次需求交互,问题集中在五类:
| 问题类型 | 占比 | 典型表现 |
|---|---|---|
| 上下文丢失 | 38% | 改了 A 模块忘了 B 模块有对应引用,接口字段对不齐 |
| 风格漂移 | 22% | 命名一会儿 camelCase 一会儿 snake_case,日志格式乱 |
| 流程跳跃 | 18% | 跳过测试直接交付,或写完代码不验证就提交 |
| 重复犯错 | 14% | 同样的反模式反复出现(空 catch、硬编码 URL、忽略 NPE) |
| 范围越界 | 8% | 只让改一个方法,顺手重构了半个文件 |
这五类问题有一个共同点:都是工程问题,不是 AI 能力问题。AI 有能力写出好代码,但需要明确的边界、上下文、流程约束。裸用的时候,这些约束都是缺失的——你只是把 AI 当成了一个"会写代码的搜索引擎",而不是一个"需要被管理的工程师"。
二、第一层:规则层——用 CLAUDE.md 给 AI 立规矩
CLAUDE.md 是 Claude Code 的项目级配置文件,放在仓库根目录,每次对话开始时自动加载。这是 AI 工程化的第一道门。
很多团队的 CLAUDE.md 长这样:
# 项目说明
这是一个 Spring Boot 项目,使用 Java 17。这种 CLAUDE.md 等于没写——AI 看完之后只知道用了什么技术,但不知道怎么用。一个有效的 CLAUDE.md 必须包含三类内容:边界、规则、约定。
写 CLAUDE.md 的关键原则:写 AI 容易犯错的点,不写 AI 已经知道的常识。"Spring Boot 是 Java 框架"这种废话不用写;"@Transactional 必须加 rollbackFor"这种容易漏的细节必须写。
CLAUDE.md 的另一个常见错误是写得太长。见过 800 行的 CLAUDE.md,结果 AI 反而抓不住重点。建议控制在 300 行以内,用条款式短句,而不是长篇大论。如果内容真的多,拆成多个文档,在 CLAUDE.md 里引用路径。
三、第二层:流程层——九步法强制 AI 不偷懒
光有规则不够。AI 收到一个需求,默认行为是"尽快给出代码",中间过程能跳就跳。需要一套流程,强制 AI 走完:需求确认 → 方案设计 → 编码 → 自检 → 测试 → 交付。
团队总结的九步法:
1. 需求确认 → AI 必须先复述需求,列出边界情况和疑问
2. PRD 编制 → 中等以上复杂度必须出 PRD,落盘
3. 方案设计 → 产品/UI/技术三部分,每部分单独自审
4. 分步实现 → 按子任务逐个实现,每个子任务完成汇报
5. 自检审查 → 走完 review checklist 才能进入测试
6. 测试验证 → 单测 + 集成测试 + 手工测试矩阵
7. 交付验收 → 输出交付清单(变更文件、SQL、回退方案)
8. 部署指引 → 输出部署步骤、回滚方案
9. 记录归档 → 自动生成 dev-log九步法最大的价值,不是让 AI 多干活,而是让 AI 暴露中间状态。裸用 AI 的时候,看到的只有最终代码,中间它怎么想的、跳过了什么,一概不知。九步法强制每一步都输出文档,这些文档就是审核的抓手。
四、第三层:记忆层——让 AI 跨会话保持一致
AI 默认是"金鱼记忆",每次对话都是新开始。这导致两个问题:同一个项目,AI 这次告诉你的最佳实践,下次可能就忘了;你这次纠正它的反模式,下次它又犯。
解决方案是把"项目知识"沉淀下来,让 AI 每次都能读到。这分两块:
项目知识库——docs/ 目录下的文档,AI 在需求确认阶段必须读。先用 Glob 精确匹配,再用 Grep 定向搜索,禁止直接全局搜索代码。
记忆文件——.claude/memory/ 下的 AI 专属记忆,记录跨会话的反馈。每次 AI 收到反馈时就主动沉淀。半年下来,积累了几十条这样的"踩坑记忆",AI 重复犯错的概率从 14% 降到了 3%。
记忆文件不是越长越好。单文件控制在 100 行内,有具体的"为什么"和"怎么用",而不是抽象原则。
五、第四层:技能层——把可复用的能力封装成 Skill
写了一个月之后,会发现 AI 在某些场景下反复需要"提示"。比如每次写 SQL,都要提醒它"用预编译、加 LIMIT、加索引";每次写并发代码,都要提醒它"用 ThreadPoolExecutor 不要用 Executors、加超时"。
这些反复出现的提醒,就是 Skill 的最佳候选。
Skill 的本质是预置的提示词模板,用 Skill 工具调用。比起在 CLAUDE.md 里堆所有规则,Skill 是按需加载,token 消耗低,而且便于版本化管理——Skill 文件就是 git 仓库里的 markdown,谁加的规则、什么时候加的、为什么加,git blame 一清二楚。
Skill 不是越多越好。见过反面案例:某团队装了 50 多个 Skill,结果 AI 每次都要"考虑"几十个 Skill 是否适用,响应变慢,而且不同 Skill 之间偶有规则冲突。Skill 应该精挑细选,一个领域一个就够,发现重复就合并。
六、第五层:协作层——子代理处理独立任务
到了这一层,已经不是"用一个 AI 写代码"了,而是"用多个 AI 协作"。
Claude Code 的子代理(Subagent) 支持主代理接到复杂任务后,拆分成多个子任务,派给不同类型的子代理并行处理。这就像一个团队 leader 拆任务给工程师,而不是自己一个人干。
典型场景:大型重构。比如把全项目日志框架从 Log4j 1.x 升级到 Log4j 2,涉及 200 多个文件。正确做法是用子代理:
主代理(架构师角色):
1. 扫描全项目,把文件按模块分组(50 个文件/组)
2. 派出 5 个子代理(执行者角色),每个负责一组
3. 子代理改造完成后返回结果
4. 主代理汇总,做交叉一致性检查
5. 主代理自己改造入口配置(只改 2-3 个文件)子代理的三个坑:
- 坑 1:子代理之间信息不共享。A 子代理改了某个公共类,B 子代理不知道,容易引入不一致。解决方法:子代理不能改公共类,公共类的修改由主代理统一处理。
- 坑 2:子代理任务粒度不好定。经验值是单个子代理任务不超过 30 分钟、不超过 50 个文件。
- 坑 3:子代理结果需要验证。子代理说"我改完了"不等于"改对了"。主代理必须抽样验证——随机挑 20% 的子代理输出,人工或工具复核。
七、五层联动的实际效果
把五层做完整之后,团队的数据(统计了 3 个月的 80 个需求):
| 指标 | 工程化前 | 工程化后 | 变化 |
|---|---|---|---|
| 平均需求交付时长 | 4.2 小时 | 1.8 小时 | -57% |
| 平均 AI 对话轮次 | 18 轮 | 6 轮 | -67% |
| 一次审核通过率 | 22% | 71% | +213% |
| 平均返工次数 | 2.3 次 | 0.4 次 | -83% |
| 引发生产 Bug 数 | 7 个 | 1 个 | -86% |
每一层都在填补 AI 默认行为的某个坑:
- 规则层填补"AI 不知道项目约定"
- 流程层填补"AI 偷懒跳步"
- 记忆层填补"AI 跨会话不一致"
- 技能层填补"AI 反复犯同类错误"
- 协作层填补"AI 处理大任务时上下文爆炸"
每一层都是必要的,缺一层都会留下系统性漏洞。
八、几个反模式,你别踩
反模式 1:把 CLAUDE.md 当文档中心
把所有项目文档都堆进 CLAUDE.md,3000 行,结果 AI 反而抓不住重点。CLAUDE.md 应该是索引,指向其他文档,而不是文档本身。
反模式 2:九步法一刀切
简单需求(改个文案、修个 typo)也走九步法,纯属浪费。九步法必须按复杂度分层:简单需求简化到三步(需求确认 → 编码 → 自检),中等需求完整走,复杂需求每步都要详细。
反模式 3:Skill 滥用
每个细节都做成 Skill,导致 Skill 数量爆炸。Skill 应该是**"高频出现 + 容易犯错"**的规则集,低频场景写在 CLAUDE.md 里就够了。
反模式 4:子代理万能论
什么任务都派子代理,导致主代理退化成调度器,失去对代码的整体把控。子代理适合"重复性高、上下文独立"的任务,创造性强的任务必须主代理亲自干。
反模式 5:不更新记忆
记忆文件写一次就忘了,半年前的反模式现在可能已经过时。建议每季度做一次记忆清理,删掉过时的、合并重复的、补充新的。
结语:AI 不是替代工程师,而是放大工程师
做完这套工程化建设之后,有一个反直觉的发现:用 AI 用得好的团队,工程师反而更累了——但累在更高级的事情上。
以前累在写 CRUD、改 bug、补测试,这些事 AI 接手了。现在累在写规则、设计流程、review 代码、做架构决策——这些事 AI 做不了。从一个"代码生产者"变成了"AI 监工 + 架构师",工作内容升级了。
这就是 Vibe Coding 工程化的本质:不是让 AI 替代工程师,而是让工程师把时间花在更值得花的地方。规则、流程、记忆、技能、协作,这五层不是给 AI 建的,是给未来的自己和整个团队建的。
从今天开始,如果你的团队还在"裸用 AI",先从写一份靠谱的 CLAUDE.md 开始。这是最容易的一步,也是回报最大的一步。剩下的四层,慢慢建。三个月见效,半年成型,一年脱胎换骨。