SkillsBench

基准测试结果

通过 MCP 工具传递的结构化知识是否真的能帮助 AI 代理比原始 Markdown 文件更好地完成任务?我们进行了一项对照实验来验证。

什么是 SkillsBench?

SkillsBench 是一个开源基准测试,用于衡量 AI 编程代理在给定技能文档时执行真实任务的能力。每个任务要求代理生成一个可工作的 Python 脚本——无需人工判断。

SkillsBench 是 BenchFlow 评估套件的一部分。它使用确定性 Docker 评估:代理的输出在容器中执行,由 pytest 评分。测试通过或失败——没有歧义。

核心问题

像 Claude Code 这样的 AI 编程代理依赖技能文档来完成专业任务——生成 DOCX 文件、处理 PDF、分析金融数据。如今,这些技能以纯 Markdown 文件(SKILL.md)的形式提供。代理必须阅读原始文本并自行提取指令、启发式规则和反模式。

OntoSkills 采用了不同的方法:技能知识被编译成结构化的 OWL 2 本体,通过 MCP 工具传递。代理使用 searchget_skill_contextevaluate_execution_planquery_epistemic_rules 四个工具——接收带有严重性评级和执行计划评估的类型化知识节点。

哪种方法效果更好?

评估方法

评估方式

我们使用 SkillsBench 进行评估,该基准测试衡量代理为真实任务生成可用代码的能力。

  1. 代理接收任务描述和相关的技能文档
  2. 生成一个 Python 解决方案脚本
  3. 脚本在任务的 Docker 容器中运行
  4. pytest 验证输出——完全确定性,无需人工判断

实验设置

代理Claude Code CLI(--print --bare 模式)
模型glm-5.1(通过 API 代理)
任务数10(seed=7),来自 70+ 个可用任务池
评分Docker + pytest CTRF 报告
传统模式

技能文档以 SKILL.md 文件形式放置在 .claude/skills/ 中。代理使用原生文件读取功能——与生产环境完全一致。

vs
OntoSkills MCP

技能编译为 OWL 2 本体,通过 MCP 工具(searchget_skill_context)发现技能。结构化查询替代文本阅读。

相同的代理、相同的模型、相同的提示。唯一的区别是技能知识的传递方式

结果

为什么结构化知识胜出

传统 SKILL.md 文件将指令、示例、注意事项和反模式混合在非结构化文本中。代理必须一次性解析所有内容,无法区分关键信息和可选信息。

OntoSkills 以带有严重性评级的类型化节点传递知识:

  • CRITICAL(关键)规则优先突出显示
  • 反模式附带明确的 rationale(原因),解释为什么要避免
  • 执行计划评估在编码前捕获常见错误
  • 经过筛选、优先排序的知识视图,而非文本墙

这对于 PDF 处理(paper-anonymizer)等复杂领域尤其有价值,正确与错误输出之间的差异取决于细微的配置细节。

局限性

  • 样本量:10 个任务来自 70+ 个任务池。结果应通过更大规模的运行来确认。
  • 单一模型:所有结果使用 glm-5.1 通过 API 代理。其他模型的表现可能不同。
  • 单一基准:SkillsBench 测试代码生成。其他基准已计划中。
  • 种子依赖:任务选择因种子而异。我们报告 seed=7 以确保可重复性。

所有基准测试代码均为开源。您可以自行运行:

python benchmark/run.py --benchmark skillsbench --mode claudecode --max-tasks 25 --model glm-5.1 --seed 7