KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
05 · AI 时代的 CI:流水线从"执行脚本"变成"有判断力的闸门" — keel 龙骨
这一章回答:AI 进了流水线之后,哪些环节真的被改变了,哪些只是营销词汇;以及在"写代码变便宜"之后,什么反而变得更值钱。
这一章回答:AI 进了流水线之后,哪些环节真的被改变了,哪些只是营销词汇;以及在"写代码变便宜"之后,什么反而变得更值钱。
先给结论:AI 不会让交付变简单,它会让下游闸门成为瓶颈。 这就是为什么对做 AI 应用的人来说,交付工程不是副业而是主战场。
一、先把数据摆出来(而不是凭感觉)
三条可核查的外部证据,回答"AI 到底改变了什么":
| 来源 | 关键结论 | 对交付的含义 |
|---|---|---|
| DORA《State of AI-assisted Software Development》2025 | 约 90% 的技术从业者已在工作中使用 AI,80%+ 认为提效;2025 年的数据显示 AI 采用与交付吞吐量上升相关,但同时交付不稳定性也上升(2024 年的数据里甚至是吞吐下降) | "生成得快"不等于"交得稳"。写代码的成本下降了,验证与吸收的成本上升了。 |
| 同上:Google 工程师 1110 份开放回答的主题分析 | 最高频的四个用例是代码生成、信息检索、代码评审、测试;负面主题高度一致:验证开销、幻觉、知识边界、技能退化、制造技术债 | AI 在流水线里的四个落点,正好对准这四类场景——这不是巧合,是需求驱动 |
| DORA 的定位判断 | AI 是放大器:高绩效组织(平台/规范/测试扎实)被放大收益,混乱组织被放大混乱 | 决定 AI 收益的前提条件是平台与基础规范,不是模型版本 |
必须诚实说明口径:DORA 用的是贝叶斯建模 + 自报调查的相关性,不是随机对照的因果结论;Google 工程师的样本也偏单一组织。所以这些数字适合用来"提出假设"和"建立方向感",不适合用来承诺收益。
另一条独立的因果证据(METR 的 RCT,2025 年发布、2026 年初更新说明存在选择效应)显示:在特定任务集上,资深开发者使用 AI 反而慢约 19%,而使用者本人仍觉得更快——感知与事实会系统性背离。这条带给交付纪律的直接推论是:凡 AI 参与的环节,结论必须用可观测指标来判定,不能用"感觉快了"。
二、AI 在流水线里的六个落点
① PR 摘要与风险评分 ──► ② AI 代码评审 ──► ③ 测试选择/生成 ──► ④ 失败归因
│
⑥ 部署风险评分 ◄── ⑤ 金丝雀自动分析 ◄──────────────────── 自动修复(受限)
| # | 落点 | 它在替人做什么 | 成熟度 / 风险 |
|---|---|---|---|
| ① | PR 摘要与风险评分 | 总结改了什么、可能影响哪些模块,给评审人一个入口 | 成熟;几乎无副作用 |
| ② | AI 代码评审 + LLM-as-judge | 用 diff + 流水线证据(截图、trace)对照团队未成文的规范挑问题 | 有用但有假阳性;只建议,不建议阻塞 |
| ③ | 测试选择与生成 | 按 diff 选出真正相关的测试;为新增逻辑生成针对性用例,有价值的才沉淀进套件 | 选择已可用;生成需要人审"断言是否真的断言了" |
| ④ | 失败归因 | 读日志和 diff,把"哪个测试、什么错误、可能在哪个变更引入"直接贴在 PR 上 | 成熟;把调试从"翻日志"变成"读结论" |
| ⑤ | 金丝雀自动分析 | 灰度期间对比错误率/延迟,超阈值就自动回滚 | 强依赖指标质量(见第四章 05 节的前提) |
| ⑥ | 自动修复 / 自愈流水线 | agent 读取失败 → 提 patch → 重跑 | 风险最高,必须设边界(见下) |
一句话概括这套变化:过去流水线回答"通过还是失败",现在它开始回答"哪里、为什么、要不要回滚"。
六个落点里最容易被误用的:自动修复
自愈流水线听起来很美,落地要过了三关才安全:
- 边界明确:只处理确定性的、CI 自身的错误(依赖漂移、lint 风格、锁文件未同步),不处理业务逻辑失败——"为了让测试变绿而改测试"是灾难级自动化。
- 同样的流水线审 twice:agent 的修复必须通过和人的代码完全相同的门禁。"同一条流水线既审判 agent 的代码,也审判 agent 的修复"是这套机制唯一的安全底线。
- 痕迹可审计、动作可逆:修复的 commit 必须标明是自动修复,来源可追溯,一键可回退。
三、AI 来了之后,哪些东西反而更值钱了
| 能力 | 为什么变重要 |
|---|---|
| 质量门禁的设计 | 生成变便宜 → 到达闸门的量变大 → 闸门的质量决定吞吐能不能兑现 |
| 可观测性与发布反馈 | AI 能改代码但不能替你发现"线上悄悄坏了";没有指标,自动回滚就是玄学 |
| 小批量习惯 | LLM 乐于输出大改动;把大改动切成可独立发布的小单元,是唯一对冲手段 |
| 规格与约定的固化 | AI 只能读它读得到的东西。约定不在仓库里(没写成文件或规则),就等于不存在 |
| 回滚能力 | 变更更快 → 出错更快 → 回退必须比出错更便宜 |
这张表就是"AI 时代为什么要学交付工程"的答案:AI 把成本从"写"搬到了"验、合、放、退"四个字上,而这四个字正是这门课的全部内容。
四、把 AI agent 放进流水线时的三条安全边界
任何让 AI 持有凭据、能改代码或能触发部署的设计,都要先回答这三个问题:
| 边界 | 具体做法 | 不做的后果 |
|---|---|---|
| 身份与权限 | CI agent 当"非人身份"管理:独立的最小权限角色;只读日志的角色不允许写 IAM、不允许删库删 namespace | 一次越权就是一次生产事故 |
| 沙箱执行 | 需要跑代码/构建时才创建临时隔离环境(容器或 microVM),用完即销毁 | 不可信行为直接污染宿主 runner |
| 人在环 + 成本可见 | 敏感动作(发布、回滚、改基础设施)保留人工确认;token 消耗按 agent / job 粒度可见 | 静默放权和账单失控是同级别的两种失败 |
一个值得借鉴的工程形态是"编排者自己不能直接写代码":由编排层持有凭据、通过受限的工具接口调用外界,而真正的代码修改在另一个隔离沙箱里完成。把"能拿到凭据"和"能执行任意代码"这两件事拆到不同进程里,是 agentic 系统安全设计的通行做法。
五、把 AI 接进流水线的最小可行路径
阶段 1(零风险) PR 摘要 + 失败归因:只产出文字,不改任何东西
阶段 2(低风险) AI 评审设为建议评论 + 测试选择,只是不阻塞
阶段 3(中风险) 自动修复限定在 lint/格式/锁文件这类确定性错误,且改动单独一个 commit
阶段 4(高风险) 发布风险评分 + 金丝雀自动分析;必须有指标与人工兜底
每一阶段都要回答同一个问题:这一步如果 AI 判断错了,最坏会发生什么、多久能被发现?
动手:可观察结果
| 动作 | 产出物 | 判断标准 |
|---|---|---|
| 给 PR 加自动摘要 | PR 顶部一段自动摘要 | 打开三个历史 PR,看摘要是否一眼看懂改了什么 |
| 统计你自己近一个月的 PR 体积 | 行数分布 + 平均评审时长 | 体积与评审时长的关系图;> 500 行的 PR 是否明显更久 |
| 加一条"只看串行"的 AI 评审 | 至少评审 10 个 PR | 记录它给的建议里有用 / 假阳性的比例,这个比例决定了它能不能升级为门禁 |
| 让 AI 做失败归因 | 一份失败日志 + 归因结论 | 对比你自己读日志得出的结论是否一致,命中率要能算出来 |
| 写一份"自动修复白名单" | 一份清单 | 白名单里的每一条都要能说明"为什么它的错误是确定性的" |
故障注入
| 注入方式 | 观察什么 | 说明的现象 |
|---|---|---|
| 让 AI 评审对一个安全改动报高置信度漏洞 | 是否阻塞合并 | 若阻塞 → 你会得到一个"大家被迫忽略 AI"的流水线 |
| 让自动修复去修一个失败的业务测试 | agent 会做什么 | 它很可能去改测试/改断言——所以要先用白名单限定范围 |
| 灰度期间人为抬高错误率 | 金丝雀是否自动回滚 | 没有指标或指标不对 → 自动分析形同虚设 |
| 给 CI agent 一个只读一信息的宽松角色 | 能否改到不该改的资源 | 权限扩散是最常见的失控路径 |
| 让 AI 生成一段"看似正确"的实现 | 覆盖率是否上升、变异存活是否上升 | 覆盖率涨而变异存活高 = 典型的"写了能跑但没断言"的代码 |
自测题
- DORA 2025 报告里,AI 采用度上升同时伴随哪一项指标恶化?它对流水线设计意味着什么?
- 为什么"AI 是放大器"这个定位,比"AI 提升生产力"更能指导实践?
- 自动修复流水线必须通过的三条边界是什么?缺一条会导致什么?
- 为什么要让"持有凭据"和"能执行代码"分属不同进程?
- 如果只能给一条流水线加一项 AI 能力,你选哪一个?为什么它风险最低而收益确定?