知识图谱服务器

MemoryMesh是一个为AI模型设计的知识图谱服务器,专注于文本RPG和交互式叙事,帮助AI在对话中保持结构化的记忆,实现更丰富和动态的交互。

  • by lolholman
  • 本地部署
  • 更新于
在 GitHub 查看 lolholman/memorymesh

使用说明

内存网格

MemoryMesh是一个为人工智能模型设计的知识图服务器,专注于基于文本的RPG和交互式讲故事。它有助于人工智能在对话中保持一致、结构化的记忆,从而实现更丰富、更动态的交互。

该项目基于 知识图谱存储服务器 从MCP服务器存储库中提取,并保留其核心功能。

重要

自从 v0.2.7 模式的默认位置已更改为 dist/data/schemas. 此位置预计将来不会更改,但如果您从以前的版本进行更新,请确保将架构文件移动到新位置。

快速链接

概述

MemoryMesh是一个本地知识图服务器,它使您能够为AI模型构建和管理结构化信息。虽然特别适合基于文本的RPG,但其适应性强的设计使其适用于各种应用,包括社交网络模拟、组织规划或涉及结构化数据的任何场景。

主要特点

  • 基于动态模式的工具: 使用模式定义数据结构,MemoryMesh会自动生成用于添加、更新和删除数据的工具。
  • 直观的模式设计: 使用必填字段、枚举类型和关系定义创建模式,指导AI生成和连接节点。
  • 人工智能指导元数据: 使用元数据提供上下文和结构,帮助人工智能理解数据中的含义和关系。
  • 关系处理: 在模式中定义关系,以鼓励AI在相关数据点(节点)之间创建连接(边)。
  • 信息反馈: 为人工智能提供错误反馈,使其能够从错误中学习并改善与知识图的交互。
  • 活动支持: 事件系统跟踪操作,提供对知识图如何修改的见解。

节点

节点表示知识图中的实体或概念。每个节点都有:

  • name:唯一标识符。
  • nodeType:节点的类型(例如。, npc, artifact, location),由您的模式定义。
  • metadata:提供有关节点的描述性详细信息的字符串数组。
  • weight:(可选)一个介于0和1之间的数值,表示关系的强度,默认为1。

示例节点:

    {
      "name": "Aragorn",
      "nodeType": "player_character",
      "metadata": [
        "Race: Human",
        "Class: Ranger",
        "Skills: Tracking, Swordsmanship",
        "Affiliation: Fellowship of the Ring"
      ]
    }

边缘

边表示节点之间的关系。每条边都有:

  • from:源节点的名称。
  • to:目标节点的名称。
  • edgeType:关系类型(例如。, owns, located_in).
{
  "from": "Aragorn",
  "to": "Andúril",
  "edgeType": "owns"
}

模式

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

架构文件位置

放置架构文件(.schema.json)在 dist/data/schemas 您构建的MemoryMesh项目的目录。MemoryMesh将在启动时自动检测和处理这些文件。

模式结构

文件名: [name].schema.json例如,对于定义'npc'的模式,文件名为 add_npc.schema.json.

  • name -内存中架构和节点类型的标识符。 重要:架构的名称 必须 从...开始 add_ 得到认可。
  • description -用作描述 add_<name> 工具,为AI提供上下文。 (The delete 和 update 工具具有通用描述)
  • properties -每个属性都包括其类型、描述和其他约束。
    • property
      • type -支持的值为 string 或 array.
      • description -帮助指导人工智能实现实体的目的。
      • required -布尔值。如果 true,the AI被迫 在创建节点时提供此属性。
      • enum -字符串数组。如果存在 AI必须做出选择 给定的选项之一。
      • relationship -定义与另一个节点的连接。如果一个属性是必需的并且有关系 AI将永远创造 节点和相应的边。
        • edgeType -要创建的关系类型。
        • description -帮助指导人工智能了解关系的目的。
  • additionalProperties -布尔值。如果 true,允许AI添加除必需或可选属性之外的额外属性。
