fable-eval

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Fable Eval

Fable Eval

Measure whether an agent-control change improves the behavior it claims to improve without quietly overfitting the benchmark or breaking neighboring behavior.
衡量 Agent 控制变更是否真正改善了其声称要改善的行为,同时没有悄然过拟合 benchmark 或破坏相邻行为。

Mission

目标

An eval is a decision instrument, not a scoreboard. It needs a frozen comparison point, representative semantic families, oracle isolation, explicit failure costs, and a rollback decision.
A candidate should not win because the prompts resemble its instructions, because holdouts leaked into authoring, or because one average score hides a severe regression.
eval 是一种决策工具,而不是记分牌。它需要冻结的比较点、有代表性的语义族、oracle 隔离、明确的失败代价和回滚决策。
候选方案不应仅因 prompt 与其指令相似、holdout 泄漏到编写过程,或某个平均分掩盖了严重回归而胜出。

Activate When

启用条件

  • changing Skills, prompts, routers, hooks, agent profiles, policies, or model-control logic;
  • comparing candidate prompt/agent configurations;
  • measuring trigger precision/recall or action compliance;
  • validating a new behavioral maturity claim;
  • investigating whether an apparent improvement is robust or benchmark-specific.
  • 变更 Skill、prompt、Router、Hook、Agent profile、policy 或模型控制逻辑;
  • 比较候选 prompt 或 Agent 配置;
  • 衡量触发精确率/召回率或 action 遵循度;
  • 验证新的行为成熟度声明;
  • 调查表观改进是否稳健,还是仅对特定 benchmark 有效。

Do Not Activate When

不启用条件

  • verifying ordinary application behavior (
    fable-verify
    );
  • authoring a Skill before its intended behavior is clear (
    skill-creator
    );
  • running a one-off subjective prompt demo with no acceptance decision.
  • 验证普通应用行为(
    fable-verify
    );
  • 在预期行为尚不明确时编写 Skill(
    skill-creator
    );
  • 进行一次性主观 prompt 演示,且不存在明确的验收决策。

Evaluation Classification

评估分类

ChangePrimary eval risk
Router/triggerfalse positives, false negatives, precedence
Skill instructionaction correctness, forbidden shortcuts, boundary behavior
Spark/next-actiontop-1 action, unsafe suggestion, silence precision
Hook/guardenforcement, false blocking, bypasses
Prompt/personatask quality + regressions + instruction conflicts
Tool policycorrect tool choice, unsafe/missing action
Model/configquality/latency/cost variance across representative tasks
变更主要 eval 风险
Router/trigger误报、漏报、优先级冲突
Skill instructionaction 正确性、禁止的捷径、边界行为
Spark/next-actiontop-1 action、不安全建议、保持静默的精确率
Hook/guard执行力度、错误阻断、绕过
Prompt/persona任务质量、回归、指令冲突
Tool policy正确的工具选择、不安全或缺失的 action
Model/config代表性任务之间的质量、延迟和成本差异

Protocol

协议

Stage 1 — Define the decision before running tests

阶段 1 — 在运行测试前定义决策

State:
  • candidate being evaluated;
  • baseline/control;
  • exact behavior expected to improve;
  • metrics and thresholds;
  • unacceptable regressions;
  • rollback action.
Avoid inventing metrics after seeing results.
明确:
  • 被评估的候选方案;
  • baseline/control;
  • 确切预期改善的行为;
  • 指标和阈值;
  • 不可接受的回归;
  • 回滚操作。
避免在看到结果后临时编造指标。

Stage 2 — Build semantic scenario families

阶段 2 — 构建语义场景族

Cover distinct decisions, not wording variants. Include as applicable:
  • straightforward positive case;
  • non-trigger/boundary case;
  • ambiguous competing action;
  • adversarial shortcut pressure;
  • partial/contradictory evidence;
  • failure/recovery path;
  • legacy/constrained environment;
  • unseen holdout.
Record family coverage separately from raw prompt count.
覆盖不同的决策,而非仅变换措辞。根据实际情况包括:
  • 直接的正例;
  • 不触发/边界用例;
  • 存在竞争 action 的歧义用例;
  • 对抗性捷径压力;
  • 部分或矛盾的证据;
  • 失败/恢复路径;
  • 旧版/受限环境;
  • 未见 holdout。
分别记录语义族覆盖情况和原始 prompt 数量。

Stage 3 — Freeze baseline and corpus identity

阶段 3 — 冻结 baseline 和 corpus 身份

Bind the run to:
  • corpus hash/version;
  • candidate/baseline identity;
  • evaluator/scorer version;
  • provider/model/config where external;
  • timestamp/repository revision.
Changing the subject, oracle, corpus, or scoring logic invalidates direct comparability unless explicitly normalized.
将本次运行绑定到:
  • corpus 哈希/版本;
  • 候选方案/baseline 身份;
  • evaluator/scorer 版本;
  • 外部 provider/model/config;
  • 时间戳/repository revision。
