OpenClaw 工作流出错以后,团队最常遇到的问题是:现在知道结果错了,但不知道当时那条事件长什么样,也不知道新版本修好以后能不能复现。没有事件重放,排错只能靠猜,补偿也容易补错对象。
事件重放是 事件总线 的下一步。事件总线负责把触发器、队列、状态机和审计串起来;事件重放则让团队能拿同一条事件重新跑一遍,用来排错、验证新版本和生成补偿任务。
先保存原始事件
要重放,必须保存原始事件。这里的原始事件不是处理后的摘要,而是外部系统传来的载荷、接收时间、来源系统、验签结果、幂等键和标准化后的事件对象。两份都要留,因为排错时既要看外部输入,也要看内部转换是否出错。
这和 Webhook 触发器 的入口治理有关。入口层如果没有验签、去重和标准化,后面就很难做可信重放。
重放不能破坏幂等
事件重放最怕把旧动作又执行一遍。比如重新发送客户邮件、重复创建工单、再次修改 CRM 字段。重放模式必须和正常执行模式分开,默认只跑读取、判断和模拟写入,不直接触发外部副作用。
如果确实需要补偿写入,也应该生成新的补偿任务,而不是复用原任务继续执行。可以参考 回滚与补偿机制,把重放结果变成可审批的修复动作。
版本隔离决定重放价值
重放时要记录使用的是哪个工作流版本、哪个提示词版本、哪个工具版本、哪份知识库快照。否则今天重放通过,不代表当时的问题被真正理解,也不代表上线后不会再出现。
这一步能和 OpenClaw 版本管理与灰度发布 结合。新版本上线前,可以用历史问题事件做回放集,比较旧版本和新版本的输出差异。
灰度验证要用真实事件样本
很多团队测试 Agent 工作流时只写几个理想样例,结果上线后被真实事件打穿。事件重放可以把过去一周的真实事件抽样出来,在影子模式里跑新版本,看分类、工具调用、异常提示和人工确认比例是否变化。
如果某个新版本让高风险动作明显增多,或者让失败率上升,就应该暂停灰度。这里的判断要靠审计日志和指标,而不是只看几个演示案例。
总结
OpenClaw 事件重放的核心,是让工作流能用真实历史事件复盘和验证。保存原始事件,保护幂等,隔离版本,把重放结果变成补偿或灰度证据,Agent 工作流才有持续修复的基础。