过去一段时间中,MemOS 助力解决了大模型长期、可检索、可复用的记忆问题。
在 MemOS 2.0 · 星尘(Stardust) 版本中,我们迈出了关键一步——让记忆变得可控、可修正,并更自然地融入业务场景、开源部署及 AI 应用中。
MemOS 2.0 · 星尘(Stardust)不仅是能存记忆,更是可控的 AI 记忆系统:
- 支持知识库;
- 记忆可持续更新、可复用;
- 多模态信息统一管理;
- 智能体工具调用、文件与图片均可记忆;
- 调度系统和本地部署性能提升。
正如 “星尘(Stardust)” 寓意,每一次对话、每一次反馈、每一次工具调用,都是 AI 演化过程中的一粒星尘,见微知著,逐渐构建起智能体的长期经验系统。
一、知识库能力上线
我们正式引入 知识库(Knowledge Base)能力,支持开发者将业务文件直接接入 MemOS,形成可检索、可复用的长期知识资产。
亮点
- 支持 上传文件 / URL 自动解析;
- 一个知识库可 被多个项目共享使用;
- 对话持续进行时,记忆可动态更新与修正。
云服务代码示例
Step 1: 创建知识库并上传文件
import json
import os
import requests
# 直接在这里填写你的 Key
API_KEY = "YOUR API KEY"
BASE_URL = "https://memos.memtensor.cn/api/openmem/v1"
HEADERS = {"Content-Type": "application/json", "Authorization": f"Token {API_KEY}"}
# 1) 创建知识库
create_payload = {
"knowledgebase_name": "财务报销知识库",
"knowledgebase_description": "本公司所有财务报销相关的知识汇总",
}
create_resp = requests.post(f"{BASE_URL}/create/knowledgebase", headers=HEADERS, json=create_payload, timeout=15)
create_data = create_resp.json()
kb_id = (
create_data.get("knowledgebase_id")
or create_data.get("id")
or create_data.get("data", {}).get("knowledgebase_id")
or create_data.get("data", {}).get("id")
)
if not kb_id:
raise SystemExit(f"创建知识库失败,返回体: {create_data}")
# 2) 上传文件到上面创建的知识库
upload_payload = {
"knowledgebase_id": kb_id,
"file": [{"content": "https://cdn.memtensor.com.cn/file/软件采购报销制度.pdf"}],
}
upload_resp = requests.post(f"{BASE_URL}/add/knowledgebase-file", headers=HEADERS, json=upload_payload, timeout=30)
print("create ->", json.dumps(create_data, ensure_ascii=False))
print("upload ->", json.dumps(upload_resp.json(), ensure_ascii=False))
Step 2: 知识库检索
import os
import requests
import json
os.environ["MEMOS_API_KEY"] = "YOUR_API_KEY"
os.environ["MEMOS_BASE_URL"] = "https://memos.memtensor.cn/api/openmem/v1"
data = {
"user_id": "memos_user_123",
"conversation_id": "1211",
"query": "帮我查一下软件采购报销额度。",
"knowledgebase_ids":["你的知识库ID"]
#添加可以访问的知识库id
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Token {os.environ['MEMOS_API_KEY']}"
}
url = f"{os.environ['MEMOS_BASE_URL']}/search/memory"
res = requests.post(url=url, headers=headers, data=json.dumps(data))
json_res = res.json()
print(json.dumps(json_res, indent=2, ensure_ascii=False))
开源版本
💡TIPS:
- 仅支持记忆体 ID;
- 鉴权逻辑通过 writable_cube_ids 与 readable_cube_ids 鉴权,原始 mem_cube_id 也可兼容。
代码示例:向某个记忆库中添加文件请求
# 请先进行本地部署,部署文档见:https://docs.openmem.net/cn/open_source/getting_started/rest_api_server
curl --location --request POST '
http://0.0.0.0:8001/product/add'
\
--header 'Content-Type: application/json' \
--data-raw '{
"user_id": "memos_user_123",
"writable_cube_ids": [
"demo_add_cube_001"
],
"messages": [
{
"type": "file",
"file": {
"file_id": "file_id_001",
"file_data": "这是文件的纯文本内容...",
"filename": "xxx.pdf"
}
}
]
}'
二、全面升级:多模态与 Agent 记忆能力全面开启
MemOS 2.0 在多模态记忆方面进行了重大升级,使智能体能够同时理解和记忆文本、图片、文件和工具调用等多种信息类型,从而提升复杂任务的处理能力。
核心功能
- 工具记忆(Tool Memory):记录 Agent 工具调用历史并抽取经验,支持任务决策与组合调用。
- 文件与 URL 解析:上传文件或提供 URL,自动解析并切分为可检索记忆块,支持文档问答或摘要生成。
- 图片记忆:对话或文件中的图片可生成视觉记忆,与文本语境自动对齐,可用于图表分析、视觉问答等场景。
特性与优势
云服务代码示例
import os
import requests
import json
# 替换成你的 MemOS API Key
os.environ["MEMOS_API_KEY"] = "YOUR_API_KEY"
os.environ["MEMOS_BASE_URL"] = "https://memos.memtensor.cn/api/openmem/v1"
data = {
"user_id": "memos_user_123",
"conversation_id": "1211",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "我正在研究MemOS。"
},
{
"type": "image_url",
"image_url": {
"url": "https://cdn.memtensor.com.cn/img/1758706201390_iluj1c_compressed.png"
}
}
]
},
{"role": "assistant", "content": "好的,需要我为您解答吗?"}
]
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Token {os.environ['MEMOS_API_KEY']}"
}
url = f"{os.environ['MEMOS_BASE_URL']}/add/message"
res = requests.post(url=url, headers=headers, data=json.dumps(data))
print(json.dumps(res.json(), indent=2, ensure_ascii=False))
开源代码示例(添加包含文件和图片的对话)
# 请先进行本地部署,部署文档见:https://docs.openmem.net/cn/open_source/getting_started/rest_api_server
curl --location --request POST 'http://0.0.0.0:8001/product/add' \
--header 'Content-Type: application/json' \
--data-raw '{
"user_id": "memos_user_123",
"writable_cube_ids": [
"demo_add_cube_001"
],
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "请同时分析这个报告和图表。"
},
{
"type": "file",
"file": {
"file_id": "file_789",
"filename": "analysis_report.pdf",
"file_data": "https://example.com/documents/xxx.pdf"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/xxxxx.png",
"detail": "auto"
}
}
],
"chat_time": "2025-11-24T10:23:00Z",
"message_id": "mixed-1"
}
],
"info": {
"source_type": "report_plus_chart"
}
}'
三、记忆可控性:反馈修正 & 精准删除
“能记住”之外,记忆必须是可控的。
MemOS 2.0 不仅能记忆,还让记忆可控、可修正:
- 反馈修正(add_feedback):支持自然语言替换、补充或小幅语义调整。
- 删除记忆(delete_memory):可通过 Memory ID 或 File ID 精准删除,避免“脏记忆”影响模型行为。
- 记忆过滤:自定义
tag/info,支持逻辑、比较、集合运算过滤检索结果。
3.1 反馈修正(add_feedback)
用户可对已有记忆进行有效性标注或纠错反馈,e.g.:
“将爱丽丝统一替换为艾丽丝”、 “补充,还会使用在教育场景”、“错误,上个月的报销金额为 500 元”。
代码示例
云服务
import os
import requests
import json
# 替换成你的 MemOS API Key
os.environ["MEMOS_API_KEY"] = "YOUR_API_KEY"
os.environ["MEMOS_BASE_URL"] = "https://memos.memtensor.cn/api/openmem/v1"
data = {
"user_id": "memos_user_123",
"conversation_id": "1211",
"feedback_content": "设计类软件的采购上限改为1200元",
"feedback_time": "2025-12-02 10:10:10",
"allow_knowledgebase_ids": [
"basebXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
] # 知识库 ID
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Token {os.environ['MEMOS_API_KEY']}"
}
url = f"{os.environ['MEMOS_BASE_URL']}/add/feedback"
res = requests.post(url=url, headers=headers, data=json.dumps(data))
print(json.dumps(res.json(), indent=2, ensure_ascii=False))
开源版本
# 请先进行本地部署,部署文档见:https://docs.openmem.net/cn/open_source/getting_started/rest_api_server
curl --location --request POST 'http://0.0.0.0:8001/product/feedback' \
--header 'Content-Type: application/json' \
--data-raw '{
"user_id": "memos_user_123",
"writable_cube_ids": [
"demo_cube_001"
],
"history": [
{"role": "user", "content": "安全与防护类软件采购上限多少元"},
{"role": "assistant", "content": "为2333元"}
],
"feedback_content": "错了,实际上是1000元"
}'
3.2 删除记忆(Delete Memory)
支持通过 Memory ID / File ID 精准删除记忆,避免“脏记忆”长期影响模型行为。
亮点
- 支持批量删除知识库中的文件,系统会自动级联删除相关记忆;
- 支持批量删除记忆。
代码示例
云服务
import os
import requests
import json
# 替换成你的 MemOS API Key
os.environ["MEMOS_API_KEY"] = "YOUR_API_KEY"
os.environ["MEMOS_BASE_URL"] = "https://memos.memtensor.cn/api/openmem/v1"
data = {
"user_ids": ["memos_user_123"],
"memory_ids":["4a50618f-797d-4c3b-b914-94d7d1246c8d"]
}
headers = {
"Content-Type": "application/json",
"Authorization": f"Token {os.environ['MEMOS_API_KEY']}"
}
url = f"{os.environ['MEMOS_BASE_URL']}/delete/memory"
res = requests.post(url=url, headers=headers, data=json.dumps(data))
print(f"result: {res.json()}")
开源框架
# 请先进行本地部署,部署文档见:https://docs.openmem.net/cn/open_source/getting_started/rest_api_server
# 删除指定memory_ids
curl -X POST "
http://0.0.0.0:8001/product/delete_memory
" \
-H "Content-Type: application/json" \
-d '{
"writable_cube_ids": ["xxxxxxxx", "xxxssssa"],
"memory_ids": [
"e80f02ea-b53c-4166-aa7d-fd171c49b94b"
]
}'
# 删除指定 file_ids
curl -X POST "
http://0.0.0.0:8001/product/delete_memory
" \
-H "Content-Type: application/json" \
-d '{
"writable_cube_ids": ["xxxxxxxx", "xxxssssa"],
"file_ids": ["file_id1", "file_id2", "file_id3"]
}'
3.3 云服务支持记忆过滤
- 支持添加消息时自定义
tag、info字段,为转化的记忆打上自定义标签; - 检索记忆时可使用
filter参数对检索结果进行过滤,支持比较运算、逻辑运算、集合运算等多种运算符。
代码示例
Step 1: 在添加消息时传入相关可被过滤的字段及值
{
"user_id": "memos_user_123",
"conversation_id": "memos_conversation_123",
"messages": [
{
"role": "user",
"content": "我喜欢看科幻题材的电影,最喜欢的是《星际穿越》。"
},
{
"role": "assistant",
"content": "这是一个很酷的爱好!要我多帮你推荐几部科幻电影吗?"
}
],
"tags": ["爱好", "电影偏好"],
"info": {
"keyword": "科幻电影"
}
}
Step 2: 检索过滤
{
"user_id": "memos_user_123",
"query": "我的爱好是什么?",
"filter": {
"and": [
{"keyword": "科幻电影"},
{"create_time": {"gt": "2025-01-01"}}
]
}
}
四、开源版本 Chat 接口正式上线
开源版本新增 Chat 接口,支持:
- 非流式 / 流式交互
- 自动结合个人记忆与知识库进行回复
- 单轮对话结束后自动写入记忆
代码示例
#请先进行本地部署,部署文档见:https://docs.openmem.net/cn/open_source/getting_started/rest_api_server
# 非流式
curl -X POST "
http://0.0.0.0:8001/product/chat/complete
" \
-H "Content-Type: application/json" \
-d '{
"user_id": "memos_user_123",
"readable_cube_ids": ["xxx"],
"writable_cube_ids": ["xxx"],
"query": "我暑假定好去广州旅游,住宿的话有哪些连锁酒店可选?",
"model_name_or_path": "deepseek-r1",
"add_message_on_answer": true
}'
# 流式
curl -N -X POST "
http://0.0.0.0:8001/product/chat/stream
" \
-H "Content-Type: application/json" \
-d '{
"user_id": "memos_user_123",
"readable_cube_ids": ["xxx"],
"writable_cube_ids": ["xxx"],
"query": "我暑假定好去广州旅游,住宿的话有哪些连锁酒店可选?",
"model_name_or_path": "deepseek-r1",
"add_message_on_answer": true
}'
五、开源版本代码更新啦!
在开源版本里,除了以上新增/更新的功能外,我们针对近期发现的 bug 进行了统一修复。
5.1 BUG 修复
5.1.1 记忆调度任务老接口兼容性问题
原因:Memcube 调整为单例模式,旧版记忆更新任务调用老接口时,误读默认记忆数据库,导致返回非当前用户数据。
修复效果:确保用户记忆隔离正确。
5.1.2 记忆更新任务日志打印问题
原因:Memcube 工作记忆接口返回过多条目,掩盖新添加工作记忆,日志无法正确展示。
修复效果:限制接口返回数量,确保新增记忆在日志中正常呈现。
六、MCP 能力升级:记忆即工具
MCP 新增 delete_memory 和 add_feedback 工具:
- 删除特定用户的记忆
- 提交用户反馈,包括 Agent ID、App ID、允许公开或知识库限制等
MCP 配置示例
{
"mcpServers": {
"memos-api-mcp": {
"args": [
"-y",
"@memtensor/memos-api-mcp@latest"
],
"command": "npx",
"env": {
"MEMOS_API_KEY": "xxxxxx",
"MEMOS_CHANNEL": "MCP",
"MEMOS_USER_ID": "xxxxxx"
}
}
}
}
Tips:
- 通过控制台申请 MEMOS_API_KEY: memos-dashboard.openmem.net/cn/apikeys/
- MEMOS_USER_ID: 确定性的用户自定义个人标识符。
- 对于同一用户,该环境变量需要在不同设备/客户端中保持一致;
- 请不要使用随机值、设备 ID 或聊天会话 ID 作为用户标识符;
- 推荐使用:个人 email 地址、姓名全称或员工 ID 作为用户标识符。
七、系统升级与轻量化部署
MemOS 2.0 “星尘”在任务调度和本地部署方面进行了核心升级,提升了多租户环境下的系统稳定性、任务处理公平性以及本地部署的灵活性和效率。
7.1 调度系统升级
我们对 调度与底层存储 进行了深度重构:
- 高并发 API 调用优化;
- 调度系统增强,Pending 任务自动恢复;
- 数据库连接管理优化,支持批量插入(Batch Insert),提升多文件写入效率。
云平台用户在大规模调用场景下,将体验到更快、更稳定的记忆写入与检索性能。
AddMessage 写入速度更快,SearchMemory 检索更稳、更准。
7.2 轻量化部署
- 精简包:去除大型依赖,快速部署
- 全量包:完整依赖镜像,支持生产级部署
- 本地优化:最新启动命令 + env 配置简化,支持快速模式和完整模式
写在最后:为什么叫 星尘(Stardust)?
我们希望通过 星尘(Stardust),更好传达 MemOS 2.0 版本带来的不同状态和感知:
每一条对话、一次反馈、一次工具调用 都会成为 AI 演化过程中的一粒星尘。
MemOS 2.0 不只是“存记忆”, 而是在构建 AI 的长期经验系统。
✨ 老规矩!
🚀 一键体验云平台
立即进入 MemOS 云平台,体验毫秒级记忆与偏好召回能力。
💾 如果你喜欢我们的工作,请一键三连:
⭐️ Star 🍴 Fork 👀 Watch
并欢迎通过 Issue 提交你的使用反馈、优化建议或 Bug 报告。
github.com/MemTensor/MemOS/issues
关于 MemOS
MemOS 为 AGI 构建统一的记忆管理平台,让智能系统如大脑般拥有灵活、可迁移、可共享的长期记忆和即时记忆。
作为记忆张量首次提出“记忆调度”架构的 AI 记忆操作系统,我们希望通过 MemOS 全面重构模型记忆资源的生命周期管理,为智能系统提供高效且灵活的记忆管理能力。