AI 生成代码,不代表能交付

AI 在项目里改了代码,然后呢?

你在 Cursor 或 Claude Code 里打开项目,说了一句"把这个用户模块重构一下,加上权限控制"。

AI 嗖嗖地读完了项目结构、接口定义、现有的认证逻辑,然后直接在三个文件里改了代码。它改得很认真——加了 Role 枚举、更新了接口鉴权、还顺手补了注释。

你看了下 Diff,确实比你预想的干净。提交,合入。

CI 跑了三分钟,然后……

测试失败了。

不是因为 AI 改的逻辑有问题,而是因为它引入了新的权限字段,但下游依赖这个接口的另一个服务还在用老版本——那个服务也在重构,但 AI 并不知道它们会在同一天合入。历史代码里埋着时间差,AI 看不到。

你修了接口版本依赖,再跑。CI 通过。部署。线上跑了十分钟,告警来了——新加的权限字段没有做空值保护,边界情况漏了。

从"AI 直接改了代码"到"功能真正上线",中间大概隔着:接口兼容性、测试覆盖、边界条件、CI/CD 流程、线上监控。

这不是某个人的问题。这是每个引入 AI 的工程团队,都在交的学费。


第一部分:生成率 30-50%,采纳率 20-30%

真实数据印证了这个感受。

这是某互联网大厂一年 AI 使能实践里,最扎心的两个数字。

生成率 30-50%:当开发者向 AI 工具发起请求,有三到五成的概率,AI 能给出一段看起来可用的代码。

听起来挺高了?别急着高兴。

采纳率 20-30%:AI 给出的代码,真正被开发者直接使用(不做修改或只做微小修改)的比例,不到三成。

换句话说:AI 吭哧吭哧生产出来的东西,十次里有七次,工程师还得重写或者大改。

AI 生成 → 直接采纳:20-30%
AI 生成 → 修改后用:40-50%
AI 生成 → 放弃重来:20-30%

换句话说:AI 十次出力,七次白干。

这个 Gap 来自哪里?AI 生成代码只是整个研发流程的一个起点,之后还有编译、单元测试、集成测试、Code Review、缺陷修复、合并部署……每一个环节都是一道坎。

AI 强在中间那一格。周围全是活儿。

核心洞察: AI 是加速器,工程能力是底盘。

底盘不稳,加速越快,漂得越远。


第二部分:三个工具,三道坎

在内部推进 AI 使能时,部署了多个工具,覆盖代码生成、测试生成、知识管理三个核心场景。我们一个一个拆。

2.1 AI 代码生成工具:代码能写,跑不跑得起来是另一回事

AI 代码生成工具是最早上线的 AI 编程产品,定位是"代码生成加速器"。

开发者可以在 IDE 里直接提问,比如"帮我实现一个用户鉴权的接口",AI 就会在项目中直接修改或新增代码文件——不再只是输出文字建议,而是真的写进去。

实际效果怎么样?

初期数据:生成率(AI 能给出代码建议的比例)约为 35-45%,在简单、常见的编程任务上表现较好——比如生成 CRUD 接口、常见工具函数、简单算法。

采纳率:早期只有 20-25%,与平均水平一致。

为什么采纳率低?问题出在哪里?

场景理解偏差。 这类工具的对话上下文有限,它不知道你正在处理哪个服务、哪个数据模型、哪个接口规范。它给的是"一般正确"的代码,而工程需要的是"这个项目正确"的代码。

缺乏真实上下文。 AI 看不到你们的内部依赖、团队约定、历史债务。它写的是标准答案,你们考的是开卷考试。

边界条件缺失。 AI 倾向于生成"happy path"——理想情况下的正常流程。但生产代码需要处理:超时、重试、鉴权失败、网络异常、参数越界……AI 在这些地方往往"偷懒"。

