核心定位
Ontology 是一套面向 AI 代理设计的类型化知识图谱系统,通过实体-关系-属性的三元组结构,将松散的自然语言对话转化为可验证、可查询、可共享的结构化记忆。它解决了多轮对话中信息碎片化、技能间状态隔离、以及复杂任务依赖难以追踪的核心痛点。
核心用法
系统围绕实体(Entity)和关系(Relation)构建:
- 实体创建:
ontology create --type Person --props '{"name":"Alice"}'生成带类型的节点 - 关系连接:
ontology relate --from proj_001 --rel has_owner --to p_001建立有向边 - 图查询:支持按类型过滤(
--type Task)、属性匹配(--where '{"status":"open"}')、关系遍历(--related) - 约束验证:通过
schema.yaml定义必填字段、枚举值、禁止属性、关系基数、无环性等规则
典型触发场景包括:"记住 Alice 是项目经理"、"查询项目 Website Redesign 的所有未完成任务"、"创建依赖任务 A 的任务 B"、或跨技能共享状态(如邮件技能创建 Commitment,任务技能自动转为 Task)。
显著优点
1. 结构化持久化:Append-only 的 JSONL 存储保留完整历史,避免对话上下文丢失
2. 跨技能协同:通过标准化的实体 ID 和关系类型,打破技能壁垒,实现"邮件承诺→任务创建→日历事件"的流水线
3. 可验证性:类型约束在写入前强制执行,防止脏数据污染图谱(如禁止 Credential 直接存储明文密码)
4. 工作流即代码:多步骤计划可建模为图变换序列,每步原子化提交,支持约束失败回滚
5. 查询灵活性:从简单属性过滤到多跳关系遍历,覆盖从个人笔记到项目管理的多元场景
潜在缺点与局限性
- 迁移成本:简单场景需维护 schema 和实体关系,认知负担高于直接文件存储
- 查询性能:默认 JSONL 格式在万级节点后效率下降,需手动迁移至 SQLite
- 约束覆盖不全:
end >= start等时序约束、复杂业务规则仍为文档级说明,未全部代码化 - 可视化缺失:依赖命令行查询,无内置图谱可视化能力
- 并发安全:未提及多代理同时写入的锁机制,高并发场景可能产生冲突
适合人群
- 长期运行的个人助理代理(需跨会话记忆)
- 多技能协作系统开发者(需状态共享枢纽)
- 项目管理场景用户(任务依赖、责任人追踪)
- 偏好显式数据建模的技术用户(愿意维护 schema)
常规风险
| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 数据丢失 | `graph.jsonl` 损坏导致图谱不可恢复 | 定期备份、考虑 SQLite 迁移 |
| 敏感信息泄露 | Credential 实体若误用明文存储 | 强制 `secret_ref` 间接引用,schema 层禁止敏感字段 |
| 循环依赖 | Task A blocks Task B blocks Task A | 启用 `acyclic: true` 关系约束 |
| 约束绕过 | 直接编辑 JSONL 跳过验证 | 始终通过 CLI/API 操作,避免手动文件修改 |
| 性能衰减 | 无索引的 JSONL 查询随数据量恶化 | 监控文件大小,及时迁移数据库 |
总结
Ontology 是 Agent 架构中的"记忆皮层"——它不是最简单的存储,但为需要可解释、可关联、可验证知识的场景提供了工程化的基础设施。