SessionVerifier Architecture

执行完成不等于任务完成。SessionVerifier 位于 Agent 控制面,以最终 RGB、任务定义、环境快照和历史记录为证据,执行语义验收,并将结果应用为 succeeded、failed 或 replanned。

自动路径:后台 poll + apply主动路径:verify_session Tool + apply/review默认 RGB 策略:failed

1 · Evidence Production

Track B 只负责生成事实,不做语义裁决

Target Runtime

action_chunk() 返回 status,其中最终原始观测位于 status["obs"]

SessionRunner

SessionState.last_status 保存最后状态;final_observation 暴露最终 observation。

ResultWriter

递归查找 uint8 HWC/CHW 三通道数组,编码为 PNG,并组合任务与历史上下文。

Verification Bundle

runtime 成功后写入 artifact,并将 session 标记为 awaiting_verification

artifacts/runtime/<session_id>/ ├── episode.json ├── verification_bundle.json └── rgb/final_*.png

2 · Two Entry Paths, One Service

Tool 不复制业务逻辑,只调用 SessionVerifier.verify_session()
Background Worker · source=auto

轮询第一个 awaiting_verification session,自动发起语义校验。

VerifySessionTool · source=tool

主 Agent 指定 session_id;等待状态执行 apply,终态且证据存在时执行 review。

SessionVerifierverify_session(session_id, source)

Apply Route · awaiting_verification

  1. SessionRegistry 原子 claim:awaiting_verification → verifying。
  2. 读取 bundle 和所有 RGB;构造 text + image_url 多模态消息。
  3. LLM 返回严格 JSON verdict:success / failure / replan。
  4. 追加 mode=apply attempt,写 lesson,并提交最终状态或子 session。
  5. 按 rgbRetention 清理证据并同步 bundle 与 result metadata。

Review Route · succeeded / failed / replanned

  1. 要求原 bundle 与 RGB 仍存在;不重新采集现场观测。
  2. 使用相同多模态 prompt 重新生成 verdict。
  3. 追加 mode=review attempt,并记录 agent_reverification lesson。
  4. 不覆盖历史终态,不创建新的 replan,不再次执行 retention。
  5. 证据已清理时返回 evidence_unavailable,不调用模型。

3 · Session State Machine

Runtime completion 与 Agent semantic completion 分离
pending等待 runtime 调度
claimedwatchdog 独占
runningtarget / policy 执行
finalizing写 episode 与 history
awaiting_verification证据已准备
verifyingAgent claim + LLM
terminalsucceeded / failed / replanned
success → succeeded

语义任务完成;默认 failed retention 会删除最终 RGB。

failure → failed

无法通过再次执行修正,或达到 replan 上限;记录失败 lesson。

replan → replanned + pending child

原 session 成为终态;复制执行约束并以新 task_description 插入子 session。

4 · RGB Retention Matrix

只在有效 apply verdict 提交后执行;模型或状态错误时不删除
rgbRetentionsucceededfailedreplannedverification error终态 review 能力
all保留保留保留保留所有有 bundle 的终态均可复核
failed · default删除保留保留保留成功不可复核;失败与 replan 可复核
none删除删除删除保留有效 verdict 后不可复核

5 · Audit Record

状态只表达当前结论;attempts 保留每次推理过程
result.metadata.verification = { "applied_attempt_id": "verification_…", "latest_review_attempt_id": "verification_…", "attempts": [{ "attempt_id": "verification_…", "created_at": "ISO-8601", "source": "auto | tool", "mode": "apply | review", "verdict": "success | failure | replan | null", "evidence": ["…"], "lesson": "…", "details": { "failure_reason": "…" }, "error": null }], "rgb_retention": { "policy": "failed", "status": "retained | deleted | partial | error" } }
Claim Safety后台和 Tool 竞争同一个 waiting session 时,只有一个进程能完成 awaiting → verifying。
Review Immutabilityreview 只更新 result metadata 与 lesson;session.status 和 replan 拓扑保持不变。
Retention Consistency删除文件后将 bundle.rgb_paths 更新为剩余路径,并记录 deleted_at、deleted_paths 与 errors。
Error Boundary语义 verdict 已提交后,retention 错误不会反向覆盖 session 终态。

6 · Agent Configuration

仅在 runtime.enabled 与 verification.enabled 同时为 true 时启动服务并注册 Tool
{
  "agents": {
    "verification": {
      "enabled": true,
      "model": null,
      "maxReplans": 1,
      "rgbRetention": "failed"
    }
  }
}
enabled控制 runtime 是否进入 awaiting_verification,以及 Agent 是否启动后台 verifier。
modelnull 时复用主 Agent 模型;指定其他模型时按该模型重新选择 provider。
maxReplans语义 replan 的最大链路深度;达到上限后将原 session 标记为 failed。
rgbRetention控制有效 apply 后的视觉证据生命周期,不影响 episode、bundle、attempts 和 lessons。