尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

使用 Klavis 仓库中的 Knowledge Graph Memory MCP Server 为 AI Agent 构建持久化记忆

使用 Klavis 仓库中的 Knowledge Graph Memory MCP Server 为 AI Agent 构建持久化记忆 使用 Klavis 仓库中的 Knowledge Graph Memory MCP Server 为 AI Agent 构建持久化记忆【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis本篇技术指南以 Klavis 仓库内置的 Knowledge Graph Memory Servermodelcontextprotocol/server-memory为对象讲解如何通过本地知识图谱为 Claude 等 AI Agent 提供跨会话持久记忆能力。读完本文你将掌握实体、关系、观察三类核心概念理解 8 个 MCP 工具的作用与调用契约并能在 Claude Desktop、VS Code 中完成从安装、配置到定制记忆策略的完整落地。为什么 AI Agent 需要记忆大语言模型本身是无状态的每一次会话结束后模型都不会保留任何关于用户的偏好、项目背景或历史结论。Klavis 仓库中的这个 memory MCP Server 提供了一种轻量、可持久化的解决方案——用本地知识图谱Knowledge Graph作为 AI Agent 的长期记忆让 Claude 等客户端在跨会话场景下仍然记得用户。从源码结构看该服务位于 mcp_servers/local/memory/核心实现集中在 index.ts其本质是一个运行在 stdio 传输层之上的 MCP 服务器它用 TypeScript 基于modelcontextprotocol/sdk构建通过 JSONL 文件落盘将每次会话中值得沉淀的信息写入本地供后续会话检索。这与 MCP 生态中工具即接口、文件即存储的思路一致既不需要数据库也不需要外部服务非常适合个人助手、轻量级 Agent 场景。核心概念实体、关系与观察知识图谱由三种基本元素构成三者共同描述了谁是谁、与谁相关、有什么特点。实体Entities实体是知识图谱中的主要节点每个实体包含三个字段字段类型说明namestring唯一标识符作为实体的主键entityTypestring实体类型分类如person、organization、eventobservationsstring[]与该实体绑定的观察事实列表示例{ name: John_Smith, entityType: person, observations: [Speaks fluent Spanish] }从源码看实体在 index.ts 中被定义为Entity接口并在保存时以type: entity标记写入 JSONL 文件。关系Relations关系定义实体之间的有向连接始终使用主动语态active voice描述例如works_at、knows、reports_to。{ from: John_Smith, to: Anthropic, relationType: works_at }对应源码中的Relation接口index.tsfrom是起点实体名to是终点实体名relationType是关系类型。保存时以type: relation标记落盘。观察Observations观察是附着在具体实体上的离散信息片段具备以下特征以字符串形式存储附着于特定实体可以独立增删应当保持原子性一条观察只表达一个事实。{ entityName: John_Smith, observations: [ Speaks fluent Spanish, Graduated in 2019, Prefers morning meetings ] }存储格式JSONL所有数据最终以JSONL每行一个 JSON 对象的形式持久化在memory.jsonl文件中。每次写操作都会加载整份文件、修改内存图结构并整体回写。测试 knowledge-graph.test.ts 验证了格式实体行与关系行各占一行首行实体带type: entity次行关系带type: relation。文件不存在时loadGraph()会静默返回空图index.ts。完整工具 API8 个 MCP 工具详解服务共注册 8 个工具覆盖了知识图谱的增、删、查三类操作。以下参数说明与忽略重复/静默失败等边界行为均可在 index.ts 的registerTool调用及测试用例中找到依据。创建类工具create_entities—— 批量创建新实体。输入entities对象数组每个对象包含namestring实体标识符entityTypestring类型分类observationsstring[]关联的观察列表。行为自动忽略已存在的同名实体。源码中通过filter(e !graph.entities.some(...))实现去重index.ts测试 knowledge-graph.test.ts 验证了重复创建返回空数组且图内实体数不变。create_relations—— 批量创建实体间关系。输入relations对象数组每个对象包含fromstring起点实体名tostring终点实体名relationTypestring主动语态的关系类型。行为跳过完全重复的关系fromtorelationType三者同时相同视为重复index.ts。add_observations—— 为已有实体追加观察。输入observations对象数组每个对象包含entityNamestring目标实体contentsstring[]要新增的观察内容。行为返回每个实体的实际新增列表addedObservations若实体不存在则直接抛错Entity with name X not foundindex.ts。去重同样内置已存在的观察内容不会被重复添加测试见 knowledge-graph.test.ts。删除类工具delete_entities—— 删除实体及其关联关系。输入entityNamesstring[]。行为级联删除所有from或to指向被删实体的关系index.ts实体不存在时静默操作。测试 knowledge-graph.test.ts 验证了删除中间节点后相关关系被全部清空。delete_observations—— 从实体上删除指定观察。输入deletions对象数组每个对象包含entityNamestring目标实体observationsstring[]要删除的观察内容。行为观察不存在或实体不存在时静默操作不抛错index.ts。delete_relations—— 从图中删除指定关系。输入relations对象数组每个对象包含from、to、relationType。行为只删除精确匹配三元组的关系关系不存在时静默操作index.ts。测试 knowledge-graph.test.ts 展示了同一对实体存在多条不同关系时可定向删除其中一条。查询类工具read_graph—— 读取整个知识图谱。输入无。行为返回包含全部entities与relations的完整图结构index.ts。文件尚未创建时返回空图。search_nodes—— 按查询关键词搜索节点。输入querystring。行为对实体名、实体类型、观察内容三处做不区分大小写的子串匹配返回命中实体以及仅存在于命中实体之间的关系index.ts。测试 knowledge-graph.test.ts 覆盖了按名称、类型、观察内容搜索及大小写不敏感等场景。open_nodes—— 按名称精确取回指定节点。输入namesstring[]。行为返回请求的实体及请求实体相互之间的关系不存在的节点静默跳过index.ts。注意与search_nodes的区别它不做模糊匹配只按精确名称取节点。安装与配置Claude DesktopDocker 方式在claude_desktop_config.json中添加{ mcpServers: { memory: { command: docker, args: [run, -i, -v, claude-memory:/app/dist, --rm, mcp/memory] } } }其中-v claude-memory:/app/dist将数据卷挂载到容器内的/app/dist目录使记忆数据在容器重建后依然保留--rm保证容器退出即清理。NPX 方式{ mcpServers: { memory: { command: npx, args: [ -y, modelcontextprotocol/server-memory ] } } }NPX 自定义存储路径服务器支持通过环境变量MEMORY_FILE_PATH指定记忆存储文件{ mcpServers: { memory: { command: npx, args: [ -y, modelcontextprotocol/server-memory ], env: { MEMORY_FILE_PATH: /path/to/custom/memory.jsonl } } } }MEMORY_FILE_PATH记忆存储 JSONL 文件的路径默认值为服务器目录下的memory.jsonl。从源码看该环境变量的解析逻辑位于 index.ts 的ensureMemoryFilePath()绝对路径按原样使用相对路径会基于服务器安装目录拼接为绝对路径。测试 file-path.test.ts 对绝对路径、相对路径和 Windows 盘符路径均有覆盖。此外ensureMemoryFilePath()还内置了向后兼容迁移若检测到旧版遗留的memory.json而新文件memory.jsonl不存在会自动重命名迁移并在 stderr 打印DETECTED: Found legacy memory.json file...与COMPLETED: Successfully migrated...两条提示若两个文件同时存在则直接使用新的 JSONL 文件、不做迁移file-path.test.ts。安装与配置VS Code一键安装NPX / DockerVS Code 支持通过 MCP 安装重定向链接实现一键安装NPX 与 Docker 各有 Stable / Insiders 两种版本安装后会在 VS Code 中自动注册名为memory的 MCP 服务器。手动配置手动安装有两种方式方式一用户级配置推荐。打开命令面板Ctrl Shift P运行MCP: Open User Configuration在用户级mcp.json中添加服务器配置。方式二工作区配置。在工作区根目录创建.vscode/mcp.json并添加配置便于与团队共享。注意VS Code 的配置键为servers与 Claude Desktop 的mcpServers不同NPX 方式{ servers: { memory: { command: npx, args: [ -y, modelcontextprotocol/server-memory ] } } }Docker 方式{ servers: { memory: { command: docker, args: [ run, -i, -v, claude-memory:/app/dist, --rm, mcp/memory ] } } }关于 VS Code MCP 配置的更多细节可查阅官方 VS Code MCP 文档中的相关章节。用 System Prompt 驱动记忆策略工具本身只提供存储能力而存什么、何时存由系统提示词System Prompt决定。调整提示词可以让模型决定创建记忆的频率与类型。以下是针对聊天个性化场景的示例提示词可直接放入 Claude.ai Project 的 Custom Instructions 字段Follow these steps for each interaction: 1. User Identification: - You should assume that you are interacting with default_user - If you have not identified default_user, proactively try to do so. 2. Memory Retrieval: - Always begin your chat by saying only Remembering... and retrieve all relevant information from your knowledge graph - Always refer to your knowledge graph as your memory 3. Memory - While conversing with the user, be attentive to any new information that falls into these categories: a) Basic Identity (age, gender, location, job title, education level, etc.) b) Behaviors (interests, habits, etc.) c) Preferences (communication style, preferred language, etc.) d) Goals (goals, targets, aspirations, etc.) e) Relationships (personal and professional relationships up to 3 degrees of separation) 4. Memory Update: - If any new information was gathered during the interaction, update your memory as follows: a) Create entities for recurring organizations, people, and significant events b) Connect them to the current entities using relations c) Store facts about them as observations这段提示词把模型引导为一个记忆管理员先识别用户、检索图谱再按身份、行为、偏好、目标、关系五类信息决定是否沉淀最后通过创建实体 → 建立关系 → 写入观察三步完成记忆更新——恰好对应create_entities、create_relations、add_observations三个工具的使用节奏。从源码构建与自测仓库提供了完整的构建与测试链路。首先可以运行单元测试验证核心逻辑cd mcp_servers/local/memory npm install npm test测试基于 Vitest 编写vitest.config.ts覆盖了去重、级联删除、搜索语义、JSONL 持久化、跨实例数据保持以及旧文件迁移等关键行为。Docker 构建方式如下docker build -t mcp/memory -f src/memory/Dockerfile .仓库内的 Dockerfile 采用多阶段构建第一阶段在node:22.12-alpine中编译 TypeScript 产出dist第二阶段在node:22-alpine中只安装生产依赖并以node dist/index.js作为入口。构建与升级提醒如果此前曾用 Docker 卷存放记忆数据旧卷中可能存在index.js文件会被新容器覆盖。若你使用 Docker 卷存储请在启动新容器前删除旧卷中的index.js文件。许可证本 MCP Server 基于MIT License开源见仓库 LICENSE允许自由使用、修改和分发仅需遵守 MIT 许可条款。在 Klavis 仓库中你可以将本服务与仓库内的其他 MCP Server 一并纳入自己的 Agent 工具集构建具备持久记忆的完整智能体方案。【免费下载链接】klavisKlavis AI: MCP integration platforms that let AI agents use tools reliably at any scale项目地址: https://gitcode.com/GitHub_Trending/kl/klavis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表