MemScheduler: 记忆组织调度器

MemScheduler 是一个与 MemOS 系统并行运行的并发记忆管理系统,它协调 AI 系统中工作记忆、长时记忆和激活记忆之间的记忆操作。它通过事件驱动调度处理记忆检索、更新和压缩。
该系统特别适合需要动态记忆管理的对话代理和推理系统。

主要特性

  • 🚀 与 MemOS 系统并发操作
  • 🧠 多记忆协调 (工作/长时/用户记忆)
  • 事件驱动调度 用于记忆分配
  • 🔍 高效检索 相关记忆项
  • 📊 全面监控 记忆使用情况
  • 📝 详细日志记录 用于调试和分析

记忆调度器架构

MemScheduler 系统围绕几个关键组件构建:

  1. 消息处理: 通过带有标记处理器的调度器处理传入消息
  2. 记忆管理: 管理不同的记忆类型 (工作、长时、用户)
  3. 检索系统: 基于上下文高效检索相关记忆项
  4. 监控: 跟踪记忆使用、频率和触发更新
  5. 调度器 (路由器): 通过检查来自 MemOS 系统的消息触发不同的记忆重分配策略。
  6. 日志记录: 维护记忆操作日志用于调试和分析

消息处理

调度器通过带有专用处理器的调度器处理消息:

消息类型

消息类型处理器方法描述
QUERY_LABEL_query_message_consume处理用户查询并触发检索
ANSWER_LABEL_answer_message_consume处理答案并更新记忆使用

调度消息结构

调度器使用以下格式处理来自其队列的消息:

ScheduleMessageItem:

字段类型描述
item_idstrUUID (自动生成) 用于唯一标识
user_idstr关联用户的标识符
mem_cube_idstrmem cube 的标识符
labelstr消息标签 (例如,QUERY_LABELANSWER_LABEL)
mem_cubeGeneralMemCube|strmem cube 对象或引用
contentstr消息内容
timestampdatetime消息提交时间

同时调度器将按照以下结构发送调度消息。

ScheduleLogForWebItem:

字段类型描述默认值
item_idstr唯一日志条目标识符 (UUIDv4)自动生成 (uuid4())
user_idstr关联用户标识符(必需)
mem_cube_idstr链接的 mem cube ID(必需)
labelstr日志类别标识符(必需)
from_memory_typestr源记忆分区
可能的值:
- "LongTermMemory"
- "UserMemory"
- "WorkingMemory"
(必需)
to_memory_typestr目标记忆分区(必需)
log_contentstr详细日志消息(必需)
current_memory_sizesMemorySizes当前记忆利用率
DEFAULT_MEMORY_SIZES = {
"long_term_memory_size": -1,
"user_memory_size": -1,
"working_memory_size": -1,
"transformed_act_memory_size": -1
}
memory_capacitiesMemoryCapacities记忆分区限制
DEFAULT_MEMORY_CAPACITIES = {
"long_term_memory_capacity": 10000,
"user_memory_capacity": 10000,
"working_memory_capacity": 20,
"transformed_act_memory_capacity": -1
}
timestampdatetime日志创建时间自动设置 (datetime.now)

执行示例

examples/mem_scheduler/schedule_w_memos.py 是一个演示脚本,展示如何使用 MemScheduler 模块。它说明了对话上下文中的记忆管理和检索。

代码功能概述

此脚本演示了初始化和使用记忆调度器的两种方法:

  1. 自动初始化: 通过配置文件配置调度器
  2. 手动初始化: 显式创建和配置调度器组件

该脚本模拟用户和助手之间关于宠物的对话,演示记忆调度器如何管理对话历史并检索相关信息。