为AI打造的知识图谱服务器MemoryMesh


本项目基于MCP知识图谱记忆服务器开发,保留了其核心功能。

项目简介

MemoryMesh 是一个专为AI模型设计的知识图谱服务器,但其灵活的设计也适用于社交网络模拟、组织规划等各种涉及结构化数据的场景,特别适用于基于文本的角色扮演游戏(RPG)和互动叙事场景。它帮助AI在对话中保持结构化记忆的一致性,实现更丰富、更动态的交互体验。

核心特性

  • 动态模式驱动工具:通过模式定义数据结构,自动生成数据增删改查工具
  • 直观模式设计:使用必填字段、枚举类型和关系定义来指导AI生成和连接节点
  • 元数据引导:通过元数据提供上下文和结构,帮助AI理解数据含义和关系
  • 关系处理:在模式中定义关系,引导AI在数据点(节点)间建立连接(边)
  • 错误反馈:提供操作错误反馈,帮助AI学习改进与知识图谱的交互
  • 事件系统:通过事件系统追踪操作,洞察知识图谱的修改过程

节点

节点代表知识图谱中的实体或概念,每个节点包含:

  • name:唯一标识符
  • nodeType:节点类型(如npcartifactlocation),由模式定义
  • metadata:描述节点细节的字符串数组
  • weight:(可选)0到1之间的数值,表示关系强度,默认为1

节点示例:

ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line    {      "name""阿拉贡",      "nodeType""玩家角色",      "metadata": [        "种族: 人类",        "职业: 游侠",        "技能: 追踪, 剑术",        "隶属: 魔戒远征队"      ]    }

边表示节点间的关系,每条边包含:

  • from:源节点名称
  • to:目标节点名称
  • edgeType:关系类型(如ownslocated_in)
