一个用于持久化执行状态的框架,使得运行可以被中断、在崩溃后存活并继续,必须决定“恢复”对于已经触发过的副作用意味着什么。五个广泛部署的智能体工作流框架给出了不同的答案,没有一个暴露了可机器校验的契约,而且实际行为甚至违背了它们自己声明的片段。RESUME CONTRACT 在持久化 API 上规定了六项属性(前缀延续、副作用精确一次、分支确定性、检查点有效性、消费一次、恢复确定性),外加分支意图和活性义务。一个 TLA+ 模型对参考语义进行了穷举校验,在扩展边界(740 万状态)下保持不变;一个 39 单元格故障矩阵得出了独立性所需的分离模型,而“消费一次”将其拆分,其消费子句独立于其他六项属性。一个确定性的、无 LLM 的测试工具在固定版本上对其进行测量。LangGraph 1.2.9 持久化记录了第二个恢复值却从不读取它,静默持久化模式无效的状态,并在真实 SIGKILL 后重新执行已持久化记录的工作:在中断场景下精确一次,在崩溃场景下至少一次,都在同一个 API 上。CrewAI 1.15.2 违背其书面声明重新执行已完成的效果承载方法;pydantic-graph 1.x 在节点中途崩溃后无法恢复;没有任何两个被测框架共享相同的合规性画像。“消费一次”在顺序执行下成立,但在并发投递下失败:k 个进程恢复一个被挂起的中断会触发该门控副作用 k 次,40 个单元格中有 36 个饱和度为 1.0,且该失败跨主机传播。REMIT 是一个参考排序器,其经 Verus 验证的恢复核心与已发布的可执行文件逐行一致,修复了分支和有效性单元格。跨进程单元格在读取路径上被修复,且该修复已随产品发布:一个可选加入的门控在共享存储中声明消费,在任一节点执行之前服务一个竞争请求并拒绝其余请求。
论文揭示 LangGraph、CrewAI 等五个智能体工作流框架的检查点与恢复语义缺陷
一项研究为智能体工作流持久化层提出“恢复契约”,规定前缀延续、效果恰好一次等六项属性,并用 TLA+ 模型穷举验证了 740 万状态。实测发现 LangGraph 1.2.9 在崩溃后重复执行已持久化工作,CrewAI 1.15.2 违背其书面声明,pydantic-graph 1.x 无法在节点中途崩溃后恢复。研究还给出经 Verus 验证的参考实现 REMIT,修复了分叉与有效性缺陷。
一个用于持久化执行状态的框架,使得运行可以被中断、在崩溃后存活并继续,必须决定“恢复”对于已经触发过的副作用意味着什么。五个广泛部署的智能体工作流框架给出了不同的答案,没有一个暴露了可机器校验的契约,而且实际行为甚至违背了它们自己声明的片段。RESUME CONTRACT 在持久化 API 上规定了六项属性(前缀延续、副作用精确一次、分支确定性、检查点有效性、消费一次、恢复确定性),外加分支意图和活性义务。一个 TLA+ 模型对参考语义进行了穷举校验,在扩展边界(740 万状态)下保持不变;一个 39 单元格故障矩阵得出了独立性所需的分离模型,而“消费一次”将其拆分,其消费子句独立于其他六项属性。一个确定性的、无 LLM 的测试工具在固定版本上对其进行测量。LangGraph 1.2.9 持久化记录了第二个恢复值却从不读取它,静默持久化模式无效的状态,并在真实 SIGKILL 后重新执行已持久化记录的工作:在中断场景下精确一次,在崩溃场景下至少一次,都在同一个 API 上。CrewAI 1.15.2 违背其书面声明重新执行已完成的效果承载方法;pydantic-graph 1.x 在节点中途崩溃后无法恢复;没有任何两个被测框架共享相同的合规性画像。“消费一次”在顺序执行下成立,但在并发投递下失败:k 个进程恢复一个被挂起的中断会触发该门控副作用 k 次,40 个单元格中有 36 个饱和度为 1.0,且该失败跨主机传播。REMIT 是一个参考排序器,其经 Verus 验证的恢复核心与已发布的可执行文件逐行一致,修复了分支和有效性单元格。跨进程单元格在读取路径上被修复,且该修复已随产品发布:一个可选加入的门控在共享存储中声明消费,在任一节点执行之前服务一个竞争请求并拒绝其余请求。
来源:HuggingFace Daily Papers(社区热门论文)· arxiv.org