MemoryOS 0.2.2__tar.gz → 1.0.0__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.

Potentially problematic release.


This version of MemoryOS might be problematic. Click here for more details.

Files changed (176) hide show
  1. {memoryos-0.2.2 → memoryos-1.0.0}/PKG-INFO +6 -1
  2. {memoryos-0.2.2 → memoryos-1.0.0}/README.md +5 -0
  3. {memoryos-0.2.2 → memoryos-1.0.0}/pyproject.toml +1 -1
  4. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/__init__.py +1 -1
  5. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/config.py +6 -8
  6. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/context/context.py +1 -1
  7. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/context/dependencies.py +11 -0
  8. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/internet_retriever.py +13 -0
  9. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/mem_scheduler.py +38 -16
  10. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/graph_dbs/base.py +30 -3
  11. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/graph_dbs/nebular.py +442 -194
  12. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/graph_dbs/neo4j.py +14 -5
  13. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/log.py +5 -0
  14. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_os/core.py +19 -9
  15. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_os/main.py +1 -1
  16. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_os/product.py +6 -69
  17. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_os/utils/default_config.py +1 -1
  18. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_os/utils/format_utils.py +11 -47
  19. memoryos-1.0.0/src/memos/mem_os/utils/reference_utils.py +133 -0
  20. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/base_scheduler.py +58 -55
  21. {memoryos-0.2.2/src/memos/mem_scheduler/modules → memoryos-1.0.0/src/memos/mem_scheduler/general_modules}/base.py +1 -2
  22. {memoryos-0.2.2/src/memos/mem_scheduler/modules → memoryos-1.0.0/src/memos/mem_scheduler/general_modules}/dispatcher.py +54 -15
  23. {memoryos-0.2.2/src/memos/mem_scheduler/modules → memoryos-1.0.0/src/memos/mem_scheduler/general_modules}/rabbitmq_service.py +4 -4
  24. {memoryos-0.2.2/src/memos/mem_scheduler/modules → memoryos-1.0.0/src/memos/mem_scheduler/general_modules}/redis_service.py +1 -1
  25. {memoryos-0.2.2/src/memos/mem_scheduler/modules → memoryos-1.0.0/src/memos/mem_scheduler/general_modules}/retriever.py +19 -5
  26. {memoryos-0.2.2/src/memos/mem_scheduler/modules → memoryos-1.0.0/src/memos/mem_scheduler/general_modules}/scheduler_logger.py +10 -4
  27. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/general_scheduler.py +110 -67
  28. memoryos-1.0.0/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +305 -0
  29. memoryos-0.2.2/src/memos/mem_scheduler/modules/monitor.py → memoryos-1.0.0/src/memos/mem_scheduler/monitors/general_monitor.py +57 -19
  30. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/mos_for_test_scheduler.py +7 -1
  31. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/schemas/general_schemas.py +3 -2
  32. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/schemas/message_schemas.py +2 -1
  33. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/schemas/monitor_schemas.py +10 -2
  34. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/utils/misc_utils.py +43 -2
  35. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/activation/item.py +1 -1
  36. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/activation/kv.py +20 -8
  37. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/base.py +1 -1
  38. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/general.py +1 -1
  39. memoryos-0.2.2/src/memos/memories/textual/tree_text_memory/organize/conflict.py → memoryos-1.0.0/src/memos/memories/textual/tree_text_memory/organize/handler.py +30 -48
  40. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/organize/manager.py +8 -96
  41. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +2 -0
  42. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +102 -140
  43. memoryos-1.0.0/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +229 -0
  44. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +9 -0
  45. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +15 -8
  46. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +1 -1
  47. memoryos-1.0.0/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +284 -0
  48. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +7 -2
  49. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +1 -1
  50. memoryos-1.0.0/src/memos/memos_tools/lockfree_dict.py +120 -0
  51. memoryos-1.0.0/src/memos/memos_tools/thread_safe_dict.py +288 -0
  52. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/templates/mem_reader_prompts.py +2 -0
  53. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/templates/mem_scheduler_prompts.py +23 -10
  54. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/templates/mos_prompts.py +40 -11
  55. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/templates/tree_reorganize_prompts.py +24 -17
  56. memoryos-1.0.0/src/memos/utils.py +19 -0
  57. memoryos-1.0.0/src/memos/vec_dbs/__init__.py +0 -0
  58. memoryos-0.2.2/src/memos/memories/textual/tree_text_memory/organize/redundancy.py +0 -193
  59. memoryos-0.2.2/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +0 -232
  60. {memoryos-0.2.2 → memoryos-1.0.0}/LICENSE +0 -0
  61. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/exceptions.py +0 -0
  62. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/mcp_serve.py +0 -0
  63. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/product_api.py +0 -0
  64. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/product_models.py +0 -0
  65. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/routers/__init__.py +0 -0
  66. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/routers/product_router.py +0 -0
  67. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/api/start_api.py +0 -0
  68. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/chunkers/__init__.py +0 -0
  69. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/chunkers/base.py +0 -0
  70. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/chunkers/factory.py +0 -0
  71. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/chunkers/sentence_chunker.py +0 -0
  72. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/cli.py +0 -0
  73. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/__init__.py +0 -0
  74. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/base.py +0 -0
  75. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/chunker.py +0 -0
  76. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/embedder.py +0 -0
  77. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/graph_db.py +0 -0
  78. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/llm.py +0 -0
  79. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/mem_chat.py +0 -0
  80. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/mem_cube.py +0 -0
  81. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/mem_os.py +0 -0
  82. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/mem_reader.py +0 -0
  83. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/mem_user.py +0 -0
  84. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/memory.py +0 -0
  85. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/parser.py +0 -0
  86. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/utils.py +0 -0
  87. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/configs/vec_db.py +0 -0
  88. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/dependency.py +0 -0
  89. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/deprecation.py +0 -0
  90. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/embedders/__init__.py +0 -0
  91. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/embedders/ark.py +0 -0
  92. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/embedders/base.py +0 -0
  93. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/embedders/factory.py +0 -0
  94. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/embedders/ollama.py +0 -0
  95. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/embedders/sentence_transformer.py +0 -0
  96. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/embedders/universal_api.py +0 -0
  97. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/exceptions.py +0 -0
  98. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/graph_dbs/__init__.py +0 -0
  99. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/graph_dbs/factory.py +0 -0
  100. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/graph_dbs/item.py +0 -0
  101. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/graph_dbs/neo4j_community.py +0 -0
  102. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/hello_world.py +0 -0
  103. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/__init__.py +0 -0
  104. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/base.py +0 -0
  105. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/deepseek.py +0 -0
  106. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/factory.py +0 -0
  107. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/hf.py +0 -0
  108. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/hf_singleton.py +0 -0
  109. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/ollama.py +0 -0
  110. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/openai.py +0 -0
  111. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/qwen.py +0 -0
  112. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/utils.py +0 -0
  113. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/llms/vllm.py +0 -0
  114. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_chat/__init__.py +0 -0
  115. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_chat/base.py +0 -0
  116. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_chat/factory.py +0 -0
  117. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_chat/simple.py +0 -0
  118. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_cube/__init__.py +0 -0
  119. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_cube/base.py +0 -0
  120. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_cube/general.py +0 -0
  121. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_cube/utils.py +0 -0
  122. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_os/client.py +0 -0
  123. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_reader/__init__.py +0 -0
  124. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_reader/base.py +0 -0
  125. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_reader/factory.py +0 -0
  126. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_reader/memory.py +0 -0
  127. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_reader/simple_struct.py +0 -0
  128. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/__init__.py +0 -0
  129. {memoryos-0.2.2/src/memos/mem_scheduler/modules → memoryos-1.0.0/src/memos/mem_scheduler/general_modules}/__init__.py +0 -0
  130. {memoryos-0.2.2/src/memos/mem_scheduler/modules → memoryos-1.0.0/src/memos/mem_scheduler/general_modules}/misc.py +0 -0
  131. {memoryos-0.2.2/src/memos/mem_scheduler/schemas → memoryos-1.0.0/src/memos/mem_scheduler/monitors}/__init__.py +0 -0
  132. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  133. {memoryos-0.2.2/src/memos/mem_scheduler/utils → memoryos-1.0.0/src/memos/mem_scheduler/schemas}/__init__.py +0 -0
  134. {memoryos-0.2.2/src/memos/memories → memoryos-1.0.0/src/memos/mem_scheduler/utils}/__init__.py +0 -0
  135. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  136. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_user/factory.py +0 -0
  137. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  138. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_user/mysql_user_manager.py +0 -0
  139. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_user/persistent_factory.py +0 -0
  140. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_user/persistent_user_manager.py +0 -0
  141. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/mem_user/user_manager.py +0 -0
  142. {memoryos-0.2.2/src/memos/memories/activation → memoryos-1.0.0/src/memos/memories}/__init__.py +0 -0
  143. {memoryos-0.2.2/src/memos/memories/parametric → memoryos-1.0.0/src/memos/memories/activation}/__init__.py +0 -0
  144. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/activation/base.py +0 -0
  145. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/activation/vllmkv.py +0 -0
  146. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/base.py +0 -0
  147. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/factory.py +0 -0
  148. {memoryos-0.2.2/src/memos/memories/textual → memoryos-1.0.0/src/memos/memories/parametric}/__init__.py +0 -0
  149. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/parametric/base.py +0 -0
  150. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/parametric/item.py +0 -0
  151. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/parametric/lora.py +0 -0
  152. {memoryos-0.2.2/src/memos/memories/textual/tree_text_memory → memoryos-1.0.0/src/memos/memories/textual}/__init__.py +0 -0
  153. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/item.py +0 -0
  154. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/naive.py +0 -0
  155. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree.py +0 -0
  156. {memoryos-0.2.2/src/memos/memories/textual/tree_text_memory/organize → memoryos-1.0.0/src/memos/memories/textual/tree_text_memory}/__init__.py +0 -0
  157. {memoryos-0.2.2/src/memos/memories/textual/tree_text_memory/retrieve → memoryos-1.0.0/src/memos/memories/textual/tree_text_memory/organize}/__init__.py +0 -0
  158. {memoryos-0.2.2/src/memos/parsers → memoryos-1.0.0/src/memos/memories/textual/tree_text_memory/retrieve}/__init__.py +0 -0
  159. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  160. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  161. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  162. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  163. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  164. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memos_tools/notification_service.py +0 -0
  165. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/memos_tools/notification_utils.py +0 -0
  166. {memoryos-0.2.2/src/memos/templates → memoryos-1.0.0/src/memos/parsers}/__init__.py +0 -0
  167. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/parsers/base.py +0 -0
  168. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/parsers/factory.py +0 -0
  169. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/parsers/markitdown.py +0 -0
  170. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/settings.py +0 -0
  171. {memoryos-0.2.2/src/memos/vec_dbs → memoryos-1.0.0/src/memos/templates}/__init__.py +0 -0
  172. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/types.py +0 -0
  173. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/vec_dbs/base.py +0 -0
  174. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/vec_dbs/factory.py +0 -0
  175. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/vec_dbs/item.py +0 -0
  176. {memoryos-0.2.2 → memoryos-1.0.0}/src/memos/vec_dbs/qdrant.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: MemoryOS
