agent-lab evals 面板 — 把"尺子"做成可演示装置
agent-lab evals 面板 — 把"尺子"做成可演示装置
日期: 2026-07-04 阶段: Phase 1 - 产品定义×评测×可观测底座 标签: #evals-panel #interactive-demo #deterministic #portfolio
核心问题
W3 已经有了三类 eval suite 与阻断式 CI gate(Day 19)。但 CI 里的 eval 是给机器看的退出码——招聘方点开作品集看不到。AISA(AI Solutions Architect)叙事要的不只是"我建了尺子",而是"你能在浏览器里当面看到这把尺子量出什么"。本仓库的 src/dsdb-lab/ 已经趟过这条路:把分布式共识做成浏览器内、确定性、无后端的交互装置(Raft 选主、MVCC、Mysticeti DAG 都能拖动参数实时重算)。
今天回答:怎么把 AML 规则基线的 eval 数字,按 dsdb-lab 的装置模式做成一个 evals 面板(AmlEvalsPanel.tsx)——既是 P1「可观测底座」的可视化出口,又是 AISA 作品集里可点击、可复现、无需后端的证据。核心约束:面板里的每个数字必须取自真实的 getGoldenDataset() + evalRuleBaseline(),不是写死的 mock,否则就退回成又一张骗人的 demo 截图。
关键内容
A. dsdb-lab 装置模式的设计哲学:确定性 / 可演示 / 无后端
读 src/dsdb-lab/shell/DemoShell.tsx 提炼出的三条骨架(本面板直接继承):
-
确定性(determinism):dsdb-lab 全用 seeded PRNG(
src/dsdb-lab/shared/prng.ts),同一 seed 永远跑出同一条消息流——所以"演示一次"等于"演示一万次",招聘方刷新页面看到的和我录屏时一模一样。这恰好对齐 Anthropic 评测指南(2026-01)的硬要求:每个 trial 必须从干净环境隔离启动,「残留文件、缓存、资源耗尽会造成相关性失败」。本项目的getGoldenDataset()是模块级 memoize 的纯函数(aml.test.ts断言getGoldenDataset() === getGoldenDataset()),天然满足隔离与可复现。 -
可演示(demonstrability):
DemoShell的四槽结构{title, narrative, canvas, controls}+LensSwitcher把"机制"翻译成"可拖动的画面 + 旁白条"。evals 面板沿用:canvas 画 eval 结果,controls 让人切维度,NarrativeBar 解释"为什么 recall 1.0 不是性能而是口径一致性"。 -
无后端(no-backend):dsdb-lab 全在浏览器算,Next 静态导出即可托管(
momoweb3.pages.dev)。evals 面板同理——evalRuleBaseline是纯 TS 函数,在客户端直接对getGoldenDataset()求值,零 API、零密钥、零数据库。这是它能进静态作品集的前提。
反直觉洞察(无后端不是缺陷,是诚信护栏):直觉上"无后端 = 玩具,有真模型调用才高级"。但本项目的诚实标注纪律下,无后端反而是护栏:面板里跑的是确定性规则引擎,所以它展示的数字就是 CI 里阻断 merge 的同一个数字(
evalRuleBaseline(getGoldenDataset())),不存在"demo 用好数据、CI 用真数据"的双口径。一旦接了后端 LLM,面板就有了"现场调模型挑好结果"的造假空间——dsdb-lab 模式用"确定性纯函数"从结构上消灭了这种空间。这与 W1 周记反复强调的"recall 1.0 是口径一致性声明"是同一条诚信链。
B. 面板呈现什么 + 取数(全部来自真实 getGoldenDataset + evalRuleBaseline)
面板四个区,指标与数据源严格对应(无任何写死值):
| 面板区 | 呈现指标 | 数据源(真实函数) | Anthropic/2026 口径对应 |
|---|---|---|---|
| ① taxonomy 分布 | 66 案按 label 的堆叠条:structuring 18 / layering 15 / mule 15 / normal 18 | getGoldenDataset().cases 分组计数 | 「balanced problem set」正负例都要测(Anthropic 2026-01) |
| ② 规则基线 | 各 typology recall + n + normal FPR | evalRuleBaseline(getGoldenDataset()) 的 perTypology / normalFalsePositiveRate | 「regression eval 应维持接近 100% pass」 |
| ③ 混淆矩阵 | label→predicted 热力格,高亮唯一 FP(normal→structuring 1) | evalRuleBaseline(...).confusion | 「failure 要显得 fair:清楚错在哪」 |
| ④ 通过率 / 一致率趋势 | 基线 vs CI 门槛余量条;P3 后叠加 judge×人工一致率 | eval-baseline.json(滚动基线,Day 19)+ 门槛常量 | 「trend line 揭示渐变漂移,点测会漏」 |
组件数据流(无后端、纯客户端):
getGoldenDataset() ──(纯函数, memoized)──► AmlDataset (66 cases)
│ │
│ groupBy(label) │ evalRuleBaseline()
▼ ▼
① taxonomy 分布 BaselineEval { perTypology,
│ normalFalsePositiveRate, confusion }
│ │
▼ ┌───────────┼───────────┐
<AmlEvalsPanel> ◄────────────────────┤②基线 ③混淆 ④趋势条├─── 门槛常量 + eval-baseline.json
│ └───────────────────────┘
▼
DemoShell { canvas, controls, NarrativeBar } ──► 静态导出,浏览器内实时算
关键纪律:取数函数就是 CI 用的那一个。AmlEvalsPanel import 的 evalRuleBaseline / getGoldenDataset 与 aml.test.ts(CI 断言)import 的是同一模块同一函数。所以面板 ≠ 美化过的报告,它是 CI 断言的可视化镜像——招聘方看到的 recall 1.0 / FPR 5.56% 与 CI 里挡 merge 的阈值同源。
C. 作为 AISA 作品的可演示性价值
为什么这个面板对求职是高杠杆资产(对照 Anthropic 三类 grader 框架,2026-01):
| 招聘方想验证的能力 | 面板如何当面证明 |
|---|---|
| 能定义"好"(写 evals = 写 PRD,Aman Khan 2026-04) | ②③ 区把"好的 AML 判定"具体到 recall/FPR/混淆矩阵,不是空话 |
| 懂三类 grader 分工(code/model/human,Anthropic 2026-01) | 面板诚实标注:当前是 code-based grader(确定性、可复现、对合法变体脆弱);P3 才叠 model-based judge + human 抽检 |
| 懂 eval saturation 陷阱 | NarrativeBar 直接讲「recall 全 1.0 是口径一致性不是性能,是 eval 饱和的警示——所以 P3 必须扩集」(Anthropic 警告 100% pass 会消除改进信号) |
| 懂 judge×人工一致率 | ④ 区为 P3 预留一致率条;业界 2026 口径 judge 与人工一致率 ~85%,需 ≥0.8 才放 judge 进 CI(与 Day 3 D 节约束一致) |
| 工程可复现性 | 刷新即同结果(seeded PRNG + memoize),招聘方自己点得出和录屏一样的数 |
踩坑(满分=口径一致性,不是性能;面板必须替我说出这句话):dsdb-lab 笔记反复出现的精髓——「满分是口径一致性而非性能」。如果面板只显示「recall 100%」四个大字而不解释,它就成了 W1 周记里点名要消灭的那类夸大文案。所以 NarrativeBar 不是装饰,是诚信组件:它强制把"生成器与规则同源、满分证明无 off-by-one 而非真实准确"这句限定语显示在数字旁边。少了它,面板技术上没错但叙事上造假。
设计要点/决策表
| 要点 | 说明 | 与已有方案差异 |
|---|---|---|
| 复用 dsdb-lab 装置模式 | 继承 DemoShell 四槽 + 确定性 PRNG + 无后端 | 不另造一套 demo 框架,体例与 dsdb-lab 一致 |
| 取数 = CI 同一函数 | evalRuleBaseline/getGoldenDataset 与测试 import 同源 | 杜绝 demo/CI 双口径造假 |
| NarrativeBar 作诚信组件 | 限定语(口径一致性、同源、eval 饱和)强制随数字显示 | 多数 demo 只秀数字不带前提 |
| 当前标注为 code-based grader | 明确"这是确定性规则,非 LLM judge" | 不冒充 AI 能力;P3 才叠 model grader |
| ④ 区为一致率预留位 | judge×人工一致率条 P3 接入 | 面板结构先于 LLM 就位,符合"尺子先于引擎" |
对本项目的落地
- 新增
src/components/aml/AmlEvalsPanel.tsx:客户端组件,importgetGoldenDataset(src/aml/generator.ts)与evalRuleBaseline(src/aml/evalBaseline.ts),在浏览器内对 66 案金标实时求值,渲染 ①taxonomy 分布 ②基线 ③混淆矩阵 ④趋势条四区。禁止写死任何数字——全部从函数返回值派生。 - 复用
src/dsdb-lab/shell/DemoShell.tsx与src/dsdb-lab/shared/:套用{title, subtitle, narrative, canvas, controls}四槽与InvariantBadge/formatters,确保与 dsdb-lab 体例一致;NarrativeBar 文案写死三条限定语(同源/口径一致性/eval 饱和)。 - 挂载页面:在
app/aml-copilot/下增 evals tab,或在app/learn/aipa/旁挂一个/aml-copilot/evals路由;Navbar 复用 W1 已加的 aml-copilot 入口。 - 测试:
AmlEvalsPanel.test.tsx断言"面板渲染的 recall/FPR 与evalRuleBaseline(getGoldenDataset())返回值逐字相等"——把"面板=CI 镜像"这条纪律变成可执行断言,防未来有人偷偷塞 mock。 - 诚实标注(不谎称已实现):④ 区的 judge×人工一致率在 P3 接 LLM 前显示为占位/待接入,不伪造一致率数字;面板顶部标注「当前 grader:code-based(确定性规则引擎)」。
- 长文#1 素材:本面板截图 + NarrativeBar 文案进《从 recall@k 到生产级 evals》(W4),作为"无后端确定性 eval 装置"的 AISA 作品证据。
参考资料
- Anthropic — Demystifying evals for AI agents(pass@k / pass^k、三类 grader = code/model/human、reference solution、judge 与人工专家校准、eval saturation 警告、trial 必须从干净环境隔离启动)(2026-01-09;本日 WebFetch 核实)
- FutureAGI — LLM Evaluation in 2026: Frameworks, Metrics, Best Practices(三类 eval = deterministic/rubric/composite、judge×人工一致率 ~85%、trend line 揭示渐变漂移、OTel-兼容 tracing 为共同目标)(2026 版)
- Aman Khan —「Evals are the new PRDs」三类 evals 与 PM 写 eval 即定义"好" (2026-04 更新版)
- 本仓库
src/dsdb-lab/shell/DemoShell.tsx+src/dsdb-lab/shared/prng.ts(确定性 / 无后端 / 四槽装置模式参考实现,本项目已有资产) - 本仓库
src/aml/evalBaseline.ts+src/aml/generator.ts(evalRuleBaseline/getGoldenDataset取数函数,与 CI 断言同源)
SOTA 检查 (2026-06-11)
- 「确定性 / 无后端 / 浏览器内交互」作为可演示评测装置的模式,2026-06 仍站得住:Chrome WebMCP(2026-02,Canary 146+)与浏览器内置 AI(client-side inference)让"无后端 AI demo"成为上升趋势;本面板走更保守的"确定性纯函数"路线,不依赖任何实验性 API,可移植性更强。
- eval 面板该显示的指标(taxonomy 分布 / pass rate / 混淆 / judge×人工一致率 / 趋势)是 2026 现行口径:Arize Phoenix、Braintrust、FutureAGI 三家 dashboard 均含这些视图;本面板取子集(无生产流量,故 trend 用 CI 滚动基线替代生产漂移)。
- Anthropic 评测指南(2026-01)是当前最权威一手框架:pass@k/pass^k、三类 grader、reference solution、eval saturation 警告均直接采用;本面板把"环境隔离=确定性可复现"映射到
getGoldenDataset的 memoize 纯函数。 - 过时认知警示:「demo = 录屏截图 + 写死的漂亮数字」已被淘汰——2026 可演示作品要求可复现且取数与 CI 同源;同时警惕反向过时:以为"必须现场调真 LLM 才算 AI 作品"——确定性规则 grader 是 Anthropic 明列的三类 grader 之一,诚实标注后完全是合格的 AISA 证据。
- 待跟踪:P3 接 LLM 后 ④ 区一致率从占位转真实数字,届时回填;
AmlEvalsPanel.tsx落地后,"面板=CI 镜像"断言需随evalRuleBaseline接口变更同步维护。