写脚本需求时,例外情况不能只写“特殊情况另行处理”,而要写成可判定的条件、可选择的动作和可接受的代价。对已有经验的读者来说,更稳妥的做法是:先保留人工判断中真正影响结果的例外,再把能稳定复现的例外改写成规则,最后只退出那些依赖上下文、无法脚本化的部分。下面围绕保留、改写、退出三种取舍展开,说明各自适用前提。
人工经验里常见的“这个页面先别动”“这条词要单独看”,未必都是例外,也可能是规则没有描述完整。判断依据是:同一类页面、同一类查询、同一类数据状态下,人工是否总会做出相同动作。如果会,它更适合被改写为规则;如果只在特定业务背景下才成立,才应保留为例外。
例如,假设一个脚本负责根据页面正文与查询词的匹配程度,决定是否建议改写标题。人工经验说“品牌词页面不要动标题”,这看似是例外,但如果品牌词页面数量稳定、命名规律明确,就可以改写成“当页面属于品牌词集合时,跳过标题建议”。反过来,“这个页面最近有活动,先别改”依赖活动排期,更适合保留人工确认,而不是塞进脚本。
这一步的实际动作是:把人工口中所有“例外”逐条列出,再让执行者回答“换一个同类页面,你还会这样做吗”。如果答案是否定的,说明它需要补充前提;如果答案是肯定的,说明它应进入规则。这个动作的结果会直接影响下一步:规则化的例外越多,脚本可自动处理的范围越大,但误判代价也越需要提前定义。
当例外依赖脚本拿不到、或拿到也不可靠的信息时,保留人工判断更合理。常见情况包括:业务临时调整、页面承担线下转化任务、同一路径下混有不同模板、数据采集口径刚发生变化。此时脚本不应强行给出结论,而应输出“待确认”及需要人工补充的字段。
保留不等于放任。需求里至少写清三件事:触发保留的条件、保留期间脚本还能做什么、人工确认后如何回流。比如触发条件可以写成“页面同时满足模板A且近一次内容变更来自人工编辑”,保留期间脚本只做数据记录,不生成改写建议;人工确认后把结论写回配置表,下一次运行就能按新规则处理。这样做的代价是流程变长,但能避免把偶发情况固化成错误规则。
如果例外数量持续增加,说明当前脚本边界过宽。此时应优先收窄适用范围,而不是继续堆叠例外。收窄后可能减少自动化覆盖,但能降低人工复核成本,下一步更适合先在小范围页面验证规则稳定性。
能改写的例外,通常具备三个特征:判断依据来自脚本可读取的字段;同一条件下人工动作一致;误判后有可接受的补救方式。满足这些条件时,应把例外写成“条件—动作—记录”三段式,而不是一句模糊备注。
例如,假设脚本要判断某页面是否适合继续保留现有标题。可以写成:当页面标题与正文首段主题词重合度低于设定阈值,且页面近一次改版只调整了样式,则标记为“建议人工复核标题”,不直接改写。这里的阈值、时间范围和“只调整样式”都需要来自可读取的记录。若记录缺失,这个例外就只能保留人工判断,不能硬写成规则。
改写后的结果会影响下一步:如果复核标记过多,说明阈值过严或字段不可靠,应先调整判断条件;如果标记很少且人工结论一致,才可以考虑把复核动作进一步自动化。注意,一次改动前后比较要考虑季节、搜索需求变化和数据采集差异,不能只凭某个指标升降就认定规则有效。
有些例外不是边角情况,而是人工经验的核心价值所在。比如需要结合销售反馈、合同条款、线下门店状态才能判断的页面处理,脚本只能提供线索,不能替代判断。这时更合理的选择是退出该环节的自动化,把脚本定位为“收集和呈现证据”,而不是“给出最终动作”。
退出的代价是人力投入不会明显下降,但好处是责任边界清晰。需求里应明确脚本输出什么、人工看什么、结论记录在哪里。若后续发现某类判断反复出现且依据稳定,再把它从退出区移回改写区。这个顺序比一开始就追求全自动更稳妥。
无论保留、改写还是退出,例外描述都建议包含以下字段,避免执行者自行猜测:
一个简短的假设例子:脚本原本要对所有页面输出标题改写建议。人工经验说“栏目页不要按文章页处理”。如果栏目页有稳定模板标识,就改写成“模板为栏目页时,跳过标题改写建议,只记录正文主题词”;如果没有稳定标识,就保留为人工确认,并让脚本输出页面路径和模板特征供判断。前者能减少人工量,后者能避免误改。两种选择都成立,区别在于标识是否可靠、误判代价是否可接受。
最后要强调的是,例外描述的目标不是把人工经验全部翻译成规则,而是让脚本在不确定时知道该停在哪里。保留、改写和退出没有绝对优劣,只有适用前提是否成立;前提越清楚,后续调整越有依据。