L4 总览:组织能暂停、恢复的工作流
正在读取学习记录…
工作流是一组有顺序、有条件的操作。例如客服处理退款:读取订单,核对退款条件,等待主管确认,再执行退款。每一步都有输入和结果,下一步根据结果继续。把步骤明确写进程序,就能回答“现在到哪一步了”“接下来做什么”。
L3 已经让 Agent 根据观察决定下一步。L4 把一整个任务组织起来:同时查两份资料时如何汇总,进程退出后如何继续,工具超时后怎样处理,以及等待人工确认时把状态保存到哪里。模型可以生成建议,程序安排步骤、保存进度。
用一次退款区分这两层:L3关注“读到订单后,下一步该查退货记录还是询问客户”;L4关注“订单和退货记录都查完后再生成草稿,草稿批准后才能提交退款,明天回来还能从等待审批的位置继续”。前者决定下一步动作,后者把这些动作放进一条有顺序、能保存进度的流程。
只有一项查询时,一个函数就很直观。步骤增加后,程序需要记住已完成什么、哪些结果还没回来、是否正在等人。工作流把这些安排集中写清楚,客服查看任务时就能知道它卡在哪一步。
用一份退款流程认识各个角色
假设客户留言:“订单已退货,请帮我退款。”程序先读取订单与退货记录,整理成退款草稿,再交给主管确认。主管批准后,退款服务接收一个稳定的业务编号,完成操作并返回退款单号。
| 名词 | 白话含义 | 流程中的例子 |
|---|---|---|
| 节点 | 做一项具体工作的函数 | 读取订单、生成草稿 |
| 状态 | 程序现在掌握的数据和进度 | 草稿金额、是否批准、下一步位置 |
| 事件 | 已经发生的一次变化 | “草稿已保存”“主管已批准” |
| 检查点 | 保存下来的某一时刻的状态 | 金额已核对,接下来等待批准 |
可以把状态想成办事进度卡,把事件想成盖章记录。进度卡方便知道现在在哪里,记录方便追查怎样走到这里。内存里的变量随进程结束消失;写入文件或数据库后,另一进程才有机会取回它。
按这条路线学习十二个知识点
前四篇先把任务组织好,中间四篇处理执行与人工等待,最后四篇处理规模增加后的故障。
| 顺序与文章 | 演示中会看到什么 | 接着解决什么 |
|---|---|---|
| 1. 显式图、状态机与条件边 | 流程根据状态走不同分支 | 把下一步写明确 |
| 2. 并发、子图与结果汇聚 | 两项工作各自产生结果,再统一收集 | 同时做事时怎样合并 |
| 3. 检查点与持久状态 | 前一个进程保存进度,后一个进程继续 | 让任务跨越进程重启 |
| 4. 事件溯源与确定性重放 | 从事件记录重新算出当前状态 | 追查和恢复过程 |
| 5. 重试、退避与熔断 | 暂时失败后重试,连续失败后暂停访问 | 给恢复动作设置节奏 |
| 6. 幂等、补偿事务与重复投递 | 重复请求复用已有结果,部分完成后撤销影响 | 处理已经发生的操作 |
| 7. 人工审批、暂停与恢复 | 保存待确认内容,批准同一份内容后继续 | 把人接进流程 |
| 8. 任务队列与背压 | 任务排队,队列满时返回忙碌,调用方稍后再提交 | 控制进来的工作量 |
| 9. 异步任务、取消与断点续跑 | 取消后清理资源,恢复已保存进度 | 处理持续运行的任务 |
| 10. 乱序、部分失败与一致性 | 识别旧版本结果,分别保存成功和失败 | 接受多个执行者的结果 |
| 11. 数据库、缓存与对象存储 | 不同数据有各自存放位置,缓存失效后重建 | 保存结果与大文件 |
| 12. 降级与故障恢复 | 主服务失败时使用有来源的替代结果 | 尽量保持服务可用 |
每篇先照着文件和命令运行,再对照结果读代码。演示使用固定输入,分支已经安排好;先感受数据怎样变化,再展开文末习题。
顺着一次超时看懂恢复
退款服务已经收到操作,但回复在路上丢失了。程序先用业务编号查询原操作:查到退款单就保存结果;服务支持同一编号去重时,可以按契约再次提交;需要额外核实的情况保存为待核对,交给人工。
| 机制 | 保存或控制什么 | 本例中的作用 |
|---|---|---|
| 检查点 | 执行进度和中间数据 | 记住已经获得批准、正在提交退款 |
| 幂等编号 | 一次业务操作的身份 | 让重复提交对应同一笔退款 |
| 重试预算 | 尝试次数和等待时间 | 临时故障后再试,达到上限停止 |
| 人工核对 | 暂时无法自动确认的结果 | 查清是否已退款,再决定后续动作 |
恢复时,先读取状态,再处理尚未确认的操作。这样能具体定位从哪里继续,也便于向客服说明进度。LangGraph 持久化文档介绍了检查点与长期存储的不同用途;Temporal 工作流文档可以帮助继续了解持久工作流的执行方式。
把这些机制用在自己的 Agent 中
简单的查天气通常一两步就结束。生成日报、批量处理资料、经过主管审批的退款,持续时间更长:工作会积压,部分查询会失败,用户也可能中途取消。先画出正常步骤,再为等待、失败和取消加出口;每增加一个出口,写清保存的数据与继续条件。
| 卡住的位置 | 查看哪些记录 | 如何继续 |
|---|---|---|
| 等待审批 | 待确认内容、版本与审批人 | 确认批准是否匹配当前内容 |
| 查询超时 | 请求编号、已确认结果、尝试次数 | 查状态或按服务契约有限重试 |
| 恢复后重复执行 | 下一步位置、已完成记录 | 从尚未完成的步骤继续 |
| 队列持续增长 | 入队速度、执行速度、容量 | 限制接收量并处理积压 |
课后练习展开习题收起习题
- 用自己的话说明节点、状态、事件和检查点的区别。
- 一笔退款回复丢失时,哪些记录可以帮助确认结果?
- 将正常退款步骤画出来,再加入取消出口。
从显式图、状态机与条件边开始。L4 保存执行过程;接下来的L5继续组织任务所用的资料、上下文和记忆。
描述会发送给本站维护者,用于修订文章,保存90天。请只填写文章问题,省略个人信息、密钥和内部资料。