mcpField
O
ontology

ontology

github.com/kirkluokunAgent 工作流6637 次安装32 周前更新
代码仓库

关于 ontology

Ontology 是用于把知识表示为可验证图谱的类型化词汇与约束系统,适合需要在技能间共享结构化状态的 Agent 工作流。它在写入前按类型和关系约束校验变更,并支持实体查询、关系遍历与图式规划。

主要功能

  1. 01按类型组织实体、属性和关系
  2. 02提交变更前验证约束
  3. 03创建、查询和关联图谱实体
  4. 04按关系遍历图谱与查询依赖
  5. 05将多步计划建模为图变换

适用场景

  1. 01维护项目、任务和人员之间的关系
  2. 02查询某项目的任务或某实体的依赖
  3. 03让多个技能读写共享的结构化状态

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/kirkluokun/awesome-a-stock-openclawskills --skill ontology

安装后在 Claude Code 中输入/ontology确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

_meta.json
docs.md
references/
queries.md
schema.md
scripts/
ontology.py

详细介绍

本体

用于将知识表示为可验证图的类型化词汇表与约束系统。

核心概念

所有内容都是一个实体,具有类型、属性以及与其他实体的关系。每次变更在提交前都会根据类型约束进行验证。

Entity: { id, type, properties, relations, created, updated }
Relation: { from_id, relation_type, to_id, properties }

适用场景

触发条件操作
“记住……”创建/更新实体
“我对 X 了解什么?”查询图
“将 X 与 Y 关联”创建关系
“显示项目 Z 的所有任务”图遍历
“有哪些内容依赖于 X?”依赖查询
规划多步骤工作建模为图变换
技能需要共享状态读写本体对象

核心类型

# Agents & People
Person: { name, email?, phone?, notes? }
Organization: { name, type?, members[] }

# Work
Project: { name, status, goals[], owner? }
Task: { title, status, due?, priority?, assignee?, blockers[] }
Goal: { description, target_date?, metrics[] }

# Time & Place
Event: { title, start, end?, location?, attendees[], recurrence? }
Location: { name, address?, coordinates? }

# Information
Document: { title, path?, url?, summary? }
Message: { content, sender, recipients[], thread? }
Thread: { subject, participants[], messages[] }
Note: { content, tags[], refs[] }

# Resources
Account: { service, username, credential_ref? }
Device: { name, type, identifiers[] }
Credential: { service, secret_ref }  # Never store secrets directly

# Meta
Action: { type, target, timestamp, outcome? }
Policy: { scope, rule, enforcement }

存储

默认位置:memory/ontology/graph.jsonl

{"op":"create","entity":{"id":"p_001","type":"Person","properties":{"name":"Alice"}}}
{"op":"create","entity":{"id":"proj_001","type":"Project","properties":{"name":"Website Redesign","status":"active"}}}
{"op":"relate","from":"proj_001","rel":"has_owner","to":"p_001"}

通过脚本或直接文件操作进行查询。对于复杂图,可迁移到 SQLite。

仅追加规则

处理现有本体数据或架构时,应追加/合并变更,而不是覆盖文件。这样可以保留历史记录,并避免覆盖先前的定义。

工作流

创建实体
python3 scripts/ontology.py create --type Person --props '{"name":"Alice","email":"[email protected]"}'
查询
python3 scripts/ontology.py query --type Task --where '{"status":"open"}'
python3 scripts/ontology.py get --id task_001
python3 scripts/ontology.py related --id proj_001 --rel has_task
关联实体
python3 scripts/ontology.py relate --from proj_001 --rel has_task --to task_001
验证
python3 scripts/ontology.py validate  # Check all constraints

约束

在 memory/ontology/schema.yaml 中定义:

types:
  Task:
    required: [title, status]
    status_enum: [open, in_progress, blocked, done]
  
  Event:
    required: [title, start]
    validate: "end >= start if end exists"

  Credential:
    required: [service, secret_ref]
    forbidden_properties: [password, secret, token]  # Force indirection

relations:
  has_owner:
    from_types: [Project, Task]
    to_types: [Person]
    cardinality: many_to_one
  
  blocks:
    from_types: [Task]
    to_types: [Task]
    acyclic: true  # No circular dependencies

技能契约

使用本体的技能应声明:

# In SKILL.md frontmatter or header
ontology:
  reads: [Task, Project, Person]
  writes: [Task, Action]
  preconditions:
    - "Task.assignee must exist"
  postconditions:
    - "Created Task has status=open"

将规划建模为图变换

将多步骤计划建模为一系列图操作:

Plan: "Schedule team meeting and create follow-up tasks"

1. CREATE Event { title: "Team Sync", attendees: [p_001, p_002] }
2. RELATE Event -> has_project -> proj_001
3. CREATE Task { title: "Prepare agenda", assignee: p_001 }
4. RELATE Task -> for_event -> event_001
5. CREATE Task { title: "Send summary", assignee: p_001, blockers: [task_001] }

每个步骤都会在执行前进行验证。违反约束时回滚。

集成模式

与因果推断集成

将本体变更记录为因果操作:

# When creating/updating entities, also log to causal action log
action = {
    "action": "create_entity",
    "domain": "ontology", 
    "context": {"type": "Task", "project": "proj_001"},
    "outcome": "created"
}
跨技能通信
# Email skill creates commitment
commitment = ontology.create("Commitment", {
    "source_message": msg_id,
    "description": "Send report by Friday",
    "due": "2026-01-31"
})

# Task skill picks it up
tasks = ontology.query("Commitment", {"status": "pending"})
for c in tasks:
    ontology.create("Task", {
        "title": c.description,
        "due": c.due,
        "source": c.id
    })

快速入门

# Initialize ontology storage
mkdir -p memory/ontology
touch memory/ontology/graph.jsonl

# Create schema (optional but recommended)
python3 scripts/ontology.py schema-append --data '{
  "types": {
    "Task": { "required": ["title", "status"] },
    "Project": { "required": ["name"] },
    "Person": { "required": ["name"] }
  }
}'

# Start using
python3 scripts/ontology.py create --type Person --props '{"name":"Alice"}'
python3 scripts/ontology.py list --type Person

参考资料

  • references/schema.md — 完整的类型定义和约束模式
  • references/queries.md — 查询语言和遍历示例

指令范围

运行时指令操作本地文件(memory/ontology/graph.jsonl 和 memory/ontology/schema.yaml),并提供用于创建/查询/关联/验证的 CLI 用法;这些内容属于范围之内。该技能会读写工作区文件,并在使用时创建 memory/ontology 目录。验证包括属性/枚举/禁止项检查、关系类型/基数验证、对标记为 acyclic: true 的关系进行无环性检查,以及 Event 的 end >= start 检查;除非在代码中实现,否则其他更高层级的约束可能仍仅记录在文档中。

评论

支持 Markdown