示例架构(add_npc.Schema.json):
{
  "name": "add_npc",
  "description": "Schema for adding an NPC to the memory" ,
  "properties": {
    "name": {
      "type": "string",
      "description": "A unique identifier for the NPC",
      "required": true
    },
    "race": {
      "type": "string",
      "description": "The species or race of the NPC",
      "required": true,
      "enum": [
        "Human",
        "Elf",
        "Dwarf",
        "Orc",
        "Goblin"
      ]
    },
    "currentLocation": {
      "type": "string",
      "description": "The current location of the NPC",
      "required": true,
      "relationship": {
        "edgeType": "located_in",
        "description": "The current location of the NPC"
      }
    }
  },
  "additionalProperties": true
}

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

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

MemoryMesh包括11个为基于文本的RPG设计的预构建模式,为游戏开发提供了现成的基础。

模式管理器工具

MemoryMesh包括 SchemaManager工具 简化模式创建和编辑。它提供了一个可视化界面,无需直接编写JSON即可轻松定义数据结构。

动态工具

MemoryMesh通过以下方式简化了与知识图的交互 动态工具。这些工具不是手动编码的,而是 自动生成 直接从你的 模式定义这意味着,当您使用模式定义数据结构时,MemoryMesh会智能地创建一组针对特定数据结构量身定制的工具。

这样想: 您提供蓝图(模式),MemoryMesh会自动构建必要的工具,以基于该蓝图构建、修改和删除元素。

它在幕后是如何运作的?

MemoryMesh有一个读取模式定义的智能系统。它分析您定义的结构,包括实体的属性及其关系。基于此分析,它会自动为每种实体类型创建一组工具:

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

然后,这些工具通过MemoryMesh中的中央集线器提供,确保任何连接的客户端或AI都可以轻松访问和使用它们。

本质上,MemoryMesh的动态工具系统提供了一种强大而高效的方法来管理您的知识图,使您能够专注于应用程序的内容和逻辑,而不是数据操作的底层机制。

存储文件

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

内存查看器

内存查看器是一个独立的工具,旨在帮助您可视化和检查由MemoryMesh管理的知识图的内容。它提供了一个用户友好的界面,用于探索节点、边及其属性。

主要特点:
  • 图形可视化:将知识图视为交互式节点链接图。
  • 节点检查:选择节点以查看其节点类型、元数据和连接边。
  • 边缘探索:检查节点之间的关系,包括边缘类型和方向。
  • 搜索和过滤:快速找到特定节点或按类型过滤。
  • 表视图:允许您轻松查找和检查特定节点和边,或一次查看所有节点和边。
  • 原始JSON视图:允许您从内存文件中查看原始JSON数据。
  • 统计面板:提供有关知识图的关键指标和信息:总节点、总边、节点类型和边类型。
  • 搜索和筛选:允许您按节点类型或边类型进行筛选,并筛选是否显示节点、边或两者都显示。
访问内存查看器

内存查看器是一个独立的web应用程序。 内存查看器讨论

使用内存查看器
  • 选择内存文件:在内存查看器中,单击“选择内存文件”按钮。
  • 选择文件:导航到MemoryMesh项目目录并选择 memory.json 文件(位于 dist/data/memory.json 默认情况下)。
  • 探索:内存查看器将加载并显示知识图的内容。

内存流

提示

为了获得最佳效果,请使用Claude的“项目”功能和自定义说明。下面是一个提示示例,您可以从它开始:

You are a helpful AI assistant managing a knowledge graph for a text-based RPG. You have access to the following tools: add_npc, update_npc, delete_npc, add_location, update_location, delete_location, and other tools for managing the game world.

When the user provides input, first process it using your available tools to update the knowledge graph. Then, respond in a way that is appropriate for a text-based RPG.

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

