MemoryOS 2.0.30__tar.gz → 2.0.32__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 (387) hide show
  1. {memoryos-2.0.30 → memoryos-2.0.32}/PKG-INFO +69 -18
  2. {memoryos-2.0.30 → memoryos-2.0.32}/README.md +68 -17
  3. {memoryos-2.0.30 → memoryos-2.0.32}/pyproject.toml +1 -1
  4. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/__init__.py +1 -1
  5. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/config.py +22 -0
  6. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/chat_handler.py +2 -1
  7. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/component_init.py +9 -1
  8. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/config_builders.py +20 -0
  9. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/routers/server_router.py +2 -1
  10. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/mem_scheduler.py +19 -4
  11. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/embedders/factory.py +2 -0
  12. memoryos-2.0.32/src/memos/llms/qwen.py +30 -0
  13. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +13 -6
  14. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +1 -6
  15. memoryos-2.0.30/src/memos/llms/qwen.py +0 -13
  16. {memoryos-2.0.30 → memoryos-2.0.32}/LICENSE +0 -0
  17. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/__init__.py +0 -0
  18. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/client.py +0 -0
  19. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/context/dependencies.py +0 -0
  20. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/exceptions.py +0 -0
  21. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/__init__.py +0 -0
  22. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/add_handler.py +0 -0
  23. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/base_handler.py +0 -0
  24. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/cube_handler.py +0 -0
  25. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/feedback_handler.py +0 -0
  26. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/formatters_handler.py +0 -0
  27. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/memory_handler.py +0 -0
  28. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/scheduler_handler.py +0 -0
  29. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/search_handler.py +0 -0
  30. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/handlers/suggestion_handler.py +0 -0
  31. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/lifecycle.py +0 -0
  32. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/mcp_serve.py +0 -0
  33. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/middleware/__init__.py +0 -0
  34. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/middleware/auth.py +0 -0
  35. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/middleware/rate_limit.py +0 -0
  36. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/middleware/request_context.py +0 -0
  37. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/product_models.py +0 -0
  38. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/routers/__init__.py +0 -0
  39. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/routers/admin_router.py +0 -0
  40. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/server_api.py +0 -0
  41. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/server_api_ext.py +0 -0
  42. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/utils/__init__.py +0 -0
  43. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/api/utils/api_keys.py +0 -0
  44. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/chunkers/__init__.py +0 -0
  45. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/chunkers/base.py +0 -0
  46. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/chunkers/charactertext_chunker.py +0 -0
  47. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/chunkers/factory.py +0 -0
  48. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/chunkers/markdown_chunker.py +0 -0
  49. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/chunkers/sentence_chunker.py +0 -0
  50. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/chunkers/simple_chunker.py +0 -0
  51. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/cli.py +0 -0
  52. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/__init__.py +0 -0
  53. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/base.py +0 -0
  54. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/chunker.py +0 -0
  55. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/embedder.py +0 -0
  56. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/graph_db.py +0 -0
  57. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/internet_retriever.py +0 -0
  58. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/llm.py +0 -0
  59. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/mem_agent.py +0 -0
  60. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/mem_chat.py +0 -0
  61. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/mem_cube.py +0 -0
  62. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/mem_os.py +0 -0
  63. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/mem_reader.py +0 -0
  64. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/mem_user.py +0 -0
  65. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/memory.py +0 -0
  66. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/parser.py +0 -0
  67. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/reranker.py +0 -0
  68. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/utils.py +0 -0
  69. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/configs/vec_db.py +0 -0
  70. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/context/context.py +0 -0
  71. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dependency.py +0 -0
  72. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/deprecation.py +0 -0
  73. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/README.md +0 -0
  74. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/__init__.py +0 -0
  75. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/contextualization.py +0 -0
  76. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/enrichment.py +0 -0
  77. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/hook_defs.py +0 -0
  78. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/hooks.py +0 -0
  79. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/maintenance.py +0 -0
  80. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/pipeline/__init__.py +0 -0
  81. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/pipeline/base.py +0 -0
  82. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/pipeline/diary.py +0 -0
  83. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/pipeline/motive.py +0 -0
  84. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/pipeline/persistence.py +0 -0
  85. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/pipeline/reasoning.py +0 -0
  86. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/pipeline/recall.py +0 -0
  87. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/plugin.py +0 -0
  88. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/prompts/__init__.py +0 -0
  89. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/prompts/context_binding_prompt.py +0 -0
  90. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/prompts/context_summary_prompt.py +0 -0
  91. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/prompts/motive_prompt.py +0 -0
  92. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/prompts/reasoning_prompt.py +0 -0
  93. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/routers/__init__.py +0 -0
  94. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/routers/diary_router.py +0 -0
  95. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/routers/trigger_router.py +0 -0
  96. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/routes.py +0 -0
  97. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/search.py +0 -0
  98. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/signal_store.py +0 -0
  99. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/dream/types.py +0 -0
  100. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/embedders/__init__.py +0 -0
  101. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/embedders/ark.py +0 -0
  102. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/embedders/base.py +0 -0
  103. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/embedders/cache.py +0 -0
  104. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/embedders/ollama.py +0 -0
  105. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/embedders/sentence_transformer.py +0 -0
  106. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/embedders/universal_api.py +0 -0
  107. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/exceptions.py +0 -0
  108. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/extras/__init__.py +0 -0
  109. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/graph_dbs/__init__.py +0 -0
  110. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/graph_dbs/base.py +0 -0
  111. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/graph_dbs/factory.py +0 -0
  112. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/graph_dbs/item.py +0 -0
  113. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/graph_dbs/neo4j.py +0 -0
  114. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/graph_dbs/neo4j_community.py +0 -0
  115. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/graph_dbs/polardb.py +0 -0
  116. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/graph_dbs/postgres.py +0 -0
  117. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/hello_world.py +0 -0
  118. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/__init__.py +0 -0
  119. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/base.py +0 -0
  120. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/deepseek.py +0 -0
  121. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/factory.py +0 -0
  122. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/hf.py +0 -0
  123. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/hf_singleton.py +0 -0
  124. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/minimax.py +0 -0
  125. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/ollama.py +0 -0
  126. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/openai.py +0 -0
  127. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/openai_new.py +0 -0
  128. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/utils.py +0 -0
  129. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/llms/vllm.py +0 -0
  130. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/log.py +0 -0
  131. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_agent/base.py +0 -0
  132. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_agent/deepsearch_agent.py +0 -0
  133. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_agent/factory.py +0 -0
  134. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_chat/__init__.py +0 -0
  135. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_chat/base.py +0 -0
  136. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_chat/factory.py +0 -0
  137. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_chat/simple.py +0 -0
  138. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_cube/__init__.py +0 -0
  139. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_cube/base.py +0 -0
  140. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_cube/general.py +0 -0
  141. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_cube/navie.py +0 -0
  142. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_cube/utils.py +0 -0
  143. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_feedback/base.py +0 -0
  144. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_feedback/feedback.py +0 -0
  145. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_feedback/simple_feedback.py +0 -0
  146. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_feedback/utils.py +0 -0
  147. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_os/core.py +0 -0
  148. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_os/main.py +0 -0
  149. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_os/utils/default_config.py +0 -0
  150. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_os/utils/format_utils.py +0 -0
  151. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_os/utils/reference_utils.py +0 -0
  152. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/__init__.py +0 -0
  153. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/base.py +0 -0
  154. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/factory.py +0 -0
  155. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/memory.py +0 -0
  156. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/multi_modal_struct.py +0 -0
  157. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
  158. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
  159. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
  160. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
  161. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
  162. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
  163. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
  164. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
  165. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
  166. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
  167. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
  168. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
  169. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +0 -0
  170. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +0 -0
  171. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/read_skill_memory/upload_skill_memory.py +0 -0
  172. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/simple_struct.py +0 -0
  173. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/strategy_struct.py +0 -0
  174. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_reader/utils.py +0 -0
  175. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/__init__.py +0 -0
  176. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/__init__.py +0 -0
  177. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
  178. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
  179. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
  180. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
  181. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
  182. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/base_mixins/queue_ops.py +0 -0
  183. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +0 -0
  184. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/base_scheduler.py +0 -0
  185. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/__init__.py +0 -0
  186. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
  187. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/base.py +0 -0
  188. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
  189. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
  190. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
  191. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/general_scheduler.py +0 -0
  192. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
  193. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
  194. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
  195. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
  196. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
  197. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
  198. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
  199. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
  200. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
  201. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
  202. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/monitors/__init__.py +0 -0
  203. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
  204. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
  205. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
  206. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
  207. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/__init__.py +0 -0
  208. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
  209. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
  210. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
  211. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
  212. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  213. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/__init__.py +0 -0
  214. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
  215. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
  216. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
  217. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
  218. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
  219. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
  220. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/__init__.py +0 -0
  221. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
  222. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
  223. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +0 -0
  224. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
  225. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
  226. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
  227. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
  228. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_dream_handler.py +0 -0
  229. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +0 -0
  230. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
  231. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
  232. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
  233. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
  234. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +0 -0
  235. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
  236. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +0 -0
  237. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/registry.py +0 -0
  238. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +0 -0
  239. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/__init__.py +0 -0
  240. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
  241. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
  242. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
  243. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  244. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/metrics.py +0 -0
  245. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
  246. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
  247. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
  248. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/webservice_modules/__init__.py +0 -0
  249. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
  250. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
  251. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_user/factory.py +0 -0
  252. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  253. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_user/mysql_user_manager.py +0 -0
  254. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_user/persistent_factory.py +0 -0
  255. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_user/persistent_user_manager.py +0 -0
  256. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
  257. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/mem_user/user_manager.py +0 -0
  258. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/__init__.py +0 -0
  259. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/activation/__init__.py +0 -0
  260. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/activation/base.py +0 -0
  261. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/activation/item.py +0 -0
  262. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/activation/kv.py +0 -0
  263. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/activation/vllmkv.py +0 -0
  264. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/base.py +0 -0
  265. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/factory.py +0 -0
  266. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/parametric/__init__.py +0 -0
  267. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/parametric/base.py +0 -0
  268. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/parametric/item.py +0 -0
  269. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/parametric/lora.py +0 -0
  270. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/__init__.py +0 -0
  271. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/base.py +0 -0
  272. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/general.py +0 -0
  273. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/item.py +0 -0
  274. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/naive.py +0 -0
  275. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/__init__.py +0 -0
  276. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
  277. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
  278. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
  279. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
  280. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
  281. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
  282. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
  283. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/preference.py +0 -0
  284. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/simple_preference.py +0 -0
  285. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/simple_tree.py +0 -0
  286. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree.py +0 -0
  287. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/__init__.py +0 -0
  288. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/__init__.py +0 -0
  289. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
  290. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/manager.py +0 -0
  291. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
  292. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
  293. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/__init__.py +0 -0
  294. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
  295. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
  296. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
  297. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  298. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
  299. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  300. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
  301. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
  302. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  303. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +0 -0
  304. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +0 -0
  305. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
  306. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
  307. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
  308. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  309. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  310. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memos_tools/lockfree_dict.py +0 -0
  311. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memos_tools/notification_service.py +0 -0
  312. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memos_tools/notification_utils.py +0 -0
  313. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memos_tools/singleton.py +0 -0
  314. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memos_tools/thread_safe_dict.py +0 -0
  315. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
  316. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/multi_mem_cube/__init__.py +0 -0
  317. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/multi_mem_cube/composite_cube.py +0 -0
  318. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/multi_mem_cube/single_cube.py +0 -0
  319. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/multi_mem_cube/views.py +0 -0
  320. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/parsers/__init__.py +0 -0
  321. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/parsers/base.py +0 -0
  322. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/parsers/factory.py +0 -0
  323. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/parsers/markitdown.py +0 -0
  324. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/plugins/README.md +0 -0
  325. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/plugins/__init__.py +0 -0
  326. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/plugins/base.py +0 -0
  327. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/plugins/component_bootstrap.py +0 -0
  328. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/plugins/hook_defs.py +0 -0
  329. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/plugins/hooks.py +0 -0
  330. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/plugins/manager.py +0 -0
  331. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/__init__.py +0 -0
  332. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/base.py +0 -0
  333. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/concat.py +0 -0
  334. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/cosine_local.py +0 -0
  335. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/factory.py +0 -0
  336. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/http_bge.py +0 -0
  337. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/http_bge_strategy.py +0 -0
  338. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/noop.py +0 -0
  339. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/strategies/__init__.py +0 -0
  340. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/strategies/base.py +0 -0
  341. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/strategies/concat_background.py +0 -0
  342. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/strategies/concat_docsource.py +0 -0
  343. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/strategies/dialogue_common.py +0 -0
  344. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/strategies/factory.py +0 -0
  345. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/strategies/single_turn.py +0 -0
  346. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
  347. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/search/__init__.py +0 -0
  348. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/search/search_service.py +0 -0
  349. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/settings.py +0 -0
  350. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/__init__.py +0 -0
  351. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/advanced_search_prompts.py +0 -0
  352. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/cloud_service_prompt.py +0 -0
  353. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/instruction_completion.py +0 -0
  354. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/mem_agent_prompts.py +0 -0
  355. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/mem_feedback_prompts.py +0 -0
  356. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/mem_reader_prompts.py +0 -0
  357. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
  358. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/mem_scheduler_prompts.py +0 -0
  359. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/mem_search_prompts.py +0 -0
  360. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/mos_prompts.py +0 -0
  361. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/prefer_complete_prompt.py +0 -0
  362. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/skill_mem_prompt.py +0 -0
  363. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/tool_mem_prompts.py +0 -0
  364. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/templates/tree_reorganize_prompts.py +0 -0
  365. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/__init__.py +0 -0
  366. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/general_types.py +0 -0
  367. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
  368. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
  369. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
  370. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
  371. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
  372. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
  373. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
  374. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
  375. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
  376. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
  377. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
  378. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
  379. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
  380. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
  381. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/utils.py +0 -0
  382. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/vec_dbs/__init__.py +0 -0
  383. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/vec_dbs/base.py +0 -0
  384. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/vec_dbs/factory.py +0 -0
  385. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/vec_dbs/item.py +0 -0
  386. {memoryos-2.0.30 → memoryos-2.0.32}/src/memos/vec_dbs/milvus.py +0 -0
  387. {memoryos-2.0.30 → memoryos-2.0.32}/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.30
