返回 AIPA 笔记
AIPA Day 20

agent-lab evals 面板 — 把"尺子"做成可演示装置

agent-lab evals 面板 — 把"尺子"做成可演示装置

2026-07-04
evals-panelinteractive-demodeterministicportfolio

日期: 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 提炼出的三条骨架(本面板直接继承):

  1. 确定性(determinism):dsdb-lab 全用 seeded PRNG(src/dsdb-lab/shared/prng.ts),同一 seed 永远跑出同一条消息流——所以"演示一次"等于"演示一万次",招聘方刷新页面看到的和我录屏时一模一样。这恰好对齐 Anthropic 评测指南(2026-01)的硬要求:每个 trial 必须从干净环境隔离启动,「残留文件、缓存、资源耗尽会造成相关性失败」。本项目的 getGoldenDataset()模块级 memoize 的纯函数aml.test.ts 断言 getGoldenDataset() === getGoldenDataset()),天然满足隔离与可复现。

  2. 可演示(demonstrability)DemoShell 的四槽结构 {title, narrative, canvas, controls} + LensSwitcher 把"机制"翻译成"可拖动的画面 + 旁白条"。evals 面板沿用:canvas 画 eval 结果,controls 让人切维度,NarrativeBar 解释"为什么 recall 1.0 不是性能而是口径一致性"。

  3. 无后端(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 18getGoldenDataset().cases 分组计数「balanced problem set」正负例都要测(Anthropic 2026-01)
② 规则基线各 typology recall + n + normal FPRevalRuleBaseline(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 / getGoldenDatasetaml.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:客户端组件,import getGoldenDatasetsrc/aml/generator.ts)与 evalRuleBaselinesrc/aml/evalBaseline.ts),在浏览器内对 66 案金标实时求值,渲染 ①taxonomy 分布 ②基线 ③混淆矩阵 ④趋势条四区。禁止写死任何数字——全部从函数返回值派生。
  • 复用 src/dsdb-lab/shell/DemoShell.tsxsrc/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 作品证据。

参考资料

  1. Anthropic — Demystifying evals for AI agents(pass@k / pass^k、三类 grader = code/model/human、reference solution、judge 与人工专家校准、eval saturation 警告、trial 必须从干净环境隔离启动)(2026-01-09;本日 WebFetch 核实)
  2. FutureAGI — LLM Evaluation in 2026: Frameworks, Metrics, Best Practices(三类 eval = deterministic/rubric/composite、judge×人工一致率 ~85%、trend line 揭示渐变漂移、OTel-兼容 tracing 为共同目标)(2026 版)
  3. Aman Khan —「Evals are the new PRDs」三类 evals 与 PM 写 eval 即定义"好" (2026-04 更新版)
  4. 本仓库 src/dsdb-lab/shell/DemoShell.tsx + src/dsdb-lab/shared/prng.ts(确定性 / 无后端 / 四槽装置模式参考实现,本项目已有资产)
  5. 本仓库 src/aml/evalBaseline.ts + src/aml/generator.tsevalRuleBaseline / 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 接口变更同步维护。