怎么改的?思路很简单:让 AI 少做它不擅长的事,多做它擅长的事

  • 限定生成范围:把 AI 的生成限制在经过验证的代码模式内,减少"一般正确但项目不合规"的情况
  • 增强上下文注入:在 IDE 层面让 AI 能读到项目的类型定义、接口文档、测试用例,降低上下文缺失的问题
  • 分层验收:AI 生成代码后,引导开发者先跑编译、再跑单元测试,用工具链强制兜底

几轮迭代后,采纳率提升到 35-40%。不是 AI 变聪明了,是工程手段弥补了它的不足。


2.2 智能测试生成平台:AI 生成测试,听起来美,用起来全是坑

智能测试生成平台,目标是解决"测试覆盖率不足"这个老大难问题。

研发团队都知道测试重要,但写测试是个苦活儿:无聊、费时、短期看不到收益。所以测试覆盖率长期低迷,一出问题就是线上故障。

AI 来写测试,看起来是完美的解法。

实际情况呢?

生成率:约 40-50%,覆盖率较高的场景(接口规范、数据模型清晰)AI 表现较好。

采纳率:初期只有 15-25%,比代码生成还低。

问题在哪里?

测试用例不等于测试价值。 AI 可以生成大量测试用例,但不一定生成有价值的测试用例。很多 AI 生成的测试,是在测试"边界条件A调用了函数B"这种无意义的路径,而不是真正高风险的业务逻辑。

断言质量差。 AI 生成的断言往往是默认值(assert response.status_code == 200),但真正有价值的断言要检查数据正确性、副作用、并发安全——这些 AI 给不出来,除非有人告诉它"你们关心的是什么"。

可维护性问题。 AI 生成的测试代码往往缺乏清晰的组织结构和注释,三个月后工程师自己都看不懂当初的测试在测什么。

改进路径同样不是让 AI 升级,而是补充工程约束

  • 用例分级策略:让 AI 重点生成高风险场景的测试用例,而不是广撒网。用分级标准(业务影响、变更频率、历史故障记录)指导 AI 的生成方向。
  • 断言模板化:提前定义好高价值断言的结构,AI 只负责填充参数,不负责设计断言逻辑。这样既保留了 AI 的效率,又保证了断言质量。
  • 可维护性评分:在测试生成后跑一个可维护性检查,不达标的测试不允许合入,用工具强制兜底。

平台迭代后,测试采纳率提升到 30-35%。更重要的是,覆盖率从 45% 提升到了 68%,这是实打实的工程保障。


2.3 内部知识问答平台:AI 总结知识,知识真的在团队里沉淀了吗?

这是内部的代码问答与知识总结工具,目标是让分散在代码评审、文档、会议纪要里的知识,被 AI 自动整理、沉淀、检索。

工具的逻辑很简单:工程师日常产出大量有价值的经验,但散落在各个角落,没人整理。AI 把它们挖出来、归好类,需要的人随时能搜到。

这个方向本身没错。 但知识沉淀从来不只是技术问题——它是个社会学问题。

没人愿意主动贡献知识。 这是企业内部知识库的通病:读的人多,写的人少。这类工具用 AI 自动生成知识摘要,降低了贡献门槛,是一个正确的方向。但 AI 生成的质量不稳定,有些总结有用,有些则是正确的废话。

知识的上下文消失了。 一段代码评审结论,放在原始 PR 里是有上下文的(为什么这样做、为什么不那样做、历史原因是什么)。AI 提取出来单独呈现,上下文丢失,用的人不知道边界在哪里,容易误用。

知识的保鲜问题。 AI 总结的是某一时刻的知识,代码在变、架构在变、人员在变,沉淀的知识很快就会过时。如果没有人持续维护,平台里的内容会逐渐变成"历史档案"而不是"工作参考"。

改进思路也是补充工程机制:

  • 内容审核机制:建立知识质量评审,AI 生成的摘要必须经过工程师确认后才能沉淀
  • 使用率追踪:统计哪些知识被检索、被引用,长期无人访问的内容自动归档或提醒维护
  • 关联绑定:PR 合入时自动关联相关知识条目,代码变了知识也跟着更新

