找回密码
 立即注册
首页 业界区 业界 【Agent】MemOS 源码笔记---(6)---MemScheduler -- 总体 ...

【Agent】MemOS 源码笔记---(6)---MemScheduler -- 总体

上官银柳 昨天 23:50
【Agent】MemOS 源码笔记---(6)---MemScheduler -- 总体


目录

  • 【Agent】MemOS 源码笔记---(6)---MemScheduler -- 总体

    • 0x00 摘要
    • 0x01 能力介绍

      • 1.1 需求
      • 1.2 如何调度
      • 1.3 MemScheduler 功能
      • 1.4 执行示例

        • 1.4.1 代码功能概述
        • 1.4.2 案例:家庭助理场景中的记忆调度


    • 0x02 MemScheduler 基本概念

      • 2.1 核心组件
      • 2.2 主要特点
      • 2.3 BaseScheduler

        • 2.3.1 图例
        • 2.3.2 定义

      • 2.4 消息处理

        • 2.4.1 消息类型
        • 2.4.2 调度消息结构

      • 2.5 函数实现

    • 0xFF 参考


0x00 摘要

记忆调度就像大脑的注意力机制,动态决定在合适的时刻调用合适的记忆。
在 MemOS 中,记忆调度(Memory Scheduling) 通过对【不同使用效率(参数>激活>工作>其他明文)的记忆】的相互调度,让模型能更高效、准确地获取用户所需的记忆。在对话和任务进行时,通过预测用户后续对话所需记忆并提前调入高效率记忆类型如激活记忆工作记忆,加速推理链路。
记忆调度的具体实现就是MemScheduler ,这是一个与 MemOS 系统并行运行的并发记忆管理系统,它协调 AI 系统中工作记忆、长时记忆和激活记忆之间的记忆操作。它通过事件驱动调度处理记忆检索、更新和压缩。该系统特别适合需要动态记忆管理的对话代理和推理系统。
备注:本文基于MemOS的文档和源码进行学习和解读,似乎其文档并没有跟上源码更新的速度,而且也有部分功能未实现或者未开源。
因为 MemScheduler 内容过多,因此分为两篇。
0x01 能力介绍

MemOS(Memory Operating System)是面向 Agent 的记忆操作系统,而 MemScheduler 是其中的 “调度器”,类比操作系统的 CPU 调度器,核心负责所有记忆操作的统筹、调度、优先级管理和资源分配。可以说,MemOS提供了基础的记忆管理框架,而MemScheduler则在此基础上增加了动态调度和自动化管理的能力,使得整个记忆系统更加智能化和高效。
1.1 需求

我们首先看看为什么需要调度。
在复杂的交互里,如果每次过来只靠简单的全局搜索,系统可能会:

  • 太慢:等到用户问完再临时搜索,首 Token 延迟高。
  • 不准:太多历史,反而淹没了关键信息,难以检索。
调度的作用就是让系统具备“即时准备、快速响应”的能力:

  • 预加载:在对话一开始,就加载用户的常用背景。
  • 预测调用:在用户还没输入完时,提前准备可能要用的记忆。
1.2 如何调度

可以结合任务语义、上下文、访问频率、生命周期等信息,动态安排记忆的调用与存储。
维度说明调什么?参数记忆(长期知识与技能)
激活记忆(运行时的 KV 缓存与隐层状态)
明文记忆(外部可编辑的事实、用户偏好、检索片段)
支持明文 ⇆ 激活 ⇆ 参数的动态迁移,高频使用的明文片段可以提前编译成 KV 缓存;长期稳定的模板可以沉淀到参数中。什么时候调?上下文和高效记忆不足以支撑回答用户提问时进行记忆结构的优化
根据用户的意图和需求,对用户可能需要的记忆内容进行提前的准备
在连续提问过程中,调度记忆保持对话场景的高效准确调给谁?当前用户、特定角色代理(Agent)、或跨任务的共享上下文调成什么样?记忆会被打上热度、时效性、重要性等指标。调度器据此决定先加载谁、谁放冷存、谁需要归档。使用 MemOS 云服务时,调度的作用可以从 searchMemory API 的表现中观测到:

  • 它能快速返回相关记忆,避免上下文断裂。
  • 返回的内容已经过调度器优化,确保结果既相关又不会过载模型输入。
1.3 MemScheduler 功能

核心职责如下。

  • 记忆单元编排管理

    • 管理多个 MemCube 实例(即记忆容器)
    • 作为操作系统层级来处理和协调这些记忆单元
    • 提供创建、搜索、更新和删除记忆单元的方法

  • 任务调度与自动化

    • 通过预定的操作实现自动化的内存管理任务
    • 处理各种内存操作,包括:

      • 添加新记忆(ADD_LABEL)
      • 回答查询(ANSWER_LABEL)
      • 处理查询(QUERY_LABEL)


  • 多用户支持

    • 设计用于多用户场景,并采用线程安全操作
    • 验证用户对特定记忆单元的访问权限
    • 为不同用户提供独立的上下文环境

  • 记忆生命周期管理

    • 协调信息在不同组件之间的流动
    • 管理何时以及如何处理、存储和检索记忆
    • 与其他 MemOS 组件(如 MemReader 和大语言模型)集成

1.4 执行示例

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

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

  • 自动初始化: 通过配置文件配置调度器
  • 手动初始化: 显式创建和配置调度器组件
该脚本模拟用户和助手之间关于宠物的对话,演示记忆调度器如何管理对话历史并检索相关信息。
1.4.2 案例:家庭助理场景中的记忆调度

前段时间:用户忙着买房
用户经常说:

  • “帮我查一下 XX 小区的二手房均价。”
  • “提醒我周六去看房。”
  • “记录一下房贷利率的最新变化。”
MemOS系统操作

  • 系统最初将这些条目都生成 明文记忆
  • 因为“买房”相关信息被频繁提及,调度器在后台判断它是近期的核心主题,于是将这些明文迁移为 激活记忆,让后续查询更快更直接。
最近:用户房子买好了开始装修
用户开始频繁提到:

  • “周末要去看瓷砖。”
  • “提醒我和装修公司确认水电改造。”
  • “记一下下周家具送货时间。”
MemOS系统操作

  • 系统继续生成新的 明文记忆
  • 调度器检测到“装修”已经成为新的高频主题,于是把这些条目迁移为 激活记忆
  • 同时,之前“买房”相关激活记忆不再被频繁使用,会被自动降级回明文层,以减少活跃占用。
当前时刻:用户随口说——我感觉好多事堆在一起,你帮我理一下
如果没有调度,系统只能全库检索,把所有可能相关的记忆拉出来:

  • 看瓷砖(装修)
  • 确认水电改造(装修)
  • 家具送货(装修)
  • 查房价(买房时期,过时)
  • 看房(买房时期,过时)
  • 买菜(生活琐事)
  • 看电影(生活琐事)
有调度时,系统可以更快速返回
<ul>看瓷砖
确认水电改造
家具送货


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册