大数跨境

Agent Framework 中使用 Checkpoint 构建可靠的工作流

Agent Framework 中使用 Checkpoint 构建可靠的工作流 dotNET跨平台
2026-07-03
0
导读:前面的文章中我们介绍了 Human-in-the-Loop 和 Checkpoint 的基本概念,以及如何在

前文介绍了 Human-in-the-Loop 和 Checkpoint 的基本概念,以及如何在 Agent Framework 中利用 Checkpoint 实现 Workflow 的故障恢复与回滚。

Agent Framework 中构建 Human-in-the-Loop 工作流

Agent Framework 中使用 Checkpoint 构建支持故障恢复的工作流

Agent Framework 中使用 Checkpoint 回滚(Rollback)工作流

Loop 确保工作流内部循环,Human-in-the-Loop (HITL) 保障用户交互,Checkpoint 则用于保存 Workflow 的运行状态。

对于 Human-in-the-Loop 工作流,Checkpoint 虽非必备,但能确保工作流在遭遇灾难时持续运行。

示例场景

本示例延续猜数字游戏场景。

Workflow 首先通过 RequestPort 请求用户输入数字。

RequestPort 将用户输入传导至 JudgeExecutor。

若数字过大或过小,JudgeExecutor 将结果返回给 RequestPort,后者再次请求用户输入新数字。

该流程循环往复,直至猜中目标数字。

此例与前文 Human-in-the-Loop 示例逻辑一致,区别在于引入了 Checkpoint。

本示例在整个 Workflow 运行过程中启用了 Checkpoint。

这不仅能在故障发生时恢复执行,还能根据业务需求回滚至特定检查点,重新执行后续流程。

核心代码

本例代码结构与前述 Human-in-the-Loop 示例完全相同,唯一差异在于启动 Workflow 时增加了 CheckpointManager:

var checkpointManager = CheckpointManager.Default;

await using StreamingRun checkpointedRun =
    await InProcessExecution.RunStreamingAsync(
        workflow,
        new SignalWithNumber(NumberSignal.Init),
        checkpointManager);

启用后,Framework 会在每个 Super Step 完成后自动创建 Checkpoint。

开发者无需手动保存 Workflow。

从第 2 个 Checkpoint 恢复

示例末尾使用以下代码:

const int CheckpointIndex = 1;
Console.WriteLine($"\n\n从第 {CheckpointIndex + 1} 个检查点恢复.");
CheckpointInfo savedCheckpoint = checkpoints[CheckpointIndex];
// 注意,我们将状态直接恢复到同一个运行实例。
await checkpointedRun.RestoreCheckpointAsync(savedCheckpoint, CancellationToken.None);

我们从第 2 个 Checkpoint 恢复 Workflow 运行状态。恢复后可见首次输入的数字值被保留,Workflow 继续执行。

小结

本节将 Human-in-the-Loop 与 Checkpoint 知识深度融合,旨在保障工作流的可恢复性,这是企业级工作流中最常见的技术手段之一。

源代码地址

https://github.com/bingbing-gui/dotnet-agent-playbook/tree/master/src/ai-agent/Agent-Framework/47-Checkpoint-Human-In-Loop

【声明】内容源于网络
0
0
dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
内容 2290
粉丝 0
dotNET跨平台 专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
总阅读51.1k
粉丝0
内容2.3k