
人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-plugin【免费下载链接】MemOSSelf-evolving memory OS for LLM AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.项目地址https://gitcode.com/gh_mirrors/memos/MemOS点击查看免费下载本指南以 MemOS 开源仓库中的记忆读取接口文档get_memory.md为主线系统讲解POST /product/get_memory与POST /product/get_all两个核心端点的设计意图、参数语义、SDK 调用方式与响应结构并结合 memory_handler.py、server_router.py 等源码深入其底层实现。读完本文你将掌握如何在 MemOS 中按 MemCube 分页浏览记忆、按记忆类型全量导出、以及基于search_query提取相关记忆子图为前端展示、数据迁移与关系分析提供完整的技术方案。1. 接口概览同一批记忆资产的两种访问模式MemOS 把用户产生的原始记忆碎片、偏好记忆、工具调用记录等统一沉淀在MemCube中。针对浏览与迁移两种截然不同的诉求系统通过MemoryHandler暴露了两个读取接口端点模式设计意图核心能力POST /product/get_memory分页业务模式面向前端 UI 列表支持page/page_size默认携带偏好记忆include_preference轻量加载POST /product/get_all全量导出模式面向数据迁移、复杂关系分析支持search_query提取相关子图或按memory_typetext/action/parameter导出全量数据两个端点最终都汇聚到同一个NaiveMemCube实例进行查询只是查询路径与返回格式不同。从路由注册源码可以看到它们与按 ID 查询、按 ID 批量查询共同构成完整的记忆读取能力族见 server_router.pyPOST /get_all→handle_get_all_memories无search_query或handle_get_subgraph有search_queryPOST /get_memory→handle_get_memoriesGET /get_memory/{memory_id}→handle_get_memoryPOST /get_memory_by_ids→handle_get_memory_by_ids2. 核心机制分页业务模式 vs 全量导出模式2.1 分页业务模式/get_memory的底层路由当请求到达POST /get_memory时路由层直接委托给handle_get_memoriesserver_router.py。该处理器会统一从text_mem文本记忆存储中按记忆类型分组取数而非分库分表text_memory_type [WorkingMemory, LongTermMemory, UserMemory, OuterMemory] text_memories_info naive_mem_cube.text_mem.get_all( user_nameget_mem_req.mem_cube_id, user_idget_mem_req.user_id, pageget_mem_req.page, page_sizeget_mem_req.page_size, filterget_mem_req.filter, memory_typetext_memory_type, )这里有几个从源码中确认的重要事实见 memory_handler.py返回结果按四类分组text_mem文本记忆、pref_mem偏好记忆、tool_mem工具记忆、skill_mem技能记忆每组内附cube_id与total_nodes总数。四类记忆的实际存储是同一个text_mem存储通过memory_type参数区分查询范围偏好记忆对应PreferenceMemory工具记忆对应ToolSchemaMemory/ToolTrajectoryMemory技能记忆对应SkillMemory。include_preference、include_tool_memory、include_skill_memory三个开关控制是否拉取对应分组为前端按 Tab 懒加载提供了便利。文档中重点提到的include_preference默认开启意味着分页模式下用户偏好默认参与返回。2.2 全量导出模式/get_all的双分支路由POST /get_all的路由逻辑是一个典型的二选一分支server_router.py未传search_query→ 调用handle_get_all_memories按memory_type全量导出。传了search_query→ 调用handle_get_subgraph把查询向量化后召回相关记忆并重组为树形子图返回。此时top_k固定为 200mem_cube_id取mem_cube_ids的第一个元素缺省时回退为user_id。需要注意从 memory_handler.py 的实现看handle_get_all_memories当前仅完整实现了text_mem分支act_mem与para_mem分支会记录 not implemented yet 警告并返回空结果。文档中列出的三种memory_typetext_mem、act_mem、para_mem在请求模型里被声明为Literal[text_mem, act_mem, param_mem, para_mem]见 product_models.py实际使用时应以text_mem为确定可用的导出类型。3. 关键参数详解3.1 分页查询参数/get_memory对应请求模型GetMemoryRequestproduct_models.py参数类型必填说明mem_cube_idstr是目标 MemCube IDuser_idstr否用户唯一标识pageint否页码从 1 开始设为None时不分页全量导出page_sizeint否每页条目数设为None时不分页全量导出include_preferencebool否是否包含偏好记忆默认Trueinclude_tool_memorybool否是否包含工具记忆SDK 侧默认True源码 client.pyinclude_skill_memorybool否是否包含技能记忆filterdict否可选的元数据过滤条件如按user_id、session_id过滤请求模型中page/page_size的文档注释明确指出两者置为None即表示不分页、导出全部数据——这是分页接口向全量导出的自然延伸适合小规模 Cube 的整包拉取。3.2 全量/子图导出参数/get_all对应请求模型GetMemoryPlaygroundRequestproduct_models.py参数类型必填说明user_idstr是用户 IDmemory_typestr是记忆类型text_mem、act_mem、para_memparam_mem亦被请求模型接受mem_cube_idslist否要导出的 Cube ID 列表取第一个元素作为查询目标缺省回退user_idsearch_querystr否提供后按该查询召回并返回相关记忆子图search_typestr否子图召回方式embedding向量检索或fulltext全文检索默认fulltext4. 快速开始4.1 前端分页展示SDK 调用# 获取第 1 页、每页 10 条记忆 res client.get_memory( user_idsde_dev_01, mem_cube_idcube_research_01, page1, page_size10 ) for mem in res.data: print(f[{mem[type]}] {mem[memory_value]})对应到 SDK 方法MemOSClient.get_memoryclient.py其签名与文档略有差异但语义对齐client.get_memory( user_idsde_dev_01, include_preferenceTrue, page1, size10, # 注意SDK 中每页大小参数名为 size且强制 50 include_tool_memoryTrue, )SDK 内部会校验size 50超出会抛出ValueError(size must be less than or equal to 50)随后POST到{base_url}/get/memory并内置最多 3 次重试。4.2 导出特定事实记忆子图# 提取与 R language 相关的事实记忆子图 res client.get_all( user_idsde_dev_01, memory_typetext_mem, search_queryR language visualization )该调用等价于直接请求POST /product/get_all携带search_query时进入子图分支。从 memory_handler.py 可见其处理流水线调用naive_mem_cube.text_mem.get_relevant_subgraph(query, top_k200, user_namemem_cube_id, search_typesearch_type)取得相关子图remove_embedding_recursive剥离向量字段减小传输体积convert_graph_to_tree_forworkmem把图结构转换为树结构目标节点数 200类型比例WorkingMemory 20%、LongTermMemory 40%、UserMemory 40%ensure_unique_tree_ids保证树节点 ID 唯一filter_nodes_by_tree_ids过滤无关节点、sort_children_by_memory_type排序子节点最终以{cube_id, memories, memory_statistics}的列表结构返回。5. 响应结构详解接口返回标准业务响应核心字段如下id记忆的唯一标识可直接用于Get Memory DetailGET /get_memory/{memory_id}或DeletePOST /delete_memory操作。路由定义见 server_router.py。memory_value经过算法加工后的记忆文本内容。tags关联的自定义标签。在此基础上分页模式/get_memory的data按四类分组返回每个分组是[{cube_id, memories, total_nodes}]形式的列表全量导出/get_all的data则携带tree_structure树结构与memory_statistics节点统计便于关系分析类应用直接消费。:::note开发者提示如果你已知记忆 ID想查看其完整元数据如confidence、usage等记录应使用Get Memory Detailget_memory_by_id接口。SDK 对应方法为client.get_memory_by_id(memid)内部以GET {base_url}/get/memory/{memid}请求并按 ID 精准返回client.py处理器则通过naive_mem_cube.text_mem.get(memory_id)查询memory_handler.py。 :::6. 子图提取原理从查询到树形记忆子图/get_all的search_query能力是整个读取接口中最具特色的部分。其底层实现位于 tree.py 的get_relevant_subgraph方法完整流程为向量化查询search_typeembedding时调用self.embedder.embed([query])[0]生成查询向量再通过graph_store.search_by_embedding做向量相似度召回全文检索search_typefulltext默认时对中文查询使用jieba分词并过滤停用词再走全文检索路径邻域展开对召回的最高相似top_k节点沿图结构向外扩展depth跳默认 2 跳的局部邻域并要求中心节点状态匹配默认activated子图合并将所有局部邻域合并为一个统一子图输出core_id、去重后的nodes与edges含from、to、type。这也解释了top_k200的意义子图分支一次性召回最多 200 个相关节点作为中心节点集合再配合 2 跳邻域展开最终由convert_graph_to_tree_forworkmem压缩为便于展示的树结构。因此search_query特别适合给我看看与这个主题相关的记忆网络这类关系分析场景而不仅是简单的关键词过滤。7. 实战建议与注意事项选接口先看诉求前端列表浏览用/get_memory轻量、分页、默认带偏好数据迁移、导出分析用/get_all需要沿关系网络挖掘用/get_all search_query。分页参数与全量导出的等价性/get_memory的page与page_size置None即退化为全量导出小规模 Cube 可直接复用分页接口做整包拉取无需切换到/get_all。memory_type的可用性边界当前handle_get_all_memories仅完整实现text_memact_mem/para_mem尚为占位实现生产中请以text_mem为主。SDK 大小上限client.get_memory的size参数硬性上限为 50超过将直接抛异常注意在调用侧分页。子图结果自带统计/get_all子图分支返回的memory_statistics记录了转换后的节点类型计数WorkingMemory / LongTermMemory / UserMemory可直接用于记忆分布的可视化看板与此前新增的/get_memory_dashboard端点server_router.py互为补充。读取与删除联动读取接口返回的id字段可直接作为POST /delete_memory的memory_ids入参实现浏览 → 定位 → 清理的完整闭环删除实现见 memory_handler.py。8. 相关源码路径速查能力文件位置路由注册/get_memory、/get_all、/get_memory/{id}等server_router.py核心处理器分页/全量/子图/单条/批量memory_handler.py请求/响应模型GetMemoryRequest、GetMemoryPlaygroundRequestproduct_models.py 与 product_models.pySDK 客户端get_memory、get_memory_by_idclient.py子图召回底层实现embedding / fulltexttree.py接口文档原文get_memory.md赞分享人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-plugin【免费下载链接】MemOSSelf-evolving memory OS for LLM AI Agents: ultra-persistent memory, hybrid-retrieval, and cross-task skill reuse, with 35.24% token savings and DeepSeek Harness support.项目地址https://gitcode.com/gh_mirrors/memos/MemOS点击查看免费下载相关推荐MemOS MemCube 内存容器完全指南三种记忆体系、View 架构与跨环境导入导出实战MemOS MemCube 内存容器完全指南三种记忆体系、View 架构与跨环境导入导出实战 MemCube 是 MemOS 面向 LLM 与 AI Agen人工智能大模型Agent 记忆AI AgentRAG知识图谱dsh-pluginSeaTunnel Neo4j Source 连接器实战Cypher 查询读取图数据与多表读取完整指南SeaTunnel Neo4j Source 连接器实战Cypher 查询读取图数据与多表读取完整指南 SeaTunnel 的 Neo4j 源连接器 Neo数据集成ETL大数据批处理流处理变更数据捕获SQLModel 分页查询实战用 LIMIT 与 OFFSET 读取数据范围.limit() / .offset() 完全指南SQLModel 分页查询实战用 LIMIT 与 OFFSET 读取数据范围.limit / .offset 完全指南 导读 在 SQLModel 中ORM数据库后端上一篇WeChatMsg终极指南如何永久保存并智能分析你的个人数据下一篇微信聊天记录永久保存的终极免费方案WeChatMsg完整使用指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考