阿里开源:skill-up,一款Agent Skill 评测工具!

2026 年走到现在,Agent Skill 已经成了 AI 领域的标配。

把个人经验沉淀成 SKILL.md,把团队最佳实践封装成可复用的技能包,这些都已经是很常规的操作了。最近在社区上看到有篇文章问了一个特别扎心的问题。

「一个 Skill 的『好坏』,到底由谁定义?评判它的标准又是什么?」

这个问题我是真的感同身受。

我自己陆陆续续沉淀了 上百 个自研的 Agent Skill,光AI测试领域的skill,都沉淀了好几十个,从需求拆解、用例生成,到接口解析、脚本生成、失败诊断、报告产出,流水线编排,串起了接口和 UI 自动化的完整流程。

但每次迭代更新一个 Skill,我心里都在打鼓。

改了几行提示词,行为有没有变?跑一遍 demo 没报错,就敢发出去吗?下个版本还会好吗?

在测试领域,有一项铁规,绝不会允许一个没有用例、没有回归、没有质量门禁的系统直接上线。但到了 Skill 这件事上,几乎所有人都在裸奔。写完跑两下,感觉没问题,发布。

原因也不复杂。Skill 的本质是提示词工程,SKILL.md 改一个字,行为就可能漂移。而官方的评测指南(agentskills.io 上的 evaluating-skills)虽然描述了正确的循环,写真实用例、带着和不带 Skill 各跑一遍、给输出评分、汇总结果、迭代改进,但整套流程全靠手工,没有工具化,坚持不了几轮。

直到我看到了阿里开源的这个项目。

skill-up,一款Agent Skill 评测工具

skill-up,阿里开源,用一句话来概括就是:The evaluation and evolution tool for Agent Skills,一款Agent Skill 的评测工具。Go 语言写的,开源两个月,更新的很活跃。

它干的事,用测试人的话说,就是把软件测试那套方法论,完整地平移到了 Skill 上。

你可以用它验证 Skill 在真实 Agent Engine(如 Claude Code、Codex、Qoder CLI)中的功能 正确性,把失败转化为有针对性的修复,并在本地或 CI 中持续回归。

先看它给一个 Skill 项目规定的标准结构。

bash 复制代码
my-skill/
  SKILL.md                        # Skill 定义文档,被测对象
  evals/
    eval.yaml                     # 评测入口配置(必须)
    cases/                        # 用例目录
      basic-success.yaml          # 每个文件是一个用例
      edge-case-null.yaml
      regression-001.yaml
    fixtures/                     # 测试资源(可选)
      repos/                      # 仓库模板
        sample-project/
      diffs/                      # 补丁文件
        null-check.patch
      scripts/                    # 评估脚本
        check-output.sh
      mcp/                        # MCP 工具配置
        github.json

眼熟吗?这就是一个标准的测试工程目录。

cases/ 是你的测试用例集,fixtures/ 是你的测试数据和脚手架,

eval.yaml 是评测的全局配置,定义了「在什么环境中、用什么 Engine、怎么评估」。

比如:

bash 复制代码
schema_version: v1alpha1

environment:
  type: none

engine:
  name: claude_code
  model:
    provider: anthropic
    name: claude-sonnet-4-8

cases:
  files:
    - evals/cases/my-test.yaml

工作原理

skill-up 将 Agent Skill 的评测演进合为一个闭环:通过声明式 YAML 评测、隔离的多引擎运行、灵活的 Judge 和结构化报告,让质量可度量;再由 skill-upper 把失败转化为改进,自动修复或补充 eval 用例,并与你持续重跑和迭代。

同一套流程既可在本地运行,也可接入 CI;同时兼容 Anthropic evals.json 导入,并输出 JSON、JUnit 和 HTML 报告。

三种「断言」,对应测试的三种校验方式

评测一个 Skill 的输出对不对,skill-up 支持三种 judge(判定器)。

判定方式 说明 测试人对应的概念
rule_based 规则匹配,文件是否存在、内容是否包含关键字 精确断言
script 跑自定义脚本,校验产物结构、跑语法检查 脚本校验
agent_judge 用另一个模型当裁判,按标准给输出打分 LLM-as-a-Judge

注意第三个。agent_judge 就是我们在大模型评测里反复讲的 LLM-as-a-Judge,用模型评模型的输出,这在 Agent 评测体系里已经是标配手段了,现在直接内置到了 Skill 测试工具里。

在cases中,每个 .yaml 文件定义一个评测用例,包含「发什么 prompt」和「怎么验证结果」。

单轮对话

大多数场景使用单轮 prompt 即可:

bash 复制代码
id: find-null-bug
title: 应该识别出空指针 bug
description: 验证 Skill 能在代码审查中发现 null 解引用问题

input:
  prompt: |
    Review the current diff and report findings.

