[MCP][06]持久化记忆是什么?

摘要:前言 在之前的案例中,会话历史都保存在内存中,一旦程序重启,会话历史就会丢失,导致AI没法根据会话历史推测用户当前意图。这就像一个人记性特别差,每次见面都忘了之前聊过什么,让人感觉很不专业。 如果你之前使用过LangGraph,那应该知道L
前言 在之前的案例中,会话历史都保存在内存中,一旦程序重启,会话历史就会丢失,导致AI没法根据会话历史推测用户当前意图。这就像一个人记性特别差,每次见面都忘了之前聊过什么,让人感觉很不专业。 如果你之前使用过LangGraph,那应该知道LangGraph提供了checkpointer功能来管理历史会话,可以把历史会话保存到关系型数据库或内存中。虽然LangGraph有这个功能,但是MCP官方文档中并没有提类似的实现。不过没关系,加载会话的逻辑其实很简单,我们也可以实现一个简单的持久化记忆功能。 我这里设计的是把历史会话保存到sqlite中,跟LangGraph一样,根据thread_id查找历史会话。我这里只是把会话当字符串来保存,而LangGraph则做了特殊处理,所以功能和性能方面相对差点,但基本功能都已经实现了,而且还另外加了时间字段。如果数据库更换为MySQL或Postgres,可以按时间字段来分区,这样就能更好地管理历史数据了。 MCP Server 有的持久化记忆的设计是把历史会话管理功能集成到MCP Server上,但我认为历史会话跟Client是强相关的,所以MCP Server端我没做任何改动,和前面的示例基本一致。这样设计的好处是保持了Server的简洁性,让每个组件各司其职。
阅读全文