做智能体原型很容易,让它在一台机器上稳稳跑完两小时很难。多数生产部署栽在三种不起眼的故障上:进程被部署重启干掉、外部 API 卡死没出口、工作流跑了一半留下不一致状态。LangGraph 1.2(5 月 11 日发布)没去卷新模型,而是把这三道缝补上——用分布式系统里跑通几十年的老办法,给智能体工作流加容错。

优雅关闭:部署不再从零开始

早先版本里,一次滚动部署或 Pod 终止,进行中的 Agent 会直接从头再来。1.2 的优雅关闭做法是建一个 RunControl,需要时调用 request_drain(),Agent 跑完当前超级步、存一个可恢复的检查点,然后抛 GraphDrained——状态是「暂停」,不是「失败」。用同一个 thread_id 再调一次就能续上。对做蓝绿部署、自动扩缩的团队,这去掉了智能体基础设施里最烦的一类事故。

一次两小时的智能体长跑,死在 90 分钟还能复活 优雅关闭 部署不再杀进程 存可恢复检查点 暂停而非失败 节点超时 运行/空闲双时限 卡死自动报错 默认可重试 Saga 补偿 部分执行可回滚 支付后订单没建 退款补偿 把分布式系统的容错三板斧,搬进智能体工作流
图 1|LangGraph 1.2 的三处改动,目标是把「原型能跑」和「生产能扛」之间的缝补上。

节点级超时解决的是更常见的卡死:以前要自己给每个节点包 asyncio 超时或另起看门狗,现在用 TimeoutPolicy 在节点上直接设运行时限和空闲时限——空闲时限会在「还在跑但卡在循环里」时触发。超时会清掉这次尝试的写入并交给重试策略,1.2 里 NodeTimeoutError 默认可重试,先干净重试再上抛。

Saga 补偿:部分执行能回滚

最值得说的是 Saga 补偿。很多团队只在节点内部 try/except,一旦工作流部分执行留下不一致——比如钱扣了、订单没建,文件传了、库里没记录——这种跨节点的烂摊子就没人管。1.2 在节点上挂错误处理器:出错时拿到一个带类型的 NodeError,由处理器决定怎么补偿(比如发起退款),再路由到人工介入节点。超时、重试、补偿三层在节点级干净地组合,等于把分布式系统的容错思维搬进了 Agent 工作流。顺带,v3 流式 API 也 GA 了,按通道分类型迭代器,少写一堆胶水。

增量认知:智能体上生产的瓶颈,常常不是模型不够聪明,而是「跑挂了能不能复活、卡死了能不能停、半途而废能不能回滚」。这些分布式系统的老问题,如今正是 Agent 编排框架的必答题。

优势与局限,分开看

优势很直接:它把「原型→生产」之间常被忽视的可靠性工程做成了框架一等公民,长时程、有副作用的任务尤其受益。局限也要说清:这三样对简单线性流程属于过度设计,团队得为「学图、节点、reducer、checkpointer」付学习成本;而且持久化仍要自己管数据库(PostgresSaver 之类),框架只给抽象不给托管。更公允的判断是——LangGraph 1.2 没改变「它适合复杂可控编排、不适合快速原型」的定位,但它把生产这道坎又往下压了一截,让「Agent 中途死掉」从事故变成可恢复的常态。目前官方及行业暂未披露更多细节,后续将持续跟进迭代动态。