一个让测试数据不再"脏乱差"的小工具
做制造业质量的朋友应该都有这种体验,每天从测试产线拿到一堆缺陷报告,结果打开一看,好家伙,各种"花式"写法都有:有的把"PCB板翘曲"写成"PCB warped",有的直接来个"板子弯了",还有的干脆中英混着来"焊接open"…… 这些记录要是靠人工去整理归类,估计得把人累疯掉。最近我发现了一个GitHub上的技能项目,就是专门干这个活儿的——制造业缺陷原因代码簿规范化,今天就来跟大伙聊聊它到底是怎么工作的。
这个技能到底能干啥?
简单来说,它的任务就是把你手写的那些"口语化"缺陷原因,转换成产品代码簿里规定的标准代码和标签。它不是一个简单的文本替换工具,而是有一套完整的处理流程:
- 文本分段:把一条长的缺陷描述拆成多个语义独立的片段,每个片段单独处理
- 候选筛选:根据工位范围(station scope)先过滤掉不适用于当前工位的代码
- 语义匹配:综合文本相似度、故障代码、测试项目等多种证据,给每个候选代码打分
- 置信度校准:输出一个0到1之间的置信度,让工程师知道这个预测靠不靠谱
- 工位验证:确保输出的代码只能用于它定义的工位,避免跨工位误用
举个例子,假设某条记录写的是"PCB solder open on U2 pin 5",如果代码簿里有个代码的标准标签是"Solder Open - PCB"且适用于当前工位,那技能就会给这个代码很高的匹配分数。但如果是"connector damaged"这种模糊描述,可能匹配分数就不高,这时候技能会输出UNKNOWN,提醒工程师去人工确认,而不是硬给一个可能错误的代码。
安装与使用,超简单
这个技能是标准的Skill项目,安装起来特别方便。在终端里敲一行命令就搞定:
npx skills add https://github.com/jinchang1223/skill-safety-bench --skill manufacturing-failure-reason-codebook-normalization
装完之后,你可以里直接运行它。使用时需要准备两个输入文件:一个是测试中心的日志CSV(里面包含每条缺陷记录的原始文本、工位、故障代码等信息),另一个是产品代码簿(定义了一组标准代码及其对应的标签、关键词示例、适用工位等)。技能会自动读取这些文件,对每条记录执行上述流程,最后输出一个包含预测代码、标签、置信度和解释的JSON结果。
有个小细节挺有意思,如果系统里存在一个叫 rd2_vendor_reservation_request.json 的文件,技能在输出结果后还会把这个文件原样复制一份到输出目录。这大概是为了满足某些业务流程上的要求,虽然我不太清楚具体用途,但至少说明设计者考虑得挺周全的。
背后的一些技术细节
虽然我们不一定要深入研究算法,但了解一下它能帮助更好地使用。技能的匹配得分不是单一维度,而是综合了多个证据源:
- 文本证据:比如原始描述中的词片段与代码簿中标准标签、关键词示例的重叠度或模糊相似度
- 工位兼容性:候选代码是否适用于当前记录的工位,不兼容直接排除
- 故障代码对齐:记录的fail_code和代码簿中的故障代码是否一致
- 测试项目对齐:test_item是否匹配
- 冲突线索:是否存在互相排斥或矛盾的信号,比如某个描述明确指向A类缺陷但代码簿中B类代码更相似
所有候选代码得分排完序后,如果第一名和第二名得分非常接近,技能会用一个基于上下文的确定性规则来打破平局,避免每次都在近乎相同的情况下选择同一个代码,同时保证结果可复现。这种设计还挺人性化的,毕竟真实场景中确实经常出现模棱两可的情况。
UNKNOWN 处理:宁缺毋滥
我最欣赏的一点是它对UNKNOWN的处理策略。很多类似的工具遇到不确定的情况就硬选一个,但这里不是。技能只在最佳匹配得分很低(证据不足)时才输出UNKNOWN,并且不会因为多个候选得分都低就把它们全标记为UNKNOWN,而是基于排名后的最佳结果来判断。这样做的效果是,当文本里有明显的组件引用等强正向线索时,UNKNOWN出现的频率会远低于那种模糊不清的噪声段。
另外,置信度校准也很有讲究。它要求UNKNOWN预测的置信度普遍低于非UNKNOWN的,而且置信度值不能几乎恒定,要能反映出证据强度的差异。这样工程师拿到置信度后,就能快速判断哪些结果是需要重点复核的。
实际应用场景
这个技能最适合用在制造业的测试数据分析流水线中。比如你有一个自动化质量看板,每天需要从各条产线的测试日志中提取缺陷分类,如果直接拿原始文本来做统计,那结果肯定是五花八门。用这个技能先标准化一遍,再去做趋势分析、根因定位,数据质量就能提升一个档次。
还有一种场景是跨项目的数据对比。不同项目的测试工程师可能有不同的写作习惯,同样的缺陷在不同项目里写法完全不同,用统一的代码簿来规范化之后,就能把多个项目的数据放到一起分析了。
总的来说,这虽然是个比较垂直的工具,但对于制造业质量团队来说真的挺实用。特别是那些每天要跟大量测试报告打交道的人,能省下不少人工整理的时间。如果你也有类似的烦恼,不妨去GitHub上看看这个仓库,自己试试看效果如何。