除非明确完成归一化,否则更改被评估对象、oracle、corpus 或评分逻辑后,证据将失去直接可比性。

Stage 4 — Protect the oracle

阶段 4 — 保护 oracle

Provider-facing requests must not reveal expected actions, forbidden actions, category labels, holdout identity, scoring implementation, or answer-bearing metadata.
Do not draft the candidate while repeatedly reading holdout failures. Promote discovered cases into a future checked corpus and preserve a new unseen holdout.
面向 provider 的请求不得泄露预期 action、禁止 action、category 标签、holdout 身份、评分实现或含答案的元数据。
不要在反复阅读 holdout 失败项时编写候选方案。将发现的用例纳入未来的受检 corpus,并保留一个新的未见 holdout。

Stage 5 — Execute baseline and candidate consistently

阶段 5 — 一致地执行 baseline 和候选方案

Use the same task inputs, tool availability, context budget, temperature/configuration, timeout policy, and scoring rules where comparison requires them.
Capture provider errors/timeouts as failures or explicit unavailable states; do not fill missing outputs from the oracle.
在需要比较时,使用相同的任务输入、工具可用性、context 预算、temperature/config、超时 policy 和评分规则。
将 provider 错误或超时记录为失败或明确的不可用状态;不要使用 oracle 填补缺失的输出。

Stage 6 — Score by slices, not average alone

阶段 6 — 按切片评分,而非只看平均值

Inspect:
  • overall metric;
  • each semantic family;
  • negative/adversarial forbidden violations;
  • high-cost regressions;
  • variance/repeated-run stability where stochasticity is material;
  • routing confusion pairs where applicable.
A 1% average gain is not acceptable if it introduces a severe release/security/recovery regression.
检查:
  • 总体指标;
  • 每个语义族;
  • 负例/对抗样本中的禁止违规;
  • 高成本回归;
  • 存在实质随机性时的方差/重复运行稳定性;
  • 适用情况下的路由混淆对。
如果 1% 的平均提升引入了严重的发布、安全或恢复回归,则该提升不可接受。

Stage 7 — Investigate suspicious gains

阶段 7 — 调查可疑的改进

Check for:
  • prompt leakage;
  • duplicated/near-duplicate scenarios;
  • benchmark-specific keyword matching;
  • changed tool/context budget;
  • scorer drift;
  • cherry-picked seeds/runs;
  • examples copied into the candidate.
检查:
  • prompt 泄漏;
  • 重复或近似重复的场景;
  • 针对特定 benchmark 的关键词匹配;
  • 工具/context 预算发生变化;
  • scorer 漂移;
  • 挑选有利的 seed 或运行结果;
  • 示例被复制到候选方案中。

Stage 8 — Decide and preserve rollback

阶段 8 — 决策并保留回滚能力

Verdict:
  • ACCEPT: thresholds met, no prohibited regression, evidence representative/fresh;
  • REJECT: candidate regresses required behavior or fails threshold;
  • INCONCLUSIVE: evidence lacks breadth/stability/holdout integrity.
Record baseline artifact so rollback remains possible.
结论:
  • ACCEPT:达到阈值、不存在禁止的回归,且证据具有代表性和时效性;
  • REJECT:候选方案导致必需行为回归或未达到阈值;
  • INCONCLUSIVE:证据缺少广度、稳定性或 holdout 完整性。
记录 baseline artifact,以确保始终可以回滚。

Decision Rules

决策规则

  • Semantic family breadth matters more than raw scenario count.
  • Surface rewrites of one case do not create independent coverage.
  • Holdouts stop being holdouts once used repeatedly to tune the candidate.
  • Compare slices before averages; safety-critical forbidden violations can veto a higher average score.
  • If stochastic variance could change the decision, repeat enough runs to estimate stability rather than cherry-picking one seed.
  • If provider/runtime errors differ between candidate and baseline, separate infrastructure failure from behavior score.
  • Never preserve an old maturity result after the evaluated Skill/corpus/oracle changes unless freshness validation proves identity.
  • Do not lower thresholds after a candidate fails simply to ship it.
  • 语义族的广度比原始场景数量更重要。
  • 对同一个案例进行表面改写,不会形成独立覆盖。
  • holdout 一旦被反复用于调优候选方案,就不再是 holdout。
  • 先比较各个切片,再比较平均值;安全关键型禁止违规可以否决更高的平均分。
  • 如果随机方差可能改变决策,应重复运行足够多次以评估稳定性,而不是挑选单个 seed。
  • 如果候选方案和 baseline 的 provider/runtime 错误不同,应将基础设施故障与行为评分分开。
  • 被评估的 Skill、corpus 或 oracle 发生变化后,绝不能继续沿用旧的成熟度结果,除非时效性验证证明其身份一致。
  • 候选方案失败后,不得仅仅为了发布而降低阈值。

Invariants

