AI 说"已完成",交付物却是空的:质量门禁到底在拦什么

AI 说"已完成",交付物却是空的

任务状态是绿的,写着"已完成"。

点开交付物:标题在,正文只有一段,参数表是空的,配图占位符没换。

这种情况在 AI 生产里出现得比想象中频繁,而且原因不在模型。模型确实"完成"了它理解的任务,只是没有任何一环检查过产物到底长什么样。状态机看到函数返回了就标绿,返回的是一句"已为您生成 20 条优质标题"也一样标绿。

门禁要解决的正是这件事。下面按"拦什么"来讲,而不是按功能模块讲。

一、拦假装成功

有一类失败最阴险:产出看起来完成了,实际什么都没有。模型说"已处理",但没给结果;说"已生成 20 条",但列表是空的。

这类问题的判定方式很朴素:产出里必须有证据。 声称生成了 20 条,就必须真的有 20 条可数的条目。声称修改了某个文件,就必须有该文件修改后的内容。声明本身不算证据。

我们在门禁里专门留了一条规则叫 no_mock_success,就是干这个的。名字直白,因为要拦的东西也很直白。

判断一个 AI 生产系统有没有在管这件事,方法很简单:让它做一件产出可以计数的事,比如"写 20 条标题",然后看返回。如果状态是成功但内容里数不出 20 条,而系统没有任何反应,那就是没人管。

二、拦不该出现在交付物里的东西

产物本身是好的,但里面混进了不该给客户看的内容。这类问题最难发现,因为产物"看起来"完全正常。

常见的有四种:

混进来的东西例子后果
计费与内部元数据产出里带着 token 用量、内部编号、成本字段客户看到内部定价逻辑
提示词残留正文里留着"以下是你要的内容:""作为一个 AI 助手"一眼看出是机器直接吐的
敏感词平台禁售词、医疗功效表述、绝对化用语上架被驳回,甚至扣分
调试信息报错堆栈、模型名、重试次数显得系统不稳定


前两类可以靠规则自动拦。"作为一个 AI 助手,我将为你……"这种开场,我们单独设了一条拦截规则。理由很简单:客户买的是成品交付,不是一段被机器转述的过程。

后两类要靠清单,而且清单得跟着平台更新。上架类内容里,敏感词检查是每次都要跑的,不是抽查。

三、拦跑偏

产物质量没问题,格式也没问题,但讲的是另一件事。

跑偏有三种典型:

主体跑偏。 需求是 A 型号的详情页,产出通篇在讲 B 型号。这类错误在批量任务里出现得最多,特别是同一批里混了多个 SKU 的时候。

结构缺失。 需求写了要有五个部分,产出只有三个。少的那两个通常是最后两个,因为模型写长了容易收尾。

结构不可解析。 人眼看得懂,但机器读不了。表格分隔符错位、标题层级跳跃、JSON 多了个逗号。人看着没问题,下游系统直接挂。

这三类对应的门禁,核心不是"判断好坏",是对照需求逐项核对。需求里写了什么,产出里就得有什么,少一项就拦。这类规则实现起来不复杂,但它能挡掉大部分返工。

四、最容易自欺的一层:写在文档里,还是跑在执行路径上

前面三类都是"拦什么"。这一节是"拦得住吗",也是我最想让人注意的部分。

一条门禁有三种状态:

状态含义
运行时生效每次执行都会真的跑,不合格就停
仅声明文档里有这条规则,但执行路径上没有它的代码
硬拦截命中即终止,不进入下一环节,也不进人工队列


"仅声明"是这里唯一危险的状态。 它看起来和"运行时生效"没有区别,都写在门禁清单里,都有一个像模像样的名字。区别只在于:跑一次不合格的产出,它会不会真的拦住。

所以判断一个 AI 生产系统有没有真在管质量,不要去数它有多少条规则。要去测它:

故意喂一个必然不合格的产出,看它拦不拦。 比如给一个缺了两个必备章节的稿件,看系统是放行、退回重试,还是标记为待人工确认。

拦不住,那清单上的条数就只是文档长度。

这个测法只需要一次,成本极低,但能立刻分辨出纸面门禁和真门禁。我建议所有上 AI 生产的团队都先做这一步,再谈门禁条数。

五、门禁不只挂在产出上,还挂在岗位身上

产出只是最后一道。在产出之前,得先保证干活的岗位本身是装配完整的。

一个岗位要能上线干活,至少要具备五项:

门禁项检查什么
工作台配置这个岗位的输入输出界面是不是真的存在
能力配置它声称会做的事,有没有对应的能力定义
交付档位产出是文稿、表格还是结构化档案,有没有声明
能力快照当前这版能力是可复现的,不是临时拼的
黄金样例有没有一份"做对了长什么样"的参照物


五项缺一,这个岗位就不该对外开放。缺"黄金样例"的最常见——没有参照物,就没法判断产出是好是坏,只能靠人感觉。

这也是为什么岗位的完整度要显示成分数而不是状态。分数能看出缺几项,状态只能看出"没齐"。

六、门禁有成本,别把它当免费的

门禁太松,等于没有。门禁太严,会拦掉合格产出——这类叫误拦,代价是返工和人工介入量上升。

三个降低误拦成本的做法:

把不确定的判定交给重试,而不是直接拒。 结构不可解析这类问题,重试一次往往就对了。直接判死会让失败率显得很高。

给人工复核留出口,并且记录原因。 被拦下的东西不该直接消失,应该带着"为什么被拦"进入人工队列。这些记录本身很有价值,它们暴露的是规则和真实标准之间的偏差。

区分"每次都要跑"和"定期抽样"。 事实一致性、敏感词、结构完整这类每次都要跑。语气风格、创意水平这类不定期抽检就够了。全都每次跑,成本会失控。

三个容易搞混的地方

门禁不是评测。 门禁是每次执行都跑的下限检查,拦的是"不合格"。评测是定期的能力测量,看的是"好到什么程度"。两件事经常被混成一件事,结果是门禁被写成了评分表,每次运行都要跑一堆主观判断,又慢又不准。

门禁不替代人的签字。 门禁能保证产出不是废的,不能保证它是对的。涉及对外发布、付费调用、写外部系统这类动作,仍然需要人在闸门前签字。

门禁条数不是指标。 生效条数和误拦率才是。一份 100 条的门禁里如果有 60 条是"仅声明",这套系统的实际防护能力只有 40 条的量,但管理层会以为有 100 条。

相关阅读

延伸阅读:Onworkly 交付保障:质量门禁与人审机制、为什么 ChatGPT 写的文案不能直接用?——AI 交付的质量门禁、智能大脑完全指南:从一句话目标到任务交付。

数字员工在我们这里怎么编排、怎么过质量门禁,AI 中心里有完整的岗位和编队说明。