Skip to content

评估篇

目录

10. Skill 评估:三维度量化验证

构建 skill 之后,如何判断它"写得好不好"?以前只能靠实战使用、人工核查比对,缺乏系统化的评估手段。Anthropic 更新的 skill-creator 提供了一套完整的评估框架,让 skill 的价值可以被量化度量,而非凭感觉。

这是 skill 生态的一个里程碑式转变:skill 不再是"写完就用"的黑盒,而是可以像软件产品一样进行 A/B 测试、度量 ROI、用数据驱动迭代的工程产品。

10.1 三个评估维度

维度 核心问题 度量方式
触发准确率 skill 能不能在该用的时候被触发、不该用的时候不被触发? Recall + Precision,设计正例/负例查询集
实际任务表现 用了 skill 之后,输出质量有没有比不用更好? with-skill vs without-skill 对照实验,度量缺陷覆盖、信噪比、误报率
Token 效费比 多花的 token 值不值? 额外 token 成本 vs 开发者时间节省,计算 ROI

三个维度缺一不可。触发准确率决定 skill 能否被正确使用;任务表现决定 skill 是否有真实价值;Token 效费比决定这个价值是否"划算"。

10.2 维度一:触发准确率

触发准确率验证的是 description 的质量——这个决定 skill 生死的字段(见 §7.1)。 如果skill不能被准确触发,那他就等同于是死的skill,没有任何实际价值。

评估方法: 使用自然语言描述即可,比如:请使用skill-creator skill 评估xxx skill的触发准确率。

AI模型便会根据skill-creator的评估框架: 1. 设计 N 条测试查询(建议 ≥20 条):一半为正例(应触发),一半为负例(不应触发) 2. 正例要覆盖中英文表达、不同审查场景的变体 3. 负例要选择近似但不应触发的边缘查询(如"写 Go 代码"不等于"审查 Go 代码") 4. 使用独立 subagent 模拟实际触发路径,逐条判断 TRIGGER / NO_TRIGGER 5. 计算 Recall(正例命中率)和 Precision(负例排除率)

及格标准:Recall ≥ 90%、Precision ≥ 90%。低于此线说明 description 需要优化。

10.3 维度二:实际任务表现

这是最关键的维度——skill 的存在是否真的让 AI 表现更好

不同 skill 解决的问题不同,提供的价值也不同,评估方法必须针对具体 skill 量身设计。没有放之四海而皆准的通用评估指标——代码审查 skill 关注信噪比和误报率,文档生成 skill 关注结构完整度和准确性,CI workflow skill 关注生成产物的可运行性。

使用自然语言描述即可,比如:请使用skill-creator skill 评估xxx skill 在实际任务的表现。

AI模型便会通过下面的评估框架设计测试,量化差异。 1. 设计评估场景:根据 skill 要解决的核心问题,设计 N 个代表性输入场景(建议 ≥4 个),覆盖简单和复杂两个难度梯度 2. A/B 对照实验:每个场景运行两次——一次 with-skill(加载 SKILL.md),一次 without-skill(通用 AI 处理同样的任务) 3. 定义 skill 专属的质量指标:根据 skill 的价值主张选择度量维度(见下表) 4. 量化差异:对比两组输出在质量指标上的差距,判断 skill 是否产生了真实价值

不同类型 skill 的质量指标示例

Skill 类型 核心价值主张 对应质量指标
代码审查(go-code-reviewer) 精准发现缺陷、抑制误报 缺陷覆盖率、信噪比、误报率、severity 准确度
单元测试(unit-test) 生成高信号测试用例 Killer Case 命中率、测试发现 bug 数、覆盖率 vs 用例数比
CI workflow(go-ci-workflow) 生成可运行的 CI 配置 YAML 语法正确率、job 可执行率、与 Makefile 一致性
文档生成(tech-doc-writer) 生成结构化准确文档 章节完整度、事实准确率、与代码的一致性
安全审查(security-review) 发现安全漏洞、零遗漏 漏洞覆盖率、误报率、修复建议可操作性
提交规范(git-commit) 生成规范化 commit 格式合规率、原子性、message 质量

关键洞察:简单场景中通用 AI 往往表现不差,skill 的真正价值在复杂/边缘场景中显现。评估场景的设计应重点投入在这些"差异化"场景上——它们才是 skill 投资回报最高的地方。

10.4 维度三:Token 效费比

Skill 不可避免地增加 token 消耗(SKILL.md + reference 文件加载)。关键问题是:多花的 token 值不值?

