勿忘我
用于在基于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工作流示例
- 开始对话:加载上下文
- 访问资源:根据需要检索片段和摘要
- 遵守规则:遵守上下文返回的规则
- 添加/更新资源:根据对话存储新的片段或摘要
- 创建备份:在重大更改之前保存重要状态
运行服务器
与MCP检查员一起
- 安装软件包:
pip install -e .- 运行MCP服务器:
python -m mcp.server.run remember_me_mcp_server.server- 使用MCP Inspector连接到服务器以测试API端点并与之交互
与LLMs
- 确保服务器如上所述运行
- 配置LLM平台以连接到MCP服务器并公开必要的工具
- 在对话中,LLM应首先加载上下文,然后遵循返回的任何规则
