评测DeerFlow Checkpoint Agent,建议重点关注“是否正确保存状态、是否能可靠恢复、恢复后是否继续完成任务”这三类指标。可以按以下维度设计评测。
1. 核心功能指标
| 指标 | 含义 | 典型评测方式 |
|---|---|---|
| Checkpoint 创建成功率 | Agent 是否能在指定节点成功保存检查点 | 成功创建次数 / 总创建次数 |
| Checkpoint 完整性 | 保存的状态是否包含恢复所需的全部信息 | 比较保存前后的任务状态、消息、工具调用记录、变量等 |
| Checkpoint 可恢复率 | 从检查点恢复后,工作流是否能继续执行 | 成功恢复并继续执行次数 / 恢复次数 |
| 任务最终成功率 | 发生中断后,恢复是否仍能完成原任务 | 对比无故障运行与故障恢复运行的最终结果 |
| 状态一致性 | 恢复后的状态是否与中断前一致 | 校验上下文、执行步骤、工具结果、任务变量 |
| 恢复后的结果正确率 | 恢复后最终输出是否正确,而不仅是流程跑完 | 使用人工标注、规则校验或 LLM Judge 评估 |
其中最重要的指标通常是:
Recovery Success Rate = 成功恢复并正确完成任务的次数 / 总故障测试次数2. 故障恢复能力
应模拟不同类型的故障:
- Agent 进程崩溃
- 服务重启
- 网络中断
- LLM 调用超时
- Tool 调用失败
- 数据库或 Checkpoint Store 暂时不可用
- 流程在不同节点被中断
- 长时间暂停后恢复
- 并发请求下发生故障
对应指标包括:
恢复成功率
恢复成功率 = 恢复成功次数 / 故障次数恢复时间
从检测到故障或收到恢复请求,到 Agent 重新开始执行的时间:
Recovery Time = Resume Timestamp - Failure Timestamp建议统计:
- 平均恢复时间
- P50
- P95
- P99
恢复后的任务完成时间
恢复之后,任务从断点继续执行到最终完成所需的时间。
需要注意区分:
- 从故障到恢复的时间
- 恢复后重新执行的时间
- 总任务完成时间
可恢复断点覆盖率
测试任务中,Checkpoint 是否覆盖所有关键执行节点:
Checkpoint Coverage = 可从检查点恢复的关键节点数 / 关键节点总数3. Exactly-once 与幂等性
这是 Checkpoint Agent 很关键的评测项。
恢复时可能出现:
- 某个工具调用已经成功,但结果还没来得及写入 Checkpoint
- Agent 重启后重复调用工具
- 消息已经发送,但状态没有更新
- 外部副作用已经产生,但流程认为没有执行
因此建议评测:
重复执行率
Duplicate Execution Rate = 被重复执行的步骤数 / 总步骤数特别关注有副作用的操作:
- 发邮件
- 创建订单
- 写数据库
- 调用支付接口
- 发布消息
- 修改文件
- 创建云资源
幂等恢复成功率
对于允许重试的工具:
Idempotent Recovery Rate = 重试后结果正确且无额外副作用的次数 / 总重试次数副作用一致性
检查恢复后是否出现:
- 重复扣款
- 重复发消息
- 重复创建资源
- 数据覆盖
- 状态回退
- 任务步骤跳过
如果 DeerFlow Checkpoint Agent 不保证严格 exactly-once,也应该明确其语义是:
- At-most-once:最多执行一次,可能丢失
- At-least-once:至少执行一次,可能重复
- Effectively-once:通过幂等键、事务或去重实现业务上的一次效果
4. Checkpoint 数据正确性
建议检查以下状态是否被正确保存和恢复:
Agent 状态
- 当前任务 ID
- 当前执行节点
- 当前步骤
- 子 Agent 状态
- Agent 之间的通信状态
- 暂停、等待、失败、完成等状态
对话上下文
- System Prompt
- User Message
- Assistant Message
- Tool Call
- Tool Result
- 中间推理所需的上下文
- 消息顺序
- 消息角色和元数据
运行时变量
- 工作流变量
- 工具参数
- 环境配置
- 重试次数
- 超时状态
- 已完成步骤列表
- 待执行步骤列表
外部引用
- 文件路径
- 数据库记录 ID
- 对象存储地址
- 子任务 ID
- 远程任务状态
可以为每个字段定义恢复正确率:
Field Recovery Accuracy = 正确恢复的字段数 / 应恢复字段总数5. 性能指标
Checkpoint 写入延迟
统计:
- 平均写入延迟
- P95/P99 写入延迟
- 大状态写入延迟
- 并发写入延迟
Checkpoint 恢复延迟
包括:
- 查找 Checkpoint
- 读取数据
- 反序列化
- 重建 Agent 状态
- 恢复工作流上下文
Checkpoint 开销
比较启用和禁用 Checkpoint 时的差异:
Time Overhead = 启用 Checkpoint 的任务耗时 - 未启用时任务耗时Storage Overhead = Checkpoint 占用空间 / 原始任务状态大小还可以统计:
- 单次 Checkpoint 大小
- 每个任务产生的 Checkpoint 数量
- 每个任务的总存储量
- 序列化和反序列化 CPU 占用
- 内存占用
- 网络流量
6. 长任务和大上下文能力
Checkpoint Agent 往往用于长流程,因此建议专门测试:
- 100 步、1,000 步以上的工作流
- 大量消息上下文
- 多个子 Agent 协作
- 多轮工具调用
- 长时间暂停后恢复
- 多次连续暂停和恢复
- Checkpoint 数量持续增长
- 大文件、复杂 JSON、嵌套状态
- 上下文压缩或裁剪后是否仍可恢复
重要指标:
- 随任务长度增长的成功率变化
- 随上下文大小增长的恢复延迟
- 长任务的存储增长曲线
- 多次恢复后的状态漂移率
7. 并发与一致性
如果多个请求或多个 Worker 可能同时操作同一任务,需要评测:
- 同一任务并发创建 Checkpoint
- 同一任务被多个实例同时恢复
- 一个实例写入、另一个实例读取
- Checkpoint 版本冲突
- 重复 Resume 请求
- 乱序写入
- Worker 崩溃后锁是否释放
对应指标:
- 并发冲突率
- 数据覆盖率
- 版本回退率
- 脏读率
- 重复恢复率
- 乐观锁/悲观锁失败率
- 最终一致性收敛时间
如果系统要求严格顺序,尤其要验证:
Checkpoint Version N+1 不应被 Version N 覆盖8. 可靠性和稳定性
建议通过长时间压测和故障注入评测:
- 连续运行 24 小时或更长时间
- 高并发任务
- 随机注入进程崩溃
- 随机注入网络错误
- 随机删除或损坏部分 Checkpoint
- Checkpoint Store 容量不足
- 数据库连接池耗尽
- LLM 服务限流
- 工具响应异常
指标包括:
- 长时间运行成功率
- MTBF,平均故障间隔
- MTTR,平均恢复时间
- Checkpoint 损坏率
- 数据丢失率
- 任务丢失率
- 错误重试成功率
- 故障恢复后的最终任务成功率
9. 安全和数据隔离
Checkpoint 通常包含完整对话和工具调用信息,应评测:
- 不同用户是否能读取彼此的 Checkpoint
- 不同租户是否隔离
- 是否存在越权恢复
- Checkpoint 是否加密存储
- 敏感信息是否脱敏
- 删除任务后 Checkpoint 是否真正删除
- 日志是否泄露 Prompt、Token 或工具参数
- 恢复请求是否校验任务所有权
- Checkpoint 是否支持访问审计
关键指标:
Unauthorized Access Rate = 越权访问成功次数 / 越权访问测试次数理想值应为 0。
10. 成本指标
如果 Checkpoint 会增加存储和调用成本,建议统计:
- 每个任务的 Checkpoint 存储成本
- 每次恢复额外产生的 Token 消耗
- 重试导致的工具调用成本
- Checkpoint 序列化、读写的计算成本
- 不同保存频率下的成本变化
- 增量 Checkpoint 与全量 Checkpoint 的成本差异
推荐的最小评测指标集
如果只做一版基础评测,建议至少包含以下 10 项:
- Checkpoint 创建成功率
- Checkpoint 数据完整性
- 恢复成功率
- 恢复后任务最终成功率
- 恢复时间 P50/P95/P99
- 状态一致性
- 重复执行率
- 外部副作用错误率
- Checkpoint 写入和读取延迟
- 多租户数据隔离和越权访问率
推荐报告格式
可以按下面的形式输出:
测试任务数:1,000 故障注入次数:500 Checkpoint 创建成功率:99.8% Checkpoint 完整性:99.5% 恢复成功率:98.6% 恢复后最终任务成功率:97.8% 状态一致性:99.2% 重复执行率:0.7% 外部副作用错误率:0.1% 恢复延迟: - P50:320 ms - P95:1.2 s - P99:3.8 s Checkpoint 写入延迟: - P50:45 ms - P95:180 ms 存储开销: - 平均每任务:2.4 MB - 相比无 Checkpoint 的额外耗时:6.3% 安全: - 越权访问成功率:0% - 跨租户数据泄露:0 次总体上,不要只评测“Checkpoint 能不能保存和读取”,更应该评测:
在 Agent 执行到任意阶段发生故障后,是否能以正确的状态恢复,并且不丢任务、不乱序、不重复产生外部副作用,最终得到与无故障执行一致的结果。