P1 阶段总结 — 尺子先于引擎,证据先于声明
P1 阶段总结 — 尺子先于引擎,证据先于声明
日期: 2026-07-12 阶段: Phase 1 - 产品定义×评测×可观测底座 标签: #phase-summary #evals-first #sota-check #p2-prep
核心问题
P1(D1-28,四周)只为证明一个命题:在写任何 LLM 代码之前,「尺子」可以先就位——产品定义(PRD/JTBD)、金标数据、规则基线、三类 evals、CI 阻断门、tracing、失败归因面板,这一整套度量与观测底座,能在产品的「智能引擎」(LLM 调用)尚未接入时全部建好并跑起来。这个次序不是洁癖,是 2026 的工程事实标准:OpenAI eval-driven development 明言「evaluate early and often,不是事后补」,「评测真正的价值在它跑在每次 commit 上」(OpenAI Developers, 2026)。
P1 阶段总结回答四件事:(A) 「先建尺子」命题的证据链——eval 确实在 LLM 之前就位了吗?(B) P1 交付清单逐项对照计划,可链接性如何;(C) eval 与成本的数字汇总(带诚实限定语);(D) P2 开工预检——MCP 07-28 倒计时、RC 状态、阻断项。
关键内容
A. 「先建尺子」命题的回顾与证据(eval 在 LLM 之前就位)
命题的强形式:存在一个时间点 T,此时项目有可运行、进 CI 的 eval,但还没有任何 LLM 推理代码。P1 提供了这个 T 的物证——下表按「资产入仓时是否依赖 LLM」分类,证明度量底座完全建立在确定性代码之上:
| 度量/观测资产 | 入仓位置 | 依赖 LLM? | 证据性质 |
|---|---|---|---|
| 合成金标数据集(66 案) | src/aml/generator.ts(seed aipa-golden-v1) | ❌ 确定性 PRNG | 数据先于模型 |
| 类型学规则基线(6 规则) | src/aml/typology.ts | ❌ 纯规则 | 引擎雏形非 LLM |
| 规则基线评测器 | src/aml/evalBaseline.ts | ❌ 标签比对 | 尺子非 LLM |
| recall@k 检索框架(23 golden) | src/agent/eval/retrievalGolden.ts + runRetrievalEval.ts | ❌ BM25 词法 | 检索尺子非 LLM |
| CI 阻断门 | vitest + CI 断言 | ❌ | 质量门先于引擎 |
| tracing 底座 | src/agent/trace/useTraceStore.ts + types.ts | ❌ 纯记录 | 观测先于被观测对象 |
| 失败归因面板(设计) | src/agent/eval/(拟新增 attributeFailure.ts)+ Day 26 | 部分(v1 代码型) | 归因先于 LLM 失败 |
「先建尺子」的反直觉点:度量底座不需要被度量对象存在就能建好,而且应该先建好。直觉是「先有产品才能测产品」,但 AI 产品里这是倒的——LLM 输出是概率分布,「好」的定义本身就是产品定义(Day 3)。若先接 LLM 再补 eval,你会用「demo 看起来对」来定义好,而 Shreya(2026)证明这条路必崩:直接把 trace 丢给 ChatGPT 问「对不对」,它会说「对」却漏掉所有 nuance。先建尺子 = 先把「好」钉死成可断言的代码,而非事后用感觉追认。P1 的全部价值就是把这个倒序坐实成入仓物证。
B. P1 交付清单对照计划(含可链接性)
| 交付物 | 计划阶段 | 实际状态 | 位置/证据 | 可链接 URL |
|---|---|---|---|---|
| 一页纸 PRD(成功指标=eval) | W1 | ✅ | docs/AML_COPILOT_PRD.md | learn track |
| 合成金标(66>计划60) | W1-2 | ✅ 提前 | src/aml/generator.ts | — |
| 规则基线 + 评测器 | W2-3 隐含 | ✅ 提前 | src/aml/typology.ts + evalBaseline.ts | — |
| 三类 evals suite | W3 | ✅ | 代码型(evalBaseline.ts)+judge(设计)+人工抽检 | — |
| CI 阻断 eval gate | W3 | ✅ | vitest + CI 断言(recall/FPR 入回归) | — |
| tracing(OTel semconv + Langfuse 设计) | W4 | ✅ 底座 + 设计 | src/agent/trace/ + Day 26/27 | /agent-lab trace 视图 |
| 失败归因面板 | W4(Day 26) | ✅ 设计 + 数据底座就位 | trace/types.ts 三字段 + Day 26 决策树 | /agent-lab |
| 长文#1《recall@k→生产级 evals》 | W4(Day 27) | ✅ 定稿 | docs/aipa/longform/ | learn track |
| 三屏可点击原型 | W1 | ✅ | app/aml-copilot/ + src/components/aml/(5 组件,186 测试) | /aml-copilot |
| 学习笔记 28 篇 | 每日 | ✅ | docs/aipa/day1~28-*.md | learn track |
可链接性结论:作品②(AML copilot)的度量与观测侧已全部入仓且可演示(/aml-copilot 三屏 + /agent-lab trace/归因视图);智能引擎侧(LLM 接入)按计划留到 P2 之后——这正是命题 A 要的「尺子先于引擎」的可见形态。
C. eval 与成本数字汇总(带诚实限定语)
数字单一真相源为 evalRuleBaseline(getGoldenDataset()) 实测(src/aml/evalBaseline.ts),非门槛值:
| 指标 | 实测 | CI 门槛 | 余量 | 诚实限定语 |
|---|---|---|---|---|
| structuring recall | 1.00(n=18) | ≥0.85 | +0.15 | 口径一致性,非性能 |
| layering recall | 1.00(n=15) | ≥0.80 | +0.20 | 同源数据,外推无依据 |
| mule_network recall | 1.00(n=15) | ≥0.80 | +0.20 | 同上 |
| normal FPR | 0.0556(1/18) | ≤0.15 | 余 0.094 | 唯一 FP 为刻意保留 |
| $/案件(端到端 token 成本) | 未实测 | 待 P2 gateway | — | 用 gen_ai.usage.*_tokens 聚合,semconv client span 维度可直采 |
数字汇总的口径陷阱:recall 全 1.0 不是「准确率 100%」。生成器(
generator.ts)与规则引擎(typology.ts)同源、共享窗口语义,满分主要证明「数据-规则定义对齐、无 off-by-one」。$/案件尚无实测值——P1 建好了成本聚合的底座(semconv token 属性 + tracing 成本累加useTraceStore.addCost),但真实成本数字要等 P2 接入 LLM gateway 后才有。把「底座就位」误报成「成本已优化」是同类夸大,禁止。
D. P2 开工预检(MCP 07-28 倒计时 + 阻断项)
P2 主题为 agent 与 MCP 集成,开工硬依赖 MCP 规范状态。预检结论:
| 预检项 | 状态(2026-06-11 核实) | 对 P2 的含义 |
|---|---|---|
| MCP 2026-07-28 规范 | RC 已于 2026-05-21 锁定;终版 2026-07-28 发布(launch 以来最大改版) | P2 开工日(07-28,本笔记日历后约两周)恰逢终版落地——按终版 2026-07-28 而非 RC 写代码 |
| 10 周验证窗 | 05-21 RC → 07-28 终版,给 SDK/客户端实现方对真实负载验证 | 本项目作为客户端实现方,应在窗口内拿 RC 跑通最小集成,07-28 切终版 |
| 无状态协议核 | 取消 initialize/initialized 握手与 Mcp-Session-Id 头 | 可部署在标准轮询负载均衡后,无需 sticky session——简化本项目 agent 服务部署 |
| Extensions 框架 + Tasks | Tasks 从实验性核特性迁为扩展,按无状态重设计 | 长任务(如多步 AML 调查)走 Tasks 扩展,opt-in |
| MCP Apps | 服务端渲染沙箱 HTML UI + 安全审查 | AML copilot 工作台屏未来可作为 MCP App 暴露 |
| 弃用政策 | Roots/Sampling/Logging 进入弃用,≥12 个月窗口 | 不要在新集成里依赖这三者 |
| 缓存头 ttlMs/cacheScope | tools/list 等结果带新鲜度与跨用户共享标记 | 工具列表可缓存,降本——接 $/案件成本控制 |
P2 阻断项:(1) MCP 终版 07-28 才发布,P2 第一周只能基于 RC 验证,正式集成须等终版——计划已对齐,无冲突;(2) semconv agent span 仍 development(Day 27 复查),agent 维度埋点须保留独立映射层,不可直采;(3) 失败归因面板 v2(embedding 版 findSupport)依赖 judge 校准,须先达 Day 3 人工一致率门槛 ≥0.8。
设计要点/决策表
| 要点 | 决策 | 与朴素做法差异 |
|---|---|---|
| 命题用入仓物证证明 | 按「是否依赖 LLM」分类资产 | 口头声称「我们先做了 eval」无物证 |
| 可链接性是交付标准 | /aml-copilot + /agent-lab 可演示 | 「数据层完成」掩盖不可演示 |
| 数字汇总强制带限定语 | recall 1.0 = 口径一致性 | 裸数字 = 阶1 诚信止血对象 |
| $/案件分「底座」与「实测」 | 底座就位 ≠ 成本已优化 | 把底座误报成成果 |
| P2 按 MCP 终版 07-28 写 | RC 仅供窗口内验证 | 按 RC 写 → 终版破坏性改动返工 |
| agent span 留映射层 | 仍 development,不直采 | 直采 → 规范变动即埋点失效 |
对本项目的落地
- 进度回写:
docs/daily/AIPA_PROGRESS.mdP1 全四周行的交付列与 SOTA✓ 列按 B/D 节更新;P1 结项标记,P2(07-28 起)开工行预填 MCP 终版依赖。 - 作品②状态:「三大杀手作品」表中 AML copilot 的度量观测侧填可链接 URL
/aml-copilot(三屏)+/agent-lab(trace/归因);智能引擎侧标「P2 接入」,不虚标已完成。 - 单一真相源纪律延续:所有对外展示(作品集首页、演示页)引用的 eval 数字必须来自
src/aml/evalBaseline.ts实测输出,过 Day 27 C 节「危险/诚实」对照表自查;$/案件在 P2 实测前一律标「待实测」。 - P2 集成切口:MCP 客户端集成拟在
src/agent/下新增 mcp 适配层;无状态协议核意味着可复用现有 agent 服务部署形态(无需 sticky session);Tasks 扩展承载多步 AML 调查的长任务。tracing 侧useTraceStore的 step/toolCall 结构天然映射 MCP tool 调用,归因面板(Day 26)可直接消费 MCP tool 的 error/result。 - 失败归因接续:P1 留下的
attributeFailure.ts(设计)在 P2 接入真实 LLM + MCP 工具后获得第一批真实失败 trace,三桶归因从「设计」转「实测」,补齐 Day 26 的 v2(embeddingfindSupport,须先校准 judge)。
参考资料
- The 2026-07-28 MCP Specification Release Candidate — Model Context Protocol Blog:RC 锁定 2026-05-21、终版 2026-07-28;无状态协议核、Extensions、Tasks、MCP Apps、授权加固、弃用政策、ttlMs/cacheScope;10 周验证窗
- The 2026 MCP Roadmap — Model Context Protocol Blog(2026):扩展模型与前向兼容
- Testing Agent Skills Systematically with Evals / Evaluation best practices — OpenAI Developers(2026):eval-driven development;50-200 例黄金集起步;Evals CLI 非零退出码接 CI gate
- Demystifying evals for AI agents — Anthropic Engineering(2026):agent eval 实践
- Hamel Husain & Shreya Shankar — LLM Evals: Everything You Need to Know(hamel.dev, 2026-01-15):先看 trace 再写 judge;直接 dump trace 给 LLM 漏 nuance
- OpenAI CPO —「PM 最重要的技能是写 evals」(2025-08)
- 本仓物证:
src/aml/(generator/typology/evalBaseline)、src/agent/eval/retrievalGolden.ts、src/agent/trace/useTraceStore.ts、app/aml-copilot/、Day 26/27 笔记
SOTA 检查 (2026-06-11)
- MCP 时间线已硬核实:RC 2026-05-21 锁定,终版 2026-07-28 发布(官方博客)——P2 开工与终版落地对齐,「按终版写、RC 仅供窗口内验证」决策成立。这是 launch 以来最大改版(无状态核 + Extensions),破坏性变更要求严格按终版而非 RC。
- eval-first 是 2026 工程共识:OpenAI(eval-driven development、CI 非零退出门)、Anthropic(demystifying agent evals)、Hamel/Shreya(先 trace 后 judge)三方一致——P1「先建尺子」命题与行业主线同向,无被替代风险。
- 诚实纪律无松动:recall 1.0 必带「口径一致性、非性能」限定;$/案件分「底座就位」与「实测」——P2 接 LLM 后才有真实成本,禁止提前声明成本已优化。
- 过时认知警示:(1) MCP 不可再引 2025-11-25 版做新集成——2026-07-28 是 P2 基准;(2) 不可把「tracing 底座就位」等同「可观测性完成」——agent span semconv 仍 development(Day 27),$/案件未实测。
- 待跟踪:MCP 终版 07-28 是否准时发布(P2 第一周硬依赖);semconv agent span stable 时间表(影响是否拆映射层);τ²-bench pass^k(2025-06 / 2026-04 更新 38 模型)作为 P2 agent 可靠性指标候选,开工前复查其是否仍为 SOTA agent 评测基准;HAL 评测基础设施(Princeton 2025-10)作为 agent eval 编排参考。