Chapter 4: 先 Eval 再开发 — 用 Copilot 把评估变成肌肉记忆
4.1 没评估 vs 有评估,差的是什么
fde-book 用一张表把差别讲透——差别全在日常对话里:
| 场景 | 没评估的项目 | 有评估的项目 |
|---|---|---|
| 周一站会 | “上周改的那版,感觉还行” | “上周 0.81,这周 0.83,提了 2 个点” |
| 客户问”系统好不好” | 主观打分,每周飘 | 客户每周看数字,可解释 |
| 模型供应商升级 | 不敢动,怕坏 | 一晚上跑一次评估即可决断 |
| 上线 sign-off | 靠演示运气 | 靠数字达成 |
| 项目交接后 | 客户不知道好坏 | 客户能自己跑评估监控 |
最后一行最重要:评估集不只是开发工具,也是 Handoff 的核心交付物。
4.2 评估驱动的工程闭环
改动(prompt / 代码 / 模型)
↓
跑评估(机器分 30 秒 + 人工分每周)
↓
对比基线(过线?回归?)
↓
过线 → 合并 ;未过线 → CI 红灯挡住
↓
生产采样 → 失败 case 回流评估集(活水)
fde-book 强调四种评估的递进:关键词匹配(第一周够用)→ LLM-as-judge → 配对偏好评估 → agent trajectory 评估(多步推理路径)。第一周不需要复杂的,30 条 + 关键词匹配就够建立”改动→跑数字→决定上不上”的肌肉记忆。
4.3 落到 Copilot 上(HOW)
这一章是 Ch2 第二条铁律的深化实操。把评估焊进 Copilot 工作流,靠三个工件:
① Rule 层:评估是硬约束
.github/copilot-instructions.md:
## 评估驱动(硬约束)
- 过线分:evals/triage_v0.jsonl,min_score ≥ 0.85
- 任何改动 prompt / 模型 / 检索逻辑的 PR,必须附 `npm run eval` 前后对比。
- 评估回归(分数下降)的 PR,即使功能"看起来对"也禁止合并,除非 PR 描述说明为何可接受。
② Role 层:@test-engineer 兼管评估
扩展 workshop 的 test-engineer.agent.md,让它既写单测又跑评估:
---
name: test-engineer
description: 写测试并执行 eval-driven 评估对比
---
## 职责
- 为新端点/新功能写 node:test 单测
- 改动涉及 LLM 行为时,执行评估基线对比:
1. git stash 改动,跑评估记录基线分
2. 恢复改动,跑评估记录新分
3. 输出:{基线分, 新分, 差值, 是否过线, 是否回归}
## 输出格式
## Eval Report
- Baseline: 0.81 New: 0.84 Δ +0.03 过线✅ 回归❌
③ CI 层:评估门(来自 workshop ci.yml)
在 .github/workflows/ci.yml 里加评估步骤,让”改完代码必须有数字”机械落地:
eval:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- name: Run eval gate
run: |
SCORE=$(npm run eval --silent | tail -1)
echo "eval score: $SCORE"
# 低于过线分则 exit 1,挡住 PR
node -e "process.exit($SCORE >= 0.85 ? 0 : 1)"
④ 从 AWS 到 Azure 的评估栈映射
| 阶段 | fde-book(AWS) | 本书(Azure / Copilot) |
|---|---|---|
| PoC 跑基线 | Bedrock Evaluations 控制台 | Azure AI Foundry Evaluation(控制台版,10 分钟基线) |
| Scaffolding 代码版 | pytest / deepeval | promptflow evals / pytest / deepeval,进 CI |
| RAG 召回评估 | Knowledge Bases Evaluations | Azure AI Search + Foundry RAG 评估指标 |
| Agent 路径评估 | AgentCore Evaluations | Foundry Agent 评估 + trajectory 自定义维度 |
| 线上回流 | CloudWatch 采样 | Azure Monitor / Application Insights 采样 |
具体 API 和控制台入口随产品迭代变化,以 learn.microsoft.com 为准。方法论不变:控制台快出基线 → 代码版进 CI → 线上回流。
落到 Copilot 上 · 本章工件清单
- Rule 层”评估驱动(硬约束)”段
@test-engineeragent 扩展为兼管评估对比ci.yml评估门(低于过线分 exit 1)- 评估栈选定(PoC 用 Foundry 控制台 / 上线用 promptflow + CI)
第二部分到此。客户发现完、评估集建好,进入第三部分:搭工程 Harness 的三层结构。