MemoryOS 2.0.13__tar.gz → 2.0.15__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. {memoryos-2.0.13 → memoryos-2.0.15}/PKG-INFO +39 -67
  2. {memoryos-2.0.13 → memoryos-2.0.15}/README.md +38 -66
  3. {memoryos-2.0.13 → memoryos-2.0.15}/pyproject.toml +1 -1
  4. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/__init__.py +1 -1
  5. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/config.py +26 -2
  6. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/add_handler.py +2 -0
  7. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/component_init.py +33 -7
  8. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/formatters_handler.py +1 -0
  9. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/server_api.py +10 -0
  10. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/chunkers/sentence_chunker.py +1 -0
  11. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/mem_reader.py +8 -1
  12. memoryos-2.0.15/src/memos/dream/README.md +246 -0
  13. memoryos-2.0.15/src/memos/dream/README_ZH.md +243 -0
  14. memoryos-2.0.15/src/memos/dream/__init__.py +11 -0
  15. memoryos-2.0.15/src/memos/dream/hook_defs.py +25 -0
  16. memoryos-2.0.15/src/memos/dream/hooks.py +88 -0
  17. memoryos-2.0.15/src/memos/dream/maintenance.py +56 -0
  18. memoryos-2.0.15/src/memos/dream/pipeline/__init__.py +16 -0
  19. memoryos-2.0.15/src/memos/dream/pipeline/base.py +88 -0
  20. memoryos-2.0.15/src/memos/dream/pipeline/diary.py +148 -0
  21. memoryos-2.0.15/src/memos/dream/pipeline/motive.py +119 -0
  22. memoryos-2.0.15/src/memos/dream/pipeline/persistence.py +350 -0
  23. memoryos-2.0.15/src/memos/dream/pipeline/reasoning.py +189 -0
  24. memoryos-2.0.15/src/memos/dream/pipeline/recall.py +112 -0
  25. memoryos-2.0.15/src/memos/dream/plugin.py +99 -0
  26. memoryos-2.0.15/src/memos/dream/prompts/__init__.py +8 -0
  27. memoryos-2.0.15/src/memos/dream/prompts/motive_prompt.py +74 -0
  28. memoryos-2.0.15/src/memos/dream/prompts/reasoning_prompt.py +80 -0
  29. memoryos-2.0.15/src/memos/dream/routers/__init__.py +5 -0
  30. memoryos-2.0.15/src/memos/dream/routers/diary_router.py +92 -0
  31. memoryos-2.0.15/src/memos/dream/routers/trigger_router.py +42 -0
  32. memoryos-2.0.15/src/memos/dream/routes.py +21 -0
  33. memoryos-2.0.15/src/memos/dream/signal_store.py +85 -0
  34. memoryos-2.0.15/src/memos/dream/types.py +152 -0
  35. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/graph_dbs/polardb.py +6 -20
  36. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_feedback/feedback.py +135 -31
  37. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_os/utils/format_utils.py +13 -0
  38. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/multi_modal_struct.py +189 -215
  39. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +1 -2
  40. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/simple_struct.py +10 -0
  41. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +27 -0
  42. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/schemas/task_schemas.py +22 -2
  43. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +3 -0
  44. memoryos-2.0.15/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_dream_handler.py +156 -0
  45. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +112 -42
  46. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +6 -4
  47. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +105 -32
  48. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/registry.py +4 -0
  49. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +6 -0
  50. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/item.py +11 -7
  51. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree.py +38 -0
  52. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/organize/manager.py +8 -0
  53. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/multi_mem_cube/composite_cube.py +13 -7
  54. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/multi_mem_cube/single_cube.py +116 -77
  55. memoryos-2.0.15/src/memos/plugins/__init__.py +20 -0
  56. memoryos-2.0.15/src/memos/plugins/base.py +80 -0
  57. memoryos-2.0.15/src/memos/plugins/component_bootstrap.py +35 -0
  58. memoryos-2.0.15/src/memos/plugins/hook_defs.py +148 -0
  59. memoryos-2.0.15/src/memos/plugins/hooks.py +150 -0
  60. memoryos-2.0.15/src/memos/plugins/manager.py +149 -0
  61. memoryos-2.0.15/src/memos/utils.py +249 -0
  62. memoryos-2.0.13/src/memos/extras/nli_model/client.py +0 -61
  63. memoryos-2.0.13/src/memos/extras/nli_model/server/README.md +0 -69
  64. memoryos-2.0.13/src/memos/extras/nli_model/server/config.py +0 -23
  65. memoryos-2.0.13/src/memos/extras/nli_model/server/handler.py +0 -186
  66. memoryos-2.0.13/src/memos/extras/nli_model/server/serve.py +0 -44
  67. memoryos-2.0.13/src/memos/extras/nli_model/types.py +0 -18
  68. memoryos-2.0.13/src/memos/memories/textual/tree_text_memory/organize/history_manager.py +0 -168
  69. memoryos-2.0.13/src/memos/memories/textual/tree_text_memory/retrieve/pre_update.py +0 -264
  70. memoryos-2.0.13/src/memos/templates/__init__.py +0 -0
  71. memoryos-2.0.13/src/memos/utils.py +0 -123
  72. memoryos-2.0.13/src/memos/vec_dbs/__init__.py +0 -0
  73. {memoryos-2.0.13 → memoryos-2.0.15}/LICENSE +0 -0
  74. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/README_api.md +0 -0
  75. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/__init__.py +0 -0
  76. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/client.py +0 -0
  77. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/context/dependencies.py +0 -0
  78. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/exceptions.py +0 -0
  79. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/__init__.py +0 -0
  80. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/base_handler.py +0 -0
  81. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/chat_handler.py +0 -0
  82. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/config_builders.py +0 -0
  83. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/feedback_handler.py +0 -0
  84. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/memory_handler.py +0 -0
  85. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/scheduler_handler.py +0 -0
  86. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/search_handler.py +0 -0
  87. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/handlers/suggestion_handler.py +0 -0
  88. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/mcp_serve.py +0 -0
  89. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/middleware/__init__.py +0 -0
  90. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/middleware/auth.py +0 -0
  91. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/middleware/rate_limit.py +0 -0
  92. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/middleware/request_context.py +0 -0
  93. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/product_models.py +0 -0
  94. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/routers/__init__.py +0 -0
  95. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/routers/admin_router.py +0 -0
  96. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/routers/server_router.py +0 -0
  97. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/server_api_ext.py +0 -0
  98. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/utils/__init__.py +0 -0
  99. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/api/utils/api_keys.py +0 -0
  100. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/chunkers/__init__.py +0 -0
  101. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/chunkers/base.py +0 -0
  102. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/chunkers/charactertext_chunker.py +0 -0
  103. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/chunkers/factory.py +0 -0
  104. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/chunkers/markdown_chunker.py +0 -0
  105. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/chunkers/simple_chunker.py +0 -0
  106. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/cli.py +0 -0
  107. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/__init__.py +0 -0
  108. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/base.py +0 -0
  109. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/chunker.py +0 -0
  110. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/embedder.py +0 -0
  111. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/graph_db.py +0 -0
  112. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/internet_retriever.py +0 -0
  113. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/llm.py +0 -0
  114. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/mem_agent.py +0 -0
  115. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/mem_chat.py +0 -0
  116. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/mem_cube.py +0 -0
  117. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/mem_os.py +0 -0
  118. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/mem_scheduler.py +0 -0
  119. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/mem_user.py +0 -0
  120. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/memory.py +0 -0
  121. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/parser.py +0 -0
  122. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/reranker.py +0 -0
  123. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/utils.py +0 -0
  124. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/configs/vec_db.py +0 -0
  125. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/context/context.py +0 -0
  126. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/dependency.py +0 -0
  127. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/deprecation.py +0 -0
  128. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/embedders/__init__.py +0 -0
  129. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/embedders/ark.py +0 -0
  130. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/embedders/base.py +0 -0
  131. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/embedders/factory.py +0 -0
  132. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/embedders/ollama.py +0 -0
  133. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/embedders/sentence_transformer.py +0 -0
  134. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/embedders/universal_api.py +0 -0
  135. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/exceptions.py +0 -0
  136. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/extras/__init__.py +0 -0
  137. {memoryos-2.0.13/src/memos/extras/nli_model → memoryos-2.0.15/src/memos/graph_dbs}/__init__.py +0 -0
  138. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/graph_dbs/base.py +0 -0
  139. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/graph_dbs/factory.py +0 -0
  140. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/graph_dbs/item.py +0 -0
  141. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/graph_dbs/neo4j.py +0 -0
  142. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/graph_dbs/neo4j_community.py +0 -0
  143. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/graph_dbs/postgres.py +0 -0
  144. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/hello_world.py +0 -0
  145. {memoryos-2.0.13/src/memos/extras/nli_model/server → memoryos-2.0.15/src/memos/llms}/__init__.py +0 -0
  146. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/base.py +0 -0
  147. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/deepseek.py +0 -0
  148. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/factory.py +0 -0
  149. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/hf.py +0 -0
  150. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/hf_singleton.py +0 -0
  151. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/minimax.py +0 -0
  152. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/ollama.py +0 -0
  153. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/openai.py +0 -0
  154. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/openai_new.py +0 -0
  155. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/qwen.py +0 -0
  156. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/utils.py +0 -0
  157. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/llms/vllm.py +0 -0
  158. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/log.py +0 -0
  159. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_agent/base.py +0 -0
  160. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_agent/deepsearch_agent.py +0 -0
  161. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_agent/factory.py +0 -0
  162. {memoryos-2.0.13/src/memos/graph_dbs → memoryos-2.0.15/src/memos/mem_chat}/__init__.py +0 -0
  163. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_chat/base.py +0 -0
  164. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_chat/factory.py +0 -0
  165. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_chat/simple.py +0 -0
  166. {memoryos-2.0.13/src/memos/llms → memoryos-2.0.15/src/memos/mem_cube}/__init__.py +0 -0
  167. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_cube/base.py +0 -0
  168. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_cube/general.py +0 -0
  169. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_cube/navie.py +0 -0
  170. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_cube/utils.py +0 -0
  171. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_feedback/base.py +0 -0
  172. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_feedback/simple_feedback.py +0 -0
  173. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_feedback/utils.py +0 -0
  174. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_os/core.py +0 -0
  175. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_os/main.py +0 -0
  176. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_os/utils/default_config.py +0 -0
  177. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_os/utils/reference_utils.py +0 -0
  178. {memoryos-2.0.13/src/memos/mem_chat → memoryos-2.0.15/src/memos/mem_reader}/__init__.py +0 -0
  179. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/base.py +0 -0
  180. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/factory.py +0 -0
  181. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/memory.py +0 -0
  182. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
  183. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
  184. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
  185. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
  186. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
  187. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
  188. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
  189. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
  190. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
  191. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
  192. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
  193. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
  194. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +0 -0
  195. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/strategy_struct.py +0 -0
  196. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_reader/utils.py +0 -0
  197. {memoryos-2.0.13/src/memos/mem_cube → memoryos-2.0.15/src/memos/mem_scheduler}/__init__.py +0 -0
  198. {memoryos-2.0.13/src/memos/mem_reader → memoryos-2.0.15/src/memos/mem_scheduler/analyzer}/__init__.py +0 -0
  199. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
  200. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
  201. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
  202. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
  203. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
  204. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
  205. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/base_mixins/queue_ops.py +0 -0
  206. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +0 -0
  207. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/base_scheduler.py +0 -0
  208. {memoryos-2.0.13/src/memos/mem_scheduler → memoryos-2.0.15/src/memos/mem_scheduler/general_modules}/__init__.py +0 -0
  209. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
  210. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/general_modules/base.py +0 -0
  211. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
  212. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
  213. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
  214. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/general_scheduler.py +0 -0
  215. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
  216. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
  217. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
  218. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
  219. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
  220. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
  221. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
  222. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
  223. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
  224. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
  225. {memoryos-2.0.13/src/memos/mem_scheduler/analyzer → memoryos-2.0.15/src/memos/mem_scheduler/monitors}/__init__.py +0 -0
  226. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
  227. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
  228. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
  229. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
  230. {memoryos-2.0.13/src/memos/mem_scheduler/general_modules → memoryos-2.0.15/src/memos/mem_scheduler/orm_modules}/__init__.py +0 -0
  231. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
  232. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
  233. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
  234. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
  235. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  236. {memoryos-2.0.13/src/memos/mem_scheduler/monitors → memoryos-2.0.15/src/memos/mem_scheduler/schemas}/__init__.py +0 -0
  237. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
  238. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
  239. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
  240. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
  241. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
  242. {memoryos-2.0.13/src/memos/mem_scheduler/orm_modules → memoryos-2.0.15/src/memos/mem_scheduler/task_schedule_modules}/__init__.py +0 -0
  243. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
  244. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
  245. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
  246. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
  247. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
  248. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
  249. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
  250. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
  251. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
  252. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
  253. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
  254. {memoryos-2.0.13/src/memos/mem_scheduler/schemas → memoryos-2.0.15/src/memos/mem_scheduler/utils}/__init__.py +0 -0
  255. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
  256. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
  257. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
  258. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  259. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/utils/metrics.py +0 -0
  260. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
  261. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
  262. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
  263. {memoryos-2.0.13/src/memos/mem_scheduler/task_schedule_modules → memoryos-2.0.15/src/memos/mem_scheduler/webservice_modules}/__init__.py +0 -0
  264. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
  265. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
  266. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_user/factory.py +0 -0
  267. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  268. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_user/mysql_user_manager.py +0 -0
  269. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_user/persistent_factory.py +0 -0
  270. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_user/persistent_user_manager.py +0 -0
  271. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
  272. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/mem_user/user_manager.py +0 -0
  273. {memoryos-2.0.13/src/memos/mem_scheduler/utils → memoryos-2.0.15/src/memos/memories}/__init__.py +0 -0
  274. {memoryos-2.0.13/src/memos/mem_scheduler/webservice_modules → memoryos-2.0.15/src/memos/memories/activation}/__init__.py +0 -0
  275. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/activation/base.py +0 -0
  276. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/activation/item.py +0 -0
  277. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/activation/kv.py +0 -0
  278. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/activation/vllmkv.py +0 -0
  279. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/base.py +0 -0
  280. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/factory.py +0 -0
  281. {memoryos-2.0.13/src/memos/memories → memoryos-2.0.15/src/memos/memories/parametric}/__init__.py +0 -0
  282. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/parametric/base.py +0 -0
  283. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/parametric/item.py +0 -0
  284. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/parametric/lora.py +0 -0
  285. {memoryos-2.0.13/src/memos/memories/activation → memoryos-2.0.15/src/memos/memories/textual}/__init__.py +0 -0
  286. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/base.py +0 -0
  287. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/general.py +0 -0
  288. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/naive.py +0 -0
  289. {memoryos-2.0.13/src/memos/memories/parametric → memoryos-2.0.15/src/memos/memories/textual/prefer_text_memory}/__init__.py +0 -0
  290. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
  291. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
  292. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
  293. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
  294. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
  295. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
  296. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
  297. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/preference.py +0 -0
  298. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/simple_preference.py +0 -0
  299. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/simple_tree.py +0 -0
  300. {memoryos-2.0.13/src/memos/memories/textual → memoryos-2.0.15/src/memos/memories/textual/tree_text_memory}/__init__.py +0 -0
  301. {memoryos-2.0.13/src/memos/memories/textual/prefer_text_memory → memoryos-2.0.15/src/memos/memories/textual/tree_text_memory/organize}/__init__.py +0 -0
  302. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
  303. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
  304. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
  305. {memoryos-2.0.13/src/memos/memories/textual/tree_text_memory → memoryos-2.0.15/src/memos/memories/textual/tree_text_memory/retrieve}/__init__.py +0 -0
  306. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
  307. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
  308. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
  309. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  310. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
  311. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  312. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
  313. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
  314. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  315. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +0 -0
  316. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +0 -0
  317. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
  318. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
  319. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
  320. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  321. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  322. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memos_tools/lockfree_dict.py +0 -0
  323. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memos_tools/notification_service.py +0 -0
  324. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memos_tools/notification_utils.py +0 -0
  325. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memos_tools/singleton.py +0 -0
  326. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memos_tools/thread_safe_dict.py +0 -0
  327. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
  328. {memoryos-2.0.13/src/memos/memories/textual/tree_text_memory/organize → memoryos-2.0.15/src/memos/multi_mem_cube}/__init__.py +0 -0
  329. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/multi_mem_cube/views.py +0 -0
  330. {memoryos-2.0.13/src/memos/memories/textual/tree_text_memory/retrieve → memoryos-2.0.15/src/memos/parsers}/__init__.py +0 -0
  331. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/parsers/base.py +0 -0
  332. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/parsers/factory.py +0 -0
  333. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/parsers/markitdown.py +0 -0
  334. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/__init__.py +0 -0
  335. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/base.py +0 -0
  336. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/concat.py +0 -0
  337. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/cosine_local.py +0 -0
  338. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/factory.py +0 -0
  339. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/http_bge.py +0 -0
  340. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/http_bge_strategy.py +0 -0
  341. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/noop.py +0 -0
  342. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/strategies/__init__.py +0 -0
  343. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/strategies/base.py +0 -0
  344. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/strategies/concat_background.py +0 -0
  345. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/strategies/concat_docsource.py +0 -0
  346. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/strategies/dialogue_common.py +0 -0
  347. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/strategies/factory.py +0 -0
  348. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/strategies/single_turn.py +0 -0
  349. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
  350. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/search/__init__.py +0 -0
  351. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/search/search_service.py +0 -0
  352. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/settings.py +0 -0
  353. {memoryos-2.0.13/src/memos/multi_mem_cube → memoryos-2.0.15/src/memos/templates}/__init__.py +0 -0
  354. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/advanced_search_prompts.py +0 -0
  355. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/cloud_service_prompt.py +0 -0
  356. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/instruction_completion.py +0 -0
  357. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/mem_agent_prompts.py +0 -0
  358. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/mem_feedback_prompts.py +0 -0
  359. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/mem_reader_prompts.py +0 -0
  360. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
  361. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/mem_scheduler_prompts.py +0 -0
  362. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/mem_search_prompts.py +0 -0
  363. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/mos_prompts.py +0 -0
  364. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/prefer_complete_prompt.py +0 -0
  365. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/skill_mem_prompt.py +0 -0
  366. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/tool_mem_prompts.py +0 -0
  367. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/templates/tree_reorganize_prompts.py +0 -0
  368. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/__init__.py +0 -0
  369. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/general_types.py +0 -0
  370. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
  371. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
  372. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
  373. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
  374. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
  375. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
  376. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
  377. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
  378. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
  379. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
  380. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
  381. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
  382. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
  383. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
  384. {memoryos-2.0.13/src/memos/parsers → memoryos-2.0.15/src/memos/vec_dbs}/__init__.py +0 -0
  385. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/vec_dbs/base.py +0 -0
  386. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/vec_dbs/factory.py +0 -0
  387. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/vec_dbs/item.py +0 -0
  388. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/vec_dbs/milvus.py +0 -0
  389. {memoryos-2.0.13 → memoryos-2.0.15}/src/memos/vec_dbs/qdrant.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: MemoryOS
