Skip to content

Repository files navigation

skillops — Skill 有效性对照实验工具链

回答"这个 skill × 这个模型 × 这个任务,有没有用?"——Skill 生态缺少的是判断层而非跑分层。SkillsBench 证明了 skill 需要度量(策展 +16.2pp / 自生成 -1.3pp),但止步于测量。本工具链把度量做成带偏差控制的工程协议。

本仓库是独立开源版(原项目为「衡能——基于净收益判定的智能体能力准入与选配系统」GOAI 2026 的一部分,40_Demo/skillops-loop/)。设计文档:DESIGN.md

快速开始(三档,按你的成本选择)

档位 A:零模型,纯看流程(推荐先跑这个)

不调用任何 API,用仓库自带的样例结果走完 L1 规则检查 + 统计报告,理解整套协议输出:

pip install -r requirements.txt
playwright install chromium
python src/metrics.py examples/results/mood-treehole-home__frontend-design__20260725_113730   # L1 规则检查
python src/report.py    examples/results/mood-treehole-home__frontend-design__20260725_113730   # 统计报告

样例结果 = frontend-design skill 的首轮 5-run 配对对照(with/without × HTML 产物 + 双视口截图 + 盲评结果),来自真实模型运行。注意 L1 报告中的 corePath 全 FAIL 是预期行为——该轮产物早于 data-testid 约定,正好演示"协议升级后旧产物如何被规则层识别"。

档位 B:轻量试跑(1 个模型 key)

只跑 runner + L1/GT 验证,先感受"skill 注入前后产物差异":

# 1. 配置环境变量(任意 OpenAI 兼容端点)
export HIGRESS_BASE_URL=https://api.deepseek.com   # Windows PowerShell: $env:HIGRESS_BASE_URL="..."
export HIGRESS_API_KEY=sk-xxx

# 2. 跑 2 轮对照(示例:lab-unit-harmonization,数据/skill/验证器全部随包)
python src/run_xlsx_experiment.py --mode lab_unit_harmonization \
  --task tasks/lab-unit-harmonization.yml --skills lab-unit-harmonization \
  --scenario ckd-unit-harmonization --runs 2 --arms without_skill with_skill

run_xlsx_experiment.py文件型任务 runner(xlsx/docx/regex/csv_stats/travel_planning/dialogue_parser/lab_unit_harmonization,产物经 ground-truth 验证器打硬指标,不依赖盲评)。文件型任务的被测 skill 需放在 skills/(或 SKILL_HOME 指向的目录);示例 lab-unit-harmonization 已内置;csv_stats 等模式请自备 skill(对应社区 skill 如 data-analysis 需自行获取,本仓不分发第三方 skill)。所有模式无 key 时都会在模型调用处明确报错——fixtures/验证器/workspace 的准备不依赖 API,可先 dry 验证环境。

档位 C:完整对照(2 个不同厂商的模型 key)

两种任务形态,选一种:

文件型任务(数值验证,judge 由 ground-truth 验证器替代):

python src/run_xlsx_experiment.py --mode lab_unit_harmonization \
  --task tasks/lab-unit-harmonization.yml --skills lab-unit-harmonization \
  --scenario ckd-unit-harmonization --runs 5 --arms without_skill with_skill

产物含 with/without 的 verify_results(硬指标)+ meta.json(token/时延/成功率);多 run 后对比硬指标。注意 n=5 只有方向性,显著结论需 15~20 对。

HTML/视觉型任务(完整盲评链路,需自备前端类 skill,如你的 SKILL_HOME 里的设计 skill):

python src/run_experiment.py --task tasks/mood-treehole-home.yml --skill <你的前端skill> --runs 5
python src/screenshot.py results/<实验目录>   # 双视口截图(视觉 judge 需要;html 模态可跳过)
python src/metrics.py     results/<实验目录>   # L1 规则检查
python src/judge.py       results/<实验目录>   # 盲评(judge 模型建议与 runner 不同厂商)
python src/report.py      results/<实验目录>   # 统计报告

为什么是"带偏差控制的协议",而不是随便找个 LLM 打分

  • 盲测隐藏实验条件(是否注入 skill / 模型名 / 组别),不隐藏评价目标(judge 看中性任务说明 + rubric + 匿名产物);
  • criterion 级成对比较 + 换边复评:A/B 顺序交换评两轮,两轮不一致强制判平,实测消除严重的模型位置偏差(某 judge 曾 A胜28/B胜2);
  • 配对 bootstrap 置信区间:delta CI 跨 0 只写"结果不确定",不写"有效/稀释"(n=5 只有方向性,显著结论需 15~20 对);
  • 评审前自动脱敏:HTML 注释、skill 名、模型名、生成自述;
  • judge 与 runner 不同厂商(防自我偏好;开源版为建议项);
  • L1 规则层(零模型) 抓 L2 盲评漏报的硬性问题(如移动端溢出)——三层互补,任何"结论"都要能定位到原始产物;
  • 可靠性字段全程落盘:成功率/截断/重试/时延/token 用量,成本与质量并列报告,不合成单值。

