基准测试结果
通过 MCP 工具传递的结构化知识是否真的能帮助 AI 代理比原始 Markdown 文件更好地完成任务?我们进行了一项对照实验来验证。
什么是 SkillsBench?
SkillsBench 是一个开源基准测试,用于衡量 AI 编程代理在给定技能文档时执行真实任务的能力。每个任务要求代理生成一个可工作的 Python 脚本——无需人工判断。
SkillsBench 是 BenchFlow 评估套件的一部分。它使用确定性 Docker 评估:代理的输出在容器中执行,由 pytest 评分。测试通过或失败——没有歧义。
核心问题
像 Claude Code 这样的 AI 编程代理依赖技能文档来完成专业任务——生成 DOCX 文件、处理 PDF、分析金融数据。如今,这些技能以纯 Markdown 文件(SKILL.md)的形式提供。代理必须阅读原始文本并自行提取指令、启发式规则和反模式。
OntoSkills 采用了不同的方法:技能知识被编译成结构化的 OWL 2 本体,通过 MCP 工具传递。代理使用 search、get_skill_context、evaluate_execution_plan 和 query_epistemic_rules 四个工具——接收带有严重性评级和执行计划评估的类型化知识节点。
哪种方法效果更好?
评估方法
评估方式
我们使用 SkillsBench 进行评估,该基准测试衡量代理为真实任务生成可用代码的能力。
- 代理接收任务描述和相关的技能文档
- 生成一个 Python 解决方案脚本
- 脚本在任务的 Docker 容器中运行
- pytest 验证输出——完全确定性,无需人工判断
实验设置
| 代理 | Claude Code CLI(--print --bare 模式) |
| 模型 | glm-5.1(通过 API 代理) |
| 任务数 | 10(seed=7),来自 70+ 个可用任务池 |
| 评分 | Docker + pytest CTRF 报告 |
技能文档以 SKILL.md 文件形式放置在 .claude/skills/ 中。代理使用原生文件读取功能——与生产环境完全一致。
技能编译为 OWL 2 本体,通过 MCP 工具(search、get_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