评估约 13 分钟

PEV:计划、执行、验证

计划、执行、验证、诊断、派发的闭环:失败时先用确定性信号判断根因,再决定重做、重规划还是诚实降级。

依据 agent-solution 0.1.3 · main@bf702bc9(2026-11-03)核实

不是"失败就重试"

很多智能体出错后的处理是"再来一次"。可如果错因是接口挂了,再来一次还是错;如果是验证器自己坏了,它说的"失败"本身就不可信。

PEV(Plan → Execute → Verify → Diagnose → Dispatch)把"为什么失败"放在"接下来做什么"之前。它建在 agent-core-java 的 BaseAgent 上,你只需实现三个接口:

接口输入 → 输出
Planner用户任务 → 计划(若干节点)
Executor节点 → 每个节点的结果
Verifier任务 + 结果 → 是否通过、哪些节点失败、反馈
源码PEV READMEagent-solution/common/agents/pev/README.md@bf702bc9

节点结果只有三种:Success、DeviceFailure(工具或基础设施故障)、VerifierFailure。

诊断:三种根因

验证不通过时,diagnoseRootCause 按优先级判断:

  1. 验证器不可信(PerceptionUnreliable):验证器抛了异常,或返回内容解析失败
  2. 设备故障(DeviceFailure):失败节点里有工具或基础设施故障
  3. 计划或答案错误(PlanOrAnswerError):以上都不是,那就是内容本身错了
源码PevKernel.diagnoseRootCauseagent-solution/common/agents/pev/src/main/java/com/openjiuwen/agents/pev/kernel/PevKernel.java:73@bf702bc9

关键在于依据:源码注释明确写着诊断来自确定性信号,而不是模型的自我报告。

派发:根因决定动作

根因动作
设备故障AcceptPartial:诚实降级,永不重试
验证器不可信AcceptPartial:不盲信它的"失败"
内容错误,失败节点 ≤ 2LocalReplan:带着反馈只重做失败节点
内容错误,失败节点 > 2 或为空GlobalReplan:带着反馈重新规划
源码PevKernel.toReplanActionagent-solution/common/agents/pev/src/main/java/com/openjiuwen/agents/pev/kernel/PevKernel.java:117@bf702bc9

重规划次数有上限,默认 2 次;用完还不行就终止,终止原因记为超出重试次数。

源码PevConfig.defaultsagent-solution/common/agents/pev/src/main/java/com/openjiuwen/agents/pev/agent/PEVAgent.java:395@bf702bc9

Rail 做横切观察

PEVAgent 在各阶段边界触发回调,所以 agent-core 的 Rail 可以挂上来观察:内置的 CriteriaVerificationRail 对最终输出再做一次成功条件检查,RootCauseRail 累计设备故障。注意 Rail 只观察,不驱动派发;派发是内核决策函数的职责。

和"评估"的关系

PEV 把评估搬进了单次执行里:每一轮都有验证,验证结果直接决定下一步。基于运行数据的评测(下一关 agent-ops)回答"这个智能体整体表现如何",PEV 回答"这一次的结果能不能交付"。

动手:预测派发

模拟器加载中…

小结

  • PEV 先诊断再行动:验证器不可信 > 设备故障 > 内容错误。
  • 设备故障和验证器故障诚实降级,内容错误才重做或重规划。
  • 诊断依据是确定性信号,不让模型给自己判卷。

源码出处

链接指向固定提交,仓库后续更新不影响这里的行号。

过关测验

  1. 1. 执行时产能接口超时,验证不通过。PEV 会怎么做?

  2. 2. PEV 的根因诊断依据是什么?

  3. 3. 内容错误、失败了 3 个节点,派发什么动作?

通关条件

  • ○ 完成模拟器任务(0/4)
  • ○ 测验全部答对