没人检查那根护栏还在不在——护栏永远绿的真相
来源:dev.to — 2026-09-07
📋 概述
如今每条 AI+工程文章都在讲加护栏:agent 绕不过的 lint 规则、改提示词前跑的 eval、每个 PR 上的审阅机器人、由真实生产故障建成的回归套件。作者写过其中一些、也仍然相信它们。但过去一周他在这平台的三场对话底下其实是同一件事,且无关该加哪些护栏:一根从未触发过的护栏和一根悄悄停跑的护栏,产出完全相同的输出——绿色。自动化一个检查时,你把一个问题换成了另一个问题却没察觉。
🔑 核心要点
- 核心洞察:从未触发的护栏与悄悄停跑的护栏输出相同——都是绿的;一个 pipeline 若永久静默卡死,从远处看和根本不存在毫无二致,Actions UI 里没有任何地方写着「这个工作流四十次运行从未成功过」
- 三个真实案例同根:Vicente 的 Deploy 工作流门控在 CI 通过上、而 CI 从没在 main 绿过,于是永远 skipped,一根永远打不开的门;Heinrich 的论断——每个评分器都需要一个已知坏的孪生样本加它上次真正拒绝的日期,卡死的门烦人让人查,卡开的门只会不停说 yes;作者的——没有 harness 版本、数据集快照、提示修订附着的 eval 结果不是证据而是自报的说法
- eval 套件如何烂而不自知:改提示模板后评分器正则失配于是全过、改数据集字段后 loader 返回空表零用例 0.4 秒跑完报 100%、provider 改默认后评分模型更好说话——三者看起来都像成功
- 护栏信任前要四样:必须拒绝的已知坏输入(每根 lint 规则都要有自己该抓的 canary)、上次拒绝的日期记录(不是上次运行——「上次什么时候抓到东西」答不出就是装饰)、偶尔有人看运行次数(空数据集零用例是硬失败而非 100%,要断言用例数)、结果上的出处(harness commit、数据集哈希、提示修订、模型版本、时间戳)
- 随 agent 更糟而非更好:自动化审查一切的代价是正确性更重地压在无人照看的机器上——护栏在你不再盯着它看、刚好来不及发现它停跑的那一刻变得承重
💡 金句
When did your guardrail last say no? If you can't find it, you don't have a guardrail — you have a green light with nothing behind it.
👍 0
👎 0
← 返回 dev.to 首页