首页 独立开发实战内容详情

AI 产线的质量闸门:三道防线挡住 90% 的废品

2026-11-03 12

AI 产线的质量闸门:三道防线挡住 90% 的废品

核心要点

  • LLM 生成的代码,产出当原材料看,绝不能当成品信——验收必须交给确定性程序,不是人眼。
  • 三道闸门按成本递增排布:node --check 语法校验 → Playwright 真实浏览器断言 → 内容质检,便宜的先跑,贵的兜底。
  • BAD 即删:不合格产物直接删文件打回重生成,不要人肉修补,补丁摞补丁是上下文污染的开始。
  • 实测一晚批量产 172 个工具页,三道闸门拦下 35 个废品,最终漏检 5 个,漏检率约 3%。

一、翻车现场:为什么不敢让 AI 裸奔量产

凌晨一点,批量生成任务跑完,172 个工具页齐刷刷落盘。我随手点开第 47 个——白屏,Console 一片红,Uncaught SyntaxError 刺得眼睛疼。

这就是让 LLM 裸奔量产的下场。同一段 prompt 跑两遍,一遍能上线,一遍直接炸给你看,概率论教你做人。

更阴的是静默失败:模板字符串没闭合,构建工具一声不吭,页面照样部署出去,直到用户访问那一刻才翻车。谁接盘谁被坑惨了。

二、第一道闸门:node --check,五秒拦下低级废品

语法校验:node --check file.js 只解析、不执行,任何语法层面的硬伤当场报红。

IIFE 少写一个右括号——(function(){...}() 这种货色,人眼扫十遍未必能看出来,node --check 一秒拍死。

为什么不用 ESLint?产线要的是快和确定,一个文件毫秒级出结果才是能扛住批量任务的姿势。ESLint 那套规则引擎拿来守产线,属于杀鸡上了牛刀还嫌牛刀钝。

成本几乎为零,所以它永远排第一个。便宜的道理就在这:先用最便宜的检查过滤掉最大量的垃圾,别让后面的贵工序白烧。

三、第二道闸门:Playwright 真实浏览器断言

语法对了,页面就一定活吗?不一定。运行时炸的、DOM 空的、依赖加载失败的,node --check 一个都看不见。

真实浏览器断言:headless 起一个 Chromium,真实加载页面,然后盯三件事——

  • pageerror / console error:JS 运行时报错,一个都不许有。
  • 内容渲染:document.body.innerText.length 必须超过阈值,防止页面活着但内容是空的。
  • h1 存在:document.querySelector('h1') 非空,标题都没渲染出来,SEO 等于白给。

有人问:我自己开浏览器扫一眼不行吗?行,头十个页面可以。第一百个的时候你的眼睛已经是装饰品了——人肉 review 在批量场景下的漏检率,高到不敢直视。

这道的成本明显上去了,起浏览器、等渲染、跑断言,单页好几秒。所以它必须排在语法校验后面,只处理语法上活下来的那批。

四、第三道闸门:内容质检,挡住“技术上正确、商业上垃圾”

第二道过了,只能说页面活着,不能说页面有价值。LLM 最擅长的就是产出一个语法完美、渲染正常、但内容是废话的页面。

长度阈值:正文低于设定字数,大概率是模型偷懒输出到一半就收工了,或者被截断了自己都不知道。

关键结构存在性:该有的块一个不能少——h1、核心要点列表、正文段落、FAQ,缺任何一块直接判 BAD。结构残缺的页面,上线就是给搜索引擎递投名状:这站没人管。

说人话就是:前两道验“代码能不能跑”,这一道验“内容配不配上线”。两码事,缺一不可。

五、BAD 即删:不要修,重新生成

三道闸门任何一个不过,怎么处理?我踩过坑,两种路线都试过。

人肉修补是死路:你打开废品文件,读一遍模型生成的两百行,找到那个漏掉的括号,修好,保存——五分钟没了,而且下一页还有。这不叫工程,这叫给 AI 打工。

BAD 即删才是正解:unlink 掉文件,任务打回生成队列,带着失败原因重新生成一遍。LLM 重roll一次的成本,比工程师读十分钟别人的代码便宜一个数量级。

但要有重试上限。同一个页面连续重生成 3 次还不合格,说明 prompt 或模板本身有硬伤,再roll下去就是烧 token 赌运气,这种进人工兜底桶,回头改上游。

六、实战数据:一晚 172 个工具页的真实账本

那晚的任务:172 个工具页,批量生成 + 全量过闸。账本长这样——

  • 第一道 node --check 拦下 19 个,全是语法硬伤,括号没闭合占大头。
  • 第二道 Playwright 拦下 11 个,JS 运行时错误 7 个,内容空渲染 4 个。
  • 第三道内容质检拦下 5 个,正文长度不达标 3 个,缺关键结构 2 个。
  • 首轮全过率 80%,35 个废品全部删掉重生成后通过。

最终漏网多少?人工抽检 20 个加后续上线反馈,抓出 5 个漏检,漏检率约 3%。三道闸门挡住了 87.5% 的废品,约等于题目说的那个九成。

漏检的是哪类?全是内容层面的“微妙垃圾”——字数够、结构全、语法对,但读起来是车轱辘话。这就是确定性规则的天花板:它验得出坏,验不出平庸。所以别想躺赚,人工抽检这最后一道人肉闸门,砍不掉。

闸门之外我还顺手加了个兜底:上线后跑一轮站内链接巡检,扫出 404 和意外 301 一把抓。排查状态码含义的时候,直接用本站的 HTTP 状态码查询 对照,比翻文档快,CI 日志里看到一串码不用再来回搜。

FAQ

Q1:有了三道闸门,是不是就能全自动无人值守了?

不能。3% 的漏检率看着小,摊到几千个页面上就是上百个平庸废品,人工抽检这道人肉闸门砍不掉。

Q2:能不能用另一个 LLM 当裁判来质检内容?

能加,但成本直接翻倍,而且裁判自己也会翻车、也会看走眼。产线先用确定性规则把 90% 的垃圾挡掉,LLM 裁判留给最后那层拿不准的疑难杂症。

Q3:每页都起浏览器跑断言,一晚几百页不会慢死吗?

单页几秒是实话,但 Playwright 可以并行开多实例,一晚的时间窗口足够跑完全量。慢不是问题,上线废品才是——时间可以买,口碑买不回来。

  • 评论列表 (0条)

 暂无评论,快来抢沙发吧~

发布评论