不变量

  • Baseline is reproducible/frozen before candidate judgment.
  • Oracle/holdout data remains hidden from the evaluated agent.
  • Candidate and baseline are compared under equivalent conditions where claimed.
  • Missing/failed provider outputs are never replaced by expected answers.
  • Every acceptance decision has a rollback path.
  • High-cost regressions remain visible even when aggregate score improves.
  • 在判断候选方案之前,baseline 必须可复现且已冻结。
  • oracle/holdout 数据必须对被评估的 Agent 保持隐藏。
  • 在所声称的比较范围内,候选方案和 baseline 必须采用等价条件进行比较。
  • 缺失或失败的 provider 输出绝不能用预期答案替代。
  • 每个接受决策都必须有回滚路径。
  • 即使聚合分数有所改善,高成本回归仍需保持可见。

Failure Taxonomy

失败分类

Benchmark overfit

Benchmark 过拟合

Candidate improves checked cases but fails unseen family/holdout. Increase semantic breadth and reject/generalize candidate.
候选方案在已检查用例上有所提升,却在未见语义族/holdout 上失败。应增加语义广度,并拒绝候选方案或推动其泛化。

Oracle leakage

Oracle 泄漏

Expected/forbidden/category data reaches provider/candidate authoring loop. Discard contaminated evidence and create fresh blind cases.
预期、禁止或 category 数据进入 provider/候选方案的编写循环。应丢弃受污染的证据,并创建全新的盲测用例。

Metric blindness

指标盲区

Average improves while important slice worsens. Use per-family and veto metrics.
平均值有所改善,但重要切片发生恶化。应使用逐语义族指标和否决指标。

Non-comparable runs

运行不可比

Different model/tool/context/scorer settings produce apparent gain. Re-run under controlled conditions.
不同的 model、tool、context 或 scorer 设置产生了表观提升。应在受控条件下重新运行。

High variance

高方差

Repeated runs change verdict. Increase samples/control nondeterminism or mark inconclusive.
重复运行会改变结论。应增加样本、控制非确定性,或将其标记为 INCONCLUSIVE。

Corpus drift

Corpus 漂移

Skill/scenario/oracle changed after evidence capture. Mark evidence stale and rerun.
Skill、场景或 oracle 在证据采集后发生变化。应将证据标记为过期并重新运行。

Anti-Patterns

反模式

  • five paraphrases counted as five independent tests;
  • reading holdouts while tuning every candidate;
  • accepting on average score alone;
  • changing thresholds after seeing failure;
  • treating provider timeout as skipped rather than failed/incomplete;
  • evaluating only positive examples;
  • copying expected action vocabulary in a way that reveals the answer per case;
  • claiming M4 because an evidence JSON file exists even though corpus hash changed.
  • 将同一案例的五个改写版本视为五项独立测试;
  • 在调优每个候选方案时阅读 holdout;
  • 仅依据平均分作出接受决定;
  • 在看到失败后修改阈值;
  • 将 provider 超时视为跳过,而不是失败或不完整;
  • 仅评估正例;
  • 复制预期 action 词汇,以逐用例泄露答案;
  • 仅因存在 evidence JSON 文件就声称达到 M4,即使 corpus 哈希已经发生变化。

Eval Report

Eval 报告

text
Candidate / baseline:
Corpus + hashes:
Provider/config:
Semantic families:
Metrics + thresholds:
Per-family results:
Forbidden/high-cost regressions:
Variance/repeats:
Leakage/comparability checks:
Verdict: ACCEPT | REJECT | INCONCLUSIVE
Rollback:
Evidence freshness:
text
候选方案 / baseline:
Corpus + 哈希:
Provider/config:
语义族:
指标 + 阈值:
各语义族结果:
禁止项/高成本回归:
方差/重复运行:
泄漏/可比性检查:
结论:ACCEPT | REJECT | INCONCLUSIVE
回滚:
证据时效性:

Completion Criteria

完成标准

Evaluation completes when:
  • baseline and candidate identities are explicit;
  • semantic coverage and blind holdout integrity are credible;
  • metrics are inspected by meaningful slices;
  • regressions/forbidden actions are not hidden by averages;
  • verdict and rollback are evidence-backed;
  • evidence freshness is tied to the exact evaluated corpus/control.
当满足以下条件时,评估即告完成:
  • baseline 和候选方案的身份明确;
  • 语义覆盖和盲测 holdout 的完整性可信;
  • 按有意义的切片检查了指标;
  • 回归和禁止 action 未被平均值掩盖;
  • 结论和回滚方案均有证据支持;
  • 证据时效性与被评估的确切 corpus/control 绑定。

Progressive Resources

延伸资源

  • Deep guide:
    references/benchmark-design-and-overfit-control.md
  • Existing protocol:
    references/eval-harness-protocol.md
  • Example:
    examples/eval-regression-run.md
  • 深度指南:
    references/benchmark-design-and-overfit-control.md
  • 现有 protocol:
    references/eval-harness-protocol.md
  • 示例:
    examples/eval-regression-run.md