Skip to content

解释:MemOS 复用评估

本页评估 ref/MemOS 作为 NoteConnection 记忆系统参考项目的价值。核心问题不是 MemOS 本身 是否强大,而是它的 memory substrate 是否适合在不扭曲当前学习平台架构的前提下,被纳入本项目。

结论

在记忆架构层面,MemOS 比 DeepTutor 更值得参考,但仍然不适合整体引入。

最值得复用的部分:

  • 显式 memory CRUD / search / feedback API 语义,
  • 类似 MemCube 的记忆域隔离模型,
  • 异步记忆处理思路,
  • preference / skill / tool memory 的分解方式,
  • 多 cube 视图与受控共享。

最不值得复用的部分:

  • 完整基础设施负担,
  • 直接照搬 Neo4j + Qdrant/Milvus + Redis/RabbitMQ 技术栈,
  • 用 memory-first 模型替换当前 learning-state 模型,
  • 将 Python memory runtime 嵌入当前主进程。

MemOS 实际提供了什么

关键证据:

  • OS 风格 memory orchestrator:
  • ref/MemOS/src/memos/mem_os/core.py
  • memory 容器抽象:
  • ref/MemOS/src/memos/mem_cube/general.py
  • ref/MemOS/src/memos/multi_mem_cube/views.py
  • API 服务:
  • ref/MemOS/src/memos/api/server_api.py
  • ref/MemOS/src/memos/api/README_api.md
  • scheduler:
  • ref/MemOS/src/memos/mem_scheduler/general_scheduler.py
  • 产品 API smoke 测试预期:
  • ref/MemOS/docs/product-api-tests.md

与 DeepTutor 不同,MemOS 首先是 memory substrate,而不是对话产品。它重点提供:

  • memory add/search/get/delete,
  • 多种 memory 类型,
  • cube 级隔离与共享,
  • 可选的异步调度与后台处理。

为什么它不能直接并入当前项目

1. 基础设施成本明显过高

MemOS 设计时默认接受更重的后端组合:

  • Neo4j
  • Qdrant 或 Milvus
  • Redis
  • 可选 RabbitMQ
  • MySQL 或 SQLite

证据:

  • ref/MemOS/pyproject.toml
  • ref/MemOS/docker/docker-compose.yml
  • ref/MemOS/src/memos/configs/*.py

这意味着它不是一个“拿来即用的小库”,而是一整套 memory platform。若不设边界直接引入, 会快速制造基础设施债务。

2. MemOS 是 memory-first,而当前项目是 learning-governance-first

MemOS 主要围绕:

  • memories,
  • cubes,
  • schedulers,
  • retrieval。

而当前 NoteConnection 的核心是:

  • knowledge atom 与 relation,
  • mastery diagnostics,
  • learning path,
  • tutor action,
  • session quality,
  • runtime capability governance。

这两套抽象的重心不同。

如果生搬 MemOS,当前架构会向“以记忆系统为中心,学习能力外挂”的方向偏移,这不是当前产品最合理的重心。

3. Scheduler 很强,但不是第一步该引入的东西

MemOS 的 scheduler 不是包装层,而是真实复杂子系统:

  • ref/MemOS/src/memos/mem_scheduler/general_scheduler.py
  • ref/MemOS/src/memos/mem_scheduler/

它提供了值得学习的思路:

  • 异步记忆摄入,
  • 分阶段后台处理,
  • 队列化更新。

但如果直接照搬,会过早引入 Redis/RabbitMQ 级别的复杂度。当前项目先提升记忆质量与显式接口, 不需要一步跳到完整 memory OS。

真正值得复用的部分

1. 记忆域隔离模型

MemCube 是 MemOS 最值得借鉴的概念。

它提供了对以下对象的容器边界:

  • 用户级记忆,
  • 项目级记忆,
  • cube 级共享策略,
  • 多 cube 组合视图。

这个思路很适合映射到当前项目的 TypeScript 记忆域模型,例如:

  • conversation
  • learner_profile
  • study_session
  • knowledge_project
  • agent_runtime

要复用的是隔离模型,不是 Python 实现本身。

2. 显式记忆操作

MemOS 将记忆设计为“可检索、可编辑、可删除、可反馈”的 API,而不是 prompt 内部黑箱。

这对 NoteConnection 是正确方向。

高价值语义包括:

  • add memory,
  • search memory,
  • list memory,
  • delete memory,
  • feedback / correction。

这比只依赖隐式总结重写更扎实。

3. Preference / Skill / Tool memory 分解

MemOS 没有把所有记忆塞进一个桶里,而是按用途拆分。

这对当前项目很重要,因为现在已经出现两个不同需求:

  • 面向教学治理的 learning-state memory,
  • 面向对话连续性的 conversation-product memory。

更合理的结构是:

  • 保留当前 learning memory / policy diagnostics 作为教学主状态,
  • 新增 conversation memory 作为独立投影域,
  • 仅在显式可查询、可限界的前提下引入 tool / agent memory。

4. 多 cube 视图与受控共享

multi_mem_cube 层提供了一个当前项目还不够强的能力参考:

  • agent 间记忆共享,
  • 用户或项目间记忆隔离,
  • 检索时按作用域受控组合多个记忆空间。

如果后续产品加入:

  • 共享 tutor context,
  • project workspace,
  • 协作式或多 agent 学习流,

这个思路会非常关键。

不应复用的部分

1. 完整后端技术栈

不要把 Neo4j + Qdrant/Milvus + Redis + RabbitMQ 当作一个打包方案直接引入。

那会在产品行为尚未验证前,过早承担基础设施复杂度。

2. 用 memory-first 替代当前 learning model

MemOS 不应成为 mastery、session quality、runtime governance 的新系统事实源。

这些能力当前已经有更合适的锚点:

  • src/learning/api.ts
  • src/learning/runtimeCapability.ts
  • src/learning/KnowledgeLearningPlatform.ts

3. 将 Python runtime 隐式嵌入主应用路径

即便未来使用 MemOS,也不应把它变成当前桌面主路径里的隐式 Python 依赖。

如果要接入,它必须放在:

  • 明确的 adapter 边界之后,
  • 可选 sidecar / service 边界之后,
  • 版本化请求响应契约之后,
  • 严格 observability 和 fallback 机制之后。

对当前项目的推荐方向

应把 MemOS 当作“下一代 conversation memory 设计参考”,而不是要直接嵌入的系统。

更合理的近程路径是:

  1. 在 TypeScript 中定义 scoped memory domain model,
  2. 将 conversation memory 与 learning-governance memory 分离,
  3. 增加显式 memory feedback / correction API,
  4. 支持受限的异步 memory update,
  5. 初期保持存储简单:
  6. 现有 store,
  7. 本地 file / sqlite,
  8. 仅在必要时增加可选向量侧索引。

推荐集成顺序

  1. 在 TypeScript 中新增 ConversationMemoryRecord 与 scoped namespace。
  2. 新增 conversation memory 的 CRUD 与 search endpoint。
  3. 新增 memory feedback / correction action。
  4. 增加轻量异步 summarization / extraction 处理链路。
  5. 只有在行为验证后,再考虑可插拔外部 memory backend。

最终判断

是的,MemOS 可以提升 NoteConnection,但前提是把它当作 memory architecture 的模式来源。

不要整体引入 MemOS。 应该吸收的是:

  • memory namespace 设计,
  • 显式 memory API,
  • feedback / correction 流程,
  • 受控共享模型。

关联页面