LangGraph 失败恢复详解:为什么成功节点不会重复执行?

发布时间:2026/10/10 20:37:58

LangGraph 失败恢复详解:为什么成功节点不会重复执行? 前面我们已经学习了 Checkpoint、get_state_history()、Replay 和 Fork。这一篇继续看一个更实用的问题如果同一个 SuperStep 中一个节点执行成功另一个节点执行失败修复后恢复运行时成功节点还会不会重新执行LangGraph 中已经成功的任务结果可以被检查点保存恢复时直接复用。1. 一个节点失败后LangGraph 保存了什么假设图结构是START | node_change_topic | ------ node_poem | ------ node_joke | v node_output | END其中node_poem和node_joke属于同一个 SuperStep。为了模拟失败可以故意让defnode_joke(state):raiseException(人为中断)第一次执行时node_change_topic 执行成功 ↓ node_poem 和 node_joke 并行执行 ↓ node_poem成功 node_joke失败 ↓ 图中断这时查看历史检查点historylist(graph.get_state_history(config))可以看到对应的tasks中PregelTask(namenode_poem,errorNone,result{poem:...})而失败节点PregelTask(namenode_joke,errorException(人为中断),resultNone)所以这里可以理解为result 节点已经成功产生的结果 error 节点执行失败时记录的异常2. 为什么 node_poem 不需要重新执行虽然node_poem和node_joke在同一个 SuperStep 中运行但其中一个失败并不会让另一个已经成功的结果全部丢失。检查点已经知道node_poem 成功 result 已保存 node_joke 失败 error 已保存因此恢复时LangGraph 可以复用 node_poem.result 重新执行 node_joke而不是node_poem 再执行一次 node_joke 再执行一次这对包含大模型调用、API 请求、数据库查询等昂贵操作的工作流尤其重要。3. 修复 BUG 后如何恢复先把node_joke修好defnode_joke(state):topicstate[topic]jokemodel.invoke([HumanMessage(f写一个关于{topic}的笑话)]).contentreturn{joke:joke}然后重新编译图new_graphbuilder.compile(checkpointercheckpointer)这里最重要的是必须继续使用之前那个 Checkpointer。因为历史 Checkpoint 就保存在它里面。如果重新创建checkpointerInMemorySaver()那就是一个新的空存储器原来的历史也就找不到了。恢复时resnew_graph.invoke(None,config{configurable:{thread_id:123}})这里inputNone表示不再提供新的输入 而是从当前 thread_id 已保存的状态继续实际恢复结果中node_joke 重新执行 node_output 继续执行 node_poem 没有重新执行最终输出中的诗仍然是第一次node_poem成功时生成的内容说明它的结果被复用了。4. 失败恢复和 Replay 有什么区别这两个概念看起来很像但目的不同。Replay我主动找到一个历史 Checkpoint 然后从那里重新执行例如graph.invoke(None,old_checkpoint.config)而失败恢复是上一次执行因为异常中断 ↓ 修复 BUG ↓ 继续使用原来的 Checkpointer ↓ 通过相同 thread_id 恢复 ↓ 接着未完成的任务继续执行可以简单记Replay 重新走一次 失败恢复 上次没走完现在接着走它还在解决任务执行到了哪里以及哪些计算已经完成。
延伸阅读

更多相关文章

2026/10/10 20:37:27

率零降AI零基础教程!从上传论文到AI率降至25%完整操作!

AI率一开始90%多,用第一个工具降到50%左右,换第二个降到42%,再换第三个38%,然后再也降不动了。再怎么处理都在这个数字附近晃,钱花了不少,离学校要求还差一截。 这种情况在毕业季很常见,不是你运…

2026/10/6 21:07:29

网络安全攻防演练实战指南与技能培养路径

1. 网络安全攻防演练入门指南 作为一名从业多年的网络安全工程师,我每年都会参与多次企业级攻防演练。对于刚接触这个领域的新人来说,首先要理解攻防演练的本质是什么。简单来说,它就像一场网络安全的"军事演习",红队&a…

2026/10/10 20:35:47

打家劫舍动态规划解法精讲:从状态定义到空间优化

在力扣(LeetCode)的动态规划入门题单里,198. 打家劫舍几乎是每个人绕不开的第一道经典题。题目给了一排房屋,每间房里有不同数额的现金,但相邻的两间房连接着警报系统,只要同一晚闯入两间相邻房屋就会触发报…

2026/10/10 20:35:47

手写C++ string:从内存管理到增删查改的完整实现

说实话,接触C这么多年,我一直有一种“被STL惯坏”的感觉。尤其是std::string,用起来太顺手了,、find、substr、replace,想怎么拼就怎么拼,以至于我从来没认真想过,这个类在底层到底是怎么管理内…

2026/10/10 20:35:47

基于SSM+Flask的学籍管理系统设计与实战全解析

学了几年计算机,估计有七成同学都躲不过“学生信息管理系统”这道坎。你要是去问学长学姐,十个人里八个会告诉你当初熬夜改了多少Bug。不过说句公道话,这个题目是真练人,麻雀虽小五脏俱全,从数据库设计到前后端联调&am…

2026/10/10 20:35:47

从 Codex 搬家 WorkBuddy 一周:插件生态到底差在哪?

从 Codex 搬家 WorkBuddy 一周:插件生态到底差在哪? 【免费下载链接】plugins OpenAI Plugins 项目地址: https://gitcode.com/GitHub_Trending/plugins123/plugins 把 Codex 当主力 Agent 用了大半年之后,我在 9 月中旬做了一个有点&…

2026/10/10 7:31:36

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