{% include 'conf/static/_style.html' %} {%- set s = summary %} {%- set cmp = comparison %}
{{ title }}
{{ run_id }} {%- if manifest.dataset %}评测集 {{ manifest.dataset }}{% if manifest.dataset_version %}@{{ manifest.dataset_version }}{% endif %}{% endif %} {{ s.tasks }} 个任务 × 每题 {{ s.k }} 次 {%- if manifest.harness %}被测 {{ manifest.harness }}{% endif %} {%- if manifest.model %}模型 {{ manifest.model }}{% endif %} 耗时 {{ '%.1f'|format(run.duration) }} s
{{ verdict.label }}

{{ verdict.sentence }}

    {%- if cmp and not cmp.not_comparable %}
  • 按任务配对:{{ cmp.worse }} 题变差、{{ cmp.better }} 题变好、{{ cmp.same }} 题不变。
  • {%- if cmp.noise %}
  • 判定变好或变差还要求差值超过基础设施噪声 ±{{ '%.1f'|format(100 * cmp.noise) }} 个百分点。
  • {% endif %} {%- if cmp.only_in_base or cmp.only_in_now %}
  • 只在一边出现的任务不参与比较:基线独有 {{ cmp.only_in_base|length }} 题,本次独有 {{ cmp.only_in_now|length }} 题。
  • {% endif %} {%- if cmp.broken %}
  • {{ cmp.broken|length }} 道题以前全过、现在全挂:{{ cmp.broken[:5]|join('、') }}。
  • {% endif %} {%- if cmp.by_tag|length > 1 %}
  • 按标签比较时置信水平按比较的组数校正({{ cmp.by_tag|length }} 组),避免"总有一组碰巧变差"。
  • {% endif %} {%- endif %} {%- if gate_reasons %}
  • 门禁({{ gate }})不通过:{{ gate_reasons|join(';') }}。
  • {% endif %} {%- if saturation_sentence %}
  • {{ saturation_sentence }}。
  • {% endif %} {%- if s.judge_checks %}
  • 模型评委的 {{ s.judge_checks }} 条判定只展示,不参与成功率和结论{% if s.judge_uncertain %};其中 {{ s.judge_uncertain }} 条"不确定"{% endif %}。
  • {% endif %} {%- if s.infra %}
  • {{ s.infra }} 次试验因基础设施问题没有结果,不计入成功率。
  • {% endif %} {%- if s.infra_attempts %}
  • 基础设施错误率 {{ '%.1f' % (100 * s.infra_rate) }}%({{ s.attempts }} 次尝试里 {{ s.infra_attempts }} 次{% if s.retried %},{{ s.retried }} 次试验重试过{% endif %})。重试只针对基础设施错误,agent 自己的失败不重试。
  • {% endif %} {%- set sc_fails = selfcheck|selectattr('kind', 'equalto', 'fails')|list %} {%- set sc_grader = selfcheck|selectattr('kind', 'equalto', 'grader')|list %} {%- set sc_missing = selfcheck|selectattr('kind', 'equalto', 'missing')|list %} {%- set sc_task = selfcheck|selectattr('kind', 'equalto', 'task')|list %} {%- if sc_fails %}
  • {{ sc_fails|length }} 道题的参考解判不过,这些题上的失败归为"任务有问题"。
  • {% endif %} {%- if sc_grader %}
  • {{ sc_grader|length }} 道题的评分器在参考解上报错或没有给出判定,先修评分器。
  • {% endif %} {%- if sc_task %}
  • {{ sc_task|length }} 道题的写法评分器读不了(键拼错、文件不存在……),这些题没有结论,先修题目。
  • {% endif %} {%- if sc_missing %}
  • {{ sc_missing|length }} 道题没有参考解,无法自检;这些题上的失败仍算 agent 的。
  • {% endif %}
对比基线
{% if cmp %}{{ cmp.baseline_run or '—' }}{% else %}无用 --update-baseline 写入{% endif %}
评测集
{{ manifest.dataset_hash[:12] or '—' }}内容哈希;划分 {{ manifest.split or '全部' }} {%- if manifest.dataset_description %}{{ manifest.dataset_description }}{% endif %} {%- if manifest.dataset_meta %}{% for k, v in manifest.dataset_meta|dictsort %}{{ k }}:{{ v }}{% if not loop.last %} · {% endif %}{% endfor %}{% endif %}
环境
{% if manifest.resources %}{% for k, v in manifest.resources|dictsort %}{{ k }}={{ v }}{% if not loop.last %} · {% endif %}{% endfor %}{% else %}未记录资源配置{% endif %}
成功率 · {{ s.decided }} 次试验 {{ pct(s.success_rate) }} {%- if s.interval %}95% 区间 {{ pct(s.interval[0]) }} – {{ pct(s.interval[1]) }}(按题重采样){% endif %}
稳定性 · pass^{{ s.k }} {{ pct(s.pass_hat_k) }} {{ s.tasks_all_k }} / {{ s.tasks }} 题 {{ s.k }} 次全过 pass@{{ s.k }} {{ pct(s.pass_at_k) }}
平均分 · 含部分分 {{ '—' if s.mean_score is none else '%.2f'|format(s.mean_score) }} 必需判定全成立才算成功
判定来源 {{ s.deterministic_checks }}条确定性 模型评委 {{ s.judge_checks }} 条,不计入
成本 · 每次试验 {%- if s.cost_per_trial %} {%- for key, value in s.cost_per_trial|dictsort %}{{ '%.3g'|format(value) }} {{ key }}{% endfor %} {%- else %}—agent 没有报告成本{% endif %}
{%- if tag_rows %}

