高轩
研发效能

AI 写代码越来越快,团队却开始堵在 Review:用 30 天补齐这 5 道质量闸门

AI Coding 提升了代码生成速度,也把瓶颈推向 Review、质量治理与上线验证。本文给出一套可在 30 天内落地的五道质量闸门。

高轩22 分钟阅读
代码生成速度与 Review 瓶颈
当代码生产速度被放大,Review、测试和上线控制会成为新的系统瓶颈。

最近一段时间,我们越来越明显地感受到:AI 已经把写代码这件事变快了。

以前,一个研发需要花半天完成的接口、测试或者重构,现在借助 Codex、Claude Code 等工具,可能一两个小时就能形成初稿。

但代码生成速度提高以后,新的问题也开始出现:PR 数量变多了,Review 队列变长了;代码大部分看起来都正确,但评审者很难快速确认边界;测试和维护成本不断向后转移;最后,团队并没有因为写得更快,就一定交付得更快。

AI 正在解决“代码写不出来”的问题,却把研发瓶颈推向了任务理解、代码评审、质量验证和上线控制。

所以,AI Coding 的落地不能只等于给研发采购一个工具。真正需要做的是,重新设计从任务定义、代码生成、自动检查、人工评审到灰度上线的整条研发流水线。

结合小团队、多系统维护和高并发核心链路的实际场景,我建议用 30 天补齐下面五道质量闸门。

01任务定义闸门:先让 AI 证明自己理解了任务

AI 最容易在需求不清楚时,生成一份“看起来完整”的错误答案。

因此,不能只给 AI 一句话,例如“帮我优化一下这个接口”。每一个交给 AI 的任务,都应该先补齐一张标准任务卡。

01业务目标

为什么要做这次修改?它解决的是哪个业务问题?

例如:降低接口超时率,减少人工重复处理。

02预期结果

上线后哪些指标、系统行为或用户体验会发生变化?

例如:P99 下降 15%,人工处理量减少 30%。

03影响范围

涉及哪些服务、模块、接口、数据表和外部依赖?

例如:adx-gateway、bid-service、Redis、Kafka。

04禁止修改

哪些核心链路、文件、字段语义或兼容逻辑不能动?

例如:不修改计费口径,不删除旧协议兼容逻辑。

05验收标准

满足哪些明确条件,才算任务真正完成?

例如:测试全绿、关键指标达标、灰度无异常。

06异常场景

超时、空数据、重复请求、依赖失败和回滚如何处理?

必须写清楚失败后的降级、告警与人工接管方式。

建议:任务卡未补齐时,AI 只允许做影响分析,不允许直接修改代码。

推荐的执行顺序是:先让 AI 输出影响分析,不立即修改代码;人确认范围后,再让 AI 生成实现计划;计划确认后才允许动手;完成后必须逐条对照验收标准。

02改动范围闸门:一个 PR 只解决一个主要问题

Coding Agent 很容易在完成需求的同时,顺手重构周边代码,把一个小需求扩大成不可控改动。

因此,需要给 AI 设置明确的改动边界。

这里不建议机械地用代码行数作为唯一标准。真正的判断标准是:一个熟悉模块的人,能否在 20—30 分钟内理解这次改动的主要逻辑和风险。

03自动验证闸门:机器能查的问题,不要再让人重复查

AI 写完代码以后,不应该直接进入人工 Review。

先把机器可以稳定发现的问题,全部放进 CI。人工评审应该把精力放在业务规则、系统边界和高风险决策上。

五道质量闸门
把任务定义、范围控制、自动检查、人工协作和上线验证串成一条完整流水线。

A. 基础工程检查|每个 PR 必须通过

01单元测试

go test ./...

02并发竞态检测

go test -race ./...

03Go 静态检查

go vet ./...

04代码规范与 Lint

golangci-lint run

B. 核心业务专项检查|按改动风险选择

01接口兼容性回归

核对接口字段语义、OpenRTB 协议和上下游兼容逻辑。

02超时与降级测试

模拟依赖超时、失败和限流,确认降级、熔断与告警可以生效。

03数据库变更检查

检查 DDL、索引、锁表风险、回滚 SQL 与历史数据兼容。

04利润与计费回归

对比修改前后的关键样本,确认计费口径、利润和结算结果一致。

05核心链路基准测试

比较吞吐量、P95/P99、CPU、内存与 goroutine 等关键指标。

06敏感信息与 Secret 扫描

检查密钥、Token、生产地址、设备标识和日志中的敏感字段。

