内存网格
 
MemoryMesh是一个为人工智能模型设计的知识图服务器,专注于基于文本的RPG和交互式讲故事。它有助于人工智能在对话中保持一致、结构化的记忆,从而实现更丰富、更动态的交互。
*该项目基于 知识图谱存储服务器 从MCP服务器存储库中提取,并保留其核心功能。*

重要
v0.3.0更新: MCP SDK已从v1.0.4更新到v1.25.2,以符合当前 模型上下文协议规范(2025-11-25)这是一个重大更新,与最新的MCP客户端兼容,包括Claude Desktop、ChatGPT、Cursor、Gemini和VS Code。更新后,运行 npm install 以获取新的依赖关系。
自从 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_工具,为AI提供上下文。 *(Thedelete和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_: 创建实体新实例的工具。update_: 用于修改现有实体的工具。delete_: 用于删除实体的工具。
然后,这些工具通过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直接在聊天中执行特定操作。
尝试不同的提示,找出最适合您用例的方法!
示例
- A. 简单的例子 使用自定义说明。
- 为了示例,我们提供了一个可视化的示例 _(不是功能的一部分)_
添加几个城市、一些NPC、城市周围的几个地点进行探索,在某个地方隐藏一两件文物
安装
先决条件
- Node.js: 版本18或更高。您可以从以下网址下载 .
- npm: 通常包含在Node.js中。
- 桌面版Claude: 确保您已从安装了最新版本 claude.ai/下载.
安装步骤
- 克隆存储库:
git clone https://github.com/CheMiguel23/memorymesh.git
cd memorymesh- 安装依赖关系:
npm install- 构建项目:
npm run build此命令将TypeScript代码编译为JavaScript dist 目录,并将示例模式和数据文件复制到其中。
- 验证文件副本(可选):
- 构建过程应自动复制 data 文件夹到 dist. - 检查 那 dist/data 存在并包含 .json 文件夹。还要验证 dist/data/schemas 存在并包含 .schema.json 文件夹。
- 配置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"]- 重新启动克劳德桌面: 完全重新启动Claude Desktop以使更改生效。
验证安装
- 启动克劳德桌面。
- 打开新聊天。
- 查找MCP插件图标 在右上角。如果存在,则您的配置可能是正确的。
- 点击 偶像。您应该在连接的服务器列表中看到“memorymesh”。
- 点击 偶像。如果您看到列出的工具(例如。,
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)
局限性
- 节点删除: 人工智能可能对从知识图中删除节点犹豫不决。如果需要,通过提示鼓励它。
- 知识冲突: MemoryMesh目前使用“最后写入获胜”的方法来处理数据。如果提供了关于同一实体的冲突信息,则最新更新将覆盖以前的值。以下是管理冲突信息的策略:
当前方法:
- 使用元数据跟踪来源: 添加元数据条目,如 "Source: Character testimony" 或 "Source: Official records" 追踪信息的来源。 - 使用时间元数据: 包括时间戳或叙述时间标记(例如。, "As of Chapter 3")在元数据中跟踪信息何时有效。 - 为透视图创建单独的节点: 对于主观或有争议的信息。, rumor_about_villain 对比 truth_about_villain). - 使用边权重: 利用可选功能 weight 边上的属性(0-1范围)表示关系的置信度或可靠性。
示例-跟踪不确定信息:
{
"name": "VillainOrigin_Rumor",
"nodeType": "information",
"metadata": [
"Source: Tavern gossip",
"Reliability: Low",
"Claims: Villain came from the northern mountains"
]
}未来考虑: 对于需要复杂冲突解决的应用程序,考虑实现一个自定义层,该层:
- 维护节点更改的版本历史记录 - 追踪每条信息的来源 - 为断言实现置信度评分 - 支持事实的时间有效期
贡献
欢迎投稿、反馈和想法! 该项目是对将结构化数据与人工智能推理能力集成的个人探索。欢迎贡献、反馈和想法,以进一步推动它或激发新项目。