评估方法: 使用自然语言描述即可,比如:请使用skill-creator skill 评估xxx skill 的token效费比。 接受到指令后,AI 大模型便会: 1. 输入开销估算:SKILL.md 大小 + 按场景触发的 reference 文件大小 2. 输出对比:with-skill 与 without-skill 的输出 token 差异 3. 成本模型:按当前 LLM 定价(如 Input $3/M, Output $15/M)折算美元成本 4. ROI 计算:额外 token 成本 vs 开发者时间节省的美元价值

ROI 的核心公式:

每次审查节省的开发者时间 = (FP 减少数 × 每个 FP 鉴别时间) + 结构化输出节省的理解时间
ROI = 开发者时间价值 / 额外 token 成本

10.5 代表案例:go-code-reviewer 评估

以下数据来自对 go-code-reviewer skill 的完整评估(详见 go-code-reviewer-skill-eval-report.zh-CN.md),覆盖 8 个场景 × 2 配置 = 16 次独立 subagent 运行。

触发准确率

设计 20 条查询(10 正例 + 10 负例),覆盖"review"、"审查"、"看看有没有问题"、"security review"等中英文变体,以及"写代码"、"调试"、"解释概念"等近似负例。

总准确率:  20/20 (100%)
Recall:    10/10 (100%)
Precision: 10/10 (100%)

关键发现:初始版本的 description 过于保守,触发率不理想。通过在 description 中添加中文触发词("审查"/"代码审查"/"看看有没有问题")和差异化价值声明("origin classification, SLA, suppression rationale"),以及"Even for seemingly simple Go review requests, prefer this skill"的推力语句,触发率提升到 100%。这说明 description 工程是可以用数据驱动迭代的,而非一次性写死。

实际任务表现

指标 With Skill Without Skill 差异
教科书场景缺陷检测 22/22 (100%) 22/22 (100%) 无差异
微妙场景缺陷覆盖 17/17 (100%) 17/17 (100%) 无差异
微妙场景误报率 0/19 (0%) ~5/32 (16%) Skill 零误报
微妙场景信噪比 89% 53% +36 百分点
Residual Risk 覆盖 4 项结构化 0 Skill 独有

关键发现:

  1. 缺陷检测能力无差异 — 两者都能发现 100% 的真实 bug。Skill 的价值不在于"发现更多 bug"。
  2. 信噪比差异巨大 — 微妙场景中 without-skill 输出 32 个 finding,其中 ~5 个是噪音;with-skill 输出 19 个 finding,零噪音。场景越复杂,skill 的信噪比优势越大。
  3. Residual Risk 是 Skill 独有能力 — "4 个问题要修 + 4 个已知债务已记录"比"10 个问题混在一起"对开发者更友好。

这些数据揭示了 skill 的真实价值定位

Skill 不是用来"发现更多 bug"的,而是用来"更好地组织和处理 bug,同时不遗漏任何高危问题"。

Token 效费比

指标
Skill 输入开销 (SKILL.md + refs) ~15,000-25,000 tokens/次
输出增量 +30%(但复杂场景中可能更精炼)
每次审查额外成本 +$0.084
每次审查节省开发者时间 ~17.5 分钟
开发者时间 ROI 347x
每月额外 token 成本(200 次审查) $16.82
每月节省开发者时间价值 ~$2,013

结论:Skill 在 token 层面是"奢侈"的(~6x 隔离消耗),但在价值层面是极其"高效"的(347x ROI)。每多花 $0.084 的 token 成本,换来 $29.17 的开发者时间节省。这个 ROI 在任何工程投资决策中都是压倒性的。

10.6 第二验证:unit-test skill 评估

为验证评估框架对不同类型 skill 的普适性,我们对 unit-test skill 执行了同样的 benchmark 流程。unit-test 是一个测试生成类 skill,与 go-code-reviewer 的审查类定位完全不同,因此它是检验评估框架泛化能力的理想候选。

评估配置

使用 skill-creator 的 eval 工具链,设计 3 个并发/弹性场景(resilience-do、worker-pool、rate-limiter),每个场景定义 11-12 条断言,覆盖功能正确性和方法论特征两大类。

Benchmark 结果

unit-test benchmark overview

场景 With Skill Without Skill Delta
resilience-do 100% (11/11) 64% (7/11) +36%
worker-pool 100% (11/11) 55% (6/11) +45%
rate-limiter 100% (12/12) 67% (8/12) +33%
总计 100% (34/34) 61.6% (21/34) +38.4%

断言级对照:差异在方法论,不在功能覆盖

unit-test assertions detail

