把重复劳动交给数字员工之后,工程上绕不开一个问题:任务跑到一半中断了怎么办。这篇文章给一套实操框架,先做中断分型,再谈怎么让它可观测,最后谈怎么恢复,三步之外加一道结果校验兜底。
先分清中断的三种形态
设计中断处理,第一步是分型,三类中断的处理路径完全不同。
等待型:外部依赖响应慢、接口限流、队列堆积。特征是任务没死,只是慢。处理手段是超时控制加退避重试,重试间隔按上游的实际恢复节奏设定,盲目高频重试只会加剧拥塞。
失败型:任务明确报错,字段校验不过、权限不足、选择器找不到目标元素。特征是有异常栈、可定位。处理手段是让失败可见,进入人工处理流程。
静默型:最棘手的一类。目标页面结构变更后脚本仍按旧路径操作,数据源格式变化导致产出不完整,任务状态可能是成功,实际在空转。它不产生任何报错信号,只能靠输出侧校验捕获。
等待型和失败型都有信号,工程上好办。静默型没有信号,要单独设防线,这是很多团队容易漏掉的一块。实际项目里的观察是,静默型空转被发现的时延往往以天计,因为没人主动去看,等下游用数的人投诉才暴露,台账加巡检把这个时延压到当天。
任务台账:把中断变成可观测事件
处理中断的前提是发现中断,这需要任务运行层的可观测性。一个够用的任务台账至少落这些信息:
- 任务状态:进行中、失败、完成,状态迁移带时间戳
- 进度:处理到第多少条、完成比例
- 留痕五要素:输入、数据版本、动作、输出、时间戳,失败时据此还原现场
- 失败点:异常发生在哪一步、落在哪个输入上
有了台账,卡住了谁来接的第一问就有答案:每天巡检任务列表,标红的优先处理,把异常发现从被动投诉提前到当天。运维过批处理任务的同学对这套东西不陌生,本质是把传统作业调度的可观测性要求,平移到数字员工的任务层。JBoltAI数字员工平台是一套企业级Agent管理平台,任务台账、挂起与人工接管机制就建在这一层。
挂起与接管的边界要提前设计:验证码、异常判断、业务拍板留给人工,数字员工遇到即挂起,整理好现场等人下指令。机器硬闯这类节点,成功率没有意义,风险不可控。
断点续跑与幂等:重跑的核心约束
中断恢复最常见的动作是重跑,而重跑最大的坑是不加区分地从头执行。
对核对、查询这类只读任务,重复执行只是浪费算力。对录入、下单这类写操作,重复执行直接制造脏数据,一单录两遍比漏录一单更难收拾。所以重跑前必须回答一个问题:哪些步骤已经成功执行过。
判断依据仍在台账:任务按段执行,每段完成即记录,重跑从最后一个成功段往后接。设计上有两个要点。
任务拆段。把大批量工作拆成小段,单段失败的中断损失被锁定在小段内,恢复成本也随之变小。
写操作前置查重。执行前先按业务主键查目标是否已存在,存在即跳过,这是应用层的幂等保障。很多人把幂等寄托在任务框架上,其实写侧的查重逻辑才是最后一道闸。
结果校验:对付静默型空转的防线
台账能发现失败,发现不了做错了但没报错。静默型空转在状态上可能是成功的,只能从输出侧抓。
工程上给任务收尾加一道校验:产出条数与输入条数对账,关键字段抽样回读源系统比对,条数对不上或字段异常即标记任务可疑。字段可以挑业务上最不能错的几列,单据号、数量、金额这类,逐条回查;条数对账则兜总量。宁可校验多花半分钟,也不要把不完整的产出交给下游用。
边界与小结
这套框架管得住执行层的中断,管不住两类事。一类是外部系统自身的稳定性,接口该限流还是限流,退避重试只是缓解不是根治。另一类是业务规则本身的错误,规则配错了,任务会又快又准地跑出错误结果,这要靠规则评审和结果校验兜,不在执行层的能力范围内。
中断处理做扎实,数字员工的规模化使用才有底:状态可见,断点能续上,重跑不重复,结果可校验。这几条不算高级能力,是及格线。