合并原则:基础命令全部通过;命中高风险目录或业务规则时,对应专项检查必须完成。

04风险分级评审闸门:把高级研发留给高风险问题

AI 时代不能要求所有 PR 都由资深研发逐行评审,否则高级研发很快会变成人肉审核机器。

更合理的方式,是按照改动风险分级。

代码行数很少,不代表风险很低。一个日志字段修改可能几乎没有风险;一个竞价条件判断只改三行,却可能影响收入;一个限流器并发问题,也可能导致整个服务崩溃。

可以通过 CODEOWNERS 自动把不同目录的变更分配给对应负责人。

高风险目录责任表

通过 CODEOWNERS 自动把变更分配给对应负责人。

01竞价核心

目录:/internal/bid/

负责人:@adx-core-team

02利润计算

目录:/internal/profit/

负责人:@adx-core-team

03结算链路

目录:/internal/settlement/

负责人:@adx-core-team

04数据库迁移

目录:/migrations/

负责人:@backend-team · @data-team

05部署配置

目录:/deploy/

负责人:@ops-team

AI 代码评审的重点,不应该平均分配,而应该集中在高风险业务规则和系统边界上。

05上线验证闸门:通过 Review,不代表工作已经结束

AI 生成代码通过 Review 之后,还需要补齐上线后的验证。

对于 L2 以上的 AI 辅助改动,建议设置至少 24 小时观察期。

06给 AI 建立项目说明书,让经验不再重复丢失

上述五道闸门要真正持续运行,仓库里还需要一份 AI 可以读取的项目说明书。

建议在仓库根目录建立 AGENTS.md,并让 CLAUDE.md、Copilot 指令等规则尽量引用同一套事实源。

01项目结构

• cmd/:服务启动入口

• internal/bid/:核心竞价逻辑

• internal/profit/:利润计算

• internal/report/:数据上报

• migrations/:数据库变更

02必须执行

• 运行全部单元测试

• 运行 race 竞态检测

• 运行 golangci-lint

03禁止事项

• 未经明确要求,不修改竞价、计费和利润核心逻辑

• 不改变已有接口字段语义

• 不顺带重构需求范围之外的模块

• 不在代码中写入密钥和生产地址

04完成标准

• 所有测试通过

• 新增逻辑包含测试

• 说明影响范围和异常场景

• 提供灰度与回滚建议

同类 Review 问题连续出现两次,就应写回 AGENTS.md,避免团队重复纠错。

团队每次人工 Review 连续两次发现同类问题,就把它写回规则。

例如,AI 总是忽略超时处理、创建无边界 goroutine、Redis 异常时没有降级、修改协议字段时破坏兼容性,或者把设备敏感信息输出到日志。

这样,Review 意见才会从一次性的人工纠错,变成团队能够持续复用的工程能力。

07不要统计 AI 写了多少代码,要看这 8 个结果指标

AI Coding 最容易被统计的是代码行数、PR 数量、Token 消耗和使用人数。

但这些数据只能证明工具被使用了,不能证明研发交付真正变快。

AI Coding 真正有效,必须同时满足:交付周期下降、人工审核成本没有明显上升、线上质量没有下降。

0830 天实施计划:先跑通一个仓库,再逐步扩展

30 天实施蓝图
先建立规则和基线,再补齐工作流、质量闸门和上线观察。

试点仓库的目标可以先定得简单一些:交付周期缩短 20%,Review 等待时间下降 30%,线上缺陷率和回滚率不能高于原有基线。

只有在一个仓库里证明“更快且不更差”,才值得逐步扩展到更多系统。

写在最后

AI Coding 的成熟标志,不是团队写出了更多代码。

真正重要的是,在不增加风险、不扩大返工、不拖垮 Review 的前提下,团队能不能更快地交付业务结果。

对于技术负责人来说,下一步不应该只是继续采购更强的模型,而是把 AI 生成能力接入一套能够定义任务、限制边界、自动验证、按风险评审和持续观察的工程系统。

当任务更清晰、改动更可控、机器先完成基础检查、高风险问题被正确分配、上线结果可以持续验证时,AI 才会从“代码生成器”,真正变成团队稳定的生产力。

最小可执行文件清单

AGENTS.md

CLAUDE.md

.github/pull_request_template.md

.github/CODEOWNERS

.github/workflows/quality-gate.yml

docs/ai-coding/risk-levels.md

docs/ai-coding/review-checklist.md

docs/ai-coding/release-observation.md