Anthropic 发布 Claude Code 插件评测命令,可量化测量插件触发率、输出质量,并支持 CI 集成,帮助开发者客观评估 Skill 效果。
Anthropic 发布了面向 Claude Code 的全新插件评估工作流。claude plugin eval 命令会对真实提示词运行插件,评估 Claude 的输出,并与未加载插件时的运行结果进行对比。它回答了插件开发者此前无法量化的三个问题:技能是否被触发、是否在代码编辑或模型迭代后仍然有效、以及是否超越了裸模型的表现。
可部署:claude plugin eval 运行于 Claude Code v2.1.269 及以上版本,可针对任意包含 plugin.json 或 .claude-plugin/plugin.json 清单文件、抑或 skills-directory 插件的目录执行。每次评估运行和评判 grader 都是真实的模型调用,费用计入你的订阅计划或 API 账户。
一个评估套件位于插件内部的 evals/ 目录下。每个案例是一个子目录,其中包含 prompt.md 和一个 graders/ 文件夹。提示词正文原封不动地发送给 Claude,@path 提及不会被展开。prompt.md 的 frontmatter 可以设置 max_turns(默认 10)、timeout_seconds(默认 300)、model、tags 和 allowed_tools。
Grader 是 markdown 文件,其 frontmatter 设置类型、一个可选的权重(weight)以及一个可选的 arm。共有 6 种类型。其中四种不产生任何费用,因为它们从对话记录和磁盘上的文件计算得出:regex、tool_used、tool_order 和 file_exists。另外两种调用评判模型并计入账单:llm 根据你编写的文字标准对回复打分,baseline 则与参考答案进行对比。
claude plugin eval init 会读取插件,询问什么是好的结果,提出案例和 grader,运行测试,然后写入文件。在 CI 中,--bare <name> 写入一个空白模板。
默认情况下,每个案例会运行两次:加载插件的 with-arm 和未加载插件的 without-arm。二者的差值 Δ 就是插件带来的贡献。如果一个案例在两个 arm 下都得到 1.0 分,说明插件并非通过的原因。文档中的示例输出展示了一个案例在 WITH 模式下为 1.00、W/OUT 模式下为 0.33、Δ 为 +0.67,跨越 6 次运行,预估费用 $0.41,耗时 74 秒。标记为 on-only 的 grader(通常是 tool_used: Skill)仅作为指标报告,不计入总分,因为 without-arm 没有可供触发的技能。
Anthropic 指出了最常见的第一发现:tool_used: Skill grader 失败且 Δ 接近零,这意味着 Claude 在自然表述下没有选择该技能。这是 claude plugin validate 无法察觉的缺陷,因为它只检查清单文件的语法和模式,而非实际行为。
结果会输出到 evals/results/<timestamp>/report.html,包含每个 grader 的裁决和评判投票。在账户支持的条件下,报告也会发布到 claude.ai,除非设置了 --no-publish。
一个套件大约产生 cases × runs × arms 次 agent 运行,加上每个 llm 或 baseline grader 每次运行 3 次简短的评判调用,且结果在运行间存在差异。文档中记录的 CI 调用方式是:
claude plugin eval . \
--trust-plugin \
--json results.json \
--threshold 0.8 \
--model claude-sonnet-5 \
--judge-model claude-haiku-4-5 \
--no-publish \
--max-cost-usd 20
运行器需要安装 Claude Code 并配置 ANTHROPIC_API_KEY 等凭证。没有 --trust-plugin 时,无终端环境下对未受信的代码库会因 exit code 1 而拒绝执行。报告问题不会改变 exit code,而 --json 会抑制进度输出。
claude plugin eval 使用 6 种 grader 类型对真实提示词打分;其中 4 种免费,llm 和 baseline 会调用评判模型并产生费用。
每个案例默认在有插件和无插件两种条件下运行;Δ 是唯一能证明插件真正发挥作用的数据。
tool_used: Skill grader 失败且 Δ 接近零,意味着该技能从未在自然表述下被触发。
--threshold、--max-cost-usd 和 --trust-plugin 将其变成一道 CI 关卡;用量限制错误可能伪装成回归。
需要 Claude Code v2.1.269+;claude plugin eval init 为你编写第一个套件。
查看技术细节。也欢迎在 Twitter 上关注我们,别忘了加入我们的 15 万+ ML SubReddit 并订阅我们的通讯。等等!你用 telegram 吗?现在你也可以加入我们的 telegram 群了。
需要与我们合作推广你的 GitHub 仓库或 Hugging Face 页面或产品发布或网络研讨会等?请联系我们