项目简介
RhizomeDB 是一个独特的超图数据库,它以不可变的“Delta”(增量)作为核心数据单元,通过Delta-CRDTs(冲突免��复制数据类型)技术,在查询时动态构建数据状态。这意味着数据没有传统意义上的“固定状态”,而是由一系列增量断言构成。它原生支持时间旅行、灵活的模式演进以及分布式协作。此仓库包含RhizomeDB的规范和TypeScript参考实现,并特别提供了一个符合Model Context Protocol (MCP) 标准的服务器,旨在让AI Agent能够将其作为上下文服务和持久化知识库使用。
主要功能点
- 数据存储与管理:所有数据以不可变增量(Delta)的形式存储。每个Delta都是一个原子性断言,记录了操作者、时间戳和关联关系。支持对现有Delta进行“否定”操作,以实现逻辑上的数据修改或撤销,同时保留完整的审计历史。
- 灵活的查询与视图:通过强大的HyperSchema机制,可以将原始的Delta流转换为结构化且易于理解的“HyperView”(超视图),从而呈现出不同维度和深度的领域对象。
- AI Agent工具调用:MCP服务器暴露了一系列工具,允许AI Agent通过标准化的JSON-RPC协议调用数据库操作,例如创建新的Delta、查询历史Delta、创建对象和关系、以及获取数据库统计信息等。
- AI Agent资源访问:AI Agent可以通过资源URI访问数据库中的领域对象或原始Delta。领域对象以简洁的JSON格式呈现,方便AI理解和使用。
- 联邦与多实例协作:设计上支持多个RhizomeDB实例之间进行Delta的同步与联邦,能够实现数据在地理位置上的复制、客户端-服务器同步、甚至去中心化的数据协作(联邦功能仍在持续开发和完善中)。
- 模式演进与自适应:除了核心的Delta模式外,所有的HyperSchema定义本身也以Delta的形式存储在数据库中,这使得数据模式可以随着应用需求动态演进,无需停机或复杂的迁移脚本。
安装步骤
要运行RhizomeDB MCP服务器,您需要Node.js和'ts-node'环境。
- 克隆仓库:
git clone https://github.com/mbilokonsky/rhizomedb.git cd rhizomedb - 安装依赖:
cd typescript npm install # 或者使用 pnpm # pnpm install - 启动MCP服务器:
从 'typescript' 目录运行以下命令:
服务器启动后,会输出日志到标准错误流(stderr),而标准输出流(stdout)将用于MCP协议通信。ts-node mcp-server/src/index.ts
服务器配置
MCP客户端需要配置RhizomeDB MCP服务器的启动信息,以便建立连接。以下是客户端可能需要的JSON配置示例(请将 'path/to/your/rhizomedb-repo' 替换为RhizomeDB仓库的实际路径):
{ "server_name": "RhizomeDB MCP Server", "command": "ts-node", "args": [ "path/to/your/rhizomedb-repo/typescript/mcp-server/src/index.ts" ], "env": { "RHIZOME_STORAGE": "memory", "RHIZOME_PATH": "/tmp/rhizomedb-data", "RHIZOME_SYSTEM_ID": "my-ai-agent-mcp-server", "RHIZOME_CACHE_SIZE": "10000", "RHIZOME_ENABLE_INDEXING": "true", "RHIZOME_VALIDATE_SCHEMAS": "false" }, "description": "RhizomeDB MCP服务器作为AI Agent的知识图谱后端。它管理着不可变的Delta数据流,并通过MCP协议向AI Agent暴露创建、查询和管理这些Delta的工具与资源。AI Agent可以利用其时间旅行、冲突解决和灵活模式演进的能力来存储和查询复杂的上下文信息。", "comment_RHIZOME_STORAGE": "数据存储类型:'memory' (内存,数据不持久化) 或 'leveldb' (持久化存储,推荐用于生产环境)。", "comment_RHIZOME_PATH": "LevelDB存储路径:仅当 RHIZOME_STORAGE 为 'leveldb' 时有效,指定本地文件系统路径。", "comment_RHIZOME_SYSTEM_ID": "当前RhizomeDB实例的唯一标识符。如果未提供,将自动生成。", "comment_RHIZOME_CACHE_SIZE": "缓存中保留的Materialized HyperView数量,用于加速查询。较大的值通常带来更好的读取性能。", "comment_RHIZOME_ENABLE_INDEXING": "是否启用索引功能。启用后将维护HyperView,加快查询速度。设为 'false' 则禁用。", "comment_RHIZOME_VALIDATE_SCHEMAS": "是否在注册HyperSchema时进行验证,例如检查循环依赖。设为 'true' 启用,'false' 禁用。" }
基本使用方法
当MCP服务器启动并被MCP客户端连接后,AI Agent可以通过以下方式与RhizomeDB进行交互:
- 列出可用工具:AI Agent可以发送 'ListToolsRequest' 请求,获取所有可用的数据库操作工具及其详细描述和输入模式。
- 例如:'create_delta' 用于创建原始Delta;'create_object' 和 'create_relationship' 是创建数据的便捷封装;'query_deltas' 用于按多种条件查询Delta。
- 调用工具执行操作:AI Agent可发送 'CallToolRequest' 请求来执行特定工具。
- 创建信息:调用 'create_object' 工具来为某个ID添加属性(例如,为一个用户ID添加姓名、年龄等)。
- 建立关系:调用 'create_relationship' 工具来在两个对象之间建立语义关联(例如,表示一个电影由某个导演执导)。
- 查询历史:调用 'time_travel_query' 工具,传入一个时间戳,查看数据库在该时间点的状态。
- 列出和读取资源:AI Agent可以发送 'ListResourcesRequest' 来发现可用的数据资源,并通过 'ReadResourceRequest' 读取资源内容。
- 读取对象状态:通过URI 'rhizome://object/your_object_id' 读取某个领域对象的当前状态(聚合了所有相关的Delta)。
- 查看原始Delta:通过URI 'rhizome://delta/your_delta_id' 读取某个特定Delta的原始信息。
通过这些工具和资源,AI Agent能够像操作一个功能丰富的知识图谱一样,与RhizomeDB进行高效的上下文交互和数据管理。
信息
分类
数据库与文件