项目简介
Mnemosyne 是一个基于 Rust 开发的高性能记忆系统,旨在为 Anthropic 的 Claude Code 开发环境提供强大的上下文管理能力。它通过 Model Context Protocol (MCP) 与 Claude Code 客户端通信,帮助多智能体系统存储、检索和管理项目相关的记忆、知识和决策。系统具备项目感知命名空间、混合记忆检索(关键词+图谱)、LLM 智能增强(自动摘要、关键词、链接生成)以及 OODA 循环集成等核心功能。
主要功能点
- 项目感知记忆管理: 自动区分全局、项目和会话级别的记忆,确保上下文隔离和优先级。这意味着您的代理(Agent)可以针对当前项目、当前会话甚至全局知识库进行记忆操作,而不会混淆。
- LLM增强的记忆智能: 利用 Claude Haiku 等大型语言模型,Mnemosyne 能够自动生成记忆摘要、提取关键术语、分类记忆类型、评估重要性,并建立记忆间的语义链接,极大地提升了记忆的实用性和可检索性。
- 混合检索能力: 结合传统的关键词全文搜索 (FTS5) 和创新的知识图谱遍历,Mnemosyne 能够高效、准确地召回与查询最相关的记忆,即使它们之间没有直接的关键词匹配。
- 会话及工具集成: Mnemosyne 通过标准 JSON-RPC 协议暴露了一套名为 MCP 工具集,允许 Claude 智能体程序化地存储、检索、更新和管理记忆,从而实现高级的代理行为。
- 知识图谱自组织: 记忆间通过 LLM 生成的语义链接形成一个动态的知识图谱。这个图谱会随着新的记忆加入和使用模式的演化而自组织,支持信息整合和链接强度调整。
安装步骤
- 安装 Rust: 确保您的系统已安装 Rust 1.75+ 版本。如果未安装,请访问 rustup.rs 进行安装。
- 安装 Mnemosyne: 打开终端,导航到 Mnemosyne 仓库的根目录,然后运行安装脚本:
此脚本将自动编译 Mnemosyne 二进制文件(在 Release 模式下),并将其安装到您的 '~/.local/bin' 路径下,同时初始化 SQLite 数据库。./install.sh - 配置 Anthropic API Key (可选,推荐): Mnemosyne 的 LLM 智能增强功能需要一个 Anthropic API Key。您可以选择以下任一方式进行配置:
- 交互式设置 (推荐): 运行以下命令,Mnemosyne 将提示您输入 API Key 并将其安全地存储在您的操作系统密钥链中:
mnemosyne config set-key - 通过环境变量设置: 将您的 API Key 设置为名为 'ANTHROPIC_API_KEY' 的环境变量:
export ANTHROPIC_API_KEY=sk-ant-your-api-key-here
- 交互式设置 (推荐): 运行以下命令,Mnemosyne 将提示您输入 API Key 并将其安全地存储在您的操作系统密钥链中:
服务器配置
Mnemosyne MCP 服务器是为 MCP 客户端(例如 Claude Code 开发环境)提供上下文服务的。MCP 客户端需要一个 JSON 格式的配置文件来了解如何启动 Mnemosyne 服务器并与其建立通信。这个配置文件通常会存放在 '.claude/mcp_config.json' 这样的路径下。
以下是 MCP 客户端可能使用的配置信息示例及其参数注释,以方便用户理解和配置:
{ "server_name": "mnemosyne-memory-server", "description": "提供项目感知、LLM增强的语义记忆服务,支持代理存储和检索记忆。", "command": "mnemosyne", "args": ["serve"], "capabilities": { "tools": [ { "name": "mnemosyne.recall", "description": "搜索记忆:根据语义查询、关键词或标签检索记忆,返回排序结果及相关性分数。", "input_schema_description": "需要查询字符串(query),可选命名空间(namespace,格式如'project:my-app'或'session:my-app:abc123')、最大结果数(max_results,默认为10)、最小重要性(min_importance,1-10)。" }, { "name": "mnemosyne.list", "description": "列出记忆:按最近、重要性或访问次数列出指定命名空间内的记忆。适用于浏览历史记录。", "input_schema_description": "可选命名空间(namespace,格式同mnemosyne.recall)、限制返回数量(limit,默认为20)、排序方式(sort_by,可选'recent'、'importance'、'access_count')。" }, { "name": "mnemosyne.graph", "description": "获取记忆图谱:从一个或多个种子记忆ID开始,通过语义链接遍历记忆图谱,以构建更全面的上下文。", "input_schema_description": "需要种子记忆ID列表(seed_ids,字符串数组),可选最大跳数(max_hops,默认为2)。" }, { "name": "mnemosyne.context", "description": "获取完整上下文:检索一个或多个特定记忆ID的详细信息,包括其链接的记忆和所有元数据。", "input_schema_description": "需要记忆ID列表(memory_ids,字符串数组),可选是否包含链接记忆(include_links,默认为true)。" }, { "name": "mnemosyne.remember", "description": "存储记忆:保存一条新记忆。LLM将自动对其进行丰富,包括生成摘要、提取关键词、标签和语义链接。", "input_schema_description": "需要记忆内容(content)和命名空间(namespace,格式同mnemosyne.recall),可选重要性(importance,1-10,如果未提供则由LLM确定)、额外上下文(context)。" }, { "name": "mnemosyne.consolidate", "description": "整合记忆:由LLM分析并决定合并或替代相似记忆,以防止知识冗余。", "input_schema_description": "可选待整合的记忆ID列表(memory_ids,仅限2个ID进行配对分析),可选命名空间(namespace)以查找相似记忆的候选,可选自动应用(auto_apply,默认为false,设置为true则自动执行合并/替代)。" }, { "name": "mnemosyne.update", "description": "更新记忆:修改现有记忆的内容、重要性或标签。", "input_schema_description": "需要记忆ID(memory_id),可选新内容(content,修改后将触发重新嵌入)、新重要性(importance,1-10)、要完全替换的标签列表(tags)、或要添加到现有标签的标签列表(add_tags)。" }, { "name": "mnemosyne.delete", "description": "删除记忆:软删除(归档)一条记忆。被归档的记忆不会出现在搜索结果中,但仍可恢复,不会永久销毁。", "input_schema_description": "需要记忆ID(memory_id)。" } ] } }
基本使用方法
一旦 Mnemosyne MCP 服务器配置并在 Claude Code 等 MCP 客户端中启动,您就可以通过客户端提供的接口来利用其记忆功能。
-
通过 Claude Code 斜杠命令 (用户友好界面):
- '/memory-store <要存储的内容>':快速存储一条新记忆。
- '/memory-search <查询关键词>':在您的记忆库中进行混合搜索。
- '/memory-context':加载当前项目相关的上下文记忆。
- '/memory-list':浏览和查看所有或特定命名空间下的记忆。
- '/memory-consolidate':启动记忆整合流程,审查并合并或替代重复的记忆。
-
通过 MCP 工具 (编程接口,供代理使用): Claude 智能体可以直接调用 Mnemosyne 暴露的 MCP 工具,通过发送 JSON-RPC 请求来执行记忆操作。例如:
- 调用 'mnemosyne.remember' 来存储一条记忆:
{"jsonrpc": "2.0", "method": "tools/call", "params": {"name": "mnemosyne.remember", "arguments": {"content": "我们决定采用微服务架构以提高可伸缩性。", "namespace": "project:my-new-app", "importance": 9, "context": "架构决策会议"}}, "id": 123} - 调用 'mnemosyne.recall' 来检索相关记忆:
{"jsonrpc": "2.0", "method": "tools/call", "params": {"name": "mnemosyne.recall", "arguments": {"query": "关于数据库选择的考虑", "namespace": "project:my-new-app", "max_results": 5}}, "id": 456}
Mnemosyne 服务器将接收这些 JSON-RPC 请求,处理后返回相应的 JSON-RPC 响应,包含记忆操作的结果或检索到的记忆信息。
- 调用 'mnemosyne.remember' 来存储一条记忆:
信息
分类
AI与计算