架构与命令

脚本 环节
run_experiment.py 三臂 runner(无 skill / 人工 skill / 自生成 skill),采集可靠性字段
screenshot.py Playwright 双视口截图(desktop 1440×900 / mobile 390×844)
metrics.py L1 规则层:DOM 硬指标 + data-testid 核心交互路径(零模型)
judge.py L2 盲评:成对比较、换边复评、脱敏、429 退避、断点续评
report.py 统计报告:criterion 胜率、配对 bootstrap CI、成本并列、四分类结论
run_xlsx_experiment.py 文件型任务 runner(Python 执行 + ground truth 验证,如 xlsx/regex/csv)
higress.py OpenAI 兼容端点客户端(环境变量配置,见下)

断点续跑/续评:所有脚本幂等,重跑自动跳过已完成项(崩溃安全,429/5xx 自动退避)。

依赖与模型接入

  • Python 3.10+;requirements.txt:pyyaml / requests / playwright(+ playwright install chromium);
  • 模型调用 = OpenAI 兼容 chat/completions 协议,端点由环境变量指定:
    • HIGRESS_BASE_URL(默认 http://127.0.0.1:18080,Higress 网关示例,可换成任意兼容端点)
    • HIGRESS_API_KEY(可选)
    • HIGRESS_PATH(默认 /v1/chat/completions
  • 兼容端点示例:DeepSeek https://api.deepseek.com、Moonshot https://api.moonshot.cn、OpenAI https://api.openai.com/v1(PATH=/chat/completions)、阿里云百炼兼容模式 https://dashscope.aliyuncs.com/compatible-mode/v1、本地 Ollama http://127.0.0.1:11434/v1
  • 待测 skill 来自 SKILL_HOME(默认 ~/.agents/skills),标准 SKILL.md 格式;本仓示例见 examples/skills/

目录结构

config.yml / config.example.yml   实验配置(模型/温度/视口/统计置信度)
tasks/*.yml                       任务定义 + rubric(L2 唯一评分标准)+ 知识层预声明
skills/                           内置示例 skill(lab-unit-harmonization,开箱即用)
examples/results/                 样例结果(脱敏,档位 A 数据)
examples/tasks/                   文件型任务资产(lab-unit-harmonization 数据/skill,来源见 THIRD-PARTY.md)
examples/verifiers/               ground-truth 验证器(lab-unit-harmonization,来源见 THIRD-PARTY.md)
src/ tests/ tools/                源码、测试、mock 工具(mock-aliyun-cli 供本地 CLI 实验)
DESIGN.md                         评估体系设计 v2(术语/协议/统计口径权威文档)
THIRD-PARTY.md                    随包第三方资产声明(来源/许可)

开源边界

  • 本仓包含原创代码、自建任务定义与内置示例;被测第三方 Skill(如 Claude 官方 xlsx/docx 封装、阿里云官方 alibabacloud-、SkillsBench 自带 search- 等)不分发,权利归原作者——请把你的被测 skill 放在自己的 skills/ 目录;
  • examples/tasks/lab-unit-harmonization/examples/verifiers/benchflow-ai/skillsbench 资产(Apache-2.0,未修改),完整声明见 THIRD-PARTY.md
  • 样例结果来自真实模型运行,已脱敏(无盲评映射、无个人路径);
  • 凭据只走环境变量,代码不含任何密钥;
  • 运行 judge.py 会在结果目录生成 _blind_mapping.json(盲评匿名映射,协议保密项)——不要提交到公开仓库(已加入 .gitignore 兜底)。

维护与反馈

  • 本仓库为竞赛作品(GOAI 2026 赛道一「衡能」系统)的 Skill 评测环节开源,代码维护仅限队伍成员;欢迎试用后通过 GitHub Issues 提交摩擦与改进反馈,但我们不接受外部代码贡献(PR),以确保竞赛作品贡献边界清晰。
  • 反馈与仓库数据均为真实、自发产生,无任何购买/刷量行为。

已知限制

  • n=5 的结论只有方向性,CI 跨 0 时协议强制写"结果不确定";
  • 视觉 judge(screenshot 模态)需要多模态模型;纯文本模型请用 input: html
  • judge 与 runner 建议不同厂商,否则存在自我偏好风险;
  • skillops_autoimport.py 为原项目 dogfood 链路的可选集成(依赖 capability_shadow 模块),开源包中不可用,不影响主流程。

许可证

Apache License 2.0(见 LICENSE)。

About

skillops — Skill 有效性对照实验工具链:回答「这个 skill × 这个模型 × 这个任务,有没有用?」(盲评+配对 bootstrap CI,Apache-2.0)

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages