Memory By File

Memory By File

🚀 mcp-server-memory

这是一个与记忆文本文件交互的 MCP 服务器,旨在帮助 Claude 在聊天过程中保持上下文。每一行记忆文本都代表一段独立的记忆。

🚀 快速开始

本服务器提供了一系列工具,允许 Claude(以及其他 MCP 客户端)在聊天时管理记忆:

  • memory_add(memory: string):用于添加记忆。
  • memory_search(query: string):返回匹配的记忆(采用子字符串精确匹配,未来可能支持通配符/正则表达式)。
  • memory_delete(query: string):删除匹配的记忆(子字符串精确匹配)。
  • memory_list():返回所有记忆。
  • 提示:memory_update 相当于 memory_deletememory_add 的组合操作。

💻 使用示例

以下是一些使用示例,展示如何在实际聊天中运用这些记忆管理工具:

基础用法

  • 当提及自己的名字时,可添加记忆:"正在与 Wes 聊天"。
  • 提到女儿的年龄时,添加记忆:"Wes 的女儿 8 岁"。
  • 表示正在进行一个 TypeScript 项目时,添加记忆:"正在做 TypeScript 项目"。
  • 若 Claude 在使用工具过程中遇到情况,例如第一次尝试使用 python 命令失败,后续使用 python3 成功,Claude 可以记录:"使用 python3,python 不存在"。

高级用法

  • 若要删除关于 X 的记忆,可使用:memory_delete(query: X)
  • 若要纠正自己的名字,可先使用 memory_search("oldname") 查找旧名字的记忆,删除匹配记录,再添加新名字的记忆。

当开始新的聊天时,Claude 会自动获取最近的记忆(子集或全部),也可以手动请求记忆(部分、更多或全部),并根据这些记忆影响回应和工具的使用。

🔧 技术细节

设计思路

采用简单的记忆文本文件,主要基于以下原因:

  • ChatGPT 的记忆功能运行良好,本质上也是一个文本文件。虽然背后可能存在一些结构化处理,但从用户视角看,呈现为文本文件形式。
  • mcp-server-commands 类似提醒功能的测试中,使用文本文件效果良好(当时 Claude 具备这些功能)。
  • 未结构化的文本简化了工具的操作和参数,基本只需管理一个字符串列表。

提示机制

为了让模型知道何时存储记忆,提示机制至关重要。目前有以下几种实现思路:

  • 培训:OpenAI 表明,部分经过训练的模型能够了解何时存储记忆,就像模型接受工具使用的训练一样。
  • 提示词:在系统提示部分添加提醒,以触发模型存储记忆。
  • 工具本身:在对 Claude 的测试中,仅依靠工具规范和工具响应中的提示/建议,Claude 无法有效存储记忆。因此,在提示中添加提示信息可能是有效的解决方案。

📚 详细文档

未完成的想法

以下是一些未来可能实现的想法,但不确定是否值得投入时间,列出这些想法也是为了避免自己分心去实现它们:

  • 新颖性因素:是否可以根据记忆的新颖性重新排列记忆?这样在处理模糊的记忆查询时(例如同时提到 TypeScript 项目和 Python 项目,当要求开始新项目时,优先建议最近使用的项目),能提供更准确的建议。
  • 逐渐淡出旧记忆:考虑是否需要让旧记忆逐渐淡出,以保持记忆的时效性和相关性。
  • 0 关注
  • 0 收藏,11 浏览
  • system 提出于 2025-09-20 12:03

相似服务问题