1395 字
7 分钟
AI写的代码能上生产环境吗?我们在公司试了一个月

AI写的代码能上生产环境吗?我们在公司试了一个月#

今年三月份,我们团队做了个实验:在接下来的一个月里,日常开发全面使用AI辅助编码。

团队6个人,主要做内部管理系统和API服务。技术栈是TypeScript + PostgreSQL。

实验结束后,我整理了数据和一个不太乐观但也不算悲观的结论。

开始前的预期#

说实话,我们团队的预期挺高的。

因为之前每个人都在自己的小脚本里用过AI,效果都不错。有人用ChatGPT写正则,有人用Claude解释报错信息,有人用Cursor重构代码。大家都很兴奋。

但”个人效率工具”和”团队生产方式”是两回事。这个区别是我们在这一个月里才真正体会到的。

第一个星期:混乱#

第一个星期的PR review,我的感受是:代码量增加了,但质量不稳定。

最典型的一次,一个同事用AI写了一个用户权限校验模块。代码看起来没问题,结构清晰,注释完整。但我在review时发现了一个问题:

// AI生成的代码
function checkPermission(user: User, resource: string): boolean {
if (user.role === 'admin') return true;
if (user.role === 'editor') return resource !== 'settings';
if (user.role === 'viewer') return resource === 'dashboard';
return false;
}

看起来逻辑没问题对吧?但实际业务里,editor角色在某些情况下也应该能访问settings(比如编辑系统配置时)。这个”某些情况”是由另一个字段department决定的,但AI不知道这个业务规则。

问题在于:AI按照字面需求写代码,但业务规则往往不在需求文档的字面上。

那个星期,我们的PR驳回率从平时的20%升到了45%。不是代码有语法错误,而是”功能对了但细节不对”。

第二个星期:调整#

第二个星期我们定了个规矩:

任何AI生成的代码,提交PR时必须标注”此代码由AI辅助生成,以下业务规则需要reviewer重点检查:[列出规则]”。

这个规矩看起来多余——你提交的代码本来就应该知道业务规则。但实际上它改变了提交者的心理:从”AI帮我写了,应该没问题”变成了”AI帮我写了,但我得确认它对不对”。

这个星期驳回率降到了30%。

第三和第四个星期:稳定下来#

到后面两个星期,我们总结出了一套流程:

1. 开发者用AI生成初版代码
2. 开发者自己跑测试,验证基本功能
3. 开发者对照业务规则,手动检查边界条件
4. 提交PR,标注AI辅助部分
5. reviewer重点检查业务逻辑和边界条件
6. 通过后合并

最后两个星期的数据:

指标实验前实验后
日均代码提交量800行1200行
PR驳回率20%22%
平均PR review时间45分钟35分钟
生产bug数/周3.22.8
开发满意度(1-10)7.18.4

代码量增加了50%,但bug数没增加。review时间还缩短了——因为AI生成的代码结构通常比较清晰,review起来反而比人写的乱代码容易。

最大的收获不是效率#

实验结束后我们开了个复盘会。大家的一致意见是:

AI最大的价值不是写得快,而是降低了”从零到一”的门槛。

以前写一个新功能,开发者要从头想结构、想命名、想实现。现在有了AI,可以先让它出一个初版——这个初版即使只有60分,也比空白页面强。开发者可以把精力集中在”怎么从60分改到90分”上,而不是”怎么写第一行”。

一位同事的原话:“以前我花半小时在想”这个函数叫什么、参数怎么设计”上。现在AI先给我一个版本,我在此基础上改,半小时够我改出一版能看的。“

仍然不适合用AI的场景#

也不是所有场景都适合。我们总结了几个”别用AI”的情况:

  1. 核心业务逻辑——最容易被AI忽略隐含规则
  2. 数据库迁移脚本——一旦出错不可回滚,不能赌概率
  3. 安全相关代码——认证、鉴权、加密,AI容易写出看似正确但有漏洞的代码
  4. 性能关键的热点路径——AI不会主动做性能优化,写出来的代码通常是”能跑就行”

结论#

回到标题的问题:AI写的代码能上生产环境吗?

我们的答案是:能,但不能直接上。必须经过人工检查,特别是业务逻辑和边界条件。

把AI当一个非常勤奋但缺乏业务经验的初级开发者。它能帮你完成大量重复性工作,但你不能让它独立做关键决策。

一个月下来,我们的开发体验确实改善了。但如果有人问我会不会推荐所有团队都这么做——我的回答是”先试两周再决定”。因为每个团队的代码质量门槛和业务流程不同,别人的经验不能直接套用。

你们团队用AI编码了吗?效果怎么样?