尝试不同的提示,找出最适合您用例的方法!

示例

  1. A. 简单的例子 使用自定义说明。
  2. 为了示例,我们提供了一个可视化的示例 (不是功能的一部分)

添加几个城市、一些NPC、城市周围的几个地点进行探索,在某个地方隐藏一两件文物

安装

通过Smithery安装

通过以下方式自动安装克劳德桌面版MemoryMesh 铁匠铺:

npx -y @smithery/cli install memorymesh --client claude

先决条件

  • Node.js: 版本18或更高。您可以从以下网址下载 nodejs.org.
  • npm: 通常包含在Node.js中。
  • 桌面版Claude: 确保您已从安装了最新版本 claude.ai/下载.

安装步骤

  1. 克隆存储库:

    git clone https://github.com/CheMiguel23/memorymesh.git
    cd memorymesh
    
  2. 安装依赖关系:

    npm install
    
  3. 构建项目:

    npm run build
    

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

  4. 验证文件副本(可选):

    • 构建过程应自动复制 data 文件夹到 dist.
    • 检查 那 dist/data 存在并包含 .json 文件夹。还要验证 dist/data/schemas 存在并包含 .schema.json 文件夹。
  5. 配置Claude桌面:

    打开您的Claude Desktop配置文件:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
    • 为添加条目 memorymesh 到 mcpServers 部分。你可以选择 一 以下配置选项:
    "mcpServers": {
      "memorymesh": {
        "command": "node", 
        "args": ["/ABSOLUTE/PATH/TO/YOUR/PROJECT/memorymesh/dist/index.js"]
      }
    }
    
    • 替换 /ABSOLUTE/PATH/TO/YOUR/PROJECT/ 随着 实际绝对路径 你的 memorymesh 项目目录。
    • 示例(macOS):
      "command": "node",
      "args": ["/Users/yourusername/Projects/memorymesh/dist/index.js"]
      
    • 示例(Windows):
      "command": "node",
      "args": ["C:\\Projects\\memorymesh\\dist\\index.js"]
      
  6. 重新启动克劳德桌面: 完全重新启动Claude Desktop以使更改生效。

验证安装

  1. 启动克劳德桌面。
  2. 打开新聊天。
  3. 查找MCP插件图标 在右上角。如果存在,则您的配置可能是正确的。
  4. 点击 偶像。您应该在连接的服务器列表中看到“memorymesh”。
  5. 点击 偶像。如果您看到列出的工具(例如。, add_npc, update_npc等),您的服务器正在正常工作并正确公开工具。

更新中

在更新之前,请确保备份您的 dist/data 目录,以避免丢失内存数据。

故障排除

  • 服务器未出现在Claude中:

    • 仔细检查您的路径 claude_desktop_config.json。确保它们是绝对路径并且正确。
    • 确认 dist 目录存在,其中包含已编译的JavaScript文件,包括 index.js.
    • 检查Claude Desktop日志是否有错误:
      • macOS: ~/Library/Logs/Claude/mcp-server-memorymesh.log (以及 mcp.log)
      • 窗户: (可能在a Logs 文件夹下 %AppData%\Claude)
  • 工具未显示:

    • 确保你的 npm run build 命令已完成,没有错误。
    • 验证您的架构文件是否正确放置在 dist/data/schemas 并遵循正确的命名约定(add_[entity].schema.json).
    • 在初始化过程中,检查服务器的控制台输出或日志是否有任何错误。

高级配置

MemoryMesh提供了多种方法来定制其基本设置之外的行为:

变量

您可以使用中的覆盖默认设置 /config/config.ts

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

局限性

  1. 节点删除: 人工智能可能对从知识图中删除节点犹豫不决。如果需要,通过提示鼓励它。

贡献

欢迎投稿、反馈和想法! 该项目是对将结构化数据与人工智能推理能力集成的个人探索。欢迎贡献、反馈和想法,以进一步推动它或激发新项目。