Block 收口——grader 报告与工具固化
B13 走了十天:从 FATF 五大类型学(Day 121)→ BSA 报告阈值(Day 122)→ 混淆矩阵与 per-typology recall(Day 123)→ LLM-as-classifier(Day 124)→ LLM grader 接 κ(Day 125)→ Qwen3 对照(Day 126)→ recall delta 归因(Day 127)→ survey(Day 128)
阶段: B13 · FATF typologies + BSA grader + 用户研究(Day 121-130) 标签: #reproducible-eval #linkable-asset #block-closeout #aml-grader
今日导引(由浅入深)
B13 走了十天:从 FATF 五大类型学(Day 121)→ BSA 报告阈值(Day 122)→ 混淆矩阵与 per-typology recall(Day 123)→ LLM-as-classifier(Day 124)→ LLM grader 接 κ(Day 125)→ Qwen3 对照(Day 126)→ recall delta 归因(Day 127)→ survey(Day 128)→ 访谈(Day 129)。今天是 block 收口:把这些散落的结论与工具固化成一份可复现、可链接的单一资产。这一步在 B1→B18 能力曲线上对应「交付纪律」——AIPA 的 KPI 是「可链接资产 + eval 数字 + 单位成本」而非笔记数量,一个 block 必须落一个能贴进作品集的东西。
为什么紧接前九天、通向 B14:Day 121-129 是一堆零件(数据、规则、LLM 裁判、κ、delta、用户研究工具),今天把它们装成一个可链接、可重跑的整体;而报告里清楚标注的「循环自评仅作对照」直接为 Day 131 开篇的「杀死循环 baseline」埋好伏笔。今天的最小可判定产出:agent-evals/reports/b13-typology.md 报告框架就位 + 全 suite test green 确认。
1. 机理精读
什么是「可复现报告」、为什么是 block 的正确收口物。 一份可复现 eval 报告 = 结论 + 复现路径。结论是双裁判混淆矩阵、Cohen's κ、recall delta、工具就绪状态;复现路径是 seed + 一条重跑命令。没有 seed 和命令,报告里的数字就是「相信我」——无法被第三方核验,丧失外部效度。带 seed + 命令,任何人(包括三个月后的你自己)都能重跑出同样的数字。这正是 AIPA 评审强制的「可链接资产」标准:不是一篇笔记,而是一个能贴链接、能被点开重跑的工件。
为什么是 block 的「正确」收口而非「写篇总结笔记」:AIPA 的 KPI 明确不是笔记数量,而是「可链接资产 + eval 数字 + 单位成本」。一篇总结笔记复述了你做过什么,但 hiring manager 点不开、跑不动、验不了;一份带 seed + 命令的报告则是可被外部核验的证据。前者是叙述,后者是资产——B13 的价值要落在后者。
报告要汇总哪些 B13 产物。 一张映射表,把十天的产出收进一个报告:
| 报告栏目 | 来源 | 内容 | 状态 |
|---|---|---|---|
| 规则混淆矩阵 | Day 122-123 | 5×5 矩阵 + per-typology recall | 工具 BUILT;数字待跑 |
| LLM 混淆矩阵 | Day 124-126 | DeepSeek-V4 / Qwen3 各一套 5×5 | 工具 BUILT;数字待 key |
| LLM-vs-真值 κ | Day 125 | 裁判效度(validity) | 工具 BUILT;数字待 key |
| 模型间 κ | Day 126 | 裁判信度(reliability) | 工具 BUILT;数字待 key |
| recall delta 表 | Day 127 | 5 行规则−LLM 差 + 归因 | 待两矩阵落盘 |
| 用户研究工具 | Day 128-129 | survey + 访谈脚本就绪状态 | 草稿就绪;投放待用户 |
逐条解释:
- 两套混淆矩阵:规则版(Day 123)+ LLM 版(DeepSeek-V4 / Qwen3,Day 124-126)的 5×5 矩阵,并列对照。
- per-typology recall:每个类型学在规则与 LLM 下各自的召回,以及 Day 127 的 recall delta 表(5 行,配 support 与 CI 警示)。
- Cohen's κ:LLM-标签 vs AMLSim 真值的 κ(Day 125),衡量裁判效度;附 Day 126 的模型间 κ 衡量裁判信度——两个 κ 一起报,validity 与 reliability 才都看得到。
- 用户研究工具就绪状态:Day 128 survey + Day 129 访谈脚本的产出状态(草稿就绪 / 真实投放待用户)。
为什么强调「工具固化」而非「数字固化」。 B13 的底层工具——confusionMatrix.ts、cohensKappa.ts、typology.ts、generator.ts——都是纯函数、确定性、已 tested,它们不随某次跑批过期。把工具固化(保证 test green、接口稳定)比把某次跑批数字固化更有长期价值:
- 数字易变:模型版本(
deepseek-v4-*会迭代)、抽样种子、prompt 微调都会让数字漂移。 - 工具稳定:固定 seed + 纯函数 → 同输入永远同输出,是可复用、可复算的资产。
- 报告策略:引用「工具 + seed + 命令」,把易变数字标为「某次跑批快照」,而非把它们硬编进结论当成永久真理。
这与软件工程「测代码不测快照」的直觉一致:值得长期维护的是产生数字的确定性流程,不是某一次的输出。
诚实收口:哪些是真数字、哪些待跑。 这是 B13 的诚信底线。底层工具 BUILT+tested 是真实状态(repo 现 423 tests green);但报告里的双混淆矩阵 + κ + delta 表依赖 Day 124-127 的 key 跑结果落盘,那些 = 待跑。收口报告必须把这两类清楚分开:工具「已就绪」,跑批数字「待跑(需 key)」。不得把待跑升级成已完成。
B13 与 B14 的边界(为什么现在还不能下效果结论)。 B13 的规则基线仅作对照——evalBaseline.ts 的 evalRuleBaseline 在 getGoldenDataset()(同作者合成器造的数据)上自评:生成器和判别器共享同一组类型学定义,召回率高只是因为「自己出题自己判」,数字必然虚高、无外部效度(external validity)。真正的外部 ground-truth(AMLworld / Elliptic 的 recall / precision / FPR)要到 B14(Day 131+)才落地,且届时数据下载是 gated 的。所以本日收口报告不得把任何循环自评数字写进对外结论,只能作为标注清楚的对照基线。
这条边界正是 B13→B14 的接力点:B13 把「裁判层 + 工具链」搭好(双模型、κ、混淆矩阵、报告范式),但所有数字仍困在「合成数据 + LLM 裁判」的半外部状态;B14 用真正第三方标注的 AMLworld 杀死循环 baseline,把效果数字做成可对外的资产。今天的报告要为这个交接写清楚「哪些是对照、哪些待 B14 替换」。
2. 推导 / 手算 / 代码走读
收口报告引用的四个工具都已 BUILT+tested,走读它们「为什么可复现」:
src/aml/generator.ts:getGoldenDataset()(generator.ts:473)用固定GOLDEN_SEED+GOLDEN_COUNTS(generator.ts:463:structuring=18 / layering=15 / mule_network=15 / normal=18,共 66 案)生成数据集,模块级 memoize(同进程内返回同一引用,generator.ts:470-477)。固定 seed 是可复现的根:同 seed 同输入永远同输出。src/aml/typology.ts:assessCase(typology.ts:321)/assessCaseV2(typology.ts:598)是确定性规则引擎,所有判定来自交易证据 + 固定阈值常量(如CTR_THRESHOLD_CENTS = 1_000_000,typology.ts:11)。无随机、无网络,因此规则版矩阵完全可复现。src/aml/confusionMatrix.ts:confusionMatrix(items)(confusionMatrix.ts:28)是预测来源无关的纯函数——规则、DeepSeek、Qwen3 的预测都走同一条{label, predicted}→ 5×5 矩阵路径,保证规则版与 LLM 版矩阵口径一致、可并排对照。src/agent/eval/cohensKappa.ts:cohensKappa(a,b)(cohensKappa.ts:22)纯函数;cohensKappaWithCI(cohensKappa.ts:53)的 bootstrap RNG 可注入(opts.rng,cohensKappa.ts:56),传固定 RNG 即可复现 CI。这是「带随机的步骤也能可复现」的关键设计。
报告骨架的最小结构(写进 agent-evals/reports/b13-typology.md):
- 头部:seed(
GOLDEN_SEED+ 200 抽样的种子)+ 一条重跑命令。 - 规则版 5×5 混淆矩阵 + per-typology recall。
- LLM 版(DeepSeek-V4 / Qwen3)5×5 混淆矩阵 + per-typology recall。
- LLM-标签 vs 真值 κ(+ 模型间 κ)。
- recall delta 表(5 行)。
- survey / 访谈工具就绪状态。
- 诚实标注段:哪些已 BUILT+tested、哪些待跑(需 key)、循环自评仅作对照不对外。
3. 今日实战
- 生成
agent-evals/reports/b13-typology.md,含:规则 + LLM(DeepSeek-V4 / Qwen3)两套 5×5 混淆矩阵 + per-typology recall + LLM-标签 vs 真值 κ + 模型间 κ + recall delta 表 + 头部 seed / 重跑命令。 - 跑全 suite(
pnpm eval:agent相关 + vitest)确认 test green,把绿状态记进报告。 - 在报告诚实标注段写清:底层工具已 BUILT+tested(repo 现 423 tests green);双混淆矩阵 + κ + delta 数字待 Day 124-127 的 key 跑结果落盘;循环自评(
evalBaseline.ts)仅作对照,不写进对外结论。 - 报告头部固定写:
GOLDEN_SEED+ 200 抽样种子 + 一条可粘贴重跑命令,确保第三方能复现。 - 报告末尾留「B14 待替换项」清单:哪些对照数字将在接入 AMLworld 后被真 ground-truth 取代。
报告骨架模板(写进文件,便于复用):
# B13 Typology Grader Report
- seed: GOLDEN_SEED=…, sample-seed=…
- rerun: pnpm vitest run … && pnpm eval:agent …
## 1 规则混淆矩阵(5×5)+ per-typology recall
## 2 LLM 混淆矩阵(DeepSeek-V4 / Qwen3)
## 3 κ:LLM-vs-真值 / 模型间
## 4 recall delta 表(5 行,配 support + CI 警示)
## 5 用户研究工具就绪状态
## 6 诚实标注:BUILT vs 待跑;循环自评仅对照;B14 待替换项
4. 今日实测 / 产出
- 底层工具(
confusionMatrix.ts/cohensKappa.ts/typology.ts/generator.ts)均 BUILT+tested(repo 现 423 tests green)。 b13-typology.md报告 = 待跑(需 Day 124-127 的 key 跑结果落盘),将汇总双混淆矩阵 + κ + 5 行 delta 表。- 报告框架 / 模板(seed + 命令 + 栏目)= 可即时产出(文档骨架,不依赖 key);真正的数字填充待跑。
- judge-human κ(≥50 手标)与 survey / 访谈真实投放 = 待用户,本 block 不产出,B14 起逐步解锁外部 ground-truth。
5. 常见误区 / 陷阱
- 把循环自评数字写进对外结论:
evalBaseline.ts的规则自评虚高、无外部效度,只能作标注清楚的对照基线;真正 ground-truth 在 B14。 - 报告无 seed / 无重跑命令:数字不可复现 = 不可链接资产,违反 AIPA KPI。
- 把待跑数字写成已完成:底层工具已就绪 ≠ 跑批数字已得;二者必须分开标注。
- 固化易变数字而非工具:模型版本 / 抽样会变,应固化纯函数工具 + seed,而非硬编某次跑批数字。
- 只报点估计不报 support / CI:delta 表每行要带 support 与 CI 警示,否则单类十几条样本的差被当成结论(Day 127 / B17 N=29 教训)。
- κ 只报一个:validity(LLM-vs-真值)与 reliability(模型间)要分别报,混成一个 κ 会让人误判裁判层可信度。
- 报告无重跑命令:只贴数字不给命令 = 不可复算,等于一篇带表格的笔记,不算可链接资产。
- 把工具 BUILT 当成「block 做完了」:工具就绪 ≠ 跑批完成 ≠ 有对外效果数字;真正效果在 B14 接外部 ground-truth 后才有。
6. 学习资源(每条带 YYYY-MM)
- Anthropic《Demystifying evals》(2026-01) — 可复现 eval 报告范式(seed + 命令 + 外部金标),本日收口标准来源。
- IBM AMLworld dataset card (Kaggle, 2024-04) — typology 真值底座,B14 外部 ground-truth 主路。
- Pineau et al., "Improving Reproducibility in ML Research" / ML Reproducibility Checklist (2020-2021) — seed + 命令 + 环境固化的可复现性清单经典。
- AIPA-120 计划(
docs/AIPA_120_PLAN.md)— 「可链接资产 + eval 数字 + 单位成本」KPI 定义(交叉参考)。
SOTA检查 (2026-06 更新)
- 当前主流:可复现报告(seed + 命令)是当前 eval 工程标准做法;纯函数确定性工具 + 可注入 RNG 是「带随机也可复现」的标准范式。
- 是否仍 SOTA:是。reproducible eval 报告在 2026 是评审硬要求。
- 过时黑名单:避免把任何循环自评数字写进对外结论——B13 规则基线仅作对照,真正外部 ground-truth(AMLworld / Elliptic 的 recall / precision / FPR)在 B14 落地(届时数据下载 gated);避免无 seed/命令的「相信我」报告。
- 下次复查点:B14(Day 131+)接外部标注集后,用真正 ground-truth 替换对照基线;执行跑批当周(需 key)重验 DeepSeek-V4 / Qwen3 模型 id(legacy
deepseek-chat/deepseek-reasoner2026-07-24 退役)。
衔接
- 昨天:Day 129 — M6 用户研究:半结构化访谈脚本(定性研究工具收尾)。
- 今天:B13 收口——把双裁判矩阵 / κ / recall delta / 用户研究工具固化成单一可复现可链接报告。
- 明天:Day 131 — 循环自评为何无效(B14 开篇,正式「杀死」循环 baseline,接外部 ground-truth)。