ounter(lineounter(lineounter(lineounter(lineounter(line{  "from": "阿拉贡",  "to""安都瑞尔圣剑",  "edgeType""拥有"}

模式

模式是MemoryMesh的核心,定义了数据结构并驱动工具的自动生成。

模式文件位置

将模式文件(.schema.json)放置在MemoryMesh项目的dist/data/schemas目录中,MemoryMesh会在启动时自动检测并处理这些文件。

模式结构

文件名格式:[名称].schema.json。例如定义NPC的模式文件应命名为add_npc.schema.json

  • name – 模式和内存中节点类型的标识符。重要:模式名称必须以add_开头才能被识别
  • description – 作为add_<名称>工具的描述,为AI提供上下文
  • properties – 每个属性包含类型、描述和额外约束
    • type – 支持stringarray
    • description – 指导AI理解实体用途
    • required – 布尔值。为true时,强制要求AI在创建节点时必须提供该属性
    • enum – 字符串数组。存在时,AI必须选择给定选项之一
    • relationship – 定义与其他节点的连接。如果属性是必填且有关系,AI将始终创建节点和对应的边
    • edgeType – 要创建的关系类型
    • description – 指导AI理解关系用途
    • property
  • additionalProperties – 布尔值。为true时,允许AI添加超出定义范围的额外属性
模式示例(add_npc.schema.json):
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line{  "name""add_npc",  "description""向记忆中添加NPC的模式",  "properties": {    "name": {      "type""string",      "description""NPC的唯一标识符",      "required"true    },    "race": {      "type""string",      "description""NPC的种族或物种",      "required"true,      "enum": [        "人类",        "精灵",        "矮人",        "兽人",        "哥布林"      ]    },    "currentLocation": {      "type""string",      "description""NPC当前所在位置",      "required"true,      "relationship": {        "edgeType""位于",        "description""NPC当前所在位置"      }    }  },  "additionalProperties"true}

基于此模式,MemoryMesh会自动创建:

  • add_npc:添加新NPC节点
  • update_npc:修改现有NPC节点
  • delete_npc:删除NPC节点

MemoryMesh内置11个专为文本RPG设计的预置模式,为游戏开发提供开箱即用的基础。

模式管理器工具

MemoryMesh包含模式管理器工具,简化模式的创建和编辑。它提供可视化界面,无需直接编写JSON即可轻松定义数据结构。


动态工具

MemoryMesh通过动态工具简化与知识图谱的交互。这些工具不是手动编码的,而是直接从模式定义自动生成。这意味着当您使用模式定义数据结构时,MemoryMesh会智能地创建一组专门用于处理该结构的工具。

工作原理: 您提供蓝图(模式),MemoryMesh自动构建基于该蓝图创建、修改和删除元素所需的工具。

背后的工作机制

MemoryMesh的智能系统会读取您的模式定义,分析您定义的实体属性和关系结构,然后为每种实体类型自动创建一组工具:

  • add_<实体>: 创建新实体实例的工具
  • update_<实体>: 修改现有实体的工具
  • delete_<实体>: 删除实体的工具

这些工具通过MemoryMesh的中心枢纽提供,确保连接的客户端或AI可以轻松访问和使用。

本质上,MemoryMesh的动态工具系统提供了一种强大高效的知识图谱管理方式,让您可以专注于应用程序的内容和逻辑,而非底层数据操作机制。

记忆文件

默认情况下,数据存储在dist/data/memory.json的JSON文件中。

记忆查看器

记忆查看器是一个独立的工具,用于可视化和检查MemoryMesh管理的知识图谱内容。它提供用户友好的界面来探索节点、边及其属性。

主要功能:
  • 图谱可视化:以交互式节点-链接图形式查看知识图谱
  • 节点检查:选择节点查看其nodeType、metadata和连接的边
  • 边探索:检查节点间关系,包括edgeType和方向
  • 搜索过滤:快速查找特定节点或按类型过滤
  • 表格视图:轻松查找和检查特定节点和边,或一次性查看所有内容
  • 原始JSON视图:查看记忆文件中的原始JSON数据
  • 统计面板:提供知识图谱的关键指标和信息:总节点数、总边数、节点类型和边类型
  • 搜索过滤:可按节点类型或边类型过滤,选择显示节点、边或两者
访问记忆查看器

记忆查看器是一个独立的Web应用。记忆查看器讨论

使用记忆查看器
  • 选择记忆文件:在记忆查看器中点击”选择记忆文件”按钮
  • 选择文件:导航至MemoryMesh项目目录,选择memory.json文件(默认位于dist/data/memory.json)
  • 探索:记忆查看器将加载并显示知识图谱内容

提示词

为获得最佳效果,建议使用Claude的”项目”功能配合自定义指令。以下是可参考的初始提示词示例:

ounter(lineounter(lineounter(line你是一个管理文本RPG知识图谱的AI助手。你可以使用以下工具:add_npc、update_npc、delete_npc、add_location、update_location、delete_location等管理游戏世界的工具。
当用户提供输入时,首先使用可用工具更新知识图谱,然后以适合文本RPG的方式做出响应。

您也可以直接在聊天中指示AI执行特定操作。

根据您的使用场景尝试不同的提示词!

安装指南

通过Smithery安装

通过Smithery为Claude桌面版自动安装MemoryMesh:

ounter(linenpx -@smithery/cli install memorymesh --client claude

先决条件

  • Node.js:18或更高版本。可从nodejs.org下载
  • npm:通常随Node.js一起安装
  • Claude桌面版:确保已安装最新版,下载地址claude.ai/download

安装步骤

克隆仓库:

git clone https://github.com/CheMiguel23/memorymesh.gitcd memorymesh

安装依赖:

npm install
  1. 构建项目:

    npm run build

    此命令将TypeScript代码编译为JavaScript到dist目录,并复制示例模式和数据文件


验证文件复制(可选):

    • 构建过程应自动将data文件夹复制到dist
    • 检查dist/data是否存在并包含.json文件。同时确认dist/data/schemas存在并包含.schema.json文件
  1. 配置Claude桌面版:

    打开Claude桌面版配置文件:

    "mcpServers": {  "memorymesh": {    "command": "node",     "args": ["/项目/绝对路径/memorymesh/dist/index.js"]  }}








      • /项目/绝对路径/替换为memorymesh项目目录的实际绝对路径
      • 示例(macOS):

        "command": "node","args": ["/Users/用户名/Projects/memorymesh/dist/index.js"]




      • 示例(Windows):

        "command""node","args": ["C:\\Projects\\memorymesh\\dist\\index.js"]



        • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
        • Windows:%APPDATA%\Claude\claude_desktop_config.json
        • mcpServers部分添加memorymesh条目。可选择以下配置之一:
          重启Claude桌面版:完全重启以使更改生效


      高级配置

      MemoryMesh提供多种方式来自定义其行为,超出基本设置范围:

      变量

      可通过/config/config.ts覆盖默认设置

      • MEMORY_FILE:指定用于存储知识图谱数据的JSON文件路径(默认:dist/data/memory.json)
      • SCHEMAS_DIR:模式文件目录路径(默认:dist/data/schemas/memory.json)

      项目地址

      https://github.com/CheMiguel23/MemoryMesh/blob/main/README.md





      扫码加入技术交流群,备注「开发语言-城市-昵称

      (文:GitHubStore)

      发表评论