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_id | Nanobot persona/user | 用户身份 |
session_id | Nanobot session | session soft signal |
writable_cube_ids | backend config/run | 写入目标 cube |
readable_cube_ids | backend config/run | 检索范围 |
custom_tags | scenario/context | 标签过滤 |
info | benchmark metadata | 可检索 metadata |
async_mode | backend config | async/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/evolution5. 原生 API
| API | 参数 | 返回值 | 用途 |
|---|---|---|---|
add_memories | APIADDRequest | list of memory dicts | 写入一个或多个 cube |
search_memories | APISearchRequest | grouped result dict | 检索 text/pref/tool/skill memories |
feedback_memories | APIFeedbackRequest | result dict | 根据反馈修正记忆 |
ChatRequest / chat API | user_id, query, cube ids, mode | answer + 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 调用 |
|---|---|
add | add_memories(APIADDRequest) |
search | search_memories(APISearchRequest) |
get_context_string | 按 memory type 格式化检索结果 |
feedback extension | feedback_memories(APIFeedbackRequest) |
snapshot/restore | cube registry + backend-specific state |
reset | scoped 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 能比较速度和质量。 - 保留
relativity、dedup、top_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 结果可观察到变化。