对话持久化框架

Remember Me是一个用于在基于MCP的语言模型应用中维护对话上下文和规则的持久化框架,提供存储、检索和管理规则、代码片段和对话摘要的功能。

  • by phlax
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 phlax/remember-me

使用说明

勿忘我

用于在基于MCP的语言模型应用程序中维护会话上下文和规则的持久性框架。

概述

Remember Me是一个MCP服务器,旨在持久化聊天工件和规则。它为存储、检索和管理不同类型的持久资源提供了一个强大的框架:

  • 规则:定义行为约束和交互指南
  • 代码片段:存储可重用的代码或文本
  • 摘要:保留对话中的重要上下文信息

该系统使用SQLite实现持久性,并提供了一个全面的API来管理不同上下文中的这些资源。

建筑

核心组件

  • 我的上下文:所有持久化操作的中央管理器
  • 持久资源:所有可存储资源的基类
    • 规则:定义可接受交互参数的命令
    • 片段:可以引用的代码或文本片段
    • 总结:对话的上下文信息
  • 备份:用于创建和恢复上下文状态的系统

数据模型

资源存储具有以下属性:

  • 上下文:资源的命名空间(例如,全局资源的“me”)
  • 钥匙:上下文中的唯一标识符
  • 内容:实际存储的数据
  • 类型/MIME类型:格式化信息以进行适当处理

规则体系

规则使用结构化的策略框架:

  • 必须:绝对要求
  • 不能:绝对禁止
  • 应该:推荐做法
  • 不应该:令人沮丧的做法
  • 五月:可选考虑因素

API

上下文管理

  • my_context():使用可选的其他上下文加载当前上下文
  • my_context_backup_create():创建当前状态的备份
  • my_context_backup_restore():从以前的备份还原
  • my_context_backup_list():查看可用备份
  • my_context_backup_remove():删除特定备份
  • my_context_backup_clear():删除所有备份

规则管理

  • my_context_rule_list():列出上下文的所有规则
  • my_context_rule_set():创建或更新规则
  • my_context_rule_remove():删除规则

代码段管理

  • my_context_snippet_list():列出上下文的代码段
  • my_context_snippet_get():检索特定代码段
  • my_context_snippet_set():创建或更新代码段
  • my_context_snippet_remove():删除代码段

摘要管理

  • my_context_summary_list():列出上下文的摘要
  • my_context_summary_get():检索特定摘要
  • my_context_summary_set():创建或更新摘要
  • my_context_summary_remove():删除摘要

与LLM一起使用

“我”的语境

“me”上下文是一个始终可用的特殊默认上下文。它包含应应用于每个对话的全局规则、片段和摘要。加载上下文时,始终包含“me”上下文。

加载上下文

LLM应该在对话开始时加载上下文。这将从“我”上下文中检索所有规则、片段和摘要。然后,LLM应遵循返回的任何规则。

额外上下文

您可以通过在 extra_context 参数。这允许为不同类型的对话或任务组织不同的规则集、片段和摘要。

例如,您可能有:

  • 带有编程相关片段的“编码”上下文
  • 带有写作提示的“创造性”语境
  • 具有专业知识的“技术”背景

这些可以根据需要与默认的“我”上下文一起加载。

LLM工作流示例

  1. 开始对话:加载上下文
  2. 访问资源:根据需要检索片段和摘要
  3. 遵守规则:遵守上下文返回的规则
  4. 添加/更新资源:根据对话存储新的片段或摘要
  5. 创建备份:在重大更改之前保存重要状态

运行服务器

与MCP检查员一起

  1. 安装软件包:

    pip install -e .
    
  2. 运行MCP服务器:

    python -m mcp.server.run remember_me_mcp_server.server
    
  3. 使用MCP Inspector连接到服务器以测试API端点并与之交互

与LLMs

  1. 确保服务器如上所述运行

  2. 配置LLM平台以连接到MCP服务器并公开必要的工具

  3. 在对话中,LLM应首先加载上下文,然后遵循返回的任何规则