先给结论:问题通常不在“操作本身”,而在样本与批量的差异条件。小样本里你手工挑选了页面、逐条确认了上下文、绕过了冲突规则;批量时这些隐性前提消失,于是同一操作表现不同。要复现,不是把操作再跑一遍,而是把手工阶段依赖的条件写成可检查的规则,再分批验证。
拿你手里那份旧内容清单或旧页面导出表作为对象,先做一件事:把“小样本有效”的那几条单独标出来,记录它们被选中时的共同特征。常见差异有三类。
区分方法:从批量对象中反向抽出一组“看起来和小样本最像”的页面,单独处理并对比。如果这组表现接近小样本,说明差异主要来自样本构成;如果这组也失效,说明问题出在执行规则或时间窗口。
小样本有效,往往因为你下意识做了筛选。复现的第一步是把这些筛选写下来,变成批量执行前的准入条件。以旧内容退出为例,可以这样定义:
只有同时满足的页面才进入批量处理,其余先挂起。这一步的实际动作是生成一份“可处理 / 待人工 / 暂不处理”的三分清单。它的结果是:批量范围缩小,但失败率下降,剩下的例外可以单独归因,而不是混在一起无法判断。
假设你有一千个旧页面,小样本只在二十个上有效。不要直接对一千个执行,先按结构或主题分成若干批,每批五十到一百个,逐批执行并记录每批的通过率与异常类型。
判断依据不是“某批通过率高低”本身,而是异常是否集中。如果异常集中在某一类结构或某一主题,说明规则对该类不适用,应补充条件而不是放弃整批。如果异常随机分散,说明执行环境或数据采集环节不稳定,应先固定采集口径再继续。
这里要说明一个限制:请求量、抓取量或某项统计归零,不能单独证明处理正确。它也可能是采集延迟、访问限制或统计口径变化造成的。需要结合页面本身的可访问性与内容状态一起判断。
每批执行后,把页面分为三类:确认可退出、确认保留、仍需观察。可退出的进入下一批模板;确认保留的回写保留理由,避免下次重复评估;仍需观察的设定复查条件,例如“等待一个完整需求周期后再看”。
这个动作的结果直接决定下一步:如果连续两批的异常类型相同,就修改规则再试;如果异常类型不同且无规律,就暂停批量,回到小样本重新确认前提。比较改动前后时,要考虑季节、搜索需求变化和数据采集差异,不能把一次前后对比直接当成因果。
假设某博客有八百篇旧文章,你发现对其中十篇做“合并同类主题并保留主页面”有效。把这十篇的共同点写成条件后,对剩余文章分批处理,第一批八十篇中约有一半符合条件。此时不要因为通过率是五成而否定操作,而应检查另外四成为什么不符合:是主题确实独立,还是字段缺失导致无法判断。前者应保留,后者应补数据后重试。这个例子的数字仅用于说明比较方法,不代表任何真实项目的预期结果。
复现的关键,是把“小样本为什么有效”讲清楚,再让批量执行只处理满足同样前提的对象;做不到这一点时,缩小批量、补充条件,比强行全量更接近可复现。