{{ '按标签对比基线' if cmp else '按标签' }}

{% if cmp %}横条是差值的 95% 区间;跨过 0 就是"无法区分"{% endif %}
{% if cmp %}{% endif %}{% if cmp %}{% else %}{% endif %} {%- for r in tag_rows %} {%- if cmp %}{% endif %} {%- if cmp %} {%- else %} {%- endif %} {%- endfor %}
标签任务基线本次差值区间判断95% 区间
{{ r.value }}
{{ r.tag }}
{{ r.tasks }}{{ pct(r.base_rate) }}{{ pct(r.now_rate) }}{{ '%+.1f'|format(100 * r.difference) }} {%- set cls = 'same' if cmp.not_comparable else ('worse' if r.verdict == 'worse' else ('better' if r.verdict == 'better' else 'same')) %} {{ '不可比' if cmp.not_comparable else {'worse': '变差', 'better': '变好'}.get(r.verdict, '无法区分') }}{% if r.interval %}{{ pct(r.interval[0]) }} – {{ pct(r.interval[1]) }}{% else %}—{% endif %}
{%- endif %} {%- if by_category %}

没有成功的试验 · 按归因

规则能分的先分;分不了的是"待人工阅读",附轨迹
{%- for c in by_category %}
{{ c.label }}{{ c.count }}次
{%- endfor %}
{%- endif %} {%- if cmp and cmp.worst %}

变差的任务

{% for w in cmp.worst[:20] %}{% endfor %}
任务基线本次
{{ w.task_id }}{{ w.base[0] }} / {{ w.base[1] }}{{ w.now[0] }} / {{ w.now[1] }}
{%- endif %} {%- if selfcheck %}

参考解自检

参考解判不过,说明任务或评分器有问题,不是 agent 的问题;没有参考解的题无法自检,只列出来。

{%- endif %} {%- if failed_trials %}

没有成功的试验

{{ failed_total }} 次{% if failed_total > failed_trials|length %},列出前 {{ failed_trials|length }} 次{% endif %}
{%- for t in failed_trials %}
{{ category_label.get(t.category, t.category) }} {{ t.task_id }}第 {{ t.index + 1 }} 次试验 · {{ t.trajectory|length }} 步 · {{ '%.1f'|format(t.seconds) }} s{% if t.score is not none %} · 得分 {{ '%.2f'|format(t.score) }}{% endif %}
{%- if t.error %}
{{ t.error }}
{% endif %} {%- set det = t.checks|rejectattr('src', 'equalto', 'llm_judge')|list %} {%- set jud = t.checks|selectattr('src', 'equalto', 'llm_judge')|list %} {%- if det %}

判定

{%- for c in det|sort(attribute='ok') %} {%- endfor %}
结果判定实际权重
{{ '成立' if c.ok else '不成立' }}{{ c.name }}{% if not c.required %}(非必需){% endif %}{{ c.expr or '—' }}{{ '%g'|format(c.weight) }}
{%- endif %} {%- if jud %}
模型评委 · 只展示,不计入 {%- for c in jud %}{{ '不确定' if c.uncertain else ('成立' if c.ok else '不成立') }} {{ c.name }}{% if c.expr %} · {{ c.expr }}{% endif %}{% endfor %}
{%- endif %} {%- if t.trajectory %}

轨迹

    {%- for e in t.trajectory %}
  1. {{ '%.1f'|format(e.t or 0) if e.t is number else (e.t or '') }}{{ e.kind or '' }}{% if e.name %} · {{ e.name }}{% endif %}{{ e.text or '' }}{% if e.error %} — {{ e.error }}{% endif %}
  2. {%- endfor %}
{%- endif %} {%- if t.output is not none %}
agent 的输出
{{ t.output }}
{% endif %}
{%- endfor %}
{%- endif %}

版本清单

分数依赖的一切。两次运行的数据集哈希、划分或资源不同,分数不可比。

{%- for key, value in manifest.to_dict()|dictsort %}{% endfor %}
{{ key }}{{ value if value not in (none, '', {}) else '—' }}