3
- Version: 2.0.13
3
+ Version: 2.0.15
4
4
  Summary: Intelligence Begins with Memory
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -88,51 +88,24 @@ Description-Content-Type: text/markdown
88
88
  </a>
89
89
 
90
90
  <h1 align="center">
91
- <img src="https://statics.memtensor.com.cn/logo/memos_color_m.png" alt="MemOS Logo" width="50"/>
92
- MemOS 2.0: 星尘(Stardust
93
- <img src="https://img.shields.io/badge/status-Preview-blue" alt="Preview Badge"/>
91
+ <img src="https://statics.memtensor.com.cn/logo/memos_color_m.png" alt="MemOS Logo" width="48"/>&nbsp;
92
+ MemOS 2.0&ensp;Stardust(星尘)
93
+
94
94
  </h1>
95
95
 
96
- <p>
97
- <a href="https://www.memtensor.com.cn/">
98
- <img alt="Static Badge" src="https://img.shields.io/badge/Maintained_by-MemTensor-blue">
99
- </a>
100
- <a href="https://pypi.org/project/MemoryOS">
101
- <img src="https://img.shields.io/pypi/v/MemoryOS?label=pypi%20package" alt="PyPI Version">
102
- </a>
103
- <a href="https://pypi.org/project/MemoryOS">
104
- <img src="https://img.shields.io/pypi/pyversions/MemoryOS.svg" alt="Supported Python versions">
105
- </a>
106
- <a href="https://pypi.org/project/MemoryOS">
107
- <img src="https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey" alt="Supported Platforms">
108
- </a>
109
- <a href="https://memos-docs.openmem.net/home/overview/">
110
- <img src="https://img.shields.io/badge/Documentation-view-blue.svg" alt="Documentation">
111
- </a>
112
- <a href="https://arxiv.org/abs/2507.03724">
113
- <img src="https://img.shields.io/badge/arXiv-2507.03724-b31b1b.svg" alt="ArXiv Paper">
114
- </a>
115
- <a href="https://github.com/MemTensor/MemOS/discussions">
116
- <img src="https://img.shields.io/badge/GitHub-Discussions-181717.svg?logo=github" alt="GitHub Discussions">
117
- </a>
118
- <a href="https://discord.gg/Txbx3gebZR">
119
- <img src="https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord" alt="Discord">
120
- </a>
121
- <a href="https://statics.memtensor.com.cn/memos/qr-code.png">
122
- <img src="https://img.shields.io/badge/WeChat-Group-07C160.svg?logo=wechat" alt="WeChat Group">
123
- </a>
124
- <a href="https://opensource.org/license/apache-2-0/">
125
- <img src="https://img.shields.io/badge/License-Apache_2.0-green.svg?logo=apache" alt="License">
126
- </a>
127
- <a href="https://github.com/IAAR-Shanghai/Awesome-AI-Memory">
128
- <img alt="Awesome AI Memory" src="https://img.shields.io/badge/Resources-Awesome--AI--Memory-8A2BE2">
129
- </a>
130
- </p>
96
+ <p align="center">
97
+ <br>
98
+ <a href="https://memos-docs.openmem.net/home/overview/"><img src="https://img.shields.io/badge/Docs-Get--Start-002FA7?labelColor=gray&style=for-the-badge&logo=googledocs&logoColor=white" alt="Docs"></a>
99
+ <a href="https://arxiv.org/abs/2507.03724"><img src="https://img.shields.io/badge/ArXiv-2507.03724-B31B1B?labelColor=gray&style=for-the-badge&logo=arxiv&logoColor=white" alt="ArXiv"></a>
100
+ <a href="https://x.com/MemOS_dev"><img src="https://img.shields.io/badge/Follow-MemOS-000000?labelColor=gray&style=for-the-badge&logo=x&logoColor=white" alt="X"></a>
101
+ <a href="https://discord.gg/Txbx3gebZR"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscord.com%2Fapi%2Fv10%2Finvites%2FTxbx3gebZR%3Fwith_counts%3Dtrue&query=%24.approximate_presence_count&suffix=%20online&label=Discord&color=404EED&labelColor=gray&style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
102
+ <a href="https://github.com/IAAR-Shanghai/Awesome-AI-Memory"><img src="https://img.shields.io/badge/Resources-Awesome--AI--Memory-8A2BE2?labelColor=gray&style=for-the-badge&logo=awesomelists&logoColor=white" alt="Resources"></a>
103
+ </p>
131
104
 
132
105
  <p align="center">
133
106
  <strong>🎯 +43.70% Accuracy vs. OpenAI Memory</strong><br/>
134
- <strong>🏆 Top-tier long-term memory + personalization</strong><br/>
135
- <strong>💰 Saves 35.24% memory tokens</strong><br/>
107
+ <strong>🏆 Top-tier Long-term Memory + Personalization</strong><br/>
108
+ <strong>💰 Saves 35.24% Memory Tokens</strong><br/>
136
109
  <sub>LoCoMo 75.80 • LongMemEval +40.43% • PrefEval-10 +2568% • PersonaMem +40.75%</sub>
137
110
  <!-- <a href="https://memos.openmem.net/">
138
111
  <img src="https://statics.memtensor.com.cn/memos/github_api_free_banner.gif" alt="MemOS Free API Banner">
@@ -148,35 +121,27 @@ Description-Content-Type: text/markdown
148
121
 
149
122
  <!-- <br> -->
150
123
 
151
- ## 🦞 Enhanced OpenClaw with MemOS Plugin
152
-
153
- ![](https://cdn.memtensor.com.cn/img/1770612303123_mnaisk_compressed.png)
154
-
155
- 🦞 Your lobster now has a working memory system — choose **Cloud** or **Local** to get started.
156
-
157
- ### ☁️ Cloud Plugin — Hosted Memory Service
158
-
159
- - [**72% lower token usage**](https://x.com/MemOS_dev/status/2020854044583924111) — intelligent memory retrieval instead of loading full chat history
160
- - [**Multi-agent memory sharing**](https://x.com/MemOS_dev/status/2020538135487062094) — multi-instance agents share memory via same user_id, automatic context handoff
124
+ ## 🧠 MemOS Plugin: Persistent Memory for Your AI Agents ✨
161
125
 
162
- Get your API key: [MemOS Dashboard](https://memos-dashboard.openmem.net/cn/login/)
163
- Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)
126
+ <div align="center">
127
+
128
+ <img width="1660" height="664" alt="MemOS Plugin Banner" src="https://github.com/user-attachments/assets/9d15dde2-196e-4f71-a364-dd5a33062117" />
164
129
 
165
- ### 🧠 Local Plugin100% On-Device Memory
130
+ Your lobsters and Hermes Agents now have **the best** memory system choose ***Cloud Service*** or ***Self-hosted*** to get started 🏃🏻
166
131
 
167
- - **Zero cloud dependency** all data stays on your machine, persistent local SQLite storage
168
- - **Hybrid search + task & skill evolution** — FTS5 + vector search, auto task summarization, reusable skills that self-upgrade
169
- - **Multi-agent collaboration + Memory Viewer** memory isolation, skill sharing, full web dashboard with 7 management pages
132
+ | 🔌 Plugin | <div align="center"> 💡 Core Features </div> | 🧩 Resources |
133
+ | :----: | :--- | :---: |
134
+ | 🧠 [**memos-local-plugin 2.0**](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) | <ul><li>One local-first memory core for **Hermes Agent** and **OpenClaw**.</li><li>Self-evolving memory: L1 trace, L2 policy, L3 world model,<br>and crystallized Skills driven by feedback.</li></ul> | 🐙 [GitHub](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
135
+ | ☁️ [**OpenClaw Cloud Plugin**](https://x.com/MemOS_dev/status/2019254160919769171?s=20) | <ul><li>[Reduces token usage by 72%.](https://x.com/MemOS_dev/status/2020854044583924111)</li><li>[Multi-agent memory sharing by `user_id`.](https://x.com/MemOS_dev/status/2020538135487062094)</li></ul> | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
170
136
 
171
- 🌐 [Homepage](https://memos-claw.openmem.net) ·
172
- 📖 [Documentation](https://memos-claw.openmem.net/docs/index.html) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-openclaw-plugin)
137
+ </div>
138
+ <br>
173
139
 
174
- ## 📌 MemOS: Memory Operating System for AI Agents
140
+ ## 👾 MemOS: Memory Operating System for LLM & AI Agents
175
141
 
176
142
  **MemOS** is a Memory Operating System for LLMs and AI agents that unifies **store / retrieve / manage** for long-term memory, enabling **context-aware and personalized** interactions with **KB**, **multi-modal**, **tool memory**, and **enterprise-grade** optimizations built in.
177
143
 
178
144
 
179
-
180
145
  ### Key Features
181
146
 
182
147
  - **Unified Memory API**: A single API to add, retrieve, edit, and delete memory—structured as a graph, inspectable and editable by design, not a black-box embedding store.
@@ -188,6 +153,12 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
188
153
 
189
154
  ### News
190
155
 
156
+ - **2026-05-09** · 🧠 **memos-local-plugin 2.0**
157
+ Official local memory plugin for **Hermes Agent** and **OpenClaw**. One core powers self-evolving memory across L1 traces, L2 policies, L3 world models, and crystallized Skills, with local-first storage and feedback-driven retrieval.
158
+
159
+ - **2026-04-10** · 👧🏻 **MemOS Hermes Agent Local Plugin**
160
+ Official Hermes Agent memory plugins launched: Hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution, multi-agent collaboration. 100% local, zero cloud dependency.
161
+
191
162
  - **2026-03-08** · 🦞 **MemOS OpenClaw Plugin — Cloud & Local**
192
163
  Official OpenClaw memory plugins launched. **Cloud Plugin**: hosted memory service with 72% lower token usage and multi-agent memory sharing ([MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)). **Local Plugin** (`v1.0.0`): 100% on-device memory with persistent SQLite, hybrid search (FTS5 + vector), task summarization & skill evolution, multi-agent collaboration, and a full Memory Viewer dashboard.
193
164
 
@@ -285,7 +256,7 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
285
256
 
286
257
  <br>
287
258
 
288
- ## 🚀 Quickstart Guide
259
+ ## 🚀 Quick-start Guide
289
260
 
290
261
  ### ☁️ 1、Cloud API (Hosted)
291
262
  #### Get API Key
@@ -372,17 +343,18 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
372
343
  res = requests.post(url=url, headers=headers, data=json.dumps(data))
373
344
  print(f"result: {res.json()}")
374
345
  ```
375
-
346
+
376
347
  <br>
377
348
 
378
349
  ## 📚 Resources
379
350
 
380
351
  - **Awesome-AI-Memory**
381
- This is a curated repository dedicated to resources on memory and memory systems for large language models. It systematically collects relevant research papers, frameworks, tools, and practical insights. The repository aims to organize and present the rapidly evolving research landscape of LLM memory, bridging multiple research directions including natural language processing, information retrieval, agentic systems, and cognitive science.
382
- - **Get started** 👉 [IAAR-Shanghai/Awesome-AI-Memory](https://github.com/IAAR-Shanghai/Awesome-AI-Memory)
352
+ This is a curated repository dedicated to resources on memory and memory systems for large language models. It systematically collects relevant research papers, frameworks, tools, and practical insights. The repository aims to organize and present the rapidly evolving research landscape of LLM memory, bridging multiple research directions including natural language processing, information retrieval, agentic systems, and cognitive science.<br/>
353
+ **Get started** 👉🏻 [IAAR-Shanghai/Awesome-AI-Memory](https://github.com/IAAR-Shanghai/Awesome-AI-Memory)
354
+
383
355
  - **MemOS Cloud OpenClaw Plugin**
384
- Official OpenClaw lifecycle plugin for MemOS Cloud. It automatically recalls context from MemOS before the agent starts and saves the conversation back to MemOS after the agent finishes.
385
- - **Get started** 👉 [MemTensor/MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)
356
+ Official OpenClaw lifecycle plugin for MemOS Cloud. It automatically recalls context from MemOS before the agent starts and saves the conversation back to MemOS after the agent finishes.<br/>
357
+ **Get started** 👉🏻 [MemTensor/MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)
386
358
 
387
359
  <br>
388
360
 
@@ -4,51 +4,24 @@
4
4
  </a>
5
5
 
6
6
  <h1 align="center">
7
- <img src="https://statics.memtensor.com.cn/logo/memos_color_m.png" alt="MemOS Logo" width="50"/>
8
- MemOS 2.0: 星尘(Stardust
9
- <img src="https://img.shields.io/badge/status-Preview-blue" alt="Preview Badge"/>
7
+ <img src="https://statics.memtensor.com.cn/logo/memos_color_m.png" alt="MemOS Logo" width="48"/>&nbsp;
8
+ MemOS 2.0&ensp;Stardust(星尘)
9
+
10
10
  </h1>
11
11
 
12
- <p>
13
- <a href="https://www.memtensor.com.cn/">
14
- <img alt="Static Badge" src="https://img.shields.io/badge/Maintained_by-MemTensor-blue">
15
- </a>
16
- <a href="https://pypi.org/project/MemoryOS">
17
- <img src="https://img.shields.io/pypi/v/MemoryOS?label=pypi%20package" alt="PyPI Version">
18
- </a>
19
- <a href="https://pypi.org/project/MemoryOS">
20
- <img src="https://img.shields.io/pypi/pyversions/MemoryOS.svg" alt="Supported Python versions">
21
- </a>
22
- <a href="https://pypi.org/project/MemoryOS">
23
- <img src="https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey" alt="Supported Platforms">
24
- </a>
25
- <a href="https://memos-docs.openmem.net/home/overview/">
26
- <img src="https://img.shields.io/badge/Documentation-view-blue.svg" alt="Documentation">
27
- </a>
28
- <a href="https://arxiv.org/abs/2507.03724">
29
- <img src="https://img.shields.io/badge/arXiv-2507.03724-b31b1b.svg" alt="ArXiv Paper">
30
- </a>
31
- <a href="https://github.com/MemTensor/MemOS/discussions">
32
- <img src="https://img.shields.io/badge/GitHub-Discussions-181717.svg?logo=github" alt="GitHub Discussions">
33
- </a>
34
- <a href="https://discord.gg/Txbx3gebZR">
35
- <img src="https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord" alt="Discord">
36
- </a>
37
- <a href="https://statics.memtensor.com.cn/memos/qr-code.png">
38
- <img src="https://img.shields.io/badge/WeChat-Group-07C160.svg?logo=wechat" alt="WeChat Group">
39
- </a>
40
- <a href="https://opensource.org/license/apache-2-0/">
41
- <img src="https://img.shields.io/badge/License-Apache_2.0-green.svg?logo=apache" alt="License">
42
- </a>
43
- <a href="https://github.com/IAAR-Shanghai/Awesome-AI-Memory">
44
- <img alt="Awesome AI Memory" src="https://img.shields.io/badge/Resources-Awesome--AI--Memory-8A2BE2">
45
- </a>
46
- </p>
12
+ <p align="center">
13
+ <br>
14
+ <a href="https://memos-docs.openmem.net/home/overview/"><img src="https://img.shields.io/badge/Docs-Get--Start-002FA7?labelColor=gray&style=for-the-badge&logo=googledocs&logoColor=white" alt="Docs"></a>
15
+ <a href="https://arxiv.org/abs/2507.03724"><img src="https://img.shields.io/badge/ArXiv-2507.03724-B31B1B?labelColor=gray&style=for-the-badge&logo=arxiv&logoColor=white" alt="ArXiv"></a>
16
+ <a href="https://x.com/MemOS_dev"><img src="https://img.shields.io/badge/Follow-MemOS-000000?labelColor=gray&style=for-the-badge&logo=x&logoColor=white" alt="X"></a>
17
+ <a href="https://discord.gg/Txbx3gebZR"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscord.com%2Fapi%2Fv10%2Finvites%2FTxbx3gebZR%3Fwith_counts%3Dtrue&query=%24.approximate_presence_count&suffix=%20online&label=Discord&color=404EED&labelColor=gray&style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
18
+ <a href="https://github.com/IAAR-Shanghai/Awesome-AI-Memory"><img src="https://img.shields.io/badge/Resources-Awesome--AI--Memory-8A2BE2?labelColor=gray&style=for-the-badge&logo=awesomelists&logoColor=white" alt="Resources"></a>
19
+ </p>
47
20
 
48
21
  <p align="center">
49
22
  <strong>🎯 +43.70% Accuracy vs. OpenAI Memory</strong><br/>
50
- <strong>🏆 Top-tier long-term memory + personalization</strong><br/>
51
- <strong>💰 Saves 35.24% memory tokens</strong><br/>
23
+ <strong>🏆 Top-tier Long-term Memory + Personalization</strong><br/>
24
+ <strong>💰 Saves 35.24% Memory Tokens</strong><br/>
52
25
  <sub>LoCoMo 75.80 • LongMemEval +40.43% • PrefEval-10 +2568% • PersonaMem +40.75%</sub>
53
26
  <!-- <a href="https://memos.openmem.net/">
54
27
  <img src="https://statics.memtensor.com.cn/memos/github_api_free_banner.gif" alt="MemOS Free API Banner">
@@ -64,35 +37,27 @@
64
37
 
65
38
  <!-- <br> -->
66
39
 
67
- ## 🦞 Enhanced OpenClaw with MemOS Plugin
68
-
69
- ![](https://cdn.memtensor.com.cn/img/1770612303123_mnaisk_compressed.png)
70
-
71
- 🦞 Your lobster now has a working memory system — choose **Cloud** or **Local** to get started.
72
-
73
- ### ☁️ Cloud Plugin — Hosted Memory Service
74
-
75
- - [**72% lower token usage**](https://x.com/MemOS_dev/status/2020854044583924111) — intelligent memory retrieval instead of loading full chat history
76
- - [**Multi-agent memory sharing**](https://x.com/MemOS_dev/status/2020538135487062094) — multi-instance agents share memory via same user_id, automatic context handoff
40
+ ## 🧠 MemOS Plugin: Persistent Memory for Your AI Agents ✨
77
41
 
78
- Get your API key: [MemOS Dashboard](https://memos-dashboard.openmem.net/cn/login/)
79
- Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)
42
+ <div align="center">
43
+
44
+ <img width="1660" height="664" alt="MemOS Plugin Banner" src="https://github.com/user-attachments/assets/9d15dde2-196e-4f71-a364-dd5a33062117" />
80
45
 
81
- ### 🧠 Local Plugin100% On-Device Memory
46
+ Your lobsters and Hermes Agents now have **the best** memory system choose ***Cloud Service*** or ***Self-hosted*** to get started 🏃🏻
82
47
 
83
- - **Zero cloud dependency** all data stays on your machine, persistent local SQLite storage
84
- - **Hybrid search + task & skill evolution** — FTS5 + vector search, auto task summarization, reusable skills that self-upgrade
85
- - **Multi-agent collaboration + Memory Viewer** memory isolation, skill sharing, full web dashboard with 7 management pages
48
+ | 🔌 Plugin | <div align="center"> 💡 Core Features </div> | 🧩 Resources |
49
+ | :----: | :--- | :---: |
50
+ | 🧠 [**memos-local-plugin 2.0**](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) | <ul><li>One local-first memory core for **Hermes Agent** and **OpenClaw**.</li><li>Self-evolving memory: L1 trace, L2 policy, L3 world model,<br>and crystallized Skills driven by feedback.</li></ul> | 🐙 [GitHub](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
51
+ | ☁️ [**OpenClaw Cloud Plugin**](https://x.com/MemOS_dev/status/2019254160919769171?s=20) | <ul><li>[Reduces token usage by 72%.](https://x.com/MemOS_dev/status/2020854044583924111)</li><li>[Multi-agent memory sharing by `user_id`.](https://x.com/MemOS_dev/status/2020538135487062094)</li></ul> | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
86
52
 
87
- 🌐 [Homepage](https://memos-claw.openmem.net) ·
88
- 📖 [Documentation](https://memos-claw.openmem.net/docs/index.html) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-openclaw-plugin)
53
+ </div>
54
+ <br>
89
55
 
90
- ## 📌 MemOS: Memory Operating System for AI Agents
56
+ ## 👾 MemOS: Memory Operating System for LLM & AI Agents
91
57
 
92
58
  **MemOS** is a Memory Operating System for LLMs and AI agents that unifies **store / retrieve / manage** for long-term memory, enabling **context-aware and personalized** interactions with **KB**, **multi-modal**, **tool memory**, and **enterprise-grade** optimizations built in.
93
59
 
94
60
 
95
-
96
61
  ### Key Features
97
62
 
98
63
  - **Unified Memory API**: A single API to add, retrieve, edit, and delete memory—structured as a graph, inspectable and editable by design, not a black-box embedding store.
@@ -104,6 +69,12 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
104
69
 
105
70
  ### News
106
71
 
72
+ - **2026-05-09** · 🧠 **memos-local-plugin 2.0**
73
+ Official local memory plugin for **Hermes Agent** and **OpenClaw**. One core powers self-evolving memory across L1 traces, L2 policies, L3 world models, and crystallized Skills, with local-first storage and feedback-driven retrieval.
74
+
75
+ - **2026-04-10** · 👧🏻 **MemOS Hermes Agent Local Plugin**
76
+ Official Hermes Agent memory plugins launched: Hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution, multi-agent collaboration. 100% local, zero cloud dependency.
77
+
107
78
  - **2026-03-08** · 🦞 **MemOS OpenClaw Plugin — Cloud & Local**
108
79
  Official OpenClaw memory plugins launched. **Cloud Plugin**: hosted memory service with 72% lower token usage and multi-agent memory sharing ([MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)). **Local Plugin** (`v1.0.0`): 100% on-device memory with persistent SQLite, hybrid search (FTS5 + vector), task summarization & skill evolution, multi-agent collaboration, and a full Memory Viewer dashboard.
109
80
 
@@ -201,7 +172,7 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
201
172
 
202
173
  <br>
203
174
 
204
- ## 🚀 Quickstart Guide
175
+ ## 🚀 Quick-start Guide
205
176
 
206
177
  ### ☁️ 1、Cloud API (Hosted)
207
178
  #### Get API Key
@@ -288,17 +259,18 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
288
259
  res = requests.post(url=url, headers=headers, data=json.dumps(data))
289
260
  print(f"result: {res.json()}")
290
261
  ```
291
-
262
+
292
263
  <br>
293
264
 
294
265
  ## 📚 Resources
295
266
 
296
267
  - **Awesome-AI-Memory**
297
- This is a curated repository dedicated to resources on memory and memory systems for large language models. It systematically collects relevant research papers, frameworks, tools, and practical insights. The repository aims to organize and present the rapidly evolving research landscape of LLM memory, bridging multiple research directions including natural language processing, information retrieval, agentic systems, and cognitive science.
298
- - **Get started** 👉 [IAAR-Shanghai/Awesome-AI-Memory](https://github.com/IAAR-Shanghai/Awesome-AI-Memory)
268
+ This is a curated repository dedicated to resources on memory and memory systems for large language models. It systematically collects relevant research papers, frameworks, tools, and practical insights. The repository aims to organize and present the rapidly evolving research landscape of LLM memory, bridging multiple research directions including natural language processing, information retrieval, agentic systems, and cognitive science.<br/>
269
+ **Get started** 👉🏻 [IAAR-Shanghai/Awesome-AI-Memory](https://github.com/IAAR-Shanghai/Awesome-AI-Memory)
270
+
299
271
  - **MemOS Cloud OpenClaw Plugin**
300
- Official OpenClaw lifecycle plugin for MemOS Cloud. It automatically recalls context from MemOS before the agent starts and saves the conversation back to MemOS after the agent finishes.
301
- - **Get started** 👉 [MemTensor/MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)
272
+ Official OpenClaw lifecycle plugin for MemOS Cloud. It automatically recalls context from MemOS before the agent starts and saves the conversation back to MemOS after the agent finishes.<br/>
273
+ **Get started** 👉🏻 [MemTensor/MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)
302
274
 
303
275
  <br>
304
276
 
@@ -4,7 +4,7 @@
4
4
  ##############################################################################
5
5
 
6
6
  name = "MemoryOS"
7
- version = "2.0.13"
7
+ version = "2.0.15"
8
8
  description = "Intelligence Begins with Memory"
9
9
  license = {text = "Apache-2.0"}
10
10
  readme = "README.md"
@@ -1,4 +1,4 @@
1
- __version__ = "2.0.13"
1
+ __version__ = "2.0.15"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
@@ -369,6 +369,26 @@ class APIConfig:
369
369
 
370
370
  return {"backend": "openai", "config": config}
371
371
 
372
+ @staticmethod
373
+ def get_qwen_llm_config() -> dict[str, Any] | None:
374
+ if not os.getenv("QWEN_API_KEY"):
375
+ return None
376
+ return {
377
+ "backend": "qwen",
378
+ "config": {
379
+ "model_name_or_path": os.getenv("QWEN_MODEL", "qwen-flash"),
380
+ "temperature": float(os.getenv("QWEN_TEMPERATURE", "0.8")),
381
+ "max_tokens": int(os.getenv("QWEN_MAX_TOKENS", "8000")),
382
+ "top_p": float(os.getenv("QWEN_TOP_P", "0.9")),
383
+ "top_k": int(os.getenv("QWEN_TOP_K", "50")),
384
+ "remove_think_prefix": os.getenv("QWEN_REMOVE_THINK_PREFIX", "true").lower()
385
+ == "true",
386
+ "api_key": os.getenv("QWEN_API_KEY", ""),
387
+ "api_base": os.getenv("QWEN_API_BASE", ""),
388
+ "model_schema": os.getenv("QWEN_MODEL_SCHEMA", "memos.configs.llm.QwenLLMConfig"),
389
+ },
390
+ }
391
+
372
392
  @staticmethod
373
393
  def get_memreader_general_llm_config() -> dict[str, Any]:
374
394
  """Get general LLM configuration for non-chat/doc tasks.
@@ -639,6 +659,7 @@ class APIConfig:
639
659
 
640
660
  return config
641
661
 
662
+ @staticmethod
642
663
  def get_internet_config() -> dict[str, Any]:
643
664
  """Get internet retriever configuration.
644
665
 
@@ -705,8 +726,9 @@ class APIConfig:
705
726
 
706
727
  @staticmethod
707
728
  def get_nli_config() -> dict[str, Any]:
708
- """Get NLI model configuration."""
729
+ """Get relation-judge configuration for memory-version candidate matching."""
709
730
  return {
731
+ "provider": os.getenv("MEM_VERSION_RELATION_JUDGE_PROVIDER", "llm"),
710
732
  "base_url": os.getenv("NLI_MODEL_BASE_URL", "http://localhost:32532"),
711
733
  }
712
734
 
@@ -872,7 +894,7 @@ class APIConfig:
872
894
  ),
873
895
  "context_window_size": int(os.getenv("MOS_SCHEDULER_CONTEXT_WINDOW_SIZE", "5")),
874
896
  "thread_pool_max_workers": int(
875
- os.getenv("MOS_SCHEDULER_THREAD_POOL_MAX_WORKERS", "200")
897
+ os.getenv("MOS_SCHEDULER_THREAD_POOL_MAX_WORKERS", "50")
876
898
  ),
877
899
  "consume_interval_seconds": float(
878
900
  os.getenv("MOS_SCHEDULER_CONSUME_INTERVAL_SECONDS", "0.01")
@@ -952,6 +974,7 @@ class APIConfig:
952
974
  "backend": reader_config["backend"],
953
975
  "config": {
954
976
  "llm": APIConfig.get_memreader_config(),
977
+ "qwen_llm": APIConfig.get_qwen_llm_config(),
955
978
  # General LLM for non-chat/doc tasks (hallucination filter, rewrite, merge, etc.)
956
979
  "general_llm": APIConfig.get_memreader_general_llm_config(),
957
980
  # Image parser LLM (requires vision model)
@@ -986,6 +1009,7 @@ class APIConfig:
986
1009
  "SKILLS_LOCAL_DIR", "/tmp/upload_skill_memory/"
987
1010
  ),
988
1011
  },
1012
+ "memory_version_switch": os.getenv("MEM_READER_MEM_VERSION_SWITCH", "off"),
989
1013
  },
990
1014
  },
991
1015
  "enable_textual_memory": True,
@@ -15,6 +15,7 @@ from memos.memories.textual.item import (
15
15
  from memos.multi_mem_cube.composite_cube import CompositeCubeView
16
16
  from memos.multi_mem_cube.single_cube import SingleCubeView
17
17
  from memos.multi_mem_cube.views import MemCubeView
18
+ from memos.plugins.hooks import hookable
18
19
  from memos.types import MessageList
19
20
 
20
21
 
@@ -37,6 +38,7 @@ class AddHandler(BaseHandler):
37
38
  "naive_mem_cube", "mem_reader", "mem_scheduler", "feedback_server"
38
39
  )
39
40
 
41
+ @hookable("add")
40
42
  def handle_add_memories(self, add_req: APIADDRequest) -> MemoryResponse:
41
43
  """
42
44
  Main handler for add memories endpoint.
@@ -32,14 +32,14 @@ from memos.mem_reader.factory import MemReaderFactory
32
32
  from memos.mem_scheduler.orm_modules.base_model import BaseDBManager
33
33
  from memos.mem_scheduler.scheduler_factory import SchedulerFactory
34
34
  from memos.memories.textual.simple_tree import SimpleTreeTextMemory
35
- from memos.memories.textual.tree_text_memory.organize.history_manager import MemoryHistoryManager
36
35
  from memos.memories.textual.tree_text_memory.organize.manager import MemoryManager
37
36
  from memos.memories.textual.tree_text_memory.retrieve.retrieve_utils import FastTokenizer
37
+ from memos.plugins.component_bootstrap import build_plugin_context
38
+ from memos.plugins.manager import plugin_manager
38
39
 
39
40
 
40
41
  if TYPE_CHECKING:
41
42
  from memos.memories.textual.tree import TreeTextMemory
42
- from memos.extras.nli_model.client import NLIClient
43
43
  from memos.mem_agent.deepsearch_agent import DeepSearchMemAgent
44
44
  from memos.memories.textual.tree_text_memory.retrieve.internet_retriever_factory import (
45
45
  InternetRetrieverFactory,
@@ -122,6 +122,12 @@ def init_server() -> dict[str, Any]:
122
122
  existing code that uses the components.
123
123
  """
124
124
  logger.info("Initializing MemOS server components...")
125
+ logger.info(
126
+ "[INIT_SERVER] env_MEMSCHEDULER_STREAM_KEY_PREFIX=%s, env_MEMSCHEDULER_REDIS_STREAM_KEY_PREFIX=%s, env_POLAR_DB_DB_NAME=%s",
127
+ os.getenv("MEMSCHEDULER_STREAM_KEY_PREFIX"),
128
+ os.getenv("MEMSCHEDULER_REDIS_STREAM_KEY_PREFIX"),
129
+ os.getenv("POLAR_DB_DB_NAME"),
130
+ )
125
131
 
126
132
  # Initialize Redis client first as it is a core dependency for features like scheduler status tracking
127
133
  if os.getenv("MEMSCHEDULER_USE_REDIS_QUEUE", "False").lower() == "true":
@@ -169,10 +175,26 @@ def init_server() -> dict[str, Any]:
169
175
  else None
170
176
  )
171
177
  embedder = EmbedderFactory.from_config(embedder_config)
172
- nli_client = NLIClient(base_url=nli_client_config["base_url"])
173
- memory_history_manager = MemoryHistoryManager(nli_client=nli_client, graph_db=graph_db)
178
+
179
+ plugin_context = build_plugin_context(
180
+ graph_db=graph_db,
181
+ embedder=embedder,
182
+ llm=llm,
183
+ default_cube_config=default_cube_config,
184
+ nli_client_config=nli_client_config,
185
+ mem_reader_config=mem_reader_config,
186
+ reranker_config=reranker_config,
187
+ feedback_reranker_config=feedback_reranker_config,
188
+ internet_retriever_config=internet_retriever_config,
189
+ )
190
+ plugin_manager.discover()
191
+ plugin_manager.init_components(plugin_context)
192
+
174
193
  # Pass graph_db to mem_reader for recall operations (deduplication, conflict detection)
175
- mem_reader = MemReaderFactory.from_config(mem_reader_config, graph_db=graph_db)
194
+ mem_reader = MemReaderFactory.from_config(
195
+ mem_reader_config,
196
+ graph_db=graph_db,
197
+ )
176
198
  reranker = RerankerFactory.from_config(reranker_config)
177
199
  feedback_reranker = RerankerFactory.from_config(feedback_reranker_config)
178
200
  internet_retriever = InternetRetrieverFactory.from_config(
@@ -264,6 +286,12 @@ def init_server() -> dict[str, Any]:
264
286
  # Initialize SchedulerAPIModule
265
287
  api_module = mem_scheduler.api_module
266
288
 
289
+ # Plugins keep a reference to the original context dict, so updating the shared
290
+ # section here makes the runtime handles visible without adding a second init step.
291
+ plugin_context["shared"]["mem_scheduler"] = mem_scheduler
292
+ plugin_context["shared"]["submit_scheduler_messages"] = mem_scheduler.submit_messages
293
+ plugin_context["shared"]["api_module"] = api_module
294
+
267
295
  # Start scheduler if enabled
268
296
  if os.getenv("API_SCHEDULER_ON", "true").lower() == "true":
269
297
  mem_scheduler.start()
@@ -303,6 +331,4 @@ def init_server() -> dict[str, Any]:
303
331
  "feedback_server": feedback_server,
304
332
  "redis_client": redis_client,
305
333
  "deepsearch_agent": deepsearch_agent,
306
- "nli_client": nli_client,
307
- "memory_history_manager": memory_history_manager,
308
334
  }
@@ -141,6 +141,7 @@ def separate_knowledge_and_conversation_mem(memories: list[dict[str, Any]]):
141
141
  sources = item.get("metadata", {}).get("sources", [])
142
142
  if (
143
143
  item["metadata"]["memory_type"] != "RawFileMemory"
144
+ and sources
144
145
  and len(sources) > 0
145
146
  and "type" in sources[0]
146
147
  and sources[0]["type"] == "file"
@@ -9,13 +9,21 @@ from starlette.staticfiles import StaticFiles
9
9
  from memos.api.exceptions import APIExceptionHandler
10
10
  from memos.api.middleware.request_context import RequestContextMiddleware
11
11
  from memos.api.routers.server_router import router as server_router
12
+ from memos.plugins.manager import plugin_manager
12
13
 
13
14
 
14
15
  load_dotenv()
15
16
 
17
+ plugin_manager.discover()
18
+
16
19
  # Configure logging
17
20
  logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
18
21
  logger = logging.getLogger(__name__)
22
+ logger.info(
23
+ "[SERVER_API] load_dotenv completed. env_MEMSCHEDULER_STREAM_KEY_PREFIX=%s, env_MEMSCHEDULER_REDIS_STREAM_KEY_PREFIX=%s",
24
+ os.getenv("MEMSCHEDULER_STREAM_KEY_PREFIX"),
25
+ os.getenv("MEMSCHEDULER_REDIS_STREAM_KEY_PREFIX"),
26
+ )
19
27
 
20
28
  app = FastAPI(
21
29
  title="MemOS Server REST APIs",
@@ -49,6 +57,8 @@ app.exception_handler(HTTPException)(APIExceptionHandler.http_error_handler)
49
57
  # Fallback for unknown errors
50
58
  app.exception_handler(Exception)(APIExceptionHandler.global_exception_handler)
51
59
 
60
+ plugin_manager.init_app(app)
61
+
52
62
 
53
63
  if __name__ == "__main__":
54
64
  import argparse
@@ -53,4 +53,5 @@ class SentenceChunker(BaseChunker):
53
53
  chunks.append(chunk)
54
54
 
55
55
  logger.debug(f"Generated {len(chunks)} chunks from input text")
56
+
56
57
  return chunks
@@ -1,5 +1,5 @@
1
1
  from datetime import datetime
2
- from typing import Any, ClassVar
2
+ from typing import Any, ClassVar, Literal
3
3
 
4
4
  from pydantic import ConfigDict, Field, field_validator, model_validator
5
5
 
@@ -76,6 +76,13 @@ class MultiModalStructMemReaderConfig(BaseMemReaderConfig):
76
76
  default=None,
77
77
  description="Skills directory for the MemReader",
78
78
  )
79
+ memory_version_switch: Literal["on", "off"] = Field(
80
+ default="off",
81
+ description="Turn on memory version or off",
82
+ )
83
+
84
+ # Allow passing additional fields without raising validation errors
85
+ model_config = ConfigDict(extra="allow", strict=True)
79
86
 
80
87
 
81
88
  class StrategyStructMemReaderConfig(BaseMemReaderConfig):