跳转到内容

OntoCore 编译器

ontocore 是可选的编译器,将 SKILL.md 源文件转换为已验证的 OWL 2 本体模块。

大多数用户不需要它 — 只有在以下情况才需要 OntoCore:

  • 从源文件编写自定义技能
  • 导入和编译原始技能仓库
  • 本地开发和测试技能

安装

Terminal window
ontoskills install core

这将在以下位置创建托管的编译器运行时:

~/.ontoskills/core/

系统要求:

  • Python 3.10+
  • Anthropic API key(设置 ANTHROPIC_API_KEY 环境变量)

编译流水线

SKILL.md → [提取] → [安全检查] → [序列化] → [SHACL] → ontoskill.ttl
阶段发生什么
提取Claude 读取 SKILL.md 并提取结构化知识
安全检查正则表达式 + LLM 审查恶意内容
序列化Pydantic 模型 → RDF 三元组
验证SHACL 形状检查逻辑有效性
写入带备份的原子写入

如果任何阶段失败,技能不会被写入。SHACL 守门员强制执行宪法规则。


文件处理规则

OntoCore 根据文件类型进行处理:

规则输入输出处理方式
ASKILL.mdontoskill.ttlLLM 编译
B*.md(辅助文件)*.ttl作为子技能进行 LLM 编译
C其他文件直接复制资产(图片等)

目录镜像

输出结构镜像输入:

skills/ → ontoskills/
├── office/ → ├── office/
│ ├── SKILL.md → │ ├── ontoskill.ttl
│ ├── planning.md → │ ├── planning.ttl
│ └── review.md → │ └── review.ttl
└── pdf/ → └── pdf/
├── SKILL.md → ├── ontoskill.ttl
└── diagram.png → └── diagram.png

子技能

技能目录中的辅助 .md 文件成为子技能

  • 它们自动 extend 父技能
  • 在提取过程中继承父级上下文
  • 获得限定 ID:package/parent/child

CLI 命令

初始化核心本体

Terminal window
ontoskills init-core

创建 core.ttl,包含基础 TBox 本体(类、属性、状态定义)。

编译技能

Terminal window
# 编译 skills/ 中的所有技能
ontoskills compile
# 编译特定技能
ontoskills compile office
# 带选项编译
ontoskills compile --force # 跳过缓存
ontoskills compile --dry-run # 预览但不保存
ontoskills compile --skip-security # 跳过 LLM 安全审查
ontoskills compile -v # 详细日志
选项描述
-i, --input输入目录(默认:skills/
-o, --output输出目录(默认:ontoskills/
--dry-run预览但不保存
--skip-security跳过 LLM 安全审查(正则检查仍运行)
-f, --force强制重新编译(跳过缓存)
-y, --yes跳过确认提示
-v, --verbose启用调试日志
-q, --quiet抑制进度输出

查询图谱

Terminal window
ontoskills query "SELECT ?s WHERE { ?s a oc:Skill }"

对编译后的本体运行 SPARQL 查询。

检查质量

Terminal window
# 列出所有已编译的技能
ontoskills list-skills
# 运行安全审计
ontoskills security-audit

输出结构

编译后:

ontoskills/
├── core.ttl # 核心 TBox(共享类/属性)
├── index.ttl # 带 owl:imports 的清单
├── system/
│ └── index.enabled.ttl # 为 MCP 启用的技能
└── <skill-path>/
└── ontoskill.ttl # 单个技能模块

核心本体

核心本体(core.ttl)是所有技能模块通过 owl:imports 引用的共享 TBox。它:

  • 在线服务https://ontoskills.sh/ontology/core.ttl
  • ontoskills install mcp 自动下载~/.ontoskills/ontologies/core.ttl
  • 在开发时由 ontoskills init-coreontoskills compile 本地重新生成

已编译的技能模块通过 owl:imports <https://ontoskills.sh/ontology/core.ttl> 引用核心本体。MCP 将此解析为本体根目录中的本地副本。

core.ttl 定义:

  • oc:Skilloc:ExecutableSkilloc:DeclarativeSkill
  • 属性:dependsOnextendscontradictsresolvesIntent
  • 知识节点类:oc:Heuristicoc:AntiPattern
  • 前置条件/后置条件的状态类

索引

index.ttl 是一个清单,它:

  • 列出所有已编译的技能
  • 通过 owl:imports <https://ontoskills.sh/ontology/core.ttl> 引用核心本体
  • 被 OntoMCP 用于发现可用技能

缓存

OntoCore 是缓存感知的:

  • 每个技能都有存储在 oc:contentHash 中的内容哈希
  • 未更改的技能在重新编译时会被跳过
  • 使用 --force 跳过缓存

安全流水线

编译器运行深度防御安全检查:

  1. Unicode 规范化 — NFC 规范化,零宽字符移除
  2. 正则模式 — 检测提示注入、命令注入、路径遍历、凭据暴露
  3. LLM 审查 — Claude 审查标记内容的细微威胁

检测到的威胁类型:

  • 提示注入(ignore instructionssystem:you are now
  • 命令注入(; rm| bash、命令替换)
  • 数据泄露(带凭据的 curl -dwget --data
  • 路径遍历(../../..//etc/passwd
  • 凭据暴露(硬编码的 api_key=password=

使用 --skip-security 跳过 LLM 审查(正则检查仍运行)。


SHACL 验证

每个技能在写入前必须通过 SHACL 验证。宪法形状定义在 core/specs/ontoskills.shacl.ttl 中,跨 6 个节点形状强制执行约束。

必需字段(阻止):

约束规则
resolvesIntent必需(至少 1 个)
generatedBy必需(恰好 1 个)
requiresState必须是有效的 IRI
yieldsState必须是有效的 IRI
handlesFailure必须是有效的 IRI

类型特定规则:

  • ExecutableSkill 必须恰好有 1 个 hasPayload(带 codeexecutionPath
  • DeclarativeSkill 不能有 hasPayload

如果验证失败,技能不会被写入并显示错误。

参见技能创作获取通过验证的实用指南。


错误处理

错误原因解决方案
SkillNotFoundError技能目录不存在检查路径拼写
OrphanSubSkillsError.md 文件没有父级 SKILL.md在目录中创建 SKILL.md
SecurityError内容被安全流水线阻止审查内容,如果安全使用 --skip-security
OntologyValidationErrorSHACL 验证失败修复报告的约束违规
ExtractionErrorLLM 提取失败检查 ANTHROPIC_API_KEY,重试

环境变量

变量描述默认值
ANTHROPIC_API_KEYAnthropic API key必需
ANTHROPIC_BASE_URLAPI 基础 URLhttps://api.anthropic.com
SECURITY_MODEL安全审查模型claude-opus-4-6

下一步