3
- Version: 0.2.2
3
+ Version: 1.0.0
4
4
  Summary: Intelligence Begins with Memory
5
5
  License: Apache-2.0
6
6
  Keywords: memory,llm,language model,memoryOS,agent,kv cache,lora
@@ -310,6 +310,11 @@ MemOS is licensed under the [Apache 2.0 License](./LICENSE).
310
310
 
311
311
  Stay up to date with the latest MemOS announcements, releases, and community highlights.
312
312
 
313
+
314
+ - **2025-08-07** - 🎉 *MemOS v1.0.0 (MemCube Release)*: First MemCube with word game demo, LongMemEval evaluation, BochaAISearchRetriever integration, NebulaGraph support, enhanced search capabilities, and official Playground launch.
315
+ - **2025-07-29** – 🎉 *MemOS v0.2.2 (Nebula Update)*: Internet search+Nebula DB integration, refactored memory scheduler, KV Cache stress tests, MemCube Cookbook release (CN/EN), and 4b/1.7b/0.6b memory ops models.
316
+ - **2025-07-21** – 🎉 *MemOS v0.2.1 (Neo Release)*: Lightweight Neo version with plaintext+KV Cache functionality, Docker/multi-tenant support, MCP expansion, and new Cookbook/Mud game examples.
317
+ - **2025-07-11** – 🎉 *MemOS v0.2.0 (Cross-Platform)*: Added doc search/bilingual UI, MemReader-4B (local deploy), full Win/Mac/Linux support, and playground end-to-end connection.
313
318
  - **2025-07-07** – 🎉 *MemOS 1.0 (Stellar) Preview Release*: A SOTA Memory OS for LLMs is now open-sourced.