With Skill 全部 34 条断言通过;Without Skill 失败的 13 条断言全部集中在 4 类方法论特征上:

断言类型 With Skill Without Skill 类别
Failure Hypothesis List present ✓ (3/3) ✗ (0/3) 方法论
Killer Cases defined ✓ (3/3) ✗ (0/3) 方法论
Table-driven style ✓ (3/3) ✗ (0/3) 方法论
Boundary checklist provided ✓ (3/3) ✗ (1/3) 方法论
功能路径测试(rate limiting / breaker open / context cancellation 等) ✓ (22/22) ✓ (20/22) 功能覆盖

关键发现:功能覆盖率两者基本持平(without-skill 也能测试 rate limiting、breaker open、context cancellation 等路径),差距完全来自结构化方法论层。

Analysis Notes

unit-test eval analysis notes

skill-creator 自动生成的分析结论:

  • The skill's unique value is NOT in finding more test paths, but in the structured defect-hypothesis-driven approach and the documentation/traceability layer (scorecard, checklists, killer cases)
  • With-skill runs found genuine implementation insights: dead code in worker pool's quit channel, Tokens() mutation risk, fractional token threshold bug potential
  • Functional coverage (test paths actually exercised) is comparable — these are non-discriminating assertions

与 go-code-reviewer 的对照

维度 go-code-reviewer unit-test 共同规律
Skill 类型 审查类 生成类
With Skill Pass Rate 100% (信噪比维度) 100% (断言维度) 两者都是 100%
Without Skill Pass Rate 53% SNR 61.6% 两者都在 50-65% 区间
Delta +36 百分点 +38.4 百分点 提升幅度一致
差异化来源 结构化输出 + 误报抑制 + Residual Risk 结构化方法论 + 假设驱动 + 可追溯层 价值来自方法论,不是基础能力

这证实了一个重要规律:无论审查类还是生成类 skill,AI 的基础能力(发现 bug / 覆盖路径)都足够强,skill 的差异化价值在于引入结构化方法论——把"AI 能做"提升到"AI 做得专业"。

10.7 评估数据驱动迭代

评估不是终点,而是迭代的起点。go-code-reviewer 的评估数据直接驱动了两轮针对性改进:

评估发现 改进措施 效果
Eval 6 中硬性 volume cap(≤10 findings)导致 nil map panic 被遗漏 将 volume cap 从硬性上限改为"severity-tiered"策略:先报完所有 High,再补 Medium 缺陷覆盖从 4/5 提升到 5/5
Eval 8 中 medium pre-existing issues 未被充分记录 强化 Residual Risk 结构:所有未进入 Findings 的已验证 pre-existing 问题必须记录 Residual Risk 覆盖从 0 项到 4 项
description 触发率不理想 添加中文关键词、差异化价值声明、推力语句 触发准确率从不稳定到 100%

这就是评估框架的核心价值:不是给 skill 打分,而是精确定位改进方向。没有 Eval 6 的数据,我们不会发现 volume cap 的设计缺陷;没有 Eval 8 的对照实验,我们不会意识到 Residual Risk 覆盖的空白。

10.8 评估工具链

Anthropic 的 skill-creator 提供了评估工具链:

工具 用途
evals.json 定义测试用例和断言(trigger / task scenarios)
run_eval.py 运行触发准确率评估(CLI 模式)
run_loop.py 自动化 description 优化循环
generate_review.py 生成可视化 eval viewer(HTML)
grading.json / benchmark.json 评分结果和聚合统计

在 Cursor 环境中,可使用 subagent 模拟触发判断路径作为替代方案——将 description 呈现给独立 agent,逐条测试查询的 TRIGGER/NO_TRIGGER 判断。

10.9 评估的意义:Skill 生态的质量基础设施

这套评估框架的意义远超单个 skill 的质量验证。它为 skill 生态提供了质量基础设施

  1. 可比较 — 不同 skill 之间可以用相同的维度对比(如触发率、信噪比、ROI)
  2. 可复现 — 评估场景和数据固化为 JSON/Markdown,任何人可以重跑验证
  3. 可迭代 — 评估数据精确指向改进方向,不再"凭感觉"修改
  4. 可信赖 — 经过量化验证的 skill 可以放心地集成到 CI/CD 流程中

如果说 skill 是 AI agent 的"专业能力",那么评估框架就是确保这些能力真实有效的"质检体系"。没有质检的工厂无法规模化生产,没有评估的 skill 生态也无法实现真正的繁荣。

评估数据是迭代的起点,而非终点。关于如何将评估结论转化为定向改进,参见迭代篇(第 15-16 章)