a↗Agent 工程实战中文课程 / v1.0.0⌕ 搜索课程/
I09 · 互动推演

成功率、成本和p95一起算

失败试次也计费,分母为0和尾延迟有明确口径。

合成教学数据 · 未运行真实模型
静态推演与完整规格

I09 成功率、成本和p95一起算

关联章节:M04 · 交互类型:metrics-lab · 状态:提供纯逻辑参考函数,UI待实现

教学目标

失败试次也计费,分母为0和尾延迟有明确口径。

初始状态


{
  "trials": [
    {
      "success": true,
      "cost_units": 1.0,
      "latency_ms": 100,
      "violation": false
    },
    {
      "success": true,
      "cost_units": 1.1,
      "latency_ms": 200,
      "violation": false
    },
    {
      "success": true,
      "cost_units": 1.2,
      "latency_ms": 300,
      "violation": false
    },
    {
      "success": true,
      "cost_units": 1.3,
      "latency_ms": 400,
      "violation": false
    },
    {
      "success": true,
      "cost_units": 1.4,
      "latency_ms": 500,
      "violation": false
    },
    {
      "success": true,
      "cost_units": 1.5,
      "latency_ms": 600,
      "violation": false
    },
    {
      "success": true,
      "cost_units": 1.6,
      "latency_ms": 700,
      "violation": false
    },
    {
      "success": false,
      "cost_units": 1.7,
      "latency_ms": 800,
      "violation": false
    },
    {
      "success": false,
      "cost_units": 1.8,
      "latency_ms": 900,
      "violation": false
    },
    {
      "success": false,
      "cost_units": 1.9,
      "latency_ms": 1000,
      "violation": true
    }
  ]
}

操作控件

  • 编辑每试次成功/成本/延迟

  • 删除试次

  • 载入全失败

  • 计算

  • 比较修改前后

状态变化规则

  • 输入必须为有限非负数;success为布尔。

  • p95用nearest-rank;没有成功或没有试次时显示未定义。

  • 安全违规单列,不纳入平均分掩盖。

黄金案例与反馈

base

输入:


{
  "fixture": "data/evaluation/trials.json"
}

期望:


{
  "success_rate": 0.7,
  "total_cost_units": 14.5,
  "cost_per_success": 2.0714285714285716,
  "p95_latency_ms": 1000,
  "violations": 1
}

失败的3次成本仍在分子里。

all-fail

输入:


{
  "successes": 0
}

期望:


{
  "cost_per_success": null
}

不能显示0或Infinity。

完成条件

  • 手算基线并核对

  • 演示全失败与空集边界

反馈层次

  • 提交预测后显示结果;允许跳过预测但记录跳过,不阻止阅读

  • 结果同时显示状态变化、原因与被拒绝动作;不是只给红绿灯

  • 第一次错误给边界提示,第二次提供最小反例;参考推导始终可主动打开

  • 重置恢复固定初始状态并保留历史尝试供用户手动清除

无障碍与静态替代

  • 全部操作有原生button/input/select替代,不依赖拖拽

  • 图与动画提供同步文字状态表;支持prefers-reduced-motion

  • 状态改变用aria-live=polite摘要,不逐字朗读长日志

  • 焦点不跳走;错误提示关联输入;颜色不是唯一编码

无JavaScript时直接展示初始输入、规则和黄金案例表,读者仍能完成纸面推演。状态动画仅作解释,不能成为获取答案的唯一途径。

持久化与重置

使用版本化键agent-course:1:I09,仅保存本地学习状态。支持单卡重置和全站清除;存储失败时以内存模式继续,不阻断阅读。

必须避免的误导

标题必须常驻“合成教学数据”,不得显示“真实Agent测评”。

执行边界

纯本地教学状态机;不执行任意代码,不连接真实资金/模型/宿主Shell。

逻辑参考

web/reference/engines.mjs中的metrics;对应测试在web/reference/engines.test.mjs。UI可复用或等价移植,但不得改变黄金结果。