解释: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.pyref/MemOS/src/memos/multi_mem_cube/views.py- API 服务:
ref/MemOS/src/memos/api/server_api.pyref/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.tomlref/MemOS/docker/docker-compose.ymlref/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.pyref/MemOS/src/memos/mem_scheduler/
它提供了值得学习的思路:
- 异步记忆摄入,
- 分阶段后台处理,
- 队列化更新。
但如果直接照搬,会过早引入 Redis/RabbitMQ 级别的复杂度。当前项目先提升记忆质量与显式接口, 不需要一步跳到完整 memory OS。
真正值得复用的部分¶
1. 记忆域隔离模型¶
MemCube 是 MemOS 最值得借鉴的概念。
它提供了对以下对象的容器边界:
- 用户级记忆,
- 项目级记忆,
- cube 级共享策略,
- 多 cube 组合视图。
这个思路很适合映射到当前项目的 TypeScript 记忆域模型,例如:
conversationlearner_profilestudy_sessionknowledge_projectagent_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.tssrc/learning/runtimeCapability.tssrc/learning/KnowledgeLearningPlatform.ts
3. 将 Python runtime 隐式嵌入主应用路径¶
即便未来使用 MemOS,也不应把它变成当前桌面主路径里的隐式 Python 依赖。
如果要接入,它必须放在:
- 明确的 adapter 边界之后,
- 可选 sidecar / service 边界之后,
- 版本化请求响应契约之后,
- 严格 observability 和 fallback 机制之后。
对当前项目的推荐方向¶
应把 MemOS 当作“下一代 conversation memory 设计参考”,而不是要直接嵌入的系统。
更合理的近程路径是:
- 在 TypeScript 中定义 scoped memory domain model,
- 将 conversation memory 与 learning-governance memory 分离,
- 增加显式 memory feedback / correction API,
- 支持受限的异步 memory update,
- 初期保持存储简单:
- 现有 store,
- 本地 file / sqlite,
- 仅在必要时增加可选向量侧索引。
推荐集成顺序¶
- 在 TypeScript 中新增
ConversationMemoryRecord与 scoped namespace。 - 新增 conversation memory 的 CRUD 与 search endpoint。
- 新增 memory feedback / correction action。
- 增加轻量异步 summarization / extraction 处理链路。
- 只有在行为验证后,再考虑可插拔外部 memory backend。
最终判断¶
是的,MemOS 可以提升 NoteConnection,但前提是把它当作 memory architecture 的模式来源。
不要整体引入 MemOS。 应该吸收的是:
- memory namespace 设计,
- 显式 memory API,
- feedback / correction 流程,
- 受控共享模型。