AI 生成的代码能上生产吗?production 改造经验

2026-06-18

AI 生成的代码”能跑”和”能上生产”是两回事:能跑只要求在你本地、用你给的那条输入,恰好不报错;能上生产要求它在真实流量、异常输入、并发、攻击和长期维护下都不出事。AI 代码默认只满足前者。

这篇写给已经在用 Claude CodeCursor 这类工具产出代码、准备把它推上线的人。结论先给:AI 代码可以上生产,但不能直接上生产——它是一份高质量初稿,必须经过人工 review、补测试、堵漏洞这套”production 改造”,才算交付。

为什么 AI 代码不能直接上线

AI 是”概率上最像正确代码”的生成器,不是”对你的业务负责”的工程师。它优化的是”看起来对、能编译、Demo 通过”,而生产环境考验的恰恰是它最薄弱的几个面:

  • 它没有你的上下文:不知道这个接口每秒要扛多少请求、哪个字段绝对不能为空、你们的合规红线在哪。
  • 它倾向于走 happy path:给正常输入就给正常代码,异常分支、边界值经常被省略。
  • 它会自信地编造:调用不存在的库函数、虚构 API 参数(幻觉),编译期未必报错,运行期才崩。
  • 它的”安全”是默认关闭的:除非你明确要求,否则它很少主动做输入校验、权限校验、防注入。

所以问题不是”AI 代码烂”,而是”AI 代码是半成品”。把它当资深同事交来的 PR 去审,而不是当成品直接 merge。

AI 代码最常见的四类问题

按上线后翻车的频率和杀伤力排序,盯紧这四类。

1. 安全漏洞(最致命)

AI 最容易漏的就是安全。高频问题:

  • SQL 注入 / 命令注入:直接字符串拼接 SQL 或 shell 命令,没用参数化查询。
  • 缺少鉴权与越权:接口不校验登录态、不校验”这条数据是不是属于当前用户”,A 用户能拉到 B 用户的数据。
  • 密钥硬编码:把 API key、数据库密码直接写进代码甚至提交进 git。
  • XSS / 反序列化:未转义用户输入直接渲染、直接反序列化不可信数据。

安全问题的特点是平时不报错,被人盯上才爆,所以测试覆盖不到,只能靠 review 和工具扫。

2. 性能与并发

Demo 数据量小,怎么写都快;生产数据量上来,问题集中爆发:

  • N+1 查询:循环里一条条查数据库,10 条数据查 11 次。
  • 没有分页 / 没有索引SELECT * 全表捞、深分页拖垮库。
  • 同步阻塞 / 没有超时:调外部接口不设 timeout,对方挂了你跟着挂。
  • 并发下的竞态:AI 写的代码默认假设单线程顺序执行,扣库存、改余额这类操作没加锁就会超卖。

3. 可维护性

能跑但没法长期养:硬编码满天飞、函数几百行、命名随意、没有注释也没有类型。第一版你能看懂,三个月后接手的人看不懂,AI 不会替你考虑团队协作成本。

4. 边界与错误处理

这是 happy path 思维的直接后果:空数组、null、超长字符串、负数、网络中断、第三方返回 500——这些分支 AI 经常直接不写,或者 catch 里吞掉异常什么都不做,出了问题连日志都没有。

上生产前的检查清单

把下面这份清单当作”AI 代码 → 生产代码”的硬性闸门,逐条过完再上线。

一、人工 Review(不可跳过)

  • 逐行读过,真懂每一行在干什么——不懂的代码绝不上线,让 AI 解释或重写。
  • 核对它调用的库函数、API 参数真实存在(防幻觉)。
  • 这段逻辑符合你们的业务规则和合规要求。

二、安全

  • 所有 SQL 用参数化查询,杜绝字符串拼接。
  • 接口有鉴权 + 越权校验(既验”是谁”也验”能不能动这条数据”)。
  • 用户输入全部校验 + 转义,输出做防 XSS 处理。
  • 跑一遍依赖漏洞扫描(如 npm audit / 等价工具)。

三、密钥与配置

  • 密钥、密码全部走环境变量或密钥管理,代码里零硬编码。
  • 检查 git 历史没把密钥提交进去;.env.gitignore 里。

四、错误处理与可观测

  • 覆盖边界输入:空值、null、超大、非法格式、并发。
  • 异常不被静默吞掉,关键路径有日志,调外部接口有 timeout 和兜底。

五、测试

  • 关键逻辑有单元测试,覆盖正常 + 异常分支(让 AI 帮你补测试,但你来定 case)。
  • 核心链路有一次端到端验证,别只信”本地跑通了”。

跑完这五关,AI 代码才从”能跑”升级到”能上生产”。

怎么让 AI 代码更接近生产标准

改造很费劲,但可以从源头让 AI 少埋坑——核心是把要求前置进提示词,别等它写完再返工。

  • 在提示里就写明非功能要求:明确”用参数化查询、加输入校验、处理空值和异常、不要硬编码密钥、补单元测试”,AI 给的初稿质量会高一截。这套提示词技巧本身值得系统练,关系到规约驱动开发(SDD)(规划中)的落地。
  • 小步生成、立即审查:一次只让它写一个函数或一个模块,写完马上读、马上测,别让它一口气生成几百行你来不及看。
  • 让 AI 当审查者:写完后另起一轮,让它”以安全审计的视角找这段代码的漏洞”,它经常能揪出自己第一版的问题。
  • 建立你的工程化规范:把团队的安全清单、命名规范、错误处理约定沉淀成文档喂给 AI。从随手让 AI 写、到有章法地用 AI,是从 vibe coding 到工程化(规划中)的关键一跃。

一句话:AI 负责快,你负责对。它把你从 80% 的体力活里解放出来,省下的时间正好用来死磕那决定成败的 20%——安全、边界、性能。

常见问题

AI 写的代码能直接上生产吗? 不能直接上。它是高质量初稿,必须经过人工 review、补测试、堵安全漏洞这套改造才能上线。把它当资深同事交来的 PR 审,而不是当成品直接 merge。

AI 代码最容易出哪类问题? 安全漏洞最致命(注入、越权、密钥硬编码),其次是性能/并发(N+1、缺索引、竞态)、错误处理缺失(不处理边界和异常)、可维护性差(硬编码、超长函数)。

怎么判断一段 AI 代码能不能上线? 最简标准:你是否真懂每一行、它调用的 API 是否真实存在、安全/密钥/边界/测试这几关是否都过了。任何一条不满足都不要上。

用 AI 写代码还需要懂技术吗? 更需要。AI 把写代码的门槛降低了,但把审代码、定方案、判断对错的要求提高了——能不能安全上生产,恰恰取决于你的工程判断力,而不是 AI 的生成能力。

怎么让 AI 少写出有问题的代码? 把非功能要求(参数化查询、输入校验、异常处理、不硬编码密钥、补测试)前置写进提示词,小步生成立即审查,再让 AI 以审计视角复查自己的代码。

👉 看看我们的 AI 编程实战体系课,或逛 AI 编程教程大全 把基本功打扎实。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。