brycewg
@brycewg
·
a year ago
Super Memory Refractor
Last Updated
a year ago
Created
a year ago
Function
filter
v6.3
Name
Super Memory Refractor
Downloads
149+
Saves
1+
Description
1.自动分析存储记忆,提取用户对话中需要记忆的事实信息。 2.为每一条新存入的记忆,都打上一个精确到分钟的时间戳,让ai知道每段记忆记住的时间。 3.定期后台自动生成记忆摘要,将零碎记忆合并为一个完整的记忆模块 4.可以自动更新记忆,拥有查重功能,不会重复记忆已有的事实 5.全面的性能数据:完整展示每一次对话的首字时间显示、总耗时、AI的生成速度 (TPS) 和输出的Token数

超级记忆助手 (Super Memory Assistant) for Open-WebUI

版本: 6.3
作者: 南风 (二改 Bryce)
兼容 Open-WebUI 版本: >= 0.5.0


📖 简介

超级记忆助手 是一个为 Open-WebUI 设计的高级后台插件。它旨在赋予您的 AI 助手一个动态、智能且持久的长期记忆系统。

与简单的记忆存储不同,本插件能够自动分析对话、提取关键信息、整合冲突或重叠的记忆、并在后台将零散的记忆片段聚合成连贯的摘要。它通过一个复杂的二级缓存系统和智能去重机制,确保了高效的性能和高质量的记忆管理。

✨ 核心特性

  • 🤖 自动记忆提取: 实时分析用户与 AI 的对话,自动识别并提取有价值的个人信息、偏好和事实,无需用户手动命令。
  • 🧠 智能整合与更新: 当提取到新信息时,插件会利用语义相似度搜索相关旧记忆。通过 LLM 分析,它能智能判断新信息是全新的事实、对旧有记忆的更新,还是重复信息,从而避免记忆冗余和冲突。
  • 📜 后台记忆摘要: 当某个用户的零散记忆累积到一定数量时,插件会自动在后台触发摘要任务。它将相关的记忆簇(例如,关于用户爱好的多个片段)聚合并融合成一个单一、连贯的摘要,从而实现记忆的“压缩”和“升华”。
  • ⚡️ 高效二级缓存:
    • L1 内存缓存: 高速缓存嵌入向量,极大减少了重复计算,提升实时对话性能。
    • L2 磁盘缓存: 将嵌入向量持久化到磁盘,在 Open-WebUI 重启后能够快速恢复,显著降低了对外部 Embedding API 的依赖和成本。
  • 📊 全面性能监控: 在每次对话后,可在 UI 底部状态栏清晰地看到详细的性能数据,包括:
    • 首字延迟 (TTFT)
    • 总耗时
    • AI 生成速度 (TPS)
    • 输出 Token 数
    • 记忆操作状态 (新增、更新、重复等)
  • 🔧 高度可配置: 提供了丰富的设置选项,允许用户根据自己的需求和成本预算,精细调整插件的每一个环节,从模型选择到各种行为阈值。

⚙️ 工作流程

插件在每次对话后以后台任务的形式执行以下流程:

  1. 监听对话: 捕获最近的几轮对话内容。
  2. 提取事实: 调用 LLM (e.g., GPT-4o-mini) 从用户的最新消息中提取可能需要记忆的事实。
  3. 查找相关记忆: 使用嵌入模型计算新事实的向量,并在现有记忆库中进行语义搜索,找到最相关的旧记忆。
  4. 整合与清理: 将新事实和相关的旧记忆一同提交给 LLM,由其判断是应该新增更新还是合并
  5. 语义去重: 在最终保存前,再次进行语义相似度检查,确保不会存入与现有记忆高度相似的重复信息。
  6. 存储记忆: 将处理后的最终事实存入数据库,并为每条记忆附上精确到分钟的创建时间戳。
  7. 触发摘要 (按需): 检查该用户的记忆总数,如果达到预设阈值,则启动一个非阻塞的后台摘要任务。