314
319
  - **2025-07-04** – 🎉 *MemOS Paper Released*: [MemOS: A Memory OS for AI System](https://arxiv.org/abs/2507.03724) was published on arXiv.
315
320
  - **2025-05-28** – 🎉 *Short Paper Uploaded*: [MemOS: An Operating System for Memory-Augmented Generation (MAG) in Large Language Models](https://arxiv.org/abs/2505.22101) was published on arXiv.
@@ -251,6 +251,11 @@ MemOS is licensed under the [Apache 2.0 License](./LICENSE).
251
251
 
252
252
  Stay up to date with the latest MemOS announcements, releases, and community highlights.
253
253
 
254
+
255
+ - **2025-08-07** - 🎉 *MemOS v1.0.0 (MemCube Release)*: First MemCube with word game demo, LongMemEval evaluation, BochaAISearchRetriever integration, NebulaGraph support, enhanced search capabilities, and official Playground launch.
256
+ - **2025-07-29** – 🎉 *MemOS v0.2.2 (Nebula Update)*: Internet search+Nebula DB integration, refactored memory scheduler, KV Cache stress tests, MemCube Cookbook release (CN/EN), and 4b/1.7b/0.6b memory ops models.
257
+ - **2025-07-21** – 🎉 *MemOS v0.2.1 (Neo Release)*: Lightweight Neo version with plaintext+KV Cache functionality, Docker/multi-tenant support, MCP expansion, and new Cookbook/Mud game examples.
258
+ - **2025-07-11** – 🎉 *MemOS v0.2.0 (Cross-Platform)*: Added doc search/bilingual UI, MemReader-4B (local deploy), full Win/Mac/Linux support, and playground end-to-end connection.
254
259
  - **2025-07-07** – 🎉 *MemOS 1.0 (Stellar) Preview Release*: A SOTA Memory OS for LLMs is now open-sourced.
255
260
  - **2025-07-04** – 🎉 *MemOS Paper Released*: [MemOS: A Memory OS for AI System](https://arxiv.org/abs/2507.03724) was published on arXiv.
256
261
  - **2025-05-28** – 🎉 *Short Paper Uploaded*: [MemOS: An Operating System for Memory-Augmented Generation (MAG) in Large Language Models](https://arxiv.org/abs/2505.22101) was published on arXiv.
@@ -4,7 +4,7 @@
4
4
  ##############################################################################
5
5
 
6
6
  name = "MemoryOS"
7
- version = "0.2.2"
7
+ version = "1.0.0"
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__ = "0.2.2"
1
+ __version__ = "1.0.0"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
@@ -100,9 +100,9 @@ class APIConfig:
100
100
  "backend": "universal_api",
101
101
  "config": {
102
102
  "provider": os.getenv("MOS_EMBEDDER_PROVIDER", "openai"),
103
- "api_key": os.getenv("OPENAI_API_KEY", "sk-xxxx"),
103
+ "api_key": os.getenv("MOS_EMBEDDER_API_KEY", "sk-xxxx"),
104
104
  "model_name_or_path": os.getenv("MOS_EMBEDDER_MODEL", "text-embedding-3-large"),
105
- "base_url": os.getenv("OPENAI_API_BASE", "http://openai.com"),
105
+ "base_url": os.getenv("MOS_EMBEDDER_API_BASE", "http://openai.com"),
106
106
  },
107
107
  }
108
108
  else: # ollama
@@ -120,10 +120,9 @@ class APIConfig:
120
120
  def get_internet_config() -> dict[str, Any]:
121
121
  """Get embedder configuration."""
122
122
  return {
123
- "backend": "xinyu",
123
+ "backend": "bocha",
124
124
  "config": {
125
- "api_key": os.getenv("XINYU_API_KEY"),
126
- "search_engine_id": os.getenv("XINYU_SEARCH_ENGINE_ID"),
125
+ "api_key": os.getenv("BOCHA_API_KEY"),
127
126
  "max_results": 15,
128
127
  "num_per_request": 10,
129
128
  "reader": {
@@ -137,7 +136,7 @@ class APIConfig:
137
136
  "max_tokens": 5000,
138
137
  "top_p": 0.95,
139
138
  "top_k": 20,
140
- "api_key": "EMPTY",
139
+ "api_key": os.getenv("MEMRADER_API_KEY", "EMPTY"),
141
140
  "api_base": os.getenv("MEMRADER_API_BASE"),
142
141
  "remove_think_prefix": True,
143
142
  "extra_body": {"chat_template_kwargs": {"enable_thinking": False}},
@@ -252,7 +251,6 @@ class APIConfig:
252
251
  "backend": "general_scheduler",
253
252
  "config": {
254
253
  "top_k": int(os.getenv("MOS_SCHEDULER_TOP_K", "10")),
255
- "top_n": int(os.getenv("MOS_SCHEDULER_TOP_N", "5")),
256
254
  "act_mem_update_interval": int(
257
255
  os.getenv("MOS_SCHEDULER_ACT_MEM_UPDATE_INTERVAL", "300")
258
256
  ),
@@ -267,7 +265,7 @@ class APIConfig:
267
265
  "MOS_SCHEDULER_ENABLE_PARALLEL_DISPATCH", "true"
268
266
  ).lower()
269
267
  == "true",
270
- "enable_act_memory_update": True,
268
+ "enable_activation_memory": True,
271
269
  },
272
270
  }
273
271
 
@@ -122,7 +122,7 @@ def set_trace_id_getter(getter: TraceIdGetter) -> None:
122
122
  Set a custom trace_id getter function.
123
123
 
124
124
  This allows the logging system to retrieve trace_id without importing
125
- API-specific modules.
125
+ API-specific general_modules.
126
126
  """
127
127
  global _trace_id_getter
128
128
  _trace_id_getter = getter
@@ -1,4 +1,5 @@
1
1
  import logging
2
+ import os
2
3
 
3
4
  from fastapi import Depends, Header, Request
4
5
 
@@ -24,6 +25,13 @@ def get_trace_id_from_header(
24
25
  return g_trace_id or x_trace_id or trace_id
25
26
 
26
27
 
28
+ def generate_trace_id() -> str:
29
+ """
30
+ Get a random trace_id.
31
+ """
32
+ return os.urandom(16).hex()
33
+
34
+
27
35
  def get_request_context(
28
36
  request: Request, trace_id: str | None = Depends(get_trace_id_from_header)
29
37
  ) -> RequestContext:
@@ -57,6 +65,9 @@ def get_g_object(trace_id: str | None = Depends(get_trace_id_from_header)) -> G:
57
65
  This creates a RequestContext and sets it globally for access
58
66
  throughout the request lifecycle.
59
67
  """
68
+ if trace_id is None:
69
+ trace_id = generate_trace_id()
70
+
60
71
  g = RequestContext(trace_id=trace_id)
61
72
  set_request_context(g)
62
73
  logger.info(f"Request g object created with trace_id: {g.trace_id}")
@@ -55,6 +55,18 @@ class XinyuSearchConfig(BaseInternetRetrieverConfig):
55
55
  )
56
56
 
57
57
 
58
+ class BochaSearchConfig(BaseInternetRetrieverConfig):
59
+ """Configuration class for Bocha Search API."""
60
+
61
+ max_results: int = Field(default=20, description="Maximum number of results to retrieve")
62
+ num_per_request: int = Field(default=10, description="Number of results per API request")
63
+ reader: MemReaderConfigFactory = Field(
64
+ ...,
65
+ default_factory=MemReaderConfigFactory,
66
+ description="Reader configuration",
67
+ )
68
+
69
+
58
70
  class InternetRetrieverConfigFactory(BaseConfig):
59
71
  """Factory class for creating internet retriever configurations."""
60
72
 
@@ -69,6 +81,7 @@ class InternetRetrieverConfigFactory(BaseConfig):
69
81
  "google": GoogleCustomSearchConfig,
70
82
  "bing": BingSearchConfig,
71
83
  "xinyu": XinyuSearchConfig,
84
+ "bocha": BochaSearchConfig,
72
85
  }
73
86
 
74
87
  @field_validator("backend")
@@ -6,7 +6,7 @@ from typing import Any, ClassVar
6
6
  from pydantic import ConfigDict, Field, field_validator, model_validator
7
7
 
8
8
  from memos.configs.base import BaseConfig
9
- from memos.mem_scheduler.modules.misc import DictConversionMixin
9
+ from memos.mem_scheduler.general_modules.misc import DictConversionMixin
10
10
  from memos.mem_scheduler.schemas.general_schemas import (
11
11
  BASE_DIR,
12
12
  DEFAULT_ACT_MEM_DUMP_PATH,
@@ -21,8 +21,6 @@ class BaseSchedulerConfig(BaseConfig):
21
21
  top_k: int = Field(
22
22
  default=10, description="Number of top candidates to consider in initial retrieval"
23
23
  )
24
- # TODO: The 'top_n' field is deprecated and will be removed in future versions.
25
- top_n: int = Field(default=5, description="Number of final results to return after processing")
26
24
  enable_parallel_dispatch: bool = Field(
27
25
  default=True, description="Whether to enable parallel message processing using thread pool"
28
26
  )
@@ -45,6 +43,7 @@ class BaseSchedulerConfig(BaseConfig):
45
43
 
46
44
 
47
45
  class GeneralSchedulerConfig(BaseSchedulerConfig):
46
+ model_config = ConfigDict(extra="ignore", strict=True)
48
47
  act_mem_update_interval: int | None = Field(
49
48
  default=300, description="Interval in seconds for updating activation memory"
50
49
  )
@@ -55,9 +54,15 @@ class GeneralSchedulerConfig(BaseSchedulerConfig):
55
54
  default=DEFAULT_ACT_MEM_DUMP_PATH, # Replace with DEFAULT_ACT_MEM_DUMP_PATH
56
55
  description="File path for dumping activation memory",
57
56
  )
58
- enable_act_memory_update: bool = Field(
57
+ enable_activation_memory: bool = Field(
59
58
  default=False, description="Whether to enable automatic activation memory updates"
60
59
  )
60
+ working_mem_monitor_capacity: int = Field(
61
+ default=30, description="Capacity of the working memory monitor"
62
+ )
63
+ activation_mem_monitor_capacity: int = Field(
64
+ default=20, description="Capacity of the activation memory monitor"
65
+ )
61
66
 
62
67
 
63
68
  class SchedulerConfigFactory(BaseConfig):
@@ -137,29 +142,46 @@ class AuthConfig(BaseConfig, DictConversionMixin):
137
142
  )
138
143
 
139
144
  @classmethod
140
- def from_local_yaml(cls, config_path: str | None = None) -> "AuthConfig":
145
+ def from_local_config(cls, config_path: str | Path | None = None) -> "AuthConfig":
141
146
  """
142
- Load configuration from YAML file
147
+ Load configuration from either a YAML or JSON file based on file extension.
148
+
149
+ Automatically detects file type (YAML or JSON) from the file extension
150
+ and uses the appropriate parser. If no path is provided, uses the default
151
+ configuration path (YAML) or its JSON counterpart.
143
152
 
144
153
  Args:
145
- config_path: Path to YAML configuration file
154
+ config_path: Optional path to configuration file.
155
+ If not provided, uses default configuration path.
146
156
 
147
157
  Returns:
148
- AuthConfig instance
158
+ AuthConfig instance populated with data from the configuration file.
149
159
 
150
160
  Raises:
151
- FileNotFoundError: If config file doesn't exist
152
- ValueError: If YAML parsing or validation fails
161
+ FileNotFoundError: If the specified or default configuration file does not exist.
162
+ ValueError: If file extension is not .yaml/.yml or .json, or if parsing fails.
153
163
  """
154
-
164
+ # Determine config path
155
165
  if config_path is None:
156
166
  config_path = cls.default_config_path
157
167
 
158
- # Check file exists
159
- if not Path(config_path).exists():
160
- raise FileNotFoundError(f"Config file not found: {config_path}")
161
-
162
- return cls.from_yaml_file(yaml_path=config_path)
168
+ # Validate file existence
169
+ config_path_obj = Path(config_path)
170
+ if not config_path_obj.exists():
171
+ raise FileNotFoundError(f"Configuration file not found: {config_path}")
172
+
173
+ # Get file extension and determine parser
174
+ file_ext = config_path_obj.suffix.lower()
175
+
176
+ if file_ext in (".yaml", ".yml"):
177
+ return cls.from_yaml_file(yaml_path=str(config_path_obj))
178
+ elif file_ext == ".json":
179
+ return cls.from_json_file(json_path=str(config_path_obj))
180
+ else:
181
+ raise ValueError(
182
+ f"Unsupported file format: {file_ext}. "
183
+ "Please use YAML (.yaml, .yml) or JSON (.json) files."
184
+ )
163
185
 
164
186
  def set_openai_config_to_environment(self):
165
187
  # Set environment variables
@@ -70,15 +70,27 @@ class BaseGraphDB(ABC):
70
70
 
71
71
  # Graph Query & Reasoning
72
72
  @abstractmethod
73
- def get_node(self, id: str) -> dict[str, Any] | None:
73
+ def get_node(self, id: str, include_embedding: bool = False) -> dict[str, Any] | None:
74
74
  """
75
75
  Retrieve the metadata and content of a node.
76
76
  Args:
77
77
  id: Node identifier.
78
+ include_embedding: with/without embedding
78
79
  Returns:
79
80
  Dictionary of node fields, or None if not found.
80
81
  """
81
82
 
83
+ @abstractmethod
84
+ def get_nodes(self, id: str, include_embedding: bool = False) -> dict[str, Any] | None:
85
+ """
86
+ Retrieve the metadata and memory of a list of nodes.
87
+ Args:
88
+ ids: List of Node identifier.
89
+ include_embedding: with/without embedding
90
+ Returns:
91
+ list[dict]: Parsed node records containing 'id', 'memory', and 'metadata'.
92
+ """
93
+
82
94
  @abstractmethod
83
95
  def get_neighbors(
84
96
  self, id: str, type: str, direction: Literal["in", "out", "both"] = "out"
@@ -163,7 +175,9 @@ class BaseGraphDB(ABC):
163
175
  """
164
176
 
165
177
  @abstractmethod
166
- def get_structure_optimization_candidates(self, scope: str) -> list[dict]:
178
+ def get_structure_optimization_candidates(
179
+ self, scope: str, include_embedding: bool = False
180
+ ) -> list[dict]:
167
181
  """
168
182
  Find nodes that are likely candidates for structure optimization:
169
183
  - Isolated nodes, nodes with empty background, or nodes with exactly one child.
@@ -205,7 +219,7 @@ class BaseGraphDB(ABC):
205
219
  """
206
220
 
207
221
  @abstractmethod
208
- def export_graph(self) -> dict[str, Any]:
222
+ def export_graph(self, include_embedding: bool = False) -> dict[str, Any]:
209
223
  """
210
224
  Export the entire graph as a serializable dictionary.
211
225
 
@@ -221,3 +235,16 @@ class BaseGraphDB(ABC):
221
235
  Args:
222
236
  data: A dictionary containing all nodes and edges to be loaded.
223
237
  """
238
+
239
+ @abstractmethod
240
+ def get_all_memory_items(self, scope: str, include_embedding: bool = False) -> list[dict]:
241
+ """
242
+ Retrieve all memory items of a specific memory_type.
243
+
244
+ Args:
245
+ scope (str): Must be one of 'WorkingMemory', 'LongTermMemory', or 'UserMemory'.
246
+ include_embedding: with/without embedding
247
+
248
+ Returns:
249
+ list[dict]: Full list of memory items under this scope.
250
+ """