我用AI写了三个月代码,踩过的坑比写过的Prompt还多
我用AI写了三个月代码,踩过的坑比写过的Prompt还多
前阵子看到一个段子:”用Cursor写代码就像开自动挡——你觉得自己会开车了,直到有一天需要上赛道。”
笑完之后我沉默了。因为这说的就是三个月前的我。
三个月前,我还是个快乐的Vibe Coder。打开Cursor,描述需求,AI给代码,复制粘贴,跑通收工。效率很高,心情很好,同事问我”你怎么写代码这么快”,我还挺得意。
直到有一天,我用AI写的一个支付回调模块上了线。它在测试环境跑得完美——因为测试环境没有并发。线上一有并发请求,同一笔订单被处理了两次。客户多扣了钱,CTO半夜给我打电话。
那一晚我盯着AI生成的代码看了两个小时,发现一个残酷的事实:这段代码的每一行我都看得懂,但我完全没有想过它在并发场景下会怎样。
这不是AI的锅。这是我的锅。我用AI的方式,从一开始就是错的。
Vibe Coding的”蜜月期”有多甜,”翻车期”就有多疼
先别急着否认——你大概率也经历过(或正在经历)Vibe Coding的蜜月期。
症状是这样的:你发现AI能帮你写80%的代码,于是你开始把越来越多的事情交给它。从简单的工具函数,到业务逻辑,到数据库操作,到API设计。你的Prompt越写越顺,AI的输出”看起来”越来越对。
关键词是”看起来”。
我翻了一下自己蜜月期写的Prompt,发现一个规律。我的Prompt基本上都长这样:
“帮我写一个用户注册的接口,用Express + MongoDB,要校验邮箱格式。”
看着挺完整对吧?但你想想这里面有多少东西没说:密码怎么存?要不要加盐哈希?邮箱要不要做唯一性校验?并发注册同一个邮箱怎么处理?注册失败要不要回滚?返回的错误信息格式是什么?
这些我都没说。不是我故意省略,是我压根没想到。因为Vibe Coding的思维模式是”描述我想要什么”,而不是”定义系统应该怎样运行”。
AI很乖地给了我一个”能跑”的实现。没有密码哈希(它用了明文存储),没有唯一性校验(两个人能注册同一个邮箱),错误处理用的是一个裸的try-catch吞掉所有异常然后返回500。
代码能跑,和代码能上线,中间隔着一条太平洋。
从”说人话”到”立规矩”:第一次跃迁
翻车之后,我做的第一件事不是学更高级的Prompt技巧,而是写了一份文件。
这份文件不长,大概200行。它不是给人看的,是给AI看的。内容包括:
- 项目用TypeScript strict模式,不允许any
- 所有数据库操作必须包在事务里
- 密码存储使用bcrypt,不少于12轮
- 错误处理使用自定义的Result类型,禁止裸try-catch
- API返回格式统一为
{code, data, message} - 每个函数必须有JSDoc注释
这份文件叫CLAUDE.md。它本质上就是一份”规矩”——你不用每次都口头交代,AI开工前自动读取。
效果立竿见影。同样是”帮我写一个用户注册接口”,加了规矩之后,AI给出的代码自动带上了bcrypt、唯一性校验、事务、标准错误返回。不是因为AI变聪明了,是因为我把”隐性知识”变成了”显性规则”。
但这只是第一步。
光有规矩还不够,你还得学会拆活。以前我是这样下达任务的:
“帮我实现整个用户模块,包括注册、登录、修改密码、忘记密码。”
一口气让AI写一个完整模块,听着很高效。实际上呢?AI写了500行代码,你花两个小时review,发现十几个问题,改了这个又破了那个。这不叫高效,这叫给自己挖坑。
后来我学会了拆:
“第一步:帮我写一个validateEmail函数,输入string,输出boolean,要处理空字符串、格式不合法、长度超过254的情况。附带5个测试用例。”
一个函数,一组测试,验收标准清晰。写完跑测试,全绿,下一个。就像搭乐高——一块一块拼,每块都确认牢固了再往上加。比起糊一个大泥巴然后祈祷它不塌,这种方式慢吗?不。因为你省掉了所有的返工时间。
然后是第三个关键变化:让机器替你把关。
AI写完代码之后,不是你用肉眼去看”嗯,差不多”,而是自动跑一套检查:TypeScript编译、ESLint、单元测试。哪个没过,AI自己去修,修完再跑,直到全部通过。
你从”手动验收”变成了”自动化质检”。代码质量不再取决于你当天的精神状态。
这三个变化——立规矩、拆任务、自动检查——合在一起,就是从Vibe Coding到结构化编程的跃迁。
听着好像没什么技术含量?对。它不需要你学任何新技术。它需要的是一个认知转变:你不是在”使用”AI,你是在”管理”AI。
好的管理者不会跟下属说”你帮我把这事儿办了”然后甩手不管。他会给标准、给流程、给验收方式。
从”管好一个AI”到”设计一条流水线”:第二次跃迁
结构化编程让我的效率提升了一大截。但用了一个月之后,我发现了新的瓶颈:每个任务都需要我亲自操盘。
拆任务是我拆,下指令是我下,验收是我验,改不对了还是我来重新引导。我就像一个勤劳的项目经理,每件事都安排得井井有条——但我一天还是只有24小时。
转折点出现在一个周末。我有一个重构任务:把一个monolith项目里的用户模块抽出来变成独立服务。涉及14个文件,三层依赖关系,改动量巨大。
按照我之前的做法,拆成小任务一个一个来,大概需要一整天。
那天我试了一种新方式:
- 我写了一份需求文档,描述了重构的目标、约束条件、不能动的接口
- 我配置了一个工作流:AI读文档 → 自动拆任务 → 在独立分支上逐个完成 → 每完成一个跑测试 → 全部完成后提PR
- 我点了”开始”
- 我去吃了个午饭
回来的时候,14个文件全部改完了。测试全过。PR里的diff我review了半个小时,只发现了两个可以优化的点,都不是bug。
那一刻的感觉很奇妙。不是”AI帮我写了代码”,而是”一个系统替我完成了工作”。
这就是第三段位——系统化编程。你的角色从”使用AI的程序员”变成了”设计AI工作流的架构师”。
这个段位需要的技能和前两个完全不同:
工作流设计。 你得想清楚整个流程怎么串起来。不是”AI帮我写代码”这种单点操作,而是一条完整的流水线:需求输入 → 任务拆解 → 代码生成 → 自动测试 → 代码审查 → 合并发布。每个环节谁来做、怎么衔接、出错了怎么处理。
多Agent协作。 一个AI做所有事情效果很差,就像让一个人同时当厨师、服务员和收银员。写代码的Agent专注写代码,review的Agent专注找问题,测试的Agent专注搞破坏。它们各司其职,通过流程串联起来。
上下文工程。 大项目不可能把所有信息塞进一个对话窗口。你需要精心设计:哪些信息在什么时候传递给哪个Agent。项目规范放在CLAUDE.md里全局生效,模块说明放在对应目录的AGENTS.md里按需加载,临时上下文在对话中动态传递。这不是”多写点Prompt”的问题,这是信息架构设计。
质量门禁。 自动化最怕的是失控。你得在关键节点设卡:类型检查必须通过、测试覆盖率不低于80%、安全扫描不能有高危漏洞。这些门禁就是安全网——AI可以自由发挥,但不能突破底线。

