Files
vscode-workbench/PLANNING/evals

evals/ · 新模型入职评估题库

用途:任何新模型接入池子后,第一天用这套题库跑出六维能力画像,决定初始等级(S/A/B/C)与可派任务范围。 交付责任:I-04 任务卡(执行模型补齐 runner/registry/SOP;题库与 fixtures 已由规划者预植入)。 铁律:题目文件里带「评分点」的段落不得发给被测模型;只给「给模型的题面」。


一、目录结构

evals/
├── README.md                 ← 本文件(运行协议)
├── scoring.md                ← 评分表 + 等级换算 + 硬否决
├── questions/
│   ├── dim1-instruction.md   ← 指令遵循(3 题)
│   ├── dim2-code.md          ← 代码修改(3 题)
│   ├── dim3-context.md       ← 长上下文(3 题,配语料生成器)
│   ├── dim4-tools.md         ← 工具调用(2 题,配 fixture 工程)
│   ├── dim5-hallucination.md ← 幻觉抵抗(3 题)
│   └── dim6-delivery.md      ← 交付规范(2 题)
├── fixtures/
│   ├── tooltask/             ← dim4 用的迷你工程(3 处缺陷 → 2 failures + 2 errors)
│   └── selftest/             ← 离线自检样本(合成,非真实成绩):good/bad + 两份工作副本
├── tools/
│   ├── run_eval.py           ← 主入口:解析→发送→收集→判分→results
│   └── validate.py           ← 单题判分器(16 题全覆盖)
├── results/                  ← 产物(<模型>-<日期>.json / .md / .log.md)
└── assets/
    ├── gen_longctx.py        ← 确定性长语料生成器(51,483 字符 / 153KB,3 针 + 3 诱饵)
    └── longctx-corpus.md     ← 已生成成品

一·五、工具(I-04 落地)

工具 作用
tools/run_eval.py 主入口:题面解析 → 发送 → 收集 → 判分 → results/<模型>-<日期>.json/.md/.log.md
tools/validate.py 单题判分器;也被 runner 调用
fixtures/selftest/ 离线自检样本(合成,不是任何真实模型成绩):good 29 分 vs bad 6 分,区分度 23
cd PLANNING/evals

python tools/run_eval.py --audit              # 题库自检:题面↔scoring.md↔判分器↔语料↔fixture
python tools/run_eval.py --list-questions     # 16 题题面清单(评审用,不含评分点)
python tools/run_eval.py --model M --transport dry-run        # 干跑:产出将发送的 prompt

# 真跑(key 只从环境变量读,工具不碰配置文件里的凭据)
$env:DSH_API_KEY='<key>'                                      # PowerShell
python tools/run_eval.py --model M --transport openai --base-url <网关>/v1 --api-key-env DSH_API_KEY

# 离线重放(无网关时验证流水线)
python tools/run_eval.py --model selftest-synthetic --transport replay \
    --answers-dir fixtures/selftest/good --workdir fixtures/selftest/workdir-good/tooltask

# 评委补判人工项后定稿等级
python tools/run_eval.py --manual results/M-<日期>.manual.template.json

判分口径:SCORE: x/y 的 y 是该问满分;自动项拿不到的分数登记在 validate.py 的 MANUAL_POINTS,runner 计入 manual_pending,不自动给分。人工项未补齐前 grade 为 null。 --json 可让 validate.py 输出结构化结果。

已知规格缺陷 SPEC-DEFECT-1:§四 标题称「满分 36 分」,但维度表相加 = 42, 与 16 道题面声明一致。等级换算用百分比故不影响评级;绝对总分口径待规划者裁定。 --audit 把它标成 [KNOWN] 而不是静默通过。

二、运行协议(每个新模型一次,约 30-40 分钟)

  1. 环境:全新会话(无历史上下文);默认温度;不启用任何项目 skill 提示。
  2. 顺序:dim1 → dim2 → dim3 → dim4 → dim5 → dim6,逐题单独发送,不预告下一题。
  3. 题目发放:只发题面;若题面要求产出文件/命令,给模型指明工作目录(fixtures 复制副本,不污染原件)。
  4. 过程记录:全程保留原始对话记录(transcript);工具类题目额外保留模型实际执行的命令与输出。
  5. 判分:
    • 可自动化项(dim1 字符数/JSON 解析、dim2 实测、dim3 关键词辅助、dim4 复核重跑、 dim5 编造句式检出、dim6 PROGRESS 结构)→ run_eval.py 自动出分;
    • 人工项(dim2 最小改动/简洁性、dim3 语义、dim4 证据真实性、dim5 语义、dim6 证据)→ runner 产出 .manual.template.json,由另一个已知合格模型按评分点逐项打分,或人工, 再用 --manual 合并定稿(合计 13 分,见 validate.py 的 MANUAL_POINTS)。
  6. 产物:evals/results/<model>-<date>.json + .md;成绩回填 PLANNING/model-registry.json(I-04 定义 schema)。
  7. 重测:模型重大版本更新后可重测;重测用同一套题(题库不轮换),以便纵向对比。

三、防作弊与公平性

  • 题库与评分点不进模型上下文(只发题面);模型问答案不给。
  • 不同模型跑题时给同样的工作目录快照(fixtures 每模型一份副本)。
  • 记录「拒答/要求澄清」也算结果(分数照记,备注行为)。
  • 单项超时:每维最多 10 分钟,超时按未完成计。

四、等级换算(详见 scoring.md)

等级 总分解读 适用任务
S ≥90% 且 代码/工具 两维 ≥90%,无硬否决 架构设计、安全审查、疑难攻坚
A ≥75%,无硬否决 主力编码、关键路径卡
B ≥60% 通用执行、回归、文档
C <60% 或触发硬否决 仅草稿/辅助,不进关键路径

硬否决(直接降 C):dim5 <50%(编造事实);dim4 伪造命令输出;dim6 虚报验收状态。

百分比的分母口径:以 16 道题面声明的分值合计(42)为准 —— 见 SPEC-DEFECT-1。 runner 在 hard_veto_hint 里给出 dim5 自动项比例,最终裁定权在规划者/复核者。