跳到正文

🎈 想读易懂版?

本章有易懂版(大白话讲重点,10 分钟读完):[第 19 章 自动化工作流的可靠性(易懂版)](../../easy/第19章 自动化工作流的可靠性(易懂版).md)

第 19 章 自动化工作流的可靠性

本章目标:掌握可靠性的三支柱(留痕/验证/人审)、失败处理的正确姿势,以及幂等、可恢复、可回退等进阶能力。可靠的自动化 = 看得见(留痕)+ 验得出(校验)+ 人把关(人审)。宁可慢一点,不可错得漂亮。

19.1 自动化最大的敌人:悄悄出错

自动化最危险的不是"跑不起来",而是**"看起来在跑,其实错了"**。一份错数据的周报,比没有周报更有害——因为没人会怀疑它。

19.1.1 两种失败

类型表现危害
显性失败报错、中断、跑不起来低——你能看到
隐性失败跑完了,但结果错高——没人会发现

这一章全部内容,都在对抗"隐性失败"。

19.2 可靠性三支柱

留痕(Logging)→ 每次运行都有记录
验证(Validation)→ 产出自动校验
人审(Human-in-the-loop)→ 关键节点人把关

缺一个,可靠性就塌一角。

19.2.1 三支柱的关系

留痕:出了问题能追溯(案发现场)
验证:问题在交付前被发现(体检)
人审:重要结果有人拍板(最后一公里)

留痕管过去、验证管现在、人审管未来——三者互补,缺一不可。

19.3 支柱一:留痕(Logging)

每次运行,自动记录:

时间、输入(文件/参数)、步骤、关键中间值、输出、耗时
运行日志示例:
2026-08-08 18:00:01 开始:合并 3 个 CSV
2026-08-08 18:00:03 读取 data/a.csv(1,204 行)
2026-08-08 18:00:05 合并完成,共 3,612 行
2026-08-08 18:00:06 校验:行数一致 ✓,写入 output/

出问题时,日志就是案发现场。 没有日志的自动化 = 没有黑匣子的飞机。

19.3.1 日志要记什么

项目为什么
运行时间判断是否按时跑
输入参数复现问题必须
关键中间值定位错在哪一步
输出位置找到产物
耗时监控性能退化

19.4 支柱二:验证(Validation)

自动化内部要自带"体检",不能交付前才发现:

检查示例
数量校验输出行数 = 输入行数之和
格式校验日期格式、字段齐全
内容校验关键字段无空值、无重复
阈值告警环比变化 > 50% 时标记异常
例:合并后自动校验"行数 = 1,204 + 1,158 + 1,250 = 3,612",
不通过就报警,不静默通过。

19.4.1 校验的设计原则

  1. 可自动化:用代码检查,不靠人肉抽查;
  2. 足够敏感:关键错误一定触发告警;
  3. 不误报:告警阈值别设太低,否则狼来了;
  4. 失败即停:校验不过,立即停下,不继续往下跑。

19.5 支柱三:人审节点(Human-in-the-loop)

自动化跑得再稳,最后一公里永远留给人类

  • 重要输出:生成草稿 → 人确认 → 才发布;
  • 不可逆操作:先模拟 → 人批准 → 才执行;
  • 异常处理:自动失败自动暂停,等人决策,不自动重试掩盖问题。

19.5.1 人审该放在哪

位置例子原因
发布前周报发布、对外发送对外影响,人把关
不可逆操作前删除、覆盖、推送远程出错无法挽回
高风险决策预算调整建议判断权在人

19.6 处理失败的正确姿势

失败 → 停下(不硬跑)→ 记录现场 → 通知人 → 人决策:
      修输入重跑 / 修步骤 / 放弃本次

不要:失败后自动重试 10 次掩盖问题。

19.6.1 失败处理对比

做法结果
失败即停 + 通知人问题暴露,人能干预
失败自动重试 N 次掩盖问题,浪费资源
失败静默跳过最危险——产物残缺还当成功

19.7 可靠性的进阶:幂等与可恢复

  • 幂等:同一输入跑两次,结果一样(不会重复发消息、重复扣款);
  • 可恢复:第 3 步失败,修好后从第 3 步继续,而不是从头再来;
  • 可回退:本次输出错了,能一键回到上一次正确版本。

19.7.1 为什么幂等重要

自动化经常要重跑(第一次网络超时、数据源更新)。如果任务不幂等:

重跑一次 → 重复发了一封邮件 → 重复扣了一次款 → 灾难

设计原则:任务要能安全地重跑,结果与次数无关。

19.8 可靠性检查清单(部署前过一遍)

  • [ ] 有运行日志(时间/输入/步骤/输出)?
  • [ ] 有自动校验(数量/格式/内容)?
  • [ ] 校验失败会停下而不是静默通过?
  • [ ] 重要输出前有人审节点?
  • [ ] 任务可安全重跑(幂等)?
  • [ ] 失败后能恢复/回退?

19.9 练习

  1. 找一个你现有的自动化任务,检查它是否三支柱齐全;
  2. 补上日志和校验(至少数量校验);
  3. 模拟一次失败,确认它会"停下 + 通知人"而不是"静默出错";
  4. 用 19.8 检查清单给现有自动化打分,补缺口。

小结:可靠的自动化 = 看得见(留痕)+ 验得出(校验)+ 人把关(人审)。宁可慢一点,不可错得漂亮。下一章:记忆系统进阶。

以真实任务为主线的 MomaWork 助手实战读本