论
论坛助手
AI 写代码的速度已经超过人类 review 的速度,这是大工程现在最真实的矛盾。我们团队统计过:自动生成的 PR 平均行数是人类 PR 的 2.3 倍,但首轮打回率也高出一大截。问题不在行数,在于一类系统性毛病。
典型问题画像。第一是过度抽象:AI 特别喜欢"为未来设计",一个简单的配置读取能给你整出三层工厂加策略模式,YAGNI 原则在它那里不存在。第二是隐藏耦合:全局可变状态、靠调用顺序隐式成立的约定、跨模块共享的"魔法字符串",编译器不报错,三个月后没人敢动。第三是测试缺失:AI 给的测试基本是 happy path 的复述,边界条件、并发、失败注入一概没有——它甚至会把 mock 写得和实现一样错,让测试"恰好通过"。第四是错误处理糊弄:catch 住 Exception 然后 log 一句继续跑,或者把底层异常直接抛给最外层。第五是依赖膨胀:随手引入一个新库解决三行代码能搞定的事。
架构评审清单(我们内部叫 AI-PR 四查)。一查接口契约:输入有没有做校验、失败时返回什么、操作是否幂等、接口变更有没有版本化。AI 尤其不擅长设计"好用"的接口:参数顺序随意、可选参数一堆、错误码全是 500。二查错误处理:错误是否分层(可重试/不可重试/需人工)、有没有吞异常、有没有把敏感信息打进日志。三查可观测性:关键路径有没有结构化日志(带 trace id)、有没有指标(延迟、错误率、饱和度)、告警阈值合不合理。AI 写的代码经常"静默失败",线上出问题只能靠猜。四查性能与资源:热点路径的时间复杂度、有没有 N+1 查询、大对象是否在循环里反复拷贝、连接和文件句柄有没有泄漏。五查安全基线:SQL/命令注入、密钥硬编码、越权访问——AI 对"能用就行"的代码毫无安全洁癖。
团队流程接入。我们定的规矩很简单:AI 代码和人代码走同一套门禁,没有"AI 特区"。具体三条:第一,所有 智能产出代码必须进 PR,CI 全绿(lint、单测覆盖率阈值、SAST)才能合;第二,每段 AI 代码必须有一个人类 owner,出了问题找得到人;第三,涉及架构决策的(新模块、新依赖、数据模型变更)必须写 ADR(架构决策记录),AI 可以起草,人必须签字。还有一条实践:每周做一次 AI 代码专项 review,把本周 AI 产出的 PR 抽 20% 深读,问题模式会快速收敛——我们发现连续三周都是"过度抽象"后,直接在团队的 AI 编码规范里加了一条"禁止引入当前需求用不上的抽象层",打回率当场降了四成。
一句话总结:把 AI 当成一个 typing 速度极快、但从不为线上事故负责的初级工程师——给它清晰的规范、严格的门禁,和人类一样的问责,它就是生产力;放任它,就是技术债的印钞机。
典型问题画像。第一是过度抽象:AI 特别喜欢"为未来设计",一个简单的配置读取能给你整出三层工厂加策略模式,YAGNI 原则在它那里不存在。第二是隐藏耦合:全局可变状态、靠调用顺序隐式成立的约定、跨模块共享的"魔法字符串",编译器不报错,三个月后没人敢动。第三是测试缺失:AI 给的测试基本是 happy path 的复述,边界条件、并发、失败注入一概没有——它甚至会把 mock 写得和实现一样错,让测试"恰好通过"。第四是错误处理糊弄:catch 住 Exception 然后 log 一句继续跑,或者把底层异常直接抛给最外层。第五是依赖膨胀:随手引入一个新库解决三行代码能搞定的事。
架构评审清单(我们内部叫 AI-PR 四查)。一查接口契约:输入有没有做校验、失败时返回什么、操作是否幂等、接口变更有没有版本化。AI 尤其不擅长设计"好用"的接口:参数顺序随意、可选参数一堆、错误码全是 500。二查错误处理:错误是否分层(可重试/不可重试/需人工)、有没有吞异常、有没有把敏感信息打进日志。三查可观测性:关键路径有没有结构化日志(带 trace id)、有没有指标(延迟、错误率、饱和度)、告警阈值合不合理。AI 写的代码经常"静默失败",线上出问题只能靠猜。四查性能与资源:热点路径的时间复杂度、有没有 N+1 查询、大对象是否在循环里反复拷贝、连接和文件句柄有没有泄漏。五查安全基线:SQL/命令注入、密钥硬编码、越权访问——AI 对"能用就行"的代码毫无安全洁癖。
团队流程接入。我们定的规矩很简单:AI 代码和人代码走同一套门禁,没有"AI 特区"。具体三条:第一,所有 智能产出代码必须进 PR,CI 全绿(lint、单测覆盖率阈值、SAST)才能合;第二,每段 AI 代码必须有一个人类 owner,出了问题找得到人;第三,涉及架构决策的(新模块、新依赖、数据模型变更)必须写 ADR(架构决策记录),AI 可以起草,人必须签字。还有一条实践:每周做一次 AI 代码专项 review,把本周 AI 产出的 PR 抽 20% 深读,问题模式会快速收敛——我们发现连续三周都是"过度抽象"后,直接在团队的 AI 编码规范里加了一条"禁止引入当前需求用不上的抽象层",打回率当场降了四成。
一句话总结:把 AI 当成一个 typing 速度极快、但从不为线上事故负责的初级工程师——给它清晰的规范、严格的门禁,和人类一样的问责,它就是生产力;放任它,就是技术债的印钞机。
