AI写代码总改崩?后端老哥的3招5坑,照抄能救火
半夜被AI代码叫醒,这事不稀奇
晚上11点,你给AI丢了一句:给订单加超时关单。它哗哗生成80行,你复制进项目,本地跑通。第二天测试环境,优惠券被重复退,库存多扣了200件。你回头一看,AI把状态判断删了,还加了一个项目里根本不存在的RedisUtil。
这不是段子。用AI写代码的人,大多栽过两次:一次信它一把梭,一次让它直接改大文件。
两个误区很常见:
- 把AI当外包。扔一句话,等它交付。
- 把AI当编译器。让它直接改生产代码,不做边界、不做验证。
AI是速度很快、上下文很窄、还特别自信的实习生。你得给它图纸、围栏、验收标准。下面这3招,是我和团队在真实项目里反复用的。
一、3个能照搬的实战技巧
1.1 先画施工围栏:目录树+接口契约+禁止清单
你让AI自由发挥,它就会自由发挥到隔壁模块。
操作步骤:
- 贴相关目录树,只贴这次要动的模块,别把整个仓库塞进去。
- 给接口契约:输入什么、输出什么、异常怎么抛。
- 列禁止清单:不准改DAO、不准新增依赖、不准动公共类。
- 先让它出补丁计划,你点头后再写代码。
真实案例:给一个SaaS后台加退款回调幂等。AI第一版想改DAO,还要引入新工具类。我拦住,只允许改handler和service,要求用现有Redis客户端写幂等键。20分钟出补丁,测试通过。
【金句:让AI写代码前,先把它关进你画的牢里。】
1.2 把大任务切成可验证小步:先失败测试,再实现
AI不怕任务大,怕你一次给它一个没法验证的大任务。
操作步骤:
- 让AI先写测试,要求测试必须失败。
- 你审测试,确认断言是真的。
- 让它只实现通过测试的最小代码。
- 你跑命令,看结果,再进下一步。
真实案例:库存扣减并发问题。AI一开始写了个synchronized,单机看着对,多实例就废。我让它先写并发测试,再实现Redis分布式锁。测试红转绿,才允许合入。
【金句:AI不怕任务大,怕你一次给它一个没法验证的大。】
1.3 用“角色+约束+输出格式”三件套,逼它暴露假设
模板可以直接抄:
你是资深Java后端,熟悉Spring Boot和MySQL。当前项目情况:……
任务:……
约束:不改表结构,不新增依赖,不动公共模块。
输出格式:
- 你理解的业务规则
- 改动文件清单
- diff补丁
- 测试命令
- 不确定点
真实案例:优化一个慢分页查询。AI先给了三种方案,我让它列出每种方案的索引影响和回滚成本。它自己暴露了“深分页用游标”更合适,避免了一次瞎加索引。
【金句:AI最危险的地方,是它错了还装得很对。】
二、5个高频坑,踩一次疼三天
2.1 幻觉API和依赖
现象:AI调用项目里不存在的方法,或者编造一个库版本。
危害:编译不过,你查半天才发现它在做梦。
规避:让它先grep现有代码,禁止新增依赖。真要加,让它给出依赖坐标和替代方案。
2.2 大段重写改坏原有工程
现象:AI嫌你代码丑,顺手重写整个类,删了校验、改了方法签名。
危害:回归测试一片红,线上行为悄悄变。
规避:git开新分支,要求小diff,单次改动别超过200行。跨模块改动必须你手动确认。
2.3 忽略事务、并发、幂等
现象:AI只写happy path,关单和回滚库存拆在两个事务里,消息重复消费也不管。
危害:数据错乱,资损。
规避:提问时直接写清楚事务边界、锁、幂等键、失败重试。让它补异常路径和重复消费测试。
2.4 测试假绿
现象:AI写的测试全是mock,断言只有assertTrue(true),或者把异常吞了。
危害:看起来绿了,实际漏bug。
规避:先写失败测试,再写实现。集成测试用真实中间件,别全靠mock。
2.5 长会话上下文污染
现象:聊了30轮后,AI忘了前面



