Improve benchmark case details and score chart scaling (#146)

Co-authored-by: Yaowei Zheng <hiyouga@buaa.edu.cn>
This commit is contained in:
Jingzhe XuandYaowei Zheng authored and GitHub committed 2026-07-31 20:42:32 +08:00
1 parent 5308002d72
commit 740f101242
19 files changed
+519 -212

No files matched your search

@@ -3,8 +3,8 @@ name: agent-optimization
description: Improve an Agent State through versioned scores and score-linked Traces from a frozen Benchmark.
short_description: Improve an Agent from measured Benchmark results.
short_description_zh: 根据 Benchmark 结果改进 Agent。
version: 7
updated: 2026-07-30T02:51:10Z
version: 8
updated: 2026-07-31T04:10:53Z
---
# Agent Optimization
@@ -106,8 +106,10 @@ Append each complete accepted Candidate Evaluation to `scoreboard.yaml` immediat
provider: <provider>
model_id: <model_id>
thinking_level: <thinking_level>
summary_title: <public title>
summary: <public summary>
summary_title: >-
<public title>
summary: >-
<public summary>
score: <average of the Case scores>
cost: <average of known Case costs, or null when every Case cost is null>
duration_ms: <average of the Case durations>
@@ -123,6 +125,8 @@ Append each complete accepted Candidate Evaluation to `scoreboard.yaml` immediat
session_id: <Test Session id>
```
After writing, parse the complete `scoreboard.yaml` and verify the appended Evaluation before reporting success or continuing.
Every Run and Case score is on the fixed `0..100` scale. Do not write `max_score`. Calculate and write every Case and Evaluation average directly in the Scoreboard: ignore `null` values when averaging cost and write `null` only when all contributing costs are unknown; round `score` averages to two decimal places, `cost` averages to six decimal places, and `duration_ms` averages to the nearest integer. These stored values are authoritative—do not add a server, frontend, script, or consistency check that recomputes or validates them. Do not add an `aggregate` object or use `case_id`, `mean_score`, `mean_cost`, or `mean_duration_ms`. Do not record rejected Candidates in the Scoreboard.
Report the Baseline and every fully evaluated Candidate with its score, version, change, decision, and Test Session ids. For each Candidate, distinguish the acceptance decision from whether its stated hypothesis was supported by the predicted Case behavior. Include the final retained version, stop reason, and known limitations. Never report a score for an Agent State that was not evaluated.
@@ -3,8 +3,8 @@ name: benchmark-design
description: Design and calibrate a multi-Case capability Benchmark and establish a traceable Formal Baseline.
short_description: Design and calibrate an Agent capability Benchmark.
short_description_zh: 设计并校准 Agent 能力评测 Benchmark。
version: 5
updated: 2026-07-29T17:20:58Z
version: 6
updated: 2026-07-31T04:10:53Z
---
# Benchmark Design
@@ -175,8 +175,10 @@ evaluations:
provider: <provider>
model_id: <model_id>
thinking_level: <thinking_level>
summary_title: <public title>
summary: <public summary>
summary_title: >-
<public title>
summary: >-
<public summary>
score: <average of the Case scores>
cost: <average of known Case costs, or null when every Case cost is null>
duration_ms: <average of the Case durations>
@@ -192,6 +194,8 @@ evaluations:
session_id: <Test Session id>
```
After writing, parse the complete `scoreboard.yaml` and verify the appended Evaluation before reporting success or continuing.
Every Run and Case score is on the fixed `0..100` scale. Do not write `max_score`. Calculate and write every Case and Evaluation average directly in the Scoreboard: ignore `null` values when averaging cost and write `null` only when all contributing costs are unknown; round `score` averages to two decimal places, `cost` averages to six decimal places, and `duration_ms` averages to the nearest integer. These stored values are authoritative—do not add a server, frontend, script, or consistency check that recomputes or validates them. Do not add an `aggregate` object or use `case_id`, `mean_score`, `mean_cost`, or `mean_duration_ms`.
Report the Benchmark path, configuration, Agent State version, Evaluation average and Case Run scores, Test Session ids, and known limitations. Include one compact row per Pilot iteration with its score, diagnosed capability gap, difficulty adjustment, and freeze or stop decision.
+10
View File
@@ -300,6 +300,11 @@ describe("librarySkill", () => {
expect(benchmarkDesign).toContain("ignore `null` values when averaging cost");
expect(benchmarkDesign).toContain("stored values are authoritative");
expect(benchmarkDesign).toContain("obtain the current UTC timestamp from the environment");
expect(benchmarkDesignRaw).toMatch(/summary_title:\s*>-\n\s+<public title>/);
expect(benchmarkDesignRaw).toMatch(/summary:\s*>-\n\s+<public summary>/);
expect(benchmarkDesign).toContain(
"parse the complete `scoreboard.yaml` and verify the appended Evaluation",
);
expect(benchmarkDesignRaw).not.toMatch(/\n\s+max_score:/);
expect(benchmarkDesign).toContain(
"Before reading `status`, `score`, or any other protocol field",
@@ -308,6 +313,11 @@ describe("librarySkill", () => {
expect(optimization).toContain("Delegate every evaluation to an `agent-evaluation` subagent");
expect(optimization).toContain("Before reading `status`, `score`, or any other protocol field");
expect(optimization).toContain("Ask the same Evaluator to resend only the clean YAML");
expect(optimizationRaw).toMatch(/summary_title:\s*>-\n\s+<public title>/);
expect(optimizationRaw).toMatch(/summary:\s*>-\n\s+<public summary>/);
expect(optimization).toContain(
"parse the complete `scoreboard.yaml` and verify the appended Evaluation",
);
expect(optimization).toContain(
"A round counts only after one Candidate has a complete valid Evaluation",
);