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

狂师 · September 01, 2026 · 23 hits

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 项目规定的标准结构。

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、怎么评估」。

比如:

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 即可:

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

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,装完之后你用自然语言对话就能驱动整个评测流程。

# 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 项目,直接说。

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、识别核心行为、生成评测用例、跑完评测、给你一份失败分析。

方式二,命令行直接装

curl -fsSL https://raw.githubusercontent.com/alibaba/skill-up/main/install.sh | 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 做测试。

完整的循环是这样的。

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

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

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

创建并运行第一组评测

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

my-skill/
  SKILL.md

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

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

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

Agent 应该会生成类似结构:

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 对话:

使用 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,https://github.com/alibaba/skill-up

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

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


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

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

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

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up