一个违反直觉的真相
讲到这里你可能注意到了一件奇怪的事:从第二段位到第三段位,Prompt写作的重要性反而下降了。
大多数人以为AI编程的进阶路线是:写Prompt → 写更好的Prompt → 写完美的Prompt。
不是这样的。
进阶路线是:写Prompt → 设计规则 → 设计系统。
Prompt技巧解决的是”局部最优”——怎么让AI在单次交互中给出更好的答案。但真正的效率瓶颈在”全局”——怎么让整个开发流程无缝运转。
打个比方。你开车上班,车技再好,每个红绿灯都得停。提升车技能让你在两个红灯之间开得更快,但真正改变通勤体验的是高架和地铁——把红灯从路线上直接消灭。
系统化思维就是那个”高架”。它比Prompt技巧重要得多,但大多数人看不到它——因为他们还在地面上死磕车技。
你的段位自测清单

说了这么多,怎么判断自己在哪个段位?给你一个快速自测:
你属于第一段位(氛围编程),如果你:
- 每次开新项目,AI的输出风格都不一样
- 遇到bug第一反应是”再问一轮AI”,而不是自己先分析
- 不写CLAUDE.md,也不用.cursorrules
- AI生成的代码,你经常直接复制粘贴不怎么看
你属于第二段位(结构化编程),如果你:
- 有一份项目级的AI规则文件,并且经常更新它
- 习惯把需求拆成3-5个有验收标准的小任务
- AI的输出必须通过自动化检查才算完成
- 你能把自己的开发流程教给别人
你属于第三段位(系统化编程),如果你:
- 你设计的流程可以无人值守地运行一段时间
- 你的开发环境里有多个Agent各司其职
- 你花在”设计工作流”上的时间超过”写Prompt”的时间
- 你的瓶颈不是AI能力,而是流程优化
大多数人在第一段位和第二段位之间。这不丢人——知道自己在哪,才知道往哪走。
每个段位的下一步
最后给每个段位一个最小可行动作,今天就可以开始:
第一段位的人,今天就做一件事: 给你的主力项目写一份CLAUDE.md。不用很完善,先把技术栈、代码风格、命名规范写进去。200行就够了。你会立刻感受到AI输出质量的变化。
第二段位的人,今天就做一件事: 找一个你平时重复做的开发任务(比如”建一个新的CRUD模块”),把它的完整流程写下来。然后想一个问题:这个流程里,哪些步骤可以不需要你亲自操作?
第三段位的人,今天就做一件事: 回顾你的工作流,找到一个仍然需要你手动介入的环节。想想怎么用质量门禁替代人工检查——让系统自己决定”这步算通过了”还是”需要重来”。
最后一句实话
AI不会替代程序员。但”会驾驭AI的程序员”和”只会跟AI聊天的程序员”之间的差距,正在以肉眼可见的速度拉大。
三个月前我还在Vibe Coding,觉得自己效率很高。现在回头看,那时候的我就像一个拿着计算器的人,以为自己已经掌握了数学。
计算器很有用。但数学不是按计算器。
AI编程的进阶路,从来不是学更多的Prompt技巧,而是升级你驾驭AI的操作系统。
你准备升级了吗?