Skip to content

tianxing02/memlang-demo

Repository files navigation

构建 MemOS × LangGraph「个人日程助手」

个性化日程任务管理系统(Personal Planner)

在个人学习与工作管理中,用户希望拥有一个能够理解自己习惯、自动规划并持续优化的日程助手
与传统的日历或任务清单不同,这个助手需要做到:

  • 能记住用户的长期目标

  • 能根据用户偏好与约束动态调整

  • 能在多轮对话中保持一致性与连贯性,不丢失上下文。

一、业务场景分析

目标是把一个“能说会做”的日程助手做成长期可用的个人/团队助手,而不是一次性生成器。用户用自然语言管理日程(创建/修改/查询/删除),期望系统能记住偏好、理解上下文并在跨会话中延续工作流。核心用例举两个最能体现价值的场景:

  1. 自然语言日程编排 + 个性化推荐
    用户说一句话(例如“下周一9点和 Alice 开会,优先线上”),系统不只是把这条事件存入日历,而是:

    • 将自然语言准确映射为结构化事件(时间、地点、参与者、提醒、优先级、标签);

    • 自动应用用户偏好(例如默认线上、默认时区、常用提醒间隔),并在必要时给出智能候选(若冲突则提出替代时段);

    • 将提炼出的偏好作为长期记忆(user_pref)保存,用于未来自动填充与个性化排序。
      这里的关键需求是结构化理解 + 长期偏好记忆,它直接决定用户下次交互的便捷度和对系统的信任感。

  2. 跨会话上下文检索与任务衔接
    用户能在不同时间分多次构建或调整同一事务(例如“把和 Alice 的上次会议纪要里的未完成项放到下周议程”)。系统应能:

    • 语义检索到与当前话题高度相关的历史条目(不是简单关键词匹配),并返回可操作的摘要;

    • 在生成建议时把这些历史事实作为约束或参考(例如避免重复安排、优先恢复未完成任务);

    • 在需要时触发相应子流程(如发邮件、抓取相关新闻或同步外部日历),并把结果融回主线对话。
      这是“记忆→检索→融合→执行”的闭环,决定系统能否真正做到“断点续接”和“上下文感知”的长期协作。

image.png

二、核心痛点

  1. 把海量历史变成“只带必要上下文”——按需检索与摘要难点
    问题不是“有无历史”,而是“哪些历史对当前请求有价值且不会误导模型”。全量放进 prompt 会导致成本飙升、噪声增多、模型被无关信息干扰;而盲目只用最近时间窗口会遗漏语义相关但时间较远的关键记录。工程上要实现的是:

    • 一个精细的召回策略(结合语义相似度、时间衰减、业务优先级)来选取 Top-K;

    • 对召回结果做压缩式摘要或抽取关键信息,确保拼接到 prompt 时既紧凑又语义完整;

    • 并在召回失败时有明确的 fallback(例如基于标题或时间窗的退化检索),以保证系统鲁棒性。
      这部分直接影响成本、响应质量和用户体验。

  2. 记忆写入的“质量控制”:不要把所有话都存下来
    很多人以为“记忆越多越好”。实际情况相反:未经筛选的记忆会迅速膨胀、降低检索精度并带来隐私风险。需要解决的关键问题包括:

    • 写入白名单与抽取规则:只把结构化且高价值的字段(如 user_prefplan_summaryplan_status)写入;对自由文本先进行抽取/合并再写入;

    • 去重与合并逻辑:多次碎片化输入需要合并成一条“高质量记忆”,并为其维护版本与时间戳;

    • 敏感信息检测与合规接口:在写入前做敏感内容检测,并提供用户可查看/删除的记忆面板以满足合规和信任需求。
      这决定了系统的长期维护成本与用户信任。

  3. 当业务从“线性”变为“有分支的图”时的路由与状态管理
    简单的线性对话可以靠 prompt + 模型完成;但一旦出现多种子流程(新闻检索、日程冲突解决、邮件发送、权限检查等),如果没有明确的状态机与节点接口,系统将变得不可维护:路由不明确、错误难以定位、重试与回滚复杂。解决方法要点:

    • 把业务建模为节点-边的流程图(或状态机),每个节点有明确定义的输入/输出 schema 和副作用(是否写记忆、是否调用外部 API);

    • 强制节点输出结构化结果,便于后续路由和审计;

    • 建立可观测性(事件日志、失败率、耗时)与回退策略(重试、人工接管)。
      这样才能把复杂业务拆成可测、可管、可扩展的小模块。

三、为什么需要使用MemOS管理记忆

在传统 LLM 应用中,“记忆”通常藏在两处:一是模型权重(训练时学到的分布式知识),二是会话上下文(当前对话的短期记忆)。这两者在真实产品里经常不足以支持长期、可控、可审计的个性化服务。下面先列出常见不足,再说明 MemOS 怎么解决、对你这个「个性化日程+学习规划」项目带来哪些具体价值。

