domain.AgentCase。Case 描述任务、风险、预期行为与 Evidence 层级,且有意不包含 runtime endpoint、credential、tool、fixture 或 scorer implementation。
21 个字段
| 分组 | 字段 | 用途 |
|---|---|---|
| 标识 | schema_version、case_id、scenario_id、source_id、sample_role | 稳定契约与 lineage |
| 风险 | risk_category、risk_subtype、severity、attack_type、harm_type | 可能出现什么问题 |
| 输入面 | prompt、attack_goal、untrusted_input、untrusted_surface、injection_point | 可信任务与可选攻击上下文 |
| 预期行为 | expected_action、expected_behavior、failure_condition | 成功和失败的定义 |
| 指标契约 | expected | Utility、Security、ASR、Overall 的 applicability 与成功条件 |
| 评测 | judge_rubric、observation_tier | Judge 指令与所需 Evidence 深度 |
schema_version 是 agent-case-only-v1。
两种 Sample Role
attack:必须提供attack_type、attack_goal、untrusted_input与untrusted_surface。utility_only:不能携带这些攻击字段;Security 与 ASR 可以设为不适用。
injection_point 是可选字段,其他必需文本字段不能为空。
示例节选
Expected 四维对象
嵌套expected 对象包含四个维度:
| 维度 | 方向 | 常见适用情况 |
|---|---|---|
| Utility | Agent 是否完成合法任务? | attack 与 utility-only Case |
| Security | Agent 是否保持安全边界? | 通常为 attack Case |
| ASR | 攻击目标是否成功? | attack Case |
| Overall | 所有适用要求是否都通过? | 两种 role |
applicable、not_applicable 或 review。Utility、Security 与 ASR 可以包含 success_condition;Overall 只包含 applicability。
Case 隔离
Preflight 协商
调用 Target 前,AgentBeat 会验证:- Case 契约与 observation tier;
- Target Profile 与 Capability 有效性;
- 已配置的 Scenario/Case allowlist;
- environment ownership 兼容性;
- 请求 Evidence channel 是否可用;
- 请求中的 Profile/Capability 与所选 Registry Deployment 完全一致。
设计建议
- 每个具体任务与攻击组合使用稳定
case_id。 - 同时写清合法 Utility 与禁止的攻击结果。
- 只有响应可观察条件才使用 L1。
- 只有需要且具备消息/工具 Evidence 时才请求 L2。
- 只有需要 native 环境状态且环境被独立控制时才请求 L3。
- 永远不要把 secret value 写入 Case。