# OntoSkills 设计理念

🇬🇧 English • 🇨🇳 中文

## 0. 神经符号 AI 智能体平台 OntoSkills 不仅仅是一个编译器——它是一个用于构建确定性、企业级 AI 智能体的**完整神经符号平台**。生态系统由五个分层组件组成: ```mermaid flowchart LR CORE["OntoCore
━━━━━━━━━━
SKILL.md → .ttl
LLM + SHACL"] -->|"编译"| CENTER["OntoSkills
━━━━━━━━━━
OWL 2 本体
.ttl 制品"] CENTER -->|"加载"| MCP["OntoMCP
━━━━━━━━━━
Rust SPARQL
内存图"] MCP <-->|"查询"| AGENT["OntoSkills
━━━━━━━━━━
企业智能体
确定性"] CENTER <-->|"分发"| STORE["OntoStore
━━━━━━━━━━
注册表
版本控制"] style CORE fill:#e91e63,stroke:#2a2a3e,color:#f0f0f5 style CENTER fill:#abf9cc,stroke:#2a2a3e,color:#0d0d14 style MCP fill:#92eff4,stroke:#2a2a3e,color:#0d0d14 style AGENT fill:#6dc9ee,stroke:#2a2a3e,color:#0d0d14 style STORE fill:#9763e1,stroke:#2a2a3e,color:#f0f0f5 ``` ### 愿景 **OntoSkills** 的灵感来自 OpenClaw、Claude Code 和 Cursor——但专注于**企业级**,强调: - **确定性**:OWL 2 描述逻辑保证可判定的推理 - **速度**:基于 Rust 的运行时(OntoMCP)实现极速 SPARQL 查询 - **可靠性**:SHACL 验证确保本体一致性 - **模块化**:即插即用的技能本体 核心洞察:**技能是编译后的制品,而非解释执行的文档。** --- ## 1. 生命周期:源代码 vs 制品 OntoCore 为技能实现了**编译时范式**,将人工编写与机器执行分离: ### 设计时(源代码) ```mermaid flowchart LR MD["人工编写
SKILL.md
━━━━━━━━━━
开发者友好
自然语言"] -.->|"编译为"| NOTE["Markdown = 语法糖
用于 OWL 2
━━━━━━━━━━
RDF/Turtle 输出"] style MD fill:#6dc9ee,stroke:#2a2a3e,color:#0d0d14 style NOTE fill:#9763e1,stroke:#2a2a3e,color:#f0f0f5 ``` 为什么用 Markdown?因为手工编写原始 Turtle 是糟糕的开发体验。 OntoCore 将**所有内容**提取到 TTL 中: - 意图(`oc:resolvesIntent`) - 状态转换(`oc:requiresState`、`oc:yieldsState`、`oc:handlesFailure`) - **执行负载**(`oc:hasPayload`,包含 `oc:executor` + `oc:code` 或 `oc:executionPath`) - 依赖和关系(`oc:dependsOn`、`oc:extends`、`oc:contradicts`) ### 运行时(制品) ```mermaid flowchart LR AGENT["LLM 智能体
━━━━━━━━━━
通过 SPARQL
查询技能"] <-->|"SELECT ?skill"| MCP["OntoMCP (Rust)
━━━━━━━━━━
内存图
极速"] MCP -->|"加载"| TTL[".ttl 文件
━━━━━━━━━━
自包含
模块化本体"] style AGENT fill:#6dc9ee,stroke:#2a2a3e,color:#0d0d14 style MCP fill:#92eff4,stroke:#2a2a3e,color:#0d0d14 style TTL fill:#9763e1,stroke:#2a2a3e,color:#f0f0f5 ``` **SKILL.md 文件在智能体的上下文中不存在。** .ttl 文件是自包含、模块化、可插拔的本体。所有逻辑都存在于 RDF 中。 **编译后的 TTL 是可执行制品。Markdown 只是被编译掉的源代码。** 这种分离实现了: - **人工友好的编写**(开发时的 Markdown) - **机器最优的执行**(运行时的 OWL 2) - **模块化部署**(无需触碰源代码即可插拔技能本体) --- ## 2. 核心问题 大语言模型强大但**非确定性**。相同的提示词可能在不同运行中产生不同输出。当智能体必须导航数十个技能时,它面临: ### 上下文和规模 - **上下文腐化**:加载 50+ 个 SKILL.md 文件消耗上下文窗口 - **幻觉风险**:分散在文件中的信息容易被误记 - **无可验证的结构**:"技能 A 是否依赖技能 B?"需要阅读两个文件 ### 小模型问题 这是问题变得**关键**的地方:较小的模型(7B-14B 参数)越来越多地用于: - **边缘计算**:无需云依赖的设备端推理 - **成本降低**:$0.001/1K tokens vs 前沿模型的 $0.015/1K tokens - **隐私**:敏感数据从不离开本地机器 - **延迟**:实时应用的亚 100ms 响应时间 **但小模型无法加载 50 个技能文件。** 考虑: | 模型 | 上下文窗口 | 实际容量 | |-------|---------------|-------------------| | Claude Opus 4 | 200K tokens | ~100 个技能文件 | | Claude Sonnet | 200K tokens | ~100 个技能文件 | | Llama 3.1 8B | 128K tokens | ~60 个技能文件 | | Mistral 7B | 32K tokens | ~15 个技能文件 | | Phi-3 Mini | 4K tokens | ~2 个技能文件 | 7B 模型在上下文耗尽前几乎无法加载**单个技能生态系统**。即使上下文适合: - **理解力下降**:小模型难以从非结构化文本中提取结构化关系 - **推理中断**:"哪些技能可以处理状态 X?"需要多文件推理,小模型无法完成 - **一致性失败**:关于技能依赖的相同查询可能在不同运行中返回不同答案 ### 成本螺旋 对于大规模运行智能体的企业,token 消耗直接影响底线: | 场景 | Tokens | 每 100 万查询成本 (Opus 4.6) | 每 100 万查询成本 (Sonnet 4.6) | |----------|--------|-------------------------------|--------------------------------| | 加载全部 50 个技能 | ~300K | $2,500 | $1,500 | | SPARQL 查询本体 | ~1.5K | $17.50 | $10.50 | *定价:Opus 4.6($5/MTok 输入,$25/MTok 输出),Sonnet 4.6($3/MTok 输入,$15/MTok 输出)* 本体方法将 Sonnet 的成本降低约 **150 倍**。 ### 重试问题 非确定性推理产生了一个隐藏的成本乘数:**愚蠢的重试**。 当 LLM 智能体解释技能元数据时,它会犯不可预测的错误: **浪费性重试的例子:** - **错误的工具调用**:智能体调用 `list_skills` 而不是 `find_skills_by_intent` - **散射方法**:在找到一个有效的技能前尝试 3-4 个不同的技能 - **幻觉能力**:"这个技能可能可以处理图像"——实际上不能 - **理解循环**:反复重读技能描述试图"理解它" - **上下文溢出**:加载整个技能文件只为回答"这需要什么?" 每次重试都消耗完整的上下文窗口。对于 50+ 个技能,这会迅速累积。 **使用确定性 SPARQL:** - 相同输入 → 相同结果(零解释差异) - 技能选择是**精确的**,而非概率性的 - **没有"思考"开销**——查询直接返回答案 - **没有幻觉**——本体是唯一的事实来源 - **可预测的成本**——你确切知道每个查询消耗多少 token **确定性不仅仅关乎正确性——它关乎消除浪费。** ### 一致性差距 即使是大模型也遭受**不一致的技能解释**: - **模糊的语言**:"此技能需要身份验证"——那是前置条件还是功能? - **隐式关系**:技能 A 提到"使用技能 B 进行验证"——那是依赖?扩展? - **分散的元数据**:意图字符串、状态需求和执行提示隐藏在散文中 没有形式语义,每个关于技能的 LLM 查询都是对**解释的赌博**。 --- 这就是 LLM 时代的**知识检索问题**——OntoSkills 通过使技能**可查询而非可读**来解决它。 --- ## 3. 本体解决方案 OntoSkills 应用**描述逻辑(DL)**——具体是 OWL 2 DL 底层的 **$\mathcal{SROIQ}^{(D)}$** 片段——将非结构化技能定义转换为**形式化的、可查询的知识图谱**。 ### 为什么是 $\mathcal{SROIQ}^{(D)}$? 每个字母代表一种能力,解决技能建模中的特定问题: | 特性 | 能力 | OntoSkills 示例 | |---------|------------|------------------| | **$\mathcal{S}$** | 传递属性 | `A extends B extends C` → 自动推导 A extends C | | **$\mathcal{R}$** | 复杂角色包含 | `dependsOn` 和 `contradicts` 互斥 | | **$\mathcal{O}$** | 个体(枚举类) | 定义 `EntryPoints = {create, import, init}` | | **$\mathcal{I}$** | 逆属性 | `A dependsOn B` ↔ `B enables A`(自动推导) | | **$\mathcal{Q}$** | 基数限制 | `ExecutableSkill` 恰好有 1 个 `hasPayload` | | **$\mathcal{D}$** | 数据类型 | 字符串、整数、布尔值用于字面量 | **可判定性**:OWL 2 DL 是可判定的——推理算法在有限时间内以正确答案终止。这与 LLM 推理的开放式性质形成对比。 --- ## 4. 神经符号架构 OntoSkills 是**神经符号的**:它结合了神经和符号 AI 范式。 ```mermaid flowchart LR NEURAL["神经层
━━━━━━━━━━
LLM 提取
Claude 提取
结构化知识
(概率性)"] -->|"Pydantic"| SYMBOLIC["符号层
━━━━━━━━━━
OWL 2 本体
形式语义
可判定推理
(确定性)"] SYMBOLIC -->|"序列化"| QUERY["查询层
━━━━━━━━━━
SPARQL 引擎
O(1) 索引查找
精确检索
(确定性)"] style NEURAL fill:#6dc9ee,stroke:#2a2a3e,color:#0d0d14 style SYMBOLIC fill:#9763e1,stroke:#2a2a3e,color:#f0f0f5 style QUERY fill:#abf9cc,stroke:#2a2a3e,color:#0d0d14 ``` - **神经**:Claude 从自然语言中提取结构化知识(OntoCore) - **符号**:OWL 2 本体以形式语义存储知识(OntoSkills) - **查询**:SPARQL 提供精确、索引化的检索(OntoMCP) 神经层处理歧义和解释。符号层确保一致性和可验证性。 --- ## 5. 智能民主化 一个关键抱负:**使较小的模型能够对大型技能生态系统进行推理**。 考虑一个有 100 个技能的智能体: - **没有本体**:必须阅读 100 个 SKILL.md 文件(~500KB 文本)来理解能力 - **有本体**:在毫秒内查询 `SELECT ?skill WHERE { ?skill oc:resolvesIntent ?intent }` 这对以下场景特别有价值: - **边缘部署**:本地硬件上的较小模型 - **成本降低**:每次查询处理更少的 token - **可靠性**:确定性答案,没有关于技能关系的幻觉 ### 模式暴露 在查询之前,LLM 需要知道:**"我可以问什么?"** OntoSkills 分别暴露 **TBox**(术语盒)——类和属性的模式——与个体技能的 **ABox**(断言盒)。 ```mermaid flowchart LR TBOX["TBox(模式)
━━━━━━━━━━
oc:Skill 有哪些属性?
→ oc:resolvesIntent
→ oc:dependsOn
→ oc:extends"] -->|"告知"| ABOX["ABox(实例)
━━━━━━━━━━
哪些技能解析
'create_pdf'?
→ oc:pdf-generation
→ oc:docx-to-pdf"] style TBOX fill:#9763e1,stroke:#2a2a3e,color:#f0f0f5 style ABOX fill:#abf9cc,stroke:#2a2a3e,color:#0d0d14 ``` 这种两阶段查询防止"盲目"提问并提高精度。 --- ## 6. 性能特征 | 操作 | 文本文件 | OWL 本体 | |-----------|------------|--------------| | 按意图查找技能 | O(n) 扫描所有文件 | O(1) 索引 SPARQL | | 检查依赖 | 解析每个文件 | 跟随 `oc:dependsOn` 边 | | 检测冲突 | 比较所有对 | `oc:contradicts` 查找 | | 传递闭包 | 递归扫描 | OWL 推理(可选) | 对于 100 个平均 5KB 的技能: - **文本扫描**:~500KB 需要读取 - **SPARQL 查询**:~1KB 索引查找 差距随规模扩大。 --- ## 7. 模式优先查询 传统技能系统要求 LLM "猜测"存在什么信息。OntoSkills 反转这一点: 1. **首先**:查询 TBox 以了解可用的类和属性 2. **然后**:使用已知谓词构建精确的 ABox 查询 TBox 查询示例: ```sparql SELECT ?property ?range WHERE { ?property rdfs:domain oc:Skill . ?property rdfs:range ?range . } ``` 返回:`oc:resolvesIntent → xsd:string`、`oc:dependsOn → oc:Skill` 等。 这实现了**知情查询**——LLM 在提问前就知道本体的结构。 --- ## 8. 企业焦点 OntoSkills 为**生产环境企业**设计: ### 确定性优于灵活性 当其他智能体优化灵活性时,OntoSkills 优化**可预测、可重现的行为**: - 相同输入 → 相同技能选择(通过 SPARQL,而非 LLM 判断) - 相同依赖 → 相同执行顺序(通过 `oc:dependsOn` 边) - 相同状态 → 相同转换(通过 `oc:requiresState` / `oc:yieldsState`) ### 安全优先 OntoCore 实现**纵深防御**: - 对已知攻击向量的正则模式匹配 - 对模糊内容的 LLM 审查 - SHACL 验证防止畸形本体 - 不执行未经验证的负载 ### 审计追踪 每个编译后的技能携带: - `oc:generatedBy`——哪个 LLM 模型提取了它 - `oc:hash`——用于完整性验证的内容哈希 - `oc:provenance`——源文件引用 --- ## 9. 研究基础 OntoSkills 建立在知识表示、逻辑推理和现代 AI 数十年的研究之上: **描述逻辑与推理** * Baader, F., Calvanese, D., McGuinness, D., Nardi, D., & Patel-Schneider, P. (2003). *The Description Logic Handbook*. Cambridge University Press. * Horrocks, I., Kutz, O., & Sattler, U. (2006). "The Even More Irresistible SROIQ". *Proceedings of KR-2006*.(OWL 2 的数学基础)。 **本体与验证(W3C)** * W3C OWL 2 Web Ontology Language (2009). https://www.w3.org/TR/owl2-overview/ * Cuenca Grau, B., Horrocks, I., Motik, B., et al. (2008). "OWL 2: The next step for OWL". *Journal of Web Semantics*. * Knublauch, H., & Kontokostas, D. (2017). "Shapes Constraint Language (SHACL)". *W3C Recommendation*. **知识表示** * Brachman, R., Levesque, H. (2004). *Knowledge Representation and Reasoning*. Morgan Kaufmann. * Sowa, J. (2000). *Knowledge Representation: Logical, Philosophical, and Computational Foundations*. Brooks/Cole. **神经符号 AI 与语义网** * d'Avila Garcez, A., Lamb, L. (2020). "Neurosymbolic AI: The 3rd Wave". *arXiv:2012.05876*. * Pan, S., et al. (2024). "Unifying Large Language Models and Knowledge Graphs: A Roadmap". *IEEE TKDE*. * Heath, T., Bizer, C. (2011). "Linked Data: Evolving the Web into a Global Data Space". *Synthesis Lectures on the Semantic Web*. * SPARQL 1.1 Query Language (2013). https://www.w3.org/TR/sparql11-query/ *OntoSkills 是桥梁:神经灵活性用于提取,符号严谨性用于存储,精确查询用于检索。*