mcp-服务器内存
这是一个MCP服务器,用于与内存文本文件进行交互,以帮助 Claude 进行聊天上下文。
每一行都是一段回忆。
这些工具允许 Claude(和其他 MCP 客户端)在聊天过程中管理记忆:
memory_add(memory: string)
- 附加内存memory_search(query: string)
- 返回匹配的记忆(子字符串完全匹配) - 稍后可能允许 glob/regexmemory_delete(query: string)
- 删除匹配的记忆(子字符串完全匹配)memory_list()
- 返回所有记忆- 仅供参考
memory_update
== memory_delete
+ memory_add
例如,
- 我提到我的名字 => “与韦斯交谈”
- 提及女儿的年龄 => “Wes 的女儿 8 岁”
- 说正在从事 TypeScript 项目 => “正在从事 TypeScript 项目”
- 而且,这很关键,可以基于 Claude(助理/法学硕士)所说或所做的事情......
- 值得注意的是,工具使用(即
run_command
)...假设第一次尝试使用该工具失败(即python
命令不存在),然后后续工具使用成功(即使用python3
而不是python
)=> Claude 可以记录“使用 python3,python 不存在”...
- 我要求克劳德摆脱关于 X 的记忆 => memory_delete(query: X)
- 我更正了我的名字 => memory_search("oldname") + memory_delete(每个匹配的记录,或一个公共子集查询) + memory_add("newname")
然后,当新的聊天开始时,Claude 会自动获取最近的记忆(部分或全部) ,或者可以请求获取记忆(部分/更多/全部)。然后可以利用这些记忆来影响回复/工具等等。
设计
一个简单的内存文本文件,为什么:
- ChatGPT 的记忆功能很好,本质上是一个文本文件
- 也许它是在幕后构建的,但如果你回顾你的记忆,它就会以文本文件的形式呈现。
- 我对
mcp-server-commands
的类似提醒功能进行了测试,效果很好(当 Claude 拥有它们时)。 - 非结构化文本简化了工具和参数,基本上管理字符串列表。
提示机制:
- 为模型提供提示,让它知道何时存储记忆也很重要。目前还不清楚如何才能最好地做到这一点,但是……
- 训练:OpenAI 承认,一些模型需要经过训练才能知道何时存储记忆。就像模型需要训练才能使用工具一样。
- 提示:系统提示组件可能包含触发存储记忆的提醒。
- 仅凭工具:在我对 Claude 的测试中,仅凭工具规范,即使在工具响应中添加了提示/建议,我也无法让 Claude 存储记忆。所以仅凭这一点是不够的。看来 Claude 使用工具的训练只是为了完成提示/请求,因此我相信在提示部分添加提醒/提示会很有效。
待办事项/想法
我不知道这些是否值得花时间,只是在这里列出一些未来的想法。或许是为了阻止自己继续做这些事 :)
- 新近因素:一种根据新近程度重新排列记忆的方法?
- 然后,顺序与模糊内存查询相关(即在 typescript 项目和 python 项目上工作,然后我要求启动一个新项目,可以建议最近使用的项目吗?)
- 淡忘旧记忆?