这个案例说明一件事:AI 工具可以降低知识整理的成本,但无法替代知识管理的意愿和机制。 工具再好,没人维护,也是无源之水。


第三部分:让 AI 真正跑起来的工程方法论

三个工具的实践指向同一个结论:AI 能生成内容,但端到端交付还需要三样东西——链路、数据、机制。

3.1 链路化:从单点提效到流程闭环

把 AI 工具当独立产品用,是最大的误区。代码改了不知道影响谁,测试插入了没人管,知识沉淀了没人更新。

把 AI 工具直接嵌进 CI/CD 流水线:

这样,AI 生成的内容不是直接交给人,而是先过工具链。人的角色从"审核 AI 输出"变成"定义规则、设定阈值、处理异常"。效率和安全同时提升。

链路化的本质,就是用工程流程的可预测性,兜住 AI 的不确定性。


3.2 数据飞轮:让反馈真正优化模型

AI 工具的第二个关键,是建立真实的反馈闭环。

采纳率 20-30%,剩下的 70-80% 发生了什么?被拒绝了,为什么拒绝?修改了,改了什么?这些数据才是让 AI 工具持续变好的原材料。

内部建立了一套反馈采集机制:

  • 采纳追踪:每次 AI 生成代码,标记采纳/修改/拒绝,关联具体任务类型和技术栈
  • 质量评分:合入后,代码在后续迭代中是否有缺陷、是否有重构,记录到数据里
  • 反馈注入:定期用这些真实数据微调内部模型,让工具越来越懂这个团队的上下文

这套机制的核心逻辑很简单:你用什么数据训练,AI 就擅长什么。 没有真实反馈,AI 永远只能用通用数据给出通用答案。


3.3 关键结论:AI 使能 = 工程能力建设 × AI 能力叠加

回到最初的问题:AI 能生成代码,为什么不等于能端到端交付?

因为端到端交付需要的,不只是"生成代码"这一个能力。

它需要:编译检查、测试覆盖、Code Review、缺陷追踪、数据反馈、流程机制、知识管理……每一样都是工程能力,不是 AI 能力。

AI 使能的本质,是用 AI 能力叠加在已有的工程能力上,放大效率,而不是用 AI 替代工程能力。

没有测试框架,AI 生成测试就是空中楼阁。没有 CI/CD 流程,AI 生成的代码就是裸奔。没有反馈机制,AI 工具永远停在初始版本。

工程能力是底座,AI 是顶上的加速层。底座越扎实,加速效果越好;底座不稳,AI 越快翻车。


结尾:最重要的能力,从"写代码"变成了什么?

回到开头的那个场景:AI 直接在项目里改了代码,但接口兼容性、测试覆盖、边界条件、CI/CD 链路,每一道都需要人来兜底。

这不是 AI 不够好。是 AI 做了它能做的事,而你还需要做它做不了的事。

那些事情是什么?

定义问题。 AI 能写代码,但你得先告诉它:解决什么问题、用什么接口、数据格式是什么。

验收质量。 AI 生成的代码能跑,但能跑不等于正确。你得定义"正确"的标准是什么,然后验收它。

管理上下文。 AI 不知道你们团队的约定、历史债务、业务约束。你得补充这些信息,或者设计流程让 AI 能读到这些信息。

建立机制。 工具再好,没有维护机制也会退化。反馈机制、知识更新机制、持续优化机制——这些不能少。

AI 不会让程序员失业。

但会用 AI 的程序员,正在重新定义"写代码"这件事的边界。

那条边界,已经从"写出正确的代码",移动到了"交付有价值的功能"。


文章首发于小小寰宇

posted on 2026-07-26 23:25  Arvid2176  阅读(6)  评论(0)    收藏  举报