现有做法的痛点
  1. 短期上下文受限、跨会话易丢失

    • 会话窗口(context window)有限,跨天或跨设备的信息无法可靠保留。结果是用户不得不重复偏好与任务历史,体验差、交互成本高。

    • 例:用户已经告诉过“晚上效率低”,但第二天系统又安排了高强度晚学。

  2. 参数化记忆不可控且不可编辑

    • 把个人化信息内嵌到模型权重不可追踪、难撤销、更新成本高,且无法做细粒度隐私隔离。

    • 例:若用户希望删除某条敏感偏好,从权重层面很难做到。

  3. 知识演化与合规需求被忽视

    • 业务规则、法规、用户偏好会变化,需要可编辑、可回溯、能被审计的记忆机制。短期上下文无法满足合规审计需求。

    • 例:公司合规培训时间被调整,系统需立刻反映并保留版本记录。

  4. 多模块协作困难(碎片化记忆)

    • 日程、任务、通知、知识库等系统若各自为政,会造成状态不一致(重复提醒、冲突安排、遗漏任务)。

    • 例:日程模块把合规培训安排在午间,但任务模块未把该任务标为“进行中”导致重复安排。

MemOS 能解决什么

MemOS 把“记忆”工程化,提供统一抽象、版本与生命周期管理、策略化检索与治理能力。关键能力包括:

  • 可检索的结构化记忆:把偏好、任务、会议、历史行为等保存为可查询、可索引的记忆单元(带元数据)。

  • 记忆生命周期与策略:支持生成、更新、压缩、迁移、淘汰——按访问频率、时效性、隐私策略自动管理。

  • 可编辑与可审计:每条记忆有来源、时间戳、版本、编辑历史,便于回溯与合规审计。

  • 多类型记忆协同:将会话缓存(activation)、外部明文记忆(plaintext)、以及必要时的参数化迁移(parametric)结合使用,提高时效性与长期适应。

  • 统一接口供 LLM 使用:在生成阶段按策略把最相关的记忆注入上下文,或作为专用模块访问,避免上下文冗长与检索不准。

MemOS 的核心机制
  1. 多类型记忆支持
    MemOS 将记忆按类型区分,至少包括三类:

    • 参数记忆(Parametric Memory):即模型参数里隐式编码的长期知识。

    • 激活记忆(Activation Memory):推理过程中的临时状态,比如 KV-cache、注意力机制中保存的历史上下文等。

    • 明文记忆(Plaintext Memory):外部可检索、可编辑、可显式存储的知识,如文档、用户偏好、任务记录。

    对你的日程规划系统而言,用户的长期目标、学习偏好、固定会议、待办任务,这些都属于明文记忆范畴;而系统如果能把这些记忆结构化、可检索、长期保存,就可以在每一天生成计划时一气呵成、避免重复询问或遗忘。

  2. 统一抽象 —— Memory Cube(MemCube)
    MemOS 引入了一个通用的记忆单位 MemCube,它将记忆内容 + 元数据(来源、版本、访问频率、生命周期策略等)封装在一起。

    这个设计的好处是:不论是用户偏好、过去任务记录、模型激活状态,都可以以同一种“记忆块”形式被管理、迁移、合并。对于你的系统,这意味着记忆不再是分散的“用户说了什么”或“系统生成了什么”,而是有版本控制、生命周期、有优先级、有可检索性,方便实现“我记得上次你学了什么”“你上次说你晚上效率低”“你还有未完成的任务”等逻辑。

  3. 生命周期与调度管理
    MemOS 不只是存储记忆,还提供记忆的生成、检索、更新、迁移、淘汰的全过程管理。比如,哪些记忆尚未被访问可淘汰、哪些记忆需要“压缩”成模型参数,哪些记忆作为“高优先级”在下次调用。

    在你的场景中,这意味着:

    • 系统能知道“合规培训”任务已经安排,本周已完成后就不再重复提醒;

    • 系统能根据“用户晚上效率低”的长期偏好,把晚间学习任务自动调成复盘而不是高强度学习;

    • 系统能随着时间推移将“多年固定会议”记忆设为“常驻优先级”,避免忘记。

  4. 记忆增强生成
    最终,MemOS 通过将记忆作为输入上下文,或将记忆内化为模型模块,使得生成的规划/对话/建议更连贯、更具个性化、更有上下文关联性。

对你的规划系统来说,就是“生成的每日计划不只是看今天输入,而是基于你过去偏好、任务状态、固定承诺、习惯”——因此输出更贴你而不是每次都从零开始。

image.png

About

MemOS × LangGraph「个人日程助手」

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages