L1、L2 与 L3
L1 · 最终响应
Core 调用
POST /v1/agent/invocations 并记录最终响应。无需 Evidence SDK 或 Evidence endpoint。L2 · Target Evidence
Core 再从同一个已注册 Target 获取
GET /v1/evidence/{run_id}。该 Target-owned 来源报告已声明的消息和工具事件。L3 · 环境状态
Core 再协调独立注册的 State Controller,完成前后 snapshot 与 native verification。
L1:黑盒响应
默认 Connector 发送严格的target-invocation-v1 请求:
L2:可选 Target Evidence
L2 Deployment 在 capability 中声明message_event、tool_call 与 tool_result,Target 响应提供同源 evidence_ref。Core 随后获取严格的 target-evidence-v1 文档。
Target Evidence 协议要求:
- 与 invocation 相同的
run_id与case_id; assurance_level: "L2";- RFC 3339 时间边界;
- 1–5,000 条有序事件和稳定 event ID;
observed_channels同时包含messages与tools;- 每个
tool.result绑定到前面同名的一个tool.call; - 只返回已声明 Target Evidence channel 的事件。
L2 是可选能力。JavaScript 与 Python SDK 可以协助构建 Target server 和 Evidence 文档,但不使用 SDK 也可以直接实现协议。
L3:独立状态校验
已注册 State Controller 是独立服务边界。它可以根据 Deployment 环境绑定准备运行环境;在 L3 中还会提供权威状态 Evidence。
Controller 属于环境侧。Agent 既不能选择它,也不能自报权威 L3 结果。
Evidence coverage 必须显式呈现
AgentBeat 只投影所选 observation policy 要求的 channel:| 层级 | 必需投影 channel | 缺失数据行为 |
|---|---|---|
| L1 | final_response | 空或缺失响应不满足 Target 契约 |
| L2 | L1 + message_event、tool_call、tool_result | 写入 missing_channels,Evidence 状态变为 partial |
| L3 | L2 + state_before_after 与 native score | 标记缺失,不授予 full benchmark eligibility |
如何选择层级
- 已有 HTTP Agent,先从 L1 开始。
- 需要检查 Target 报告的消息和工具时,增加 L2。
- 只有隔离、独立受控环境可用时,才增加 L3。
AgentCase.observation_tier、请求 tier、scoring profile tier 与已注册 capability 必须一致。