LangGraph实战:持久化状态与人工审批
教程用草稿审核流程演示共享状态、检查点、固定线程ID,以及通过interrupt()暂停、Command恢复执行。重点解释恢复时节点会重新运行,因此非幂等操作应放在审批之后,并建议测试重复恢复与线程错误。
原文暂未完整获取,基于公开信息的快读
Barcelona Code School 发布了一篇 LangGraph 教程,用虚构的草稿审核流程演示如何保存状态、暂停等待人工审批,再恢复执行。示例没有调用模型,也不发送消息或修改外部系统,重点是讲清恢复机制,以及节点重跑可能带来的重复操作风险。
目前能确认什么
流程依次校验请求、生成占位草稿、暂停审核,最后记录批准、编辑或拒绝的结果。共享状态保存原始请求和草稿,节点返回状态更新,边定义执行路径;审核消息在节点内按需组装。
暂停使用 interrupt(),恢复使用 Command(resume=...),两次调用必须使用同一个 thread_id。检查点(checkpoint)负责保存执行状态,线程 ID 用来定位对应流程。
恢复时,被中断的节点会从头执行,并非直接从暂停位置接着跑。
因此,邮件发送、支付、数据库写入等操作不能未经保护就放在 interrupt() 前。幂等指重复执行不会额外改变结果;不具备这种性质的操作,重跑就可能产生重复副作用。
示例使用 InMemorySaver,只适合本地教学。它没有验证生产环境的持久化与故障恢复能力。
我的判断
对准备给 AI 工作流接人工审核的程序员,这篇教程最有用的是提醒你:审批界面之外,还要设计恢复后的执行行为。
把外部操作放在审批之后是必要安排,但不能据此认定重复执行问题已经解决。
教程明确要求测试重复恢复、错误线程 ID 和拒绝路径,但节选没有给出这些测试的完整结果,也未展示真实工具接入后的去重方案。
上线前仍需确认:持久化存储如何配置,线程访问如何鉴权,重复提交如何处理,以及外部操作成功、流程记录失败时由谁恢复。这个示例能帮助理解控制流程,尚不足以证明一套生产审批系统已经可靠。