本项目基于MCP知识图谱记忆服务器开发,保留了其核心功能。
项目简介
MemoryMesh 是一个专为AI模型设计的知识图谱服务器,但其灵活的设计也适用于社交网络模拟、组织规划等各种涉及结构化数据的场景,特别适用于基于文本的角色扮演游戏(RPG)和互动叙事场景。它帮助AI在对话中保持结构化记忆的一致性,实现更丰富、更动态的交互体验。
核心特性
-
动态模式驱动工具:通过模式定义数据结构,自动生成数据增删改查工具 -
直观模式设计:使用必填字段、枚举类型和关系定义来指导AI生成和连接节点 -
元数据引导:通过元数据提供上下文和结构,帮助AI理解数据含义和关系 -
关系处理:在模式中定义关系,引导AI在数据点(节点)间建立连接(边) -
错误反馈:提供操作错误反馈,帮助AI学习改进与知识图谱的交互 -
事件系统:通过事件系统追踪操作,洞察知识图谱的修改过程
节点
节点代表知识图谱中的实体或概念,每个节点包含:
-
name
:唯一标识符 -
nodeType
:节点类型(如npc
、artifact
、location
),由模式定义 -
metadata
:描述节点细节的字符串数组 -
weight
:(可选)0到1之间的数值,表示关系强度,默认为1
节点示例:
ounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(lineounter(line
{
"name": "阿拉贡",
"nodeType": "玩家角色",
"metadata": [
"种族: 人类",
"职业: 游侠",
"技能: 追踪, 剑术",
"隶属: 魔戒远征队"
]
}
边
边表示节点间的关系,每条边包含:
-
from
:源节点名称 -
to
:目标节点名称 -
edgeType
:关系类型(如owns
、located_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
– 支持string
或array
-
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(line
npx -y @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.git
cd memorymesh
安装依赖:
npm install
-
构建项目:
npm run build
此命令将TypeScript代码编译为JavaScript到
dist
目录,并复制示例模式和数据文件 -
验证文件复制(可选):
-
构建过程应自动将 data
文件夹复制到dist
-
检查 dist/data
是否存在并包含.json
文件。同时确认dist/data/schemas
存在并包含.schema.json
文件 -
配置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)