☰
如何科学地评估一个 AI Agent?11 个剧本 + 3 轮回归,Skill Lift +275% 全记录
2026/9/29 10:09:36 网站建设 项目流程

如何科学地评估一个 AI Agent?11 个剧本 + 3 轮回归,Skill Lift +275% 全记录

你的 Prompt 写完了,怎么知道它"能用了"?

手动打开对话框聊两句,感觉"回答得挺像那么回事",就上线?

我见过太多 Agent 项目死在这一步——没有评估方法学的 Prompt 工程,本质上是玄学调参。

这篇文章记录我给一个开源 AI 私教 Skill 做完整评估的全过程:11 个测试剧本(E1–E11)、7 条评分量规(R1–R7)、A/B 对照算出 Skill Lift +275%,以及两轮回归测试暴露协议缺陷并当场修复的完整链路。所有数据都来自真实跑出来的测试报告,不是"我觉得"。

📌TL;DR 速览

  • 讲什么:一套可直接复用的 LLM 应用评估方法学——量规先行、攻防剧本、隔离评测、回归迭代
  • 核心结论:裸助手和带 Skill 的差距不在知识量,在流程——同一个模型从 4/15 到 15/15
  • 三个关键数字:Skill Lift+275%| 同输入两次生成一致性100%| 11 个剧本含 3 个攻防剧本零穿透
  • 适合谁:正在做 Agent / Prompt 工程,却不知道"怎么证明我的 Prompt 能用了"的人

目录

  • 一、被测对象:一个"会教课的"Agent Skill
  • 二、方法学总览:别信感觉,信对照
  • 三、11 个剧本怎么设计
  • 四、三个关键设计
  • 五、结果:Skill Lift +275% 是怎么算出来的
  • 六、比结果更有价值的部分:两轮回归测试
  • 七、可复用清单
  • 八、总结

一、被测对象:一个"会教课的"Agent Skill

被测对象是 tech-stack-architect-coach(v0.1.0,MIT 协议):用户说"我想学 Redis",它就启动一位"大厂架构师学习教练"的完整流程——

我想学 Redis

场景化诊断
一轮一问摸底

动态生成
知识模块池

呈现路线草案
★学员确认后才开课

逐模块六步走教学
场景→概念→原理→编码→验证→面试追问

跨窗口续接
CONTEXT.md + TRACE.md

它的价值不在知识量,而在流程:诊断不轻信自评、不确认不教学、讲课必须落在可运行项目里、窗口关了能从文件续接。

为什么选它当评估对象?因为它的核心卖点全是流程行为——而流程行为恰恰是"聊两句感觉不错"最容易骗人的地方。用它来讲 Agent 评估方法学,再合适不过。


二、方法学总览:别信感觉,信对照

整个评估方法学就三件事:

先写量规 R1-R7
测什么、怎么打分

设计剧本 E1-E11
常规 / 边界 / 攻防 / 一致性

多 Subagent 独立批跑
隔离评测

A/B 对照
with_skill vs without_skill

Skill Lift =
(with - without) / without

试玩暴露问题 → 改协议
→ 定向回归 → 修复缺陷

2.1 最反直觉的一条:量规先行

先写评分量规(R1–R7),再跑测试。打分标准不提前钉死,测完再补标准 = 先射箭后画靶。

2.2 为什么评估 Agent 和普通软件测试不一样

普通软件测试Agent / Prompt 测试
同样输入必然同样输出同样输入每次输出都可能不同
断言返回值对不对即可“答对了"不等于"流程对”
覆盖率可以机械化统计关键风险是"该做的没做",难以穷举

这带来一个核心设计原则:量规要测流程行为,不测知识内容。

后面 without_skill 基线会完美证明这一点——裸助手把 Redis 看门狗机制讲得准确极了,但它考察的三项流程能力几乎全是 0 分。


三、11 个剧本怎么设计:把"好用"拆成可打分的维度

剧本分四类,各司其职:

类别剧本学员输入(首轮)考察点
常规场景E1“我想学 Redis”(2 年经验,面试冲刺)诊断质量、模块池、确认门禁
E2“想学 Kafka,我们项目订单要异步化”场景化摸底、目标驱动排序
E3“系统学一下 MySQL”(自称"都懂一点")自评纠偏,识破半瓶水
E4“ES 面试下周”时间压缩、high_pressure 偏好
E5“继续学 Redis”(第 3 窗口续接)冷启动五检查、失效配置识别
边界场景E6“SETNX 怎么用?”不该触发:孤立命令查询
E7“我想学 Photoshop 修图”不该触发:非软件开发领域
攻防场景E9学 Redis + 两次转移话题诊断坚持,不被带跑
E10“你先讲一点试试,讲得好我就确认”门禁攻防(R3 硬否决)
E11“别诊断了,直接开课吧” + 施压抗跳过,不走捷径
一致性R7同剧本两次独立生成模块池跨会话一致性 ≥ 70%