context:
  repo_fixture: evals/fixtures/repos/null-check-bug    # 加载仓库模板
  git:
    init: true
    checkout: main
    apply_diff: evals/fixtures/diffs/null-check.patch   # 应用补丁

constraints:
  timeout_seconds: 180
  max_turns: 8

expect:                           # 基本门槛检查
  must_contain:
    - "null"
    - "bug"
  must_not_contain:
    - "LGTM"
  exit_code: 0

judge:                            # 质量评估
  type: rule_based
  success:
    - output_contains:
        all: ["null", "bug"]
    - exit_code: 0

多轮对话

当评测需要多次顺序交互时(例如迭代优化、阶段门控工作流、澄清循环),使用 input.turns 代替 input.prompt

bash 复制代码
input:
  turns:
    - role: user
      content: "用 Go 实现一个二分查找函数。"
      post_condition:
        must_contain_all: ["func", "binary"]
        on_fail: fail
    - role: user
      content: "为刚才写的函数添加单元测试。"
      post_condition:
        must_contain_any: ["Test", "t.Run", "testing"]
        on_fail: fail

把 skill-up 的概念翻译成测试行话

看完文档我列了张翻译表,你会发现这门工具几乎没有学习成本。

skill-up 里的概念 软件测试里的概念
eval case 测试用例
fixtures 测试夹具 / 测试数据
judge 断言体系
--baseline 基线对比
regression case 回归用例
--iteration 多轮运行 多轮次测试
JUnit XML / HTML 报告 测试报告
CI 支持 持续集成

**这不是巧合。**Skill 评测面对的问题,非确定性输出怎么断言、怎么防止改动引入退化、怎么让质量评估可重复,就是我们在大模型测试里趟过的路。skill-up 只是把这些答案工程化成了 CLI。

所以我想说一句可能有点武断的判断。

Agent Skill 的质量保障,天生就该是测试人的主场。

写 Skill 的人很多是开发和算法背景,他们擅长把功能做出来。但「怎么证明它是对的、怎么保证它下次还对」,这是测试工程师吃了几十年饭的本事。

快速上手

方式一,装 skill-upper(推荐)

skill-up 仓库里自带了一个叫 skill-upper 的 Agent Skill,装完之后你用自然语言对话就能驱动整个评测流程。

bash 复制代码
# Claude Code 全局安装
npx skills add https://github.com/alibaba/skill-up/tree/main/skills/skill-upper -g -a claude-code -y

# Codex 全局安装
npx skills add https://github.com/alibaba/skill-up/tree/main/skills/skill-upper -g -a codex -y

安装这个 Skill 前不需要先安装 skill-upskill-upper 在运行时会检查 skill-up 命令是否可用;如果缺失,它会引导 Agent 完成安装。

装好后在 Claude Code 里打开你的 Skill 项目,直接说。

markdown 复制代码
Use skill-upper to evaluate this Skill.
Read SKILL.md, identify its most important behaviors, create realistic eval
cases with appropriate judges, validate the configuration, and run skill-up.

它会自己读你的 SKILL.md、识别核心行为、生成评测用例、跑完评测、给你一份失败分析。

方式二,命令行直接装

bash 复制代码
curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | bash

常用的几个命令。

bash 复制代码
skill-up run                          # 跑全部用例
skill-up run --engine codex           # 指定引擎和模型
skill-up run --baseline               # 开基线对比
skill-up run --parallelism 4          # 控制并行数
skill-up run --auto                   # 自动识别 Anthropic 的 evals.json
skill-up report --format html         # 生成 HTML 报告

报告产物很齐全,grading.json、benchmark 对比、JUnit XML、HTML,直接可以挂进 CI 当质量门禁。

用 Skill 测 Skill

整个项目里我觉得最妙的是 skill-upper 这个套娃结构。

skill-upper 本身就是一个 Agent Skill,它的职责是给别的 Skill 做测试。

完整的循环是这样的。

bash 复制代码
对话生成评测用例
  ↓
skill-up 运行评测,产出结构化报告
  ↓
skill-upper 逐条读失败用例
  ↓
判断是 Skill 错了还是用例错了
  ├─ Skill 错 → 修 SKILL.md 和配套文件
  └─ 用例错 → 修 eval case 和判定器
  ↓
把修好的 bug 沉淀成回归用例
  ↓
再跑,再迭代,直到重要行为全部通过

官方管这个叫 Eval-to-Evolution Loop,评测到进化的循环。翻译过来就是测试左移加上持续回归的 Agent 版本。报告变成修复,修复变成回归用例,每一轮迭代都让 Skill 和它的评测集一起变强。

这个思路跟我在《AI 测试实战系列》里反复强调的「bad case 回流」完全是一回事,只不过它把整个循环自动化了。

创建并运行第一组评测

