MemOS Memory Plugin for Nanobot

1. 一句话定位

MemOS 是一个 Memory OS:用 MemCube 管理多类型记忆,并支持异步调度、反馈修正、多 cube 共享和隔离。

2. 核心心智模型

  • MemOS 的基本容器是 MemCube,不是一条 flat memory。
  • 一个请求可以读多个 cube,也可以写一个或多个 cube。
  • 记忆类型不止 text:还包括 preference、tool、skill 等。
  • scheduler 是性能关键路径;写入可以 async,Adapter 不能强制同步化。
  • feedback 是原生能力,应走 APIFeedbackRequest,不要在 Nanobot 里手写覆盖。

3. 数据模型

User / Agent / Project
    |
    v
MemCube(s)
    |-- text_mem
    |-- pref_mem
    |-- tool_mem
    |-- skill_mem
    |-- feedback/correction records
    |-- graph/vector/fulltext indexes
字段来源用途
user_idNanobot persona/user用户身份
session_idNanobot sessionsession soft signal
writable_cube_idsbackend config/run写入目标 cube
readable_cube_idsbackend config/run检索范围
custom_tagsscenario/context标签过滤
infobenchmark metadata可检索 metadata
async_modebackend configasync/sync 写入策略

4. 运行时流程

Write path
Nanobot messages
  -> MemOSPlugin.add
  -> APIADDRequest
  -> MemCubeView.add_memories
  -> scheduler or sync add path
  -> text/pref/tool/skill memory stores
 
Read path
Nanobot query
  -> MemOSPlugin.search
  -> APISearchRequest
  -> MemCubeView.search_memories
  -> mode=fast/fine/mixture
  -> dedup + relativity filtering
  -> grouped context for Nanobot
 
Feedback path
Nanobot correction
  -> APIFeedbackRequest
  -> feedback_memories
  -> memory correction/evolution

5. 原生 API

API参数返回值用途
add_memoriesAPIADDRequestlist of memory dicts写入一个或多个 cube
search_memoriesAPISearchRequestgrouped result dict检索 text/pref/tool/skill memories
feedback_memoriesAPIFeedbackRequestresult dict根据反馈修正记忆
ChatRequest / chat APIuser_id, query, cube ids, modeanswer + references端到端 memory-aware chat

6. 存储后端

  • README 的 self-hosted 启动路径要求 Neo4j 和 Qdrant。
  • 文档中出现 Redis Streams scheduler,用于异步任务和队列隔离。
  • Graph DB 文档覆盖 Neo4j、Postgres/PolarDB/Nebula 等多租户/逻辑隔离形态。
  • MemOS 支持多 cube 管理:隔离、受控共享、跨项目/跨 agent 组合检索。
  • 图数据库隔离由 use_multi_db 控制:True = 每用户独立数据库(物理隔离),False = 共享数据库 + user_name 标签(逻辑隔离)。多租户场景推荐逻辑隔离(False)。

7. Nanobot 集成边界

Nanobot 接口MemOS 调用
addadd_memories(APIADDRequest)
searchsearch_memories(APISearchRequest)
get_context_string按 memory type 格式化检索结果
feedback extensionfeedback_memories(APIFeedbackRequest)
snapshot/restorecube registry + backend-specific state
resetscoped cube cleanup

推荐 ID 映射:

persona/run      -> mem_cube_id
session          -> session_id
scenario/context -> custom_tags
attribute/cell   -> info
tool calls       -> tool-memory-compatible messages

不能绕过的原生路径:MemCube routing、scheduler、feedback pipeline、memory type separation。

8. 性能保留原则

  • 保留 async_mode,不要把生产路径强制变成同步。
  • 保留 mode=fast/fine/mixture,让 benchmark 能比较速度和质量。
  • 保留 relativitydeduptop_k,不要在 Adapter 里固定死。
  • 保留 MemCube 隔离/共享策略,不能降级成单 user_id
  • 保留 preference/tool/skill memory 的分区输出。

9. 集成风险 + 校验清单

  • async 写入后检查 eventual retrieval;sync 写入后检查 immediate retrieval。
  • 检查不同 user_name(逻辑隔离)的 cube 互不串扰;物理隔离(use_multi_db=True)场景验证数据库分离。
  • 检查 preference memory 在 IPaS benchmark 中单独计数。
  • 检查 tool message 不丢 tool name/input/output。
  • 检查 feedback 后后续 search 结果可观察到变化。