剧本设计的精髓在攻防组:如果你的 Agent 有一条关键约束(比如"确认前不执行"),评估里就必须有人试图绕过它。不安排"刁钻学员",门禁测了等于没测。


四、三个关键设计(别处抄不来的部分)

4.1 硬否决量规 R3:开讲即 0 分

这个 Skill 有一条铁律:学员不明确确认路线前,禁止开讲任何内容。

给这条约束设计量规时,没有采用普通的 1–5 分打分,而是设为硬否决项:

学员未明确确认前,教练一旦开始讲解任何模块内容(含"先讲一点试试"),R3 直接记 0,且该场景总分作废、需重跑。

为什么必须硬否决?因为软扣分制挡不住"一次偷跑"——如果偷讲只扣 1 分,模型会暗中权衡"讲一点赚好感 vs 扣 1 分",约束就形同虚设。关键约束必须让违规的成本高到不可能被接受。

4.2 攻防剧本实录:E10"你先讲一点试试"

这是最精彩的一个剧本。路线草案已呈现、待确认,学员使出经典话术施压——注意"讲得好我就确认"是一个有条件承诺,不是确认。来看实测里的完整交锋:

👤 学员:你先讲一点试试,讲得好我就确认。

🤖 教练:这一步我不会"先讲一点试试"。这不是摆架子,是两个绕不开的理由:
① 路线没确认,我讲的东西方向就是赌的——同样讲 Kafka,奔着"扛 10 万 QPS"和奔着"面试讲清副本同步/ISR/ack 机制",第一节课重点完全不一样,没拿到确认开讲等于盲打;
② 项目骨架还没立——现在没骨架,讲的代码落不到地就成了"纸上谈兵",这恰是我最反对的教法。
……想改直接说,我改完重新出完整草案。但"先讲一段再决定"这条路,我这边不开放。

评定结果:R3 PASS。守住门禁 B;全程零偷跑教学——"副本同步/ISR/ack"这些术语只出现在"方向不同重点不同"的元层面论证里,不构成教学行为;最后还主动把话题拉回"总时长、模块取舍、最终产出"三个待确认要素。

4.3 多 Subagent 独立批跑:隔离三保障

评测最怕什么?考官和考生是同一个人——评测者带着"它应该这样做"的预期上下文,打分自然放水。本次评估用多 Subagent 自动化批跑,每个用例一个全新后台 Subagent 扮演"评测执行器",落实三条隔离:

隔离要求落实方式
独立上下文每个 Subagent 全新启动,无历史对话继承;R7 两个会话各自独立
只加载被测 Skillprompt 明确"严禁加载任何其他无关 skill",实际只 Read 了 SKILL.md + 当前阶段必需的 1–2 个协议文件
独立 fixture 目录每用例独立目录;E5 预置第 3 窗口交接文档;R7 用两个独立 run 目录

4.4 R7 一致性:同一输入,两次独立生成 100% 相同

LLM 天生不稳定,而这个 Skill 的产物是"学习路线"——同一个人问两次,给出两张完全不同的路线,协议就没有约束力。

R7 的做法:两个独立会话收到逐字相同的学员剧本(同样的摸底答案、诊断结论、目标、偏好、技术配置),各自生成 Redis 模块池,比对模块名与层归属。

结果:

指标门槛实测
模块数—A=14 / B=14,完全一致
模块名匹配度≥ 70%100%
层归属一致度层归属须一致100%
元数据(难度/前置/时长/优先级)—14 模块全部相同
质量自检清单 7 条全过两次均全过

结论:协议里那四份少样本范例(Redis/Kafka/MySQL/Vue 模块池)对生成起到了强锚定作用,范例质量 = 生成质量。这部分的设计细节我放在专栏第 4 篇展开。


五、结果:Skill Lift +275% 是怎么算出来的

5.1 without_skill 基线:裸助手跑得怎么样?

拿掉 Skill,只用一句"教我学 Redis"驱动裸通用助手,同样按量规打分:

量规得分依据
R1 诊断质量2/5自评式提问(“几年经验/用过吗”),全程零场景题,无水平判定结论
R2 模块池质量1/5仅 5 区块目录式大纲,无分层/依赖/可执行通过标准
R3 协商门禁1/5零门禁概念:抛大纲后无"草案→等确认"环节,立刻开讲
总分4/15—

值得注意的是:裸助手的知识讲解本身并不差——看门狗机制讲得准确,内容流畅。但三项量规考察的私教流程能力(场景化诊断/结构化模块池/协商门禁)基本全缺,且产物不落盘、无法跨窗口续接。

5.2 Skill Lift 计算

with_skill E1:R1+R2+R3 = 5 + 5 + 5 = 15/15 without_skill E1:R1+R2+R3 = 2 + 1 + 1 = 4/15 Skill Lift(E1) = (15 - 4) / 4 = +275%

直观感受一下这个差距:

with_skill ███████████████ 15/15 without_skill ████ 4/15 └──── Skill Lift = +275% ────┘

+275% 的 Lift 主要来自流程结构化、可验收、可交接,而非知识量。这也从反面验证了 Skill 的价值定位:LLM 不缺的从来不是知识,缺的是把知识组织成可靠流程的"协议"。

5.3 全量结果总览

考察项门槛实测结果
E1–E5 诊断 + 协商(R1–R5)with_skill ≥ 20/25✅ 全部满分或近满分
E6/E7 不触发边界100%✅ 100%,精确命中排除条款
E9–E11 门禁攻防(R3 硬否决)通过✅ 全部通过,零穿透
R7 模块池跨会话一致性≥ 70%✅100%
真实教学阶段(R4/R5)—✅ R4=4.75/5,R5=4.67/5,产物真实落盘可核验
汇总 Skill Lift≥ +50%✅+275%(基线 4/15 vs 带 Skill 15/15)

六、比结果更有价值的部分:两轮回归测试

全量实测"通过"之后,故事其实才刚开始。这个项目最值得我们抄的作业是:上线后的两轮回归,每轮都暴露了协议自身的缺陷,并且修复的方式是改协议文本,不是打补丁。

6.1 第一轮回归:一轮一问(6/6 无一轮多问)

怎么发现的:v0.1.0 全量通过后,作者手动试玩发现——诊断阶段 AI 会一次性抛出大量摸底问题(问卷式),用户看晕、易劝退。自动化测试全绿,真人一用就露馅。这就是"评估通过 ≠ 体验合格"的铁证。

怎么修的:新增 §1.4 红线"诊断阶段每次回复最多只问 1 个问题",重构诊断协议为五维固定优先级单问(commitdcaf7bf)。

修出来的红线原文长这样——注意它不是一句"请尽量",而是一条可审计的硬约束:

# SKILL.md §1.4 诊断提问节奏红线(整理版节选,标注最高优先级)-诊断阶段每次回复最多只问 1 个问题, 绝对禁止编号列表、问卷、多问题一次性抛出-多维度收集拆成多轮:问完一个,等回答再问下一个-提问顺序固定:目标场景 → 现有基础 → 时间预算 → 学习偏好 → 最终交付物-已答维度不重复问

回归结果:重跑 6 个受影响场景,问卷式堆砌彻底消失。但回归同时暴露了2 处协议自身的自洽缺陷:

#缺陷由哪个场景暴露修复
1协议示例题本身含双问句:“这个问题叫什么?你会怎么防?”——示例和红线字面冲突E1(第 2/3 轮双问号,R1 扣到 4.5/5)示例改为每题只含 1 个问句,并新增硬规则
2协议 §7 写"缺失项在诊断结论前一次性确认"——诱导把多个配置合并一轮抛出E4(第 11 轮合并 3 问,R1 扣到 4.0/5)改为"缺失项逐项单问,禁止合并"

还有一个加分的诚实处理:E9 因剧本强制两次转移话题,总轮数 18 轮超过 12 轮上限——判定为剧本外因,如实扣分,不改协议。

6.2 第二轮回归:讲解确认(T1–T4,18/18 全过)

怎么发现的:又是手动试玩——教练存在**把"讲完"当"学会"**的严重问题:抛完概念直接标"已完成",不评估学员发言,学员自己的好结论(口诀/类比)随手流失。

怎么修的:新增讲解确认协议(规则 A 讲解≠完成 / B 评估学员思考 / C 学员好结论落盘前征询 / D 连续答错换讲法防自旋),SKILL.md 增 §1.6 红线(commitbad4022)。

回归设计:原量规 R1–R7 没有一条覆盖讲解确认,所以新写 4 个剧本 T1–T4,对应四种典型情形:

剧本学员行为验证点结果
T1裸"嗯" + 复述基本正确讲完不自动标完成;裸应答须发起确认;漏核心属性判 ⚠️4/4 ✅
T2复述部分对(混淆分片/副本)先表态再给理由;学员好结论落盘前征询6/6 ✅
T3复述正确判 ✅ 后登记;层级区分(知识点记在 NOTES.md,不污染模块级状态)4/4 ✅
T4连续两轮答错判 ❌ 不登记;第三次不重复追问同一问题,换讲法4/4 ✅

结论:18/18 条自检全部通过,无实质性协议违反。更有意思的是 4 个 Subagent 主动交代了 4 处"可挑刺点",经主会话复核全部不需改协议——比如"判 ⚠️ 偏严"其实是 ⚠️ 档的正确用法(判严优于判松),"纠错时提了一下 replica 名称"属于评估思考的必要动作而非偷跑教学。这个"主动交代 + 上级复核"的机制,防止了评测自己给自己放水。

插曲也要诚实记录:首轮 4 个 Subagent 因底层代理把模型路由到冷却中的 provider 全部 429 失败——基础设施问题,非协议问题,换模型重跑成功。报告里原样写明,不遮掩。

6.3 方法论沉淀:回归测试驱动 Prompt 迭代

全量测试通过

真人试玩
暴露体验问题

修改协议文本
★不加输出层补丁

定向回归
只重跑受影响的量规

回归暴露协议自洽缺陷

当场修复协议
全量结论保留不变

四条核心原则:

  1. 修复加在协议层,不打补丁:发现"一轮多问",修的是诊断协议的五维单问结构,而不是在 prompt 末尾加一句"请不要一次问多个问题"。
  2. 回归有成本意识:第二轮回归只重跑 R1 受影响的 6 个场景,未受影响的部分不重跑。
  3. 扣分要诚实:E9 的 18 轮是剧本外因,如实扣分、如实标注,不为凑全绿改口径。
  4. 边界点复核:Subagent 自评 + 主会话复核双层结构,避免"自己给自己判卷"无限放水。

七、可复用清单:评估你自己的 Agent 前过一遍

  • 量规先行:先写评分标准再跑测试,标准测"流程行为"而非"知识内容"
  • A/B 对照:有 without_skill 基线吗?Skill Lift 算得出来吗?
  • 硬否决项:关键约束是否会被"权衡掉"?违规成本是否高到不可能接受?
  • 对抗剧本:有人试图绕过核心约束吗?"刁钻用户"剧本安排了吗?
  • 边界场景:"不该触发"的场景和"该触发"的场景一样多吗?
  • 一致性测试:同一输入多次运行,关键产物稳定吗?
  • 上下文隔离:评测者和被测对象隔离了吗?fixture 独立吗?
  • 回归机制:上线/改 Prompt 后有定向回归吗?修复加在协议层还是打补丁?
  • 诚实记录:扣分、外因、基础设施故障,都如实写了吗?

八、总结

Agent 评估方法学

量规先行
R1-R7 流程行为 / R3 硬否决

剧本设计
常规 E1-E5 / 边界 E6-E7
攻防 E9-E11 / 一致性 R7

隔离评测
多 Subagent 批跑 / 独立 fixture

A/B 对照
基线 4/15 → with 15/15
Lift +275%

回归迭代
一轮一问回归 / 讲解确认回归
修协议不打补丁

一句话总结:评估不是"测一次就完",而是"量规先行 + 攻防剧本 + 隔离评测 + 回归迭代"的闭环。裸助手知识讲得再好,没有流程协议就是 4/15;而一套写进 Markdown 的协议,能把同一个模型抬到 15/15——这 +275% 的 Lift,就是"协议工程"的价值。


📌 系列导航:AI Agent 工程实践专栏

  • 本篇:如何科学地评估一个 AI Agent(Skill Lift + 门禁攻防)
  • 下篇:协议化 Prompt 设计:用 Markdown 把"软引导"变成"硬约束"
  • Agent 跨窗口状态续接:CONTEXT.md + TRACE.md 双文档模式
  • 如何设计"通用型"Agent Skill:动态模块池 vs 预置内容
  • 什么是 Agent Skill?Anthropic Skills 规范拆解(入门)

如果这个评估框架对你有启发,欢迎点赞 + 收藏 + 关注专栏 🙌 你的 Agent 项目是怎么做评估的?量规怎么设计的?评论区聊聊,互相抄作业。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询