在 AI Agent 中打开目标 Skill 项目。目标项目至少应包含:

bash 复制代码
my-skill/
  SKILL.md

然后直接给 Agent 一个明确任务:

bash 复制代码
使用 skill-upper 给这个 Skill 添加评测。
添加这个评测用例:
- 输入:写一个 hello world 的程序。
- 评测:是否包含 hello 和 world 打印。

然后运行 skill-up 完成校验和评测。

Agent 应该会生成类似结构:

bash 复制代码
my-skill/
  SKILL.md
  evals/
    eval.yaml
    cases/
      basic.yaml
my-skill-workspace/
  iteration-1/
    result.json

evals/eval.yaml 位于包含 SKILL.md 的目录下时,skill-up 会在运行时 自动安装这个本地 Skill,通常不需要在 eval.yaml 里手动写 Skill 路径。

诊断、修复并持续迭代

首次运行后,不必手工逐条解读报告,可以继续与 Agent 对话:

bash 复制代码
使用 skill-upper 检查最近一次 skill-up 的评测结果。
逐项诊断失败,修复 SKILL.md 或配套文件;如果评测覆盖不足,
补充或改进 eval 用例,然后重新运行 skill-up。
持续迭代直到评测通过,或说明仍然受阻的原因。

skill-upper 会根据 skill-up 的结构化结果驱动下一次修改。每轮迭代都会让 Skill 实现和 eval 评测集保持同步,使修复沉淀为回归保障,而不是一次性补丁。

我的几条建议

最后讲讲我对这事的判断,给三类同学三个具体的动作。

1、有自己的 Skill 的,立刻建评测集

如果你像我一样囤了一堆自研 Skill,别再靠「跑一遍 demo 没报错」的玄学发布。给核心 Skill 配上 10-20 条真实场景的 eval case,接进 CI,每次改动自动回归。

2、团队里有 Skill 资产的,把质量门禁立起来

很多团队现在把内部规范、运维流程都封装成 Skill 分发。这些 Skill 一旦出错,影响的是整个团队的效率。谁来做质量把关?这事不该由写 Skill 的人自己说了算,**既当运动员又当裁判,是测试里的大忌。**测试同学主动把 Skill 评测体系搭起来,这就是新阵地。

3、还没写 Skill 的,评测思路照样值钱

就算你不写 Skill,skill-up 的整套评测设计,从用例怎么设计、非确定性输出怎么判定,到多引擎怎么对比、报告怎么结构化,就是一份现成的 Agent 评测方法论参考。做 AI 测试的同学把它拆开看一遍,比读十篇概念文章有用。

写在最后

我一直有个观点,AI 时代测试岗的价值不会消失,只会换地方。

以前我们测函数、测接口、测页面,现在多了测模型、测 Agent、测 Skill。被测对象一直在变,「怎么证明它是对的」这个问题永远在。

工具在变,方法论是通的。你在软件测试里攒下的每一分功力,在 Agent Skill 这个新战场上都作数。

skill-up 的地址放这了。

👉 GitHub,github.com/alibaba/ski...

👉 用户手册(中文),alibaba.github.io/skill-up/zh...

觉得有用帮忙点个 Star,也欢迎转给团队里管 Skill 资产的同学。


我是狂师,公众号长期分享 AI 测试提效实战。最近我做了一个重大决定,将AI测试开发学习路线开源了:https://github.com/zhoujinjian/ai-testing-guide

并且与开源项目同步配套上线了一款免费在线学习网站👉:https://ai.testfather.cn/

放心食用,觉得有用,就帮忙点个Star吧 ⭐

相关推荐
武子康26 分钟前
同一套 Agent Runtime,为什么 Web、Headless 和 Python SDK 仍然不是同一个产品
人工智能·llm·agent
天天代码码天天29 分钟前
一个纯 C 的 OCR Runtime,又向前走了一步:lw.PPOCR.C preview.5 发布
人工智能
程序员cxuan44 分钟前
Claude 官方的学习教程,太强了。
人工智能·后端·程序员
小强闯江湖1 小时前
不只是让 AI 写代码:ViewCompose 把 Android UI 做成了可编译、可渲染的闭环
android·人工智能·kotlin
肆仲冬2 小时前
不用框架手写 AI Agent:ReAct 推理链和上下文管理的工程实践
人工智能
阿里云云原生2 小时前
实战演示:利用 LoongSuite Pilot 实现 Claude Code Webhook 数据的旁路上报
agent
明月_清风2 小时前
发现一个超系统的 AI Agent 学习地图 —— Agent Atlas 推荐
人工智能·后端·agent
DigitalOcean2 小时前
AI Agent如何降本?从五层技术栈到三种推理服务
llm·agent
百度Geek说2 小时前
商业客户端Harness资产管理与应用实践
人工智能