🚀 安装与使用

  1. 放置插件: 将 super_memory.py 文件复制到您的 Open-WebUI 安装目录下的 backend/data/filters 文件夹中。
  2. 重启服务: 重启 Open-WebUI 后端服务以加载插件。
  3. 配置插件:
    • 进入 Open-WebUI 的 设置 > 插件 页面。
    • 找到 "Super Memory" 插件并展开其配置。
    • 【重要】 至少填写以下核心配置:
      • api_url: 用于自然语言处理的 LLM API 地址 (例如, https://api.openai.com/v1/chat/completions)。
      • api_key: 对应的 API 密钥。
      • model: 指定使用的模型。
    • 根据您的需要调整其他参数。

🛠️ 配置项详解

以下是所有可用的配置项及其说明。您可以在 Open-WebUI 的插件设置界面中进行修改。

配置项默认值描述
【总开关】
enabledTrue控制整个超级记忆插件的启用或禁用。关闭后,所有功能将不运行。
【核心 API 配置】
api_urlhttps://api.openai.com/v1/chat/completions用于记忆提取、整合和摘要的 LLM API 端点。
api_key""访问上述 LLM API 所必需的密钥。
modelgpt-4o指定用于处理记忆的语言模型。
【界面与范围】
show_statsTrue在对话后于 UI 底部显示详细的性能和记忆统计数据。
messages_to_consider6提取新记忆时分析的最新对话轮次数量(3 轮用户-AI 对话)。
timezoneAsia/Shanghai为新记忆添加时间戳时使用的时区。
【实时整合与去重】
consolidation_threshold0.6实时整合触发阈值。当提取到新信息时,根据此相似度阈值查找相关旧记忆。
semantic_dedup_threshold0.9语义去重判断阈值。用于判断两条信息是否在语义上重复。建议设为较高值。
intelligent_dedup_k5智能去重分析数量。为每条新信息查找最相关的 K 条已有记忆,交由 LLM 判断。
【按量摘要任务】
enable_on_demand_summarizationTrue启用或禁用按量记忆摘要功能。
summarize_after_n_memories10为某个用户累积了多少条新记忆后,触发一次摘要任务。
summarization_cluster_threshold0.65摘要任务中,用于将相似旧记忆聚类的相似度阈值。
summarization_min_cluster_size3一个记忆簇至少需要包含多少条记忆才能被摘要。
summarization_min_memory_age_days3记忆需要「陈旧」到多少天以上才会被纳入摘要范围。
【嵌入与缓存配置】
embedding_api_urlhttps://api.openai.com/v1/embeddings用于生成嵌入向量的 API 端点地址。
embedding_api_key""访问嵌入 API 的密钥。如果留空,将默认使用核心 API 密钥。
embedding_modeltext-embedding-3-small指定使用的嵌入模型名称。
enable_embedding_cacheTrue【L1 缓存】启用或禁用嵌入向量的内存缓存。
embedding_cache_size_limit1000【L1 缓存】内存中最多可以缓存的嵌入向量条数。
persist_embeddings_to_diskTrue【L2 缓存】将嵌入向量持久化到磁盘,以在重启后恢复。

💡 技术内幕

  • 猴子补丁 (Monkey Patching): 插件通过猴子补丁技术动态修改了 Open-WebUI 内置的 delete_memory_by_id 函数。这确保了当您在界面上手动删除一条记忆时,与之关联的 L1 和 L2 缓存文件也能被同步清理,防止了“孤儿缓存”的产生。
  • 缓存对账与预热: 首次与用户对话时,插件会触发一次性的后台任务:
    • 对账 (Reconciliation): 扫描磁盘缓存目录,删除那些在数据库中已被删除的记忆所对应的缓存文件。
    • 预热 (Warmup): 从磁盘加载用户最近的记忆嵌入向量到内存缓存中,为后续的快速响应做准备。
  • 缓存路径: L2 磁盘缓存存储在 backend/data/super_memory_cache 目录下,并根据嵌入模型、用户 ID 和记忆 ID 进行结构化组织。

0