Article

AI Vibe Coding 20《评测即发布门禁:把质量规则写进交付流水线》

到这一阶段,团队通常已经有了:

  • 多 Agent 协作链路;
  • 能力注册中心;
  • 基础观测与告警。

但上线质量仍不稳定,核心原因是:评测还停留在“参考信息”,没有进入“发布决策”。

这一章要做的就是把评测从“建议项”升级为“硬门禁”:

  • 指标不达标,禁止发布;
  • 高风险能力只允许灰度;
  • 发布后持续验收,不达标自动回滚。

学习目标

完成本章后,你将能够:

  • 建立 AI 能力发布门禁模型(质量、合规、成本、稳定性四条线)。
  • 把离线评测、在线验收、灰度放量串成统一发布流水线。
  • 设计“阈值 + 趋势 + 风险权重”综合判定机制。
  • 让每次发布都有可复核证据链,而不是靠主观判断。

一、为什么“测了”仍会出事

常见现象:

  • 发布前做了离线评测,分数看起来不错;
  • 一上线就出现策略违规或执行失败;
  • 复盘发现评测报告没有进入发布系统,只是附件。

根因在于:

  1. 评测样本不覆盖真实高风险场景。
  2. 指标只看平均值,不看长尾与漂移。
  3. 没有阻断机制,发布决策和评测结果脱钩。

所以要从“评测报告”升级为“评测门禁”。

二、门禁模型:四条线同时达标

一个可用的门禁模型至少包含四类阈值:

  1. 质量线:业务准确率、首轮通过率、可执行性。
  2. 合规线:策略违规率、越权调用率、敏感输出率。
  3. 稳定线:任务成功率、p95 延迟、重试放大率。
  4. 成本线:单有效任务成本、预算占用斜率。

2.1 门禁策略示例

release_gate:
  capability_id: cap.code.review.v3
  quality:
    business_accuracy: ">= 0.93"
    action_executability: ">= 0.97"
  compliance:
    policy_violation_rate: "<= 0.005"
    unauthorized_tool_call_rate: "<= 0.001"
  reliability:
    success_rate: ">= 0.985"
    p95_latency_ms: "<= 2500"
  cost:
    cost_per_accepted_task_usd: "<= 0.20"

四条线任意一条不通过,都应阻断进入生产。

三、把离线评测接入 CI:每次变更先过“静态门”

触发条件包含:

  • Prompt 改动;
  • 工具契约变更;
  • 知识库版本更新;
  • 模型/路由策略调整。

3.1 CI 阶段检查清单

  1. 契约兼容性检查(Schema Diff)。
  2. 回归评测集(黄金样本 + 历史事故样本)。
  3. 对抗样本评测(歧义输入、越权诱导)。
  4. 成本模拟与配额冲击分析。

CI 的目标是快速发现“确定性坏改动”。

四、在线验收门:灰度不是形式,而是第二道门禁

离线通过后不能直接全量,必须进入灰度验收。

4.1 灰度阶段指标

  • 线上业务准确率(抽检 + 自动对齐)
  • 策略违规率(实时守护统计)
  • 工具调用失败率(含超时、参数错误)
  • 用户侧负反馈率(撤回、二次返工)

4.2 灰度放量规则

canary_policy:
  steps:
    - traffic: 5
      duration: 2h
      pass_if: ["success_rate >= 0.985", "policy_violation_rate <= 0.005"]
    - traffic: 20
      duration: 4h
      pass_if: ["business_accuracy >= 0.93", "rollback_trigger == 0"]
    - traffic: 50
      duration: 8h
      pass_if: ["cost_per_accepted_task <= 0.20"]

未满足条件不得进入下一档。

五、综合判定:阈值不够,还要看趋势与风险权重

固定阈值适合“是否合格”,但不适合“是否安全放量”。

你应增加两类判断:

  1. 趋势判断:指标是否持续恶化(例如 3 个窗口连续下滑)。
  2. 风险权重:高风险能力(财务/权限)使用更严阈值。

5.1 风险加权示例

  • 低风险能力:通过线 = 基准阈值。
  • 中风险能力:通过线 = 基准阈值 + 10% 安全余量。
  • 高风险能力:通过线 = 基准阈值 + 20% 安全余量 + 人工审批。

六、把门禁结果产出为“发布证据包”

每次发布都应自动生成证据包,包含:

  • 本次变更范围(Prompt/模型/工具/知识库版本)。
  • 离线评测结果(样本集版本、指标、失败案例)。
  • 灰度阶段指标曲线与告警记录。
  • 最终发布决策(通过/拒绝/回滚)与责任人。

证据包的价值:

  • 事故复盘可追溯;
  • 审计合规可交付;
  • 团队经验可沉淀。

七、Foundation 接口实现建议

public sealed class GateDecision
{
    public bool Passed { get; init; }
    public string ReasonCode { get; init; } = string.Empty;
    public IReadOnlyList<string> FailedChecks { get; init; } = Array.Empty<string>();
}

public interface IReleaseGateEvaluator
{
    GateDecision Evaluate(string capabilityId, string candidateVersion);
}

public interface IEvidencePackService
{
    string Generate(string capabilityId, string version, GateDecision decision);
}

在流水线层面只认 GateDecision.Passed,不允许“人工口头豁免”绕过系统。

八、组织协同:谁有权放行

建议采用双钥匙机制:

  • 技术负责人:确认质量与稳定性。
  • 业务/合规负责人:确认策略风险可接受。

高风险能力必须双签;低风险能力可单签自动化放行。

九、失败后的标准动作

门禁失败后不要只给“失败通知”,要有标准化处置:

  1. 自动回滚到上一个稳定版本。
  2. 生成失败归因工单(含失败样本与指标快照)。
  3. 标注阻断类型(质量/合规/稳定/成本)。
  4. 要求下一次发布附带修复验证证据。

没有标准动作,门禁就会沦为“红灯提示器”。

常见坑

1) 门禁指标太多

超过 8-10 个核心指标后,团队会开始“选择性解释”。

2) 只在主干分支做评测

应在 PR 阶段就执行基础门禁,提前拦截问题。

3) 灰度只看成功率

必须联看策略违规率和用户负反馈率,否则会漏掉高风险问题。

4) 失败可人工强行上线

一旦存在常态化“例外上线”,门禁体系会迅速失效。


下一章进入《从协作到自治:Auto-Run 工作流的安全边界设计》,重点解决“让 AI 自动执行”时的权限、审批、回滚与审计闭环。