3
+ Version: 2.0.32
4
4
  Summary: Intelligence Begins with Memory
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -110,9 +110,16 @@ Description-Content-Type: text/markdown
110
110
 
111
111
 
112
112
  <div align="center">
113
- <img width="1660" height="664" alt="MemOS Plugin Banner" src="https://github.com/user-attachments/assets/9d15dde2-196e-4f71-a364-dd5a33062117" />
113
+ <img width="1660" alt="MemOS agent ecosystem: OpenClaw, Hermes, and DeepSeek Harness" src="./assets/readme/memos-agent-ecosystem.png" />
114
114
  </div>
115
115
 
116
+ > [!TIP]
117
+ > **New: Connect MemOS to DeepSeek Harness (`dsh`)**
118
+ >
119
+ > Add automatic recall, background capture, hybrid retrieval, and a local Memory Viewer to DeepSeek Harness—powered by the same MemOS core used across agent ecosystems.
120
+ >
121
+ > **[Get started →](#memos-plugin)**
122
+
116
123
  ---
117
124
 
118
125
  ## 👾 MemOS: Memory Operating System for LLM & AI Agents
@@ -130,6 +137,9 @@ Description-Content-Type: text/markdown
130
137
 
131
138
  ### News
132
139
 
140
+ - **2026-08-17** · 🐋 **MemOS Connects with DeepSeek Harness**
141
+ MemOS now brings persistent memory to **DeepSeek Harness** through both local and cloud plugins. DSH can automatically recall relevant context before a task and retain new experience after a successful turn, without modifying its core.
142
+
133
143
  - **2026-07-02** · 🏆 **MemOS Advances Agent and User Memory Benchmarks**
134
144
  With MemOS, **OpenClaw** improves average task completion from **36.63% to 50.87%** across five agent tasks. MemOS also achieves **88.83 on LoCoMo** and **89.20 on LongMemEval**, and leads in **OmniMemEval**, a unified evaluation of 14 commercial memory products across ten datasets.
135
145
 
@@ -138,7 +148,7 @@ Description-Content-Type: text/markdown
138
148
 
139
149
  - **2026-04-10** · 👧🏻 **MemOS Hermes Agent Local Plugin**
140
150
  Official Hermes Agent memory plugins launched: Hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution, multi-agent collaboration. 100% local, zero cloud dependency.
141
-
151
+
142
152
  - **2026-03-08** · 🦞 **MemOS OpenClaw Plugin — Cloud & Local**
143
153
  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.
144
154
 
@@ -177,12 +187,12 @@ MemOS gives AI agents long-term memory. Common uses:
177
187
  MemOS is built around four entry points. Pick the one that matches your scenario.
178
188
 
179
189
 
180
- | | Cloud API | Self-Host | OpenClaw Cloud Plugin | Local Plugin |
181
- | ------------ | ----------------------- | ------------------ | ------------------------ | ------------------------------- |
182
- | Best for | Your app, fully managed | Teams on own infra | OpenClaw users, zero ops | Hermes/OpenClaw, 100% on-device |
183
- | Setup | Get an API key | docker compose up | openclaw plugins install | npm install + config |
184
- | Infra needed | None (hosted) | Neo4j + Qdrant | None (uses MemOS Cloud) | None (local SQLite) |
185
- | Data lives | MemOS Cloud | Your servers | MemOS Cloud | Your machine |
190
+ | | Cloud API | Self-Host | MemOS Cloud Plugin | Local Plugin |
191
+ | ------------ | ----------------------- | ------------------ | ------------------------ | ------------------------------------------------ |
192
+ | Best for | Your app, fully managed | Teams on own infra | OpenClaw users, zero ops | DeepSeek Harness, Hermes, or OpenClaw; on-device |
193
+ | Setup | Get an API key | docker compose up | openclaw plugins install | npm install + agent-specific setup |
194
+ | Infra needed | None (hosted) | Neo4j + Qdrant | None (uses MemOS Cloud) | None (local SQLite) |
195
+ | Data lives | MemOS Cloud | Your servers | MemOS Cloud | Your machine |
186
196
 
187
197
  ### ☁️ Use the Cloud API (Hosted)
188
198
 
@@ -249,7 +259,7 @@ cd src
249
259
  uvicorn memos.api.server_api:app --host 0.0.0.0 --port 8000 --workers 1
250
260
  ```
251
261
 
252
- See `[docker/.env.example](./docker/.env.example)` for all configuration options (LLM provider, embedder, vector DB, graph DB, scheduler). The full deployment guide is at [https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/](https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/).
262
+ See [`docker/.env.example-full`](./docker/.env.example-full) for all configuration options (LLM provider, embedder, vector DB, graph DB, scheduler). The full deployment guide is at [https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/](https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/).
253
263
 
254
264
  **Try the API:**
255
265
 
@@ -283,18 +293,20 @@ res = requests.post(f"{base}/search", headers=headers, data=json.dumps({
283
293
  print(res.json())
284
294
  ```
285
295
 
296
+ <a id="memos-plugin"></a>
297
+
286
298
  ### 🧠 MemOS Plugin: Persistent Memory for Your AI Agents ✨
287
299
 
288
- Your OpenClaw and Hermes Agents now have **the best** memory system choose ***Cloud Service*** or ***Self-hosted*** to get started 🏃🏻
300
+ MemOS gives OpenClaw, Hermes, and DeepSeek Harness a shared local memory core; the managed ***MemOS Cloud Plugin*** is available for OpenClaw and DeepSeek Harness 🏃🏻
289
301
 
290
302
  | 🔌 Plugin | 💡 Core Features | 🧩 Resources |
291
303
  | ------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
292
304
  | 🧠 **[memos-local-plugin 2.0](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin)** | | 🌐 [Website](https://memos-claw.openmem.net/) · 📖 [Docs](https://memos-docs.openmem.net/cn/openclaw/local_plugin) · 🐙 [GitHub](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
293
- | ☁️ **[OpenClaw Cloud Plugin](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin)** | | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
305
+ | ☁️ **[MemOS Cloud Plugin](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin)** | | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
294
306
 
295
- #### 1. OpenClaw Cloud Plugin
307
+ #### 1. MemOS Cloud Plugin
296
308
 
297
- You use OpenClaw and want persistent memory via MemOS Cloud — no infrastructure to run.
309
+ Use MemOS Cloud for persistent memory in OpenClaw or DeepSeek Harness — no infrastructure to run.
298
310
 
299
311
  - **Repo:** [MemTensor/MemOS ·](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin) `apps/MemOS-Cloud-OpenClaw-Plugin`
300
312
  - **NPM:** `[@memtensor/memos-cloud-openclaw-plugin](https://www.npmjs.com/package/@memtensor/memos-cloud-openclaw-plugin)`
@@ -310,16 +322,55 @@ openclaw gateway restart
310
322
 
311
323
  The plugin recalls memories from MemOS Cloud before each agent run and saves new messages back after the run ends.
312
324
 
313
- #### 2. Local Plugin (memos-local-plugin 2.0)
325
+ ##### DeepSeek Harness
326
+
327
+ Connect DeepSeek Harness to MemOS Cloud through its native plugin mechanism. Before the first model step of each user request, the plugin recalls relevant cloud memories; after a successful turn, it saves the new user and assistant messages back to MemOS Cloud.
328
+
329
+ 1. [Create a MemOS API Key](https://memos-dashboard.openmem.net/cn/apikeys/).
330
+ 2. Install the cloud plugin into the default DSH `web` profile:
331
+
332
+ ```bash
333
+ npx @deepseek-ai/dsh plugin --profile web add @memtensor/memos-cloud-dsh-plugin@latest
334
+ ```
335
+
336
+ 3. Add the API Key to `~/.dsh/.credentials.yaml`:
337
+
338
+ ```yaml
339
+ MEMOS_API_KEY: mpg-your-key
340
+ ```
341
+
342
+ 4. Add the minimal plugin configuration to `~/.dsh/settings.yaml`:
314
343
 
315
- You use Hermes Agent or OpenClaw and want 100% on-device memory — nothing leaves your machine.
344
+ ```yaml
345
+ memos-cloud:
346
+ apiKeyEnv: MEMOS_API_KEY
347
+ ```
348
+
349
+ 5. Restart the DSH Web profile:
350
+
351
+ ```bash
352
+ npx @deepseek-ai/dsh web
353
+ ```
354
+
355
+ The cloud plugin is fail-open: a temporary MemOS Cloud outage does not interrupt the current DSH task.
356
+
357
+ #### 2. Local Plugin (OpenClaw, Hermes, and DeepSeek Harness)
358
+
359
+ You use DeepSeek Harness, Hermes Agent, or OpenClaw and want 100% on-device memory — nothing leaves your machine.
316
360
 
317
361
  - **Repo:** [MemTensor/MemOS ·](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin) `apps/memos-local-plugin`
318
362
  - **NPM:** `[@memtensor/memos-local-plugin](https://www.npmjs.com/package/@memtensor/memos-local-plugin)`
319
363
  - **Docs:** [https://memos-docs.openmem.net/cn/openclaw/local_plugin](https://memos-docs.openmem.net/cn/openclaw/local_plugin)
364
+ - **DeepSeek Harness:** [integration details](./apps/memos-local-plugin/adapters/deepseek-harness/README.md)
320
365
  - **Viewer dashboard:** see `apps/memos-local-plugin/viewer/`
321
366
 
322
- Install (macOS / Linux):
367
+ Install for DeepSeek Harness (macOS / Linux):
368
+
369
+ ```bash
370
+ curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh | bash -s -- --agent dsh --profile web
371
+ ```
372
+
373
+ Install for OpenClaw or Hermes (macOS / Linux):
323
374
 
324
375
  ```bash
325
376
  curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh | bash
@@ -331,7 +382,7 @@ Install (Windows PowerShell):
331
382
  irm https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.ps1 -OutFile "$env:TEMP\memos-install.ps1"; powershell -ExecutionPolicy Bypass -File "$env:TEMP\memos-install.ps1"
332
383
  ```
333
384
 
334
- Requires Node.js and an already-installed OpenClaw or Hermes. The installer auto-detects OpenClaw and Hermes, deploys the plugin to the right agent home (`~/.hermes/plugins/` or `~/.openclaw/plugins/`), writes the initial `config.yaml`, and restarts the agent runtime.
385
+ Requires Node.js and an already-installed DeepSeek Harness, OpenClaw, or Hermes. The installer deploys MemOS to the selected agent runtime; the DeepSeek Harness target installs it as an out-of-tree DSH bundle, while the OpenClaw and Hermes targets write the initial `config.yaml` in their respective agent homes.
335
386
 
336
387
  Features: hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution (L1 traces / L2 policies / L3 world model), multi-agent collaboration, local-first SQLite storage.
337
388
 
@@ -26,9 +26,16 @@
26
26
 
27
27
 
28
28
  <div align="center">
29
- <img width="1660" height="664" alt="MemOS Plugin Banner" src="https://github.com/user-attachments/assets/9d15dde2-196e-4f71-a364-dd5a33062117" />
29
+ <img width="1660" alt="MemOS agent ecosystem: OpenClaw, Hermes, and DeepSeek Harness" src="./assets/readme/memos-agent-ecosystem.png" />
30
30
  </div>
31
31
 
32
+ > [!TIP]
33
+ > **New: Connect MemOS to DeepSeek Harness (`dsh`)**
34
+ >
35
+ > Add automatic recall, background capture, hybrid retrieval, and a local Memory Viewer to DeepSeek Harness—powered by the same MemOS core used across agent ecosystems.
36
+ >
37
+ > **[Get started →](#memos-plugin)**
38
+
32
39
  ---
33
40
 
34
41
  ## 👾 MemOS: Memory Operating System for LLM & AI Agents
@@ -46,6 +53,9 @@
46
53
 
47
54
  ### News
48
55
 
56
+ - **2026-08-17** · 🐋 **MemOS Connects with DeepSeek Harness**
57
+ MemOS now brings persistent memory to **DeepSeek Harness** through both local and cloud plugins. DSH can automatically recall relevant context before a task and retain new experience after a successful turn, without modifying its core.
58
+
49
59
  - **2026-07-02** · 🏆 **MemOS Advances Agent and User Memory Benchmarks**
50
60
  With MemOS, **OpenClaw** improves average task completion from **36.63% to 50.87%** across five agent tasks. MemOS also achieves **88.83 on LoCoMo** and **89.20 on LongMemEval**, and leads in **OmniMemEval**, a unified evaluation of 14 commercial memory products across ten datasets.
51
61
 
@@ -54,7 +64,7 @@
54
64
 
55
65
  - **2026-04-10** · 👧🏻 **MemOS Hermes Agent Local Plugin**
56
66
  Official Hermes Agent memory plugins launched: Hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution, multi-agent collaboration. 100% local, zero cloud dependency.
57
-
67
+
58
68
  - **2026-03-08** · 🦞 **MemOS OpenClaw Plugin — Cloud & Local**
59
69
  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.
60
70
 
@@ -93,12 +103,12 @@ MemOS gives AI agents long-term memory. Common uses:
93
103
  MemOS is built around four entry points. Pick the one that matches your scenario.
94
104
 
95
105
 
96
- | | Cloud API | Self-Host | OpenClaw Cloud Plugin | Local Plugin |
97
- | ------------ | ----------------------- | ------------------ | ------------------------ | ------------------------------- |
98
- | Best for | Your app, fully managed | Teams on own infra | OpenClaw users, zero ops | Hermes/OpenClaw, 100% on-device |
99
- | Setup | Get an API key | docker compose up | openclaw plugins install | npm install + config |
100
- | Infra needed | None (hosted) | Neo4j + Qdrant | None (uses MemOS Cloud) | None (local SQLite) |
101
- | Data lives | MemOS Cloud | Your servers | MemOS Cloud | Your machine |
106
+ | | Cloud API | Self-Host | MemOS Cloud Plugin | Local Plugin |
107
+ | ------------ | ----------------------- | ------------------ | ------------------------ | ------------------------------------------------ |
108
+ | Best for | Your app, fully managed | Teams on own infra | OpenClaw users, zero ops | DeepSeek Harness, Hermes, or OpenClaw; on-device |
109
+ | Setup | Get an API key | docker compose up | openclaw plugins install | npm install + agent-specific setup |
110
+ | Infra needed | None (hosted) | Neo4j + Qdrant | None (uses MemOS Cloud) | None (local SQLite) |
111
+ | Data lives | MemOS Cloud | Your servers | MemOS Cloud | Your machine |
102
112
 
103
113
  ### ☁️ Use the Cloud API (Hosted)
104
114
 
@@ -165,7 +175,7 @@ cd src
165
175
  uvicorn memos.api.server_api:app --host 0.0.0.0 --port 8000 --workers 1
166
176
  ```
167
177
 
168
- See `[docker/.env.example](./docker/.env.example)` for all configuration options (LLM provider, embedder, vector DB, graph DB, scheduler). The full deployment guide is at [https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/](https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/).
178
+ See [`docker/.env.example-full`](./docker/.env.example-full) for all configuration options (LLM provider, embedder, vector DB, graph DB, scheduler). The full deployment guide is at [https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/](https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/).
169
179
 
170
180
  **Try the API:**
171
181
 
@@ -199,18 +209,20 @@ res = requests.post(f"{base}/search", headers=headers, data=json.dumps({
199
209
  print(res.json())
200
210
  ```
201
211
 
212
+ <a id="memos-plugin"></a>
213
+
202
214
  ### 🧠 MemOS Plugin: Persistent Memory for Your AI Agents ✨
203
215
 
204
- Your OpenClaw and Hermes Agents now have **the best** memory system choose ***Cloud Service*** or ***Self-hosted*** to get started 🏃🏻
216
+ MemOS gives OpenClaw, Hermes, and DeepSeek Harness a shared local memory core; the managed ***MemOS Cloud Plugin*** is available for OpenClaw and DeepSeek Harness 🏃🏻
205
217
 
206
218
  | 🔌 Plugin | 💡 Core Features | 🧩 Resources |
207
219
  | ------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
208
220
  | 🧠 **[memos-local-plugin 2.0](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin)** | | 🌐 [Website](https://memos-claw.openmem.net/) · 📖 [Docs](https://memos-docs.openmem.net/cn/openclaw/local_plugin) · 🐙 [GitHub](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
209
- | ☁️ **[OpenClaw Cloud Plugin](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin)** | | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
221
+ | ☁️ **[MemOS Cloud Plugin](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin)** | | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
210
222
 
211
- #### 1. OpenClaw Cloud Plugin
223
+ #### 1. MemOS Cloud Plugin
212
224
 
213
- You use OpenClaw and want persistent memory via MemOS Cloud — no infrastructure to run.
225
+ Use MemOS Cloud for persistent memory in OpenClaw or DeepSeek Harness — no infrastructure to run.
214
226
 
215
227
  - **Repo:** [MemTensor/MemOS ·](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin) `apps/MemOS-Cloud-OpenClaw-Plugin`
216
228
  - **NPM:** `[@memtensor/memos-cloud-openclaw-plugin](https://www.npmjs.com/package/@memtensor/memos-cloud-openclaw-plugin)`
@@ -226,16 +238,55 @@ openclaw gateway restart
226
238
 
227
239
  The plugin recalls memories from MemOS Cloud before each agent run and saves new messages back after the run ends.
228
240
 
229
- #### 2. Local Plugin (memos-local-plugin 2.0)
241
+ ##### DeepSeek Harness
242
+
243
+ Connect DeepSeek Harness to MemOS Cloud through its native plugin mechanism. Before the first model step of each user request, the plugin recalls relevant cloud memories; after a successful turn, it saves the new user and assistant messages back to MemOS Cloud.
244
+
245
+ 1. [Create a MemOS API Key](https://memos-dashboard.openmem.net/cn/apikeys/).
246
+ 2. Install the cloud plugin into the default DSH `web` profile:
247
+
248
+ ```bash
249
+ npx @deepseek-ai/dsh plugin --profile web add @memtensor/memos-cloud-dsh-plugin@latest
250
+ ```
251
+
252
+ 3. Add the API Key to `~/.dsh/.credentials.yaml`:
253
+
254
+ ```yaml
255
+ MEMOS_API_KEY: mpg-your-key
256
+ ```
257
+
258
+ 4. Add the minimal plugin configuration to `~/.dsh/settings.yaml`:
230
259
 
231
- You use Hermes Agent or OpenClaw and want 100% on-device memory — nothing leaves your machine.
260
+ ```yaml
261
+ memos-cloud:
262
+ apiKeyEnv: MEMOS_API_KEY
263
+ ```
264
+
265
+ 5. Restart the DSH Web profile:
266
+
267
+ ```bash
268
+ npx @deepseek-ai/dsh web
269
+ ```
270
+
271
+ The cloud plugin is fail-open: a temporary MemOS Cloud outage does not interrupt the current DSH task.
272
+
273
+ #### 2. Local Plugin (OpenClaw, Hermes, and DeepSeek Harness)
274
+
275
+ You use DeepSeek Harness, Hermes Agent, or OpenClaw and want 100% on-device memory — nothing leaves your machine.
232
276
 
233
277
  - **Repo:** [MemTensor/MemOS ·](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin) `apps/memos-local-plugin`
234
278
  - **NPM:** `[@memtensor/memos-local-plugin](https://www.npmjs.com/package/@memtensor/memos-local-plugin)`
235
279
  - **Docs:** [https://memos-docs.openmem.net/cn/openclaw/local_plugin](https://memos-docs.openmem.net/cn/openclaw/local_plugin)
280
+ - **DeepSeek Harness:** [integration details](./apps/memos-local-plugin/adapters/deepseek-harness/README.md)
236
281
  - **Viewer dashboard:** see `apps/memos-local-plugin/viewer/`
237
282
 
238
- Install (macOS / Linux):
283
+ Install for DeepSeek Harness (macOS / Linux):
284
+
285
+ ```bash
286
+ curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh | bash -s -- --agent dsh --profile web
287
+ ```
288
+
289
+ Install for OpenClaw or Hermes (macOS / Linux):
239
290
 
240
291
  ```bash
241
292
  curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh | bash
@@ -247,7 +298,7 @@ Install (Windows PowerShell):
247
298
  irm https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.ps1 -OutFile "$env:TEMP\memos-install.ps1"; powershell -ExecutionPolicy Bypass -File "$env:TEMP\memos-install.ps1"
248
299
  ```
249
300
 
250
- Requires Node.js and an already-installed OpenClaw or Hermes. The installer auto-detects OpenClaw and Hermes, deploys the plugin to the right agent home (`~/.hermes/plugins/` or `~/.openclaw/plugins/`), writes the initial `config.yaml`, and restarts the agent runtime.
301
+ Requires Node.js and an already-installed DeepSeek Harness, OpenClaw, or Hermes. The installer deploys MemOS to the selected agent runtime; the DeepSeek Harness target installs it as an out-of-tree DSH bundle, while the OpenClaw and Hermes targets write the initial `config.yaml` in their respective agent homes.
251
302
 
252
303
  Features: hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution (L1 traces / L2 policies / L3 world model), multi-agent collaboration, local-first SQLite storage.
253
304
 
@@ -4,7 +4,7 @@
4
4
  ##############################################################################
5
5
 
6
6
  name = "MemoryOS"
7
- version = "2.0.30"
7
+ version = "2.0.32"
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.30"
1
+ __version__ = "2.0.32"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
@@ -463,6 +463,28 @@ class APIConfig:
463
463
  # Fallback to memreader config (same behavior as before for users who don't customize)
464
464
  return APIConfig.get_memreader_config()
465
465
 
466
+ @staticmethod
467
+ def get_suggestion_llm_config() -> dict[str, Any]:
468
+ """Get LLM configuration for suggestion query generation.
469
+
470
+ Fallback chain: SUGGESTION_MODEL -> MEMREADER_GENERAL_MODEL -> memreader config.
471
+ """
472
+ suggestion_model = os.getenv("SUGGESTION_MODEL")
473
+ if suggestion_model:
474
+ return APIConfig._build_provider_llm_config(suggestion_model)
475
+ return APIConfig.get_memreader_general_llm_config()
476
+
477
+ @staticmethod
478
+ def get_scheduler_llm_config() -> dict[str, Any]:
479
+ """Get LLM configuration for scheduler-owned LLM tasks.
480
+
481
+ Fallback chain: MEMSCHEDULER_MODEL -> MEMREADER_GENERAL_MODEL.
482
+ """
483
+ scheduler_model = os.getenv("MEMSCHEDULER_MODEL")
484
+ if scheduler_model:
485
+ return APIConfig._build_provider_llm_config(scheduler_model)
486
+ return APIConfig.get_memreader_general_llm_config()
487
+
466
488
  @staticmethod
467
489
  def get_image_parser_llm_config() -> dict[str, Any]:
468
490
  """Get LLM configuration for image parsing (requires vision model).
@@ -92,6 +92,7 @@ class ChatHandler(BaseHandler):
92
92
 
93
93
  self.chat_llms = chat_llms
94
94
  self.playground_chat_llms = playground_chat_llms or chat_llms
95
+ self.suggestion_llm = getattr(dependencies, "suggestion_llm", dependencies.llm)
95
96
  self.search_handler = search_handler
96
97
  self.add_handler = add_handler
97
98
  self.online_bot = online_bot
@@ -1232,7 +1233,7 @@ class ChatHandler(BaseHandler):
1232
1233
  },
1233
1234
  {"role": "user", "content": further_suggestion_prompt},
1234
1235
  ]
1235
- response = self.llm.generate(message_list)
1236
+ response = self.suggestion_llm.generate(message_list)
1236
1237
  clean_response = clean_json_response(response)
1237
1238
  response_json = json.loads(clean_response)
1238
1239
  return response_json["query"]
@@ -21,6 +21,8 @@ from memos.api.handlers.config_builders import (
21
21
  build_mem_reader_config,
22
22
  build_nli_client_config,
23
23
  build_reranker_config,
24
+ build_scheduler_llm_config,
25
+ build_suggestion_llm_config,
24
26
  )
25
27
  from memos.configs.mem_scheduler import SchedulerConfigFactory
26
28
  from memos.embedders.factory import EmbedderFactory
@@ -158,6 +160,8 @@ def init_server() -> dict[str, Any]:
158
160
  graph_db_config = build_graph_db_config()
159
161
  llm_config = build_llm_config()
160
162
  feedback_llm_config = build_feedback_llm_config()
163
+ suggestion_llm_config = build_suggestion_llm_config()
164
+ scheduler_llm_config = build_scheduler_llm_config()
161
165
  chat_llm_config = build_chat_llm_config()
162
166
  playground_chat_llm_config = build_chat_llm_config("PLAYGROUND_CHAT_MODEL_LIST")
163
167
  embedder_config = build_embedder_config()
@@ -173,6 +177,8 @@ def init_server() -> dict[str, Any]:
173
177
  graph_db = GraphStoreFactory.from_config(graph_db_config)
174
178
  llm = LLMFactory.from_config(llm_config)
175
179
  feedback_llm = LLMFactory.from_config(feedback_llm_config)
180
+ suggestion_llm = LLMFactory.from_config(suggestion_llm_config)
181
+ scheduler_llm = LLMFactory.from_config(scheduler_llm_config)
176
182
  chat_llms = (
177
183
  _init_chat_llms(chat_llm_config)
178
184
  if os.getenv("ENABLE_CHAT_API", "false") == "true"
@@ -281,7 +287,7 @@ def init_server() -> dict[str, Any]:
281
287
  )
282
288
  mem_scheduler: OptimizedScheduler = SchedulerFactory.from_config(scheduler_config)
283
289
  mem_scheduler.initialize_modules(
284
- chat_llm=llm,
290
+ chat_llm=scheduler_llm,
285
291
  process_llm=mem_reader.general_llm,
286
292
  db_engine=BaseDBManager.create_default_sqlite_engine(),
287
293
  mem_reader=mem_reader,
@@ -325,6 +331,8 @@ def init_server() -> dict[str, Any]:
325
331
  "graph_db": graph_db,
326
332
  "mem_reader": mem_reader,
327
333
  "llm": llm,
334
+ "suggestion_llm": suggestion_llm,
335
+ "scheduler_llm": scheduler_llm,
328
336
  "chat_llms": chat_llms,
329
337
  "playground_chat_llms": playground_chat_llms,
330
338
  "embedder": embedder,
@@ -167,6 +167,26 @@ def build_feedback_llm_config() -> dict[str, Any]:
167
167
  return LLMConfigFactory.model_validate(APIConfig.get_feedback_llm_config())
168
168
 
169
169
 
170
+ def build_suggestion_llm_config() -> dict[str, Any]:
171
+ """
172
+ Build suggestion LLM configuration.
173
+
174
+ Returns:
175
+ Validated suggestion LLM configuration dictionary
176
+ """
177
+ return LLMConfigFactory.model_validate(APIConfig.get_suggestion_llm_config())
178
+
179
+
180
+ def build_scheduler_llm_config() -> dict[str, Any]:
181
+ """
182
+ Build scheduler LLM configuration.
183
+
184
+ Returns:
185
+ Validated scheduler LLM configuration dictionary
186
+ """
187
+ return LLMConfigFactory.model_validate(APIConfig.get_scheduler_llm_config())
188
+
189
+
170
190
  def build_internet_retriever_config() -> dict[str, Any]:
171
191
  """
172
192
  Build internet retriever configuration.
@@ -97,6 +97,7 @@ cube_handler = CubeHandler(dependencies)
97
97
  # (These can be accessed from the components dict without unpacking all of them)
98
98
  mem_scheduler: BaseScheduler = components["mem_scheduler"]
99
99
  llm = components["llm"]
100
+ suggestion_llm = components.get("suggestion_llm", llm)
100
101
  naive_mem_cube = components["naive_mem_cube"]
101
102
  redis_client = components["redis_client"]
102
103
  status_tracker = TaskStatusTracker(redis_client=redis_client)
@@ -327,7 +328,7 @@ def get_suggestion_queries(suggestion_req: SuggestionRequest):
327
328
  user_id=suggestion_req.mem_cube_id,
328
329
  language=suggestion_req.language,
329
330
  message=suggestion_req.message,
330
- llm=llm,
331
+ llm=suggestion_llm,
331
332
  naive_mem_cube=naive_mem_cube,
332
333
  )
333
334
 
@@ -214,10 +214,22 @@ class OpenAIConfig(BaseConfig, DictConversionMixin, EnvConfigMixin):
214
214
 
215
215
  @classmethod
216
216
  def from_env(cls) -> "OpenAIConfig":
217
+ default_model = (
218
+ os.getenv("MEMSCHEDULER_MODEL") or os.getenv("MEMREADER_GENERAL_MODEL") or ""
219
+ )
220
+ normalized = default_model.strip().lower()
221
+ is_qwen = normalized.startswith("qwen") or "/qwen" in normalized
222
+ api_key_env = "QWEN_API_KEY" if is_qwen else "OPENAI_API_KEY"
223
+ api_base_env = "QWEN_API_BASE" if is_qwen else "OPENAI_API_BASE"
224
+ default_base_url = (
225
+ "https://dashscope.aliyuncs.com/compatible-mode/v1"
226
+ if is_qwen
227
+ else "https://api.openai.com/v1"
228
+ )
217
229
  return cls(
218
- api_key=os.getenv("OPENAI_API_KEY", ""),
219
- base_url=os.getenv("OPENAI_API_BASE", "https://api.openai.com/v1"),
220
- default_model=os.getenv("MEMSCHEDULER_OPENAI_DEFAULT_MODEL", "gpt-4o-mini"),
230
+ api_key=os.getenv(api_key_env, ""),
231
+ base_url=os.getenv(api_base_env, default_base_url),
232
+ default_model=default_model,
221
233
  )
222
234
 
223
235
 
@@ -354,7 +366,9 @@ class AuthConfig(BaseConfig, DictConversionMixin):
354
366
  for key in [
355
367
  "OPENAI_API_KEY",
356
368
  "OPENAI_API_BASE",
357
- "MEMSCHEDULER_OPENAI_DEFAULT_MODEL",
369
+ "QWEN_API_KEY",
370
+ "QWEN_API_BASE",
371
+ "MEMSCHEDULER_MODEL",
358
372
  ]
359
373
  )
360
374
  if has_openai_env:
@@ -391,6 +405,7 @@ class AuthConfig(BaseConfig, DictConversionMixin):
391
405
  os.environ["OPENAI_API_KEY"] = self.openai.api_key
392
406
  os.environ["OPENAI_API_BASE"] = self.openai.base_url
393
407
  os.environ["MODEL"] = self.openai.default_model
408
+ os.environ["MEMSCHEDULER_MODEL"] = self.openai.default_model
394
409
  else:
395
410
  logger = logging.getLogger(__name__)
396
411
  logger.warning("OpenAI config is not available, skipping environment variable setup")
@@ -29,6 +29,8 @@ class EmbedderFactory(BaseEmbedder):
29
29
  raise ValueError(f"Invalid backend: {backend}")
30
30
  embedder_class = cls.backend_to_class[backend]
31
31
  embedder = embedder_class(config_factory.config)
32
+ if not hasattr(embedder, "config"):
33
+ embedder.config = config_factory.config
32
34
  if backend in cls.cacheable_backends and embedding_optimization_enabled():
33
35
  return CachingEmbedder(embedder)
34
36
  return embedder
@@ -0,0 +1,30 @@
1
+ from typing import Any
2
+
3
+ from memos.configs.llm import QwenLLMConfig
4
+ from memos.llms.openai import OpenAILLM
5
+ from memos.log import get_logger
6
+
7
+
8
+ logger = get_logger(__name__)
9
+
10
+ DASHSCOPE_WAIT_TIMEOUT_HEADER = "X-DashScope-Wait-Timeout"
11
+ DASHSCOPE_WAIT_TIMEOUT_SECONDS = "30"
12
+
13
+
14
+ def _add_dashscope_wait_timeout_header(
15
+ default_headers: dict[str, Any] | None,
16
+ ) -> dict[str, Any]:
17
+ headers = dict(default_headers or {})
18
+ if not any(key.lower() == DASHSCOPE_WAIT_TIMEOUT_HEADER.lower() for key in headers):
19
+ headers[DASHSCOPE_WAIT_TIMEOUT_HEADER] = DASHSCOPE_WAIT_TIMEOUT_SECONDS
20
+ return headers
21
+
22
+
23
+ class QwenLLM(OpenAILLM):
24
+ """Qwen (DashScope) LLM class via OpenAI-compatible API."""
25
+
26
+ def __init__(self, config: QwenLLMConfig):
27
+ config = config.model_copy(
28
+ update={"default_headers": _add_dashscope_wait_timeout_header(config.default_headers)}
29
+ )
30
+ super().__init__(config)
@@ -14,6 +14,7 @@ from typing import Any
14
14
 
15
15
  from openai import OpenAI
16
16
 
17
+ from memos.api.config import APIConfig
17
18
  from memos.log import get_logger
18
19
 
19
20
 
@@ -51,13 +52,19 @@ class EvalAnalyzer:
51
52
  self.output_dir = Path(output_dir)
52
53
  self.output_dir.mkdir(parents=True, exist_ok=True)
53
54
 
54
- # Initialize OpenAI client
55
+ scheduler_config = APIConfig.get_scheduler_llm_config()["config"]
56
+ self.openai_model = openai_model or scheduler_config["model_name_or_path"]
57
+ if not self.openai_model:
58
+ raise ValueError(
59
+ "No model configured. Set MEMSCHEDULER_MODEL, MEMREADER_GENERAL_MODEL, "
60
+ "or pass openai_model explicitly."
61
+ )
62
+ provider_config = APIConfig._build_provider_llm_config(self.openai_model)["config"]
63
+
64
+ # Initialize OpenAI-compatible client
55
65
  self.openai_client = OpenAI(
56
- api_key=openai_api_key or os.getenv("OPENAI_API_KEY"),
57
- base_url=openai_base_url or os.getenv("OPENAI_API_BASE"),
58
- )
59
- self.openai_model = openai_model or os.getenv(
60
- "MEMSCHEDULER_OPENAI_DEFAULT_MODEL", "gpt-4o-mini"
66
+ api_key=openai_api_key or provider_config["api_key"],
67
+ base_url=openai_base_url or provider_config["api_base"],
61
68
  )
62
69
 
63
70
  logger.info(f"EvalAnalyzer initialized with model: {self.openai_model}")
@@ -87,12 +87,7 @@ def build_llm_config() -> dict[str, Any]:
87
87
  Returns:
88
88
  Validated LLM configuration dictionary
89
89
  """
90
- return LLMConfigFactory.model_validate(
91
- {
92
- "backend": "openai",
93
- "config": APIConfig.get_openai_config(),
94
- }
95
- )
90
+ return LLMConfigFactory.model_validate(APIConfig.get_scheduler_llm_config())
96
91
 
97
92
 
98
93
  def build_feedback_llm_config() -> dict[str, Any]:
@@ -1,13 +0,0 @@
1
- from memos.configs.llm import QwenLLMConfig
2
- from memos.llms.openai import OpenAILLM
3
- from memos.log import get_logger
4
-
5
-
6
- logger = get_logger(__name__)
7
-
8
-
9
- class QwenLLM(OpenAILLM):
10
- """Qwen (DashScope) LLM class via OpenAI-compatible API."""
11
-
12
- def __init__(self, config: QwenLLMConfig):
13
- super().__init__(config)
File without changes