MemoryOS 2.0.32__tar.gz → 2.0.33__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.32 → memoryos-2.0.33}/PKG-INFO +1 -1
  2. {memoryos-2.0.32 → memoryos-2.0.33}/pyproject.toml +1 -1
  3. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/__init__.py +1 -1
  4. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +46 -9
  5. memoryos-2.0.33/src/memos/mem_reader/source_filter.py +228 -0
  6. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +2 -2
  7. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/prefer_complete_prompt.py +46 -32
  8. {memoryos-2.0.32 → memoryos-2.0.33}/LICENSE +0 -0
  9. {memoryos-2.0.32 → memoryos-2.0.33}/README.md +0 -0
  10. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/__init__.py +0 -0
  11. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/client.py +0 -0
  12. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/config.py +0 -0
  13. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/context/dependencies.py +0 -0
  14. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/exceptions.py +0 -0
  15. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/__init__.py +0 -0
  16. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/add_handler.py +0 -0
  17. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/base_handler.py +0 -0
  18. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/chat_handler.py +0 -0
  19. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/component_init.py +0 -0
  20. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/config_builders.py +0 -0
  21. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/cube_handler.py +0 -0
  22. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/feedback_handler.py +0 -0
  23. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/formatters_handler.py +0 -0
  24. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/memory_handler.py +0 -0
  25. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/scheduler_handler.py +0 -0
  26. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/search_handler.py +0 -0
  27. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/handlers/suggestion_handler.py +0 -0
  28. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/lifecycle.py +0 -0
  29. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/mcp_serve.py +0 -0
  30. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/middleware/__init__.py +0 -0
  31. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/middleware/auth.py +0 -0
  32. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/middleware/rate_limit.py +0 -0
  33. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/middleware/request_context.py +0 -0
  34. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/product_models.py +0 -0
  35. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/routers/__init__.py +0 -0
  36. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/routers/admin_router.py +0 -0
  37. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/routers/server_router.py +0 -0
  38. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/server_api.py +0 -0
  39. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/server_api_ext.py +0 -0
  40. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/utils/__init__.py +0 -0
  41. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/api/utils/api_keys.py +0 -0
  42. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/chunkers/__init__.py +0 -0
  43. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/chunkers/base.py +0 -0
  44. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/chunkers/charactertext_chunker.py +0 -0
  45. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/chunkers/factory.py +0 -0
  46. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/chunkers/markdown_chunker.py +0 -0
  47. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/chunkers/sentence_chunker.py +0 -0
  48. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/chunkers/simple_chunker.py +0 -0
  49. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/cli.py +0 -0
  50. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/__init__.py +0 -0
  51. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/base.py +0 -0
  52. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/chunker.py +0 -0
  53. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/embedder.py +0 -0
  54. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/graph_db.py +0 -0
  55. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/internet_retriever.py +0 -0
  56. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/llm.py +0 -0
  57. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/mem_agent.py +0 -0
  58. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/mem_chat.py +0 -0
  59. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/mem_cube.py +0 -0
  60. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/mem_os.py +0 -0
  61. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/mem_reader.py +0 -0
  62. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/mem_scheduler.py +0 -0
  63. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/mem_user.py +0 -0
  64. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/memory.py +0 -0
  65. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/parser.py +0 -0
  66. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/reranker.py +0 -0
  67. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/utils.py +0 -0
  68. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/configs/vec_db.py +0 -0
  69. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/context/context.py +0 -0
  70. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dependency.py +0 -0
  71. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/deprecation.py +0 -0
  72. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/README.md +0 -0
  73. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/__init__.py +0 -0
  74. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/contextualization.py +0 -0
  75. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/enrichment.py +0 -0
  76. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/hook_defs.py +0 -0
  77. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/hooks.py +0 -0
  78. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/maintenance.py +0 -0
  79. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/pipeline/__init__.py +0 -0
  80. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/pipeline/base.py +0 -0
  81. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/pipeline/diary.py +0 -0
  82. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/pipeline/motive.py +0 -0
  83. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/pipeline/persistence.py +0 -0
  84. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/pipeline/reasoning.py +0 -0
  85. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/pipeline/recall.py +0 -0
  86. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/plugin.py +0 -0
  87. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/prompts/__init__.py +0 -0
  88. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/prompts/context_binding_prompt.py +0 -0
  89. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/prompts/context_summary_prompt.py +0 -0
  90. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/prompts/motive_prompt.py +0 -0
  91. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/prompts/reasoning_prompt.py +0 -0
  92. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/routers/__init__.py +0 -0
  93. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/routers/diary_router.py +0 -0
  94. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/routers/trigger_router.py +0 -0
  95. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/routes.py +0 -0
  96. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/search.py +0 -0
  97. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/signal_store.py +0 -0
  98. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/dream/types.py +0 -0
  99. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/embedders/__init__.py +0 -0
  100. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/embedders/ark.py +0 -0
  101. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/embedders/base.py +0 -0
  102. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/embedders/cache.py +0 -0
  103. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/embedders/factory.py +0 -0
  104. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/embedders/ollama.py +0 -0
  105. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/embedders/sentence_transformer.py +0 -0
  106. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/embedders/universal_api.py +0 -0
  107. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/exceptions.py +0 -0
  108. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/extras/__init__.py +0 -0
  109. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/graph_dbs/__init__.py +0 -0
  110. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/graph_dbs/base.py +0 -0
  111. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/graph_dbs/factory.py +0 -0
  112. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/graph_dbs/item.py +0 -0
  113. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/graph_dbs/neo4j.py +0 -0
  114. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/graph_dbs/neo4j_community.py +0 -0
  115. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/graph_dbs/polardb.py +0 -0
  116. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/graph_dbs/postgres.py +0 -0
  117. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/hello_world.py +0 -0
  118. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/__init__.py +0 -0
  119. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/base.py +0 -0
  120. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/deepseek.py +0 -0
  121. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/factory.py +0 -0
  122. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/hf.py +0 -0
  123. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/hf_singleton.py +0 -0
  124. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/minimax.py +0 -0
  125. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/ollama.py +0 -0
  126. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/openai.py +0 -0
  127. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/openai_new.py +0 -0
  128. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/qwen.py +0 -0
  129. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/utils.py +0 -0
  130. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/llms/vllm.py +0 -0
  131. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/log.py +0 -0
  132. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_agent/base.py +0 -0
  133. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_agent/deepsearch_agent.py +0 -0
  134. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_agent/factory.py +0 -0
  135. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_chat/__init__.py +0 -0
  136. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_chat/base.py +0 -0
  137. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_chat/factory.py +0 -0
  138. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_chat/simple.py +0 -0
  139. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_cube/__init__.py +0 -0
  140. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_cube/base.py +0 -0
  141. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_cube/general.py +0 -0
  142. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_cube/navie.py +0 -0
  143. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_cube/utils.py +0 -0
  144. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_feedback/base.py +0 -0
  145. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_feedback/feedback.py +0 -0
  146. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_feedback/simple_feedback.py +0 -0
  147. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_feedback/utils.py +0 -0
  148. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_os/core.py +0 -0
  149. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_os/main.py +0 -0
  150. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_os/utils/default_config.py +0 -0
  151. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_os/utils/format_utils.py +0 -0
  152. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_os/utils/reference_utils.py +0 -0
  153. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/__init__.py +0 -0
  154. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/base.py +0 -0
  155. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/factory.py +0 -0
  156. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/memory.py +0 -0
  157. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/multi_modal_struct.py +0 -0
  158. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
  159. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
  160. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
  161. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
  162. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
  163. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
  164. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
  165. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
  166. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
  167. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
  168. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
  169. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
  170. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +0 -0
  171. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/read_skill_memory/upload_skill_memory.py +0 -0
  172. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/simple_struct.py +0 -0
  173. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/strategy_struct.py +0 -0
  174. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_reader/utils.py +0 -0
  175. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/__init__.py +0 -0
  176. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/analyzer/__init__.py +0 -0
  177. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
  178. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
  179. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
  180. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
  181. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
  182. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
  183. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/base_mixins/queue_ops.py +0 -0
  184. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +0 -0
  185. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/base_scheduler.py +0 -0
  186. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/general_modules/__init__.py +0 -0
  187. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
  188. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/general_modules/base.py +0 -0
  189. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +0 -0
  190. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
  191. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
  192. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
  193. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/general_scheduler.py +0 -0
  194. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
  195. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
  196. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
  197. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
  198. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
  199. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
  200. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
  201. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
  202. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
  203. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
  204. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/monitors/__init__.py +0 -0
  205. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
  206. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
  207. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
  208. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
  209. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/orm_modules/__init__.py +0 -0
  210. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
  211. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
  212. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
  213. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
  214. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
  215. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/schemas/__init__.py +0 -0
  216. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
  217. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
  218. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
  219. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
  220. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
  221. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
  222. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/__init__.py +0 -0
  223. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
  224. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
  225. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +0 -0
  226. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
  227. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
  228. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
  229. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
  230. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_dream_handler.py +0 -0
  231. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
  232. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
  233. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
  234. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
  235. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +0 -0
  236. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
  237. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +0 -0
  238. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/registry.py +0 -0
  239. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +0 -0
  240. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/__init__.py +0 -0
  241. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
  242. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
  243. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
  244. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
  245. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/metrics.py +0 -0
  246. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
  247. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
  248. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
  249. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/webservice_modules/__init__.py +0 -0
  250. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
  251. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
  252. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_user/factory.py +0 -0
  253. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
  254. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_user/mysql_user_manager.py +0 -0
  255. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_user/persistent_factory.py +0 -0
  256. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_user/persistent_user_manager.py +0 -0
  257. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
  258. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/mem_user/user_manager.py +0 -0
  259. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/__init__.py +0 -0
  260. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/activation/__init__.py +0 -0
  261. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/activation/base.py +0 -0
  262. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/activation/item.py +0 -0
  263. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/activation/kv.py +0 -0
  264. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/activation/vllmkv.py +0 -0
  265. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/base.py +0 -0
  266. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/factory.py +0 -0
  267. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/parametric/__init__.py +0 -0
  268. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/parametric/base.py +0 -0
  269. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/parametric/item.py +0 -0
  270. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/parametric/lora.py +0 -0
  271. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/__init__.py +0 -0
  272. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/base.py +0 -0
  273. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/general.py +0 -0
  274. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/item.py +0 -0
  275. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/naive.py +0 -0
  276. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/prefer_text_memory/__init__.py +0 -0
  277. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
  278. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
  279. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
  280. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
  281. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
  282. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
  283. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
  284. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/preference.py +0 -0
  285. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/simple_preference.py +0 -0
  286. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/simple_tree.py +0 -0
  287. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree.py +0 -0
  288. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/__init__.py +0 -0
  289. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/organize/__init__.py +0 -0
  290. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
  291. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/organize/manager.py +0 -0
  292. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
  293. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
  294. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/__init__.py +0 -0
  295. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
  296. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
  297. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
  298. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
  299. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
  300. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
  301. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
  302. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
  303. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
  304. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +0 -0
  305. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +0 -0
  306. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
  307. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
  308. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
  309. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
  310. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memos_tools/dinding_report_bot.py +0 -0
  311. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memos_tools/lockfree_dict.py +0 -0
  312. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memos_tools/notification_service.py +0 -0
  313. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memos_tools/notification_utils.py +0 -0
  314. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memos_tools/singleton.py +0 -0
  315. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memos_tools/thread_safe_dict.py +0 -0
  316. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
  317. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/multi_mem_cube/__init__.py +0 -0
  318. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/multi_mem_cube/composite_cube.py +0 -0
  319. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/multi_mem_cube/single_cube.py +0 -0
  320. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/multi_mem_cube/views.py +0 -0
  321. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/parsers/__init__.py +0 -0
  322. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/parsers/base.py +0 -0
  323. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/parsers/factory.py +0 -0
  324. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/parsers/markitdown.py +0 -0
  325. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/plugins/README.md +0 -0
  326. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/plugins/__init__.py +0 -0
  327. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/plugins/base.py +0 -0
  328. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/plugins/component_bootstrap.py +0 -0
  329. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/plugins/hook_defs.py +0 -0
  330. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/plugins/hooks.py +0 -0
  331. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/plugins/manager.py +0 -0
  332. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/__init__.py +0 -0
  333. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/base.py +0 -0
  334. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/concat.py +0 -0
  335. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/cosine_local.py +0 -0
  336. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/factory.py +0 -0
  337. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/http_bge.py +0 -0
  338. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/http_bge_strategy.py +0 -0
  339. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/noop.py +0 -0
  340. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/strategies/__init__.py +0 -0
  341. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/strategies/base.py +0 -0
  342. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/strategies/concat_background.py +0 -0
  343. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/strategies/concat_docsource.py +0 -0
  344. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/strategies/dialogue_common.py +0 -0
  345. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/strategies/factory.py +0 -0
  346. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/strategies/single_turn.py +0 -0
  347. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
  348. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/search/__init__.py +0 -0
  349. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/search/search_service.py +0 -0
  350. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/settings.py +0 -0
  351. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/__init__.py +0 -0
  352. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/advanced_search_prompts.py +0 -0
  353. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/cloud_service_prompt.py +0 -0
  354. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/instruction_completion.py +0 -0
  355. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/mem_agent_prompts.py +0 -0
  356. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/mem_feedback_prompts.py +0 -0
  357. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/mem_reader_prompts.py +0 -0
  358. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
  359. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/mem_scheduler_prompts.py +0 -0
  360. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/mem_search_prompts.py +0 -0
  361. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/mos_prompts.py +0 -0
  362. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/skill_mem_prompt.py +0 -0
  363. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/tool_mem_prompts.py +0 -0
  364. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/templates/tree_reorganize_prompts.py +0 -0
  365. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/__init__.py +0 -0
  366. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/general_types.py +0 -0
  367. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
  368. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
  369. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
  370. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
  371. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
  372. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
  373. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
  374. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
  375. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
  376. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
  377. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
  378. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
  379. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
  380. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
  381. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/utils.py +0 -0
  382. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/vec_dbs/__init__.py +0 -0
  383. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/vec_dbs/base.py +0 -0
  384. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/vec_dbs/factory.py +0 -0
  385. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/vec_dbs/item.py +0 -0
  386. {memoryos-2.0.32 → memoryos-2.0.33}/src/memos/vec_dbs/milvus.py +0 -0
  387. {memoryos-2.0.32 → memoryos-2.0.33}/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.32
3
+ Version: 2.0.33
4
4
  Summary: Intelligence Begins with Memory
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -4,7 +4,7 @@
4
4
  ##############################################################################
5
5
 
6
6
  name = "MemoryOS"
7
- version = "2.0.32"
7
+ version = "2.0.33"
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.32"
1
+ __version__ = "2.0.33"
2
2
 
3
3
  from memos.configs.mem_cube import GeneralMemCubeConfig
4
4
  from memos.configs.mem_os import MOSConfig
@@ -10,7 +10,12 @@ from typing import TYPE_CHECKING, Any
10
10
  from memos.context.context import ContextThreadPoolExecutor
11
11
  from memos.log import get_logger
12
12
  from memos.mem_reader.read_multi_modal import detect_lang
13
- from memos.memories.textual.item import TextualMemoryItem, TreeNodeTextualMemoryMetadata
13
+ from memos.mem_reader.source_filter import MemorySourceFilter
14
+ from memos.memories.textual.item import (
15
+ SourceMessage,
16
+ TextualMemoryItem,
17
+ TreeNodeTextualMemoryMetadata,
18
+ )
14
19
  from memos.templates.prefer_complete_prompt import (
15
20
  NAIVE_EXPLICIT_PREFERENCE_EXTRACT_PROMPT,
16
21
  NAIVE_EXPLICIT_PREFERENCE_EXTRACT_PROMPT_ZH,
@@ -100,6 +105,7 @@ def _create_preference_memory_item(
100
105
  fast_item: TextualMemoryItem | None,
101
106
  info: dict[str, Any],
102
107
  embedder,
108
+ sources_override: list[SourceMessage] | None = None,
103
109
  **kwargs,
104
110
  ) -> TextualMemoryItem:
105
111
  """
@@ -133,7 +139,13 @@ def _create_preference_memory_item(
133
139
  embedding = embedder.embed([context_summary])[0] if embedder and context_summary else None
134
140
 
135
141
  # Extract sources from fast_item
136
- sources = getattr(fast_item.metadata, "sources", []) if fast_item else []
142
+ sources = (
143
+ sources_override
144
+ if sources_override is not None
145
+ else getattr(fast_item.metadata, "sources", [])
146
+ if fast_item
147
+ else []
148
+ )
137
149
 
138
150
  # Create metadata
139
151
  metadata = TreeNodeTextualMemoryMetadata(
@@ -168,6 +180,7 @@ def _process_single_chunk_explicit(
168
180
  info: dict[str, Any],
169
181
  llm,
170
182
  embedder,
183
+ sources_override: list[SourceMessage] | None = None,
171
184
  **kwargs,
172
185
  ) -> list[TextualMemoryItem]:
173
186
  """Process a single chunk for explicit preferences."""
@@ -190,6 +203,7 @@ def _process_single_chunk_explicit(
190
203
  fast_item=fast_item,
191
204
  info=info,
192
205
  embedder=embedder,
206
+ sources_override=sources_override,
193
207
  **kwargs,
194
208
  )
195
209
  memories.append(memory)
@@ -203,6 +217,7 @@ def _process_single_chunk_implicit(
203
217
  info: dict[str, Any],
204
218
  llm,
205
219
  embedder,
220
+ sources_override: list[SourceMessage] | None = None,
206
221
  **kwargs,
207
222
  ) -> list[TextualMemoryItem]:
208
223
  """Process a single chunk for implicit preferences."""
@@ -225,6 +240,7 @@ def _process_single_chunk_implicit(
225
240
  fast_item=fast_item,
226
241
  info=info,
227
242
  embedder=embedder,
243
+ sources_override=sources_override,
228
244
  **kwargs,
229
245
  )
230
246
  memories.append(memory)
@@ -260,13 +276,20 @@ def process_preference_fine(
260
276
  return []
261
277
 
262
278
  try:
263
- # Convert fast_memory_items to messages format
279
+ # Convert fast_memory_items to source-filtered messages format
280
+ source_filter = MemorySourceFilter()
264
281
  chunks = []
265
282
  for fast_item in fast_memory_items:
266
- mem_str = fast_item.memory or ""
283
+ raw_sources = getattr(fast_item.metadata, "sources", None)
284
+ if raw_sources:
285
+ filtered_sources = source_filter.filter_for_preference(raw_sources)
286
+ mem_str = source_filter.sources_to_prompt_text(filtered_sources)
287
+ else:
288
+ filtered_sources = None
289
+ mem_str = fast_item.memory or ""
267
290
  if not mem_str.strip():
268
291
  continue
269
- chunks.append((mem_str, fast_item))
292
+ chunks.append((mem_str, fast_item, filtered_sources))
270
293
 
271
294
  if not chunks:
272
295
  return []
@@ -277,16 +300,30 @@ def process_preference_fine(
277
300
  futures = {}
278
301
 
279
302
  # Submit explicit extraction tasks
280
- for chunk, fast_item in chunks:
303
+ for chunk, fast_item, filtered_sources in chunks:
281
304
  future = executor.submit(
282
- _process_single_chunk_explicit, chunk, fast_item, info, llm, embedder, **kwargs
305
+ _process_single_chunk_explicit,
306
+ chunk,
307
+ fast_item,
308
+ info,
309
+ llm,
310
+ embedder,
311
+ filtered_sources,
312
+ **kwargs,
283
313
  )
284
314
  futures[future] = ("explicit_preference", chunk)
285
315
 
286
316
  # Submit implicit extraction tasks
287
- for chunk, fast_item in chunks:
317
+ for chunk, fast_item, filtered_sources in chunks:
288
318
  future = executor.submit(
289
- _process_single_chunk_implicit, chunk, fast_item, info, llm, embedder, **kwargs
319
+ _process_single_chunk_implicit,
320
+ chunk,
321
+ fast_item,
322
+ info,
323
+ llm,
324
+ embedder,
325
+ filtered_sources,
326
+ **kwargs,
290
327
  )
291
328
  futures[future] = ("implicit_preference", chunk)
292
329
 
@@ -0,0 +1,228 @@
1
+ """Source filters shared by memory extraction steps."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import re
6
+
7
+ from dataclasses import dataclass
8
+ from typing import Any, Literal
9
+
10
+ from memos.memories.textual.item import SourceMessage
11
+
12
+
13
+ SourceFilterAction = Literal[
14
+ "extract_after_last",
15
+ "strip_after_first",
16
+ "drop_if_present",
17
+ "drop_if_prefix",
18
+ ]
19
+
20
+
21
+ @dataclass(frozen=True)
22
+ class SourceFilterRule:
23
+ name: str
24
+ action: SourceFilterAction
25
+ patterns: tuple[re.Pattern[str], ...]
26
+
27
+
28
+ @dataclass(frozen=True)
29
+ class SourceFilterPolicy:
30
+ allowed_roles: frozenset[str]
31
+ blocked_roles: frozenset[str]
32
+ blocked_source_types: frozenset[str]
33
+ rules: tuple[SourceFilterRule, ...]
34
+
35
+
36
+ def _patterns(*values: str, flags: int = 0) -> tuple[re.Pattern[str], ...]:
37
+ return tuple(re.compile(value, flags) for value in values)
38
+
39
+
40
+ PREFERENCE_SOURCE_POLICY = SourceFilterPolicy(
41
+ allowed_roles=frozenset({"user"}),
42
+ blocked_roles=frozenset({"assistant", "system", "tool"}),
43
+ blocked_source_types=frozenset({"tool"}),
44
+ rules=(
45
+ SourceFilterRule(
46
+ name="user_query_boundary",
47
+ action="extract_after_last",
48
+ patterns=_patterns(
49
+ r"(?im)(?:^|[ \t])#{1,3}[ \t]*用户(?:的)?(?:消息|问题)(?:为|是)?[ \t]*[::]",
50
+ r"user\u200b原\u200b始\u200bquery\u200b:\u200b\u200b\u200b\u200b",
51
+ r"(?im)(?:^|[ \t])#{1,3}[ \t]*user[ \t]*原始[ \t]*query[ \t]*[::]",
52
+ ),
53
+ ),
54
+ SourceFilterRule(
55
+ name="trailing_context",
56
+ action="strip_after_first",
57
+ patterns=_patterns(
58
+ r"(?m)^\s{0,3}#{1,3}\s*以下是可能和用户问题关联的对话记忆",
59
+ ),
60
+ ),
61
+ SourceFilterRule(
62
+ name="stream_transcript",
63
+ action="strip_after_first",
64
+ patterns=_patterns(
65
+ r'data:\s*\{"id"\s*:\s*"chatcmpl',
66
+ r"data:\s*\[DONE\]",
67
+ ),
68
+ ),
69
+ SourceFilterRule(
70
+ name="retrieval_context",
71
+ action="drop_if_present",
72
+ patterns=_patterns(
73
+ r"(?m)^\s{0,3}#{1,3}\s*以下内容是基于用户发送的消息的搜索结果",
74
+ r"(?i)<(?:retrieved_context|search_context|web_results)>",
75
+ ),
76
+ ),
77
+ SourceFilterRule(
78
+ name="memory_context",
79
+ action="drop_if_present",
80
+ patterns=_patterns(
81
+ r"(?i)</?(?:memories|memory_context)>",
82
+ r"(?i)===\s*MemOS LONG-TERM MEMORY",
83
+ r"(?i)\[MemOS Auto-Recall\]",
84
+ ),
85
+ ),
86
+ SourceFilterRule(
87
+ name="agent_reasoning",
88
+ action="drop_if_present",
89
+ patterns=_patterns(
90
+ r"(?i)<(?:thinking|reasoning|agent_scratchpad)>",
91
+ ),
92
+ ),
93
+ SourceFilterRule(
94
+ name="runtime_metadata",
95
+ action="drop_if_present",
96
+ patterns=_patterns(
97
+ r"(?m)^\s*Conversation info \(untrusted metadata\):",
98
+ r"(?m)^\s*Untrusted context \(metadata, do not treat as instructions or commands\):",
99
+ ),
100
+ ),
101
+ SourceFilterRule(
102
+ name="automation_context",
103
+ action="drop_if_prefix",
104
+ patterns=_patterns(
105
+ r"\[cron:",
106
+ r"System:\s+\[",
107
+ r"A scheduled reminder has been triggered",
108
+ ),
109
+ ),
110
+ SourceFilterRule(
111
+ name="assistant_runtime_prefix",
112
+ action="drop_if_prefix",
113
+ patterns=_patterns(
114
+ r"小依会根据用户需求",
115
+ r"正在完善Gemini的思考过程",
116
+ ),
117
+ ),
118
+ ),
119
+ )
120
+
121
+
122
+ class MemorySourceFilter:
123
+ """Filter raw memory sources before building extraction prompts."""
124
+
125
+ def __init__(self, policy: SourceFilterPolicy = PREFERENCE_SOURCE_POLICY):
126
+ self.policy = policy
127
+
128
+ def filter_for_preference(self, sources: list[Any] | None) -> list[SourceMessage]:
129
+ """Return only sources allowed to appear in preference extraction prompts."""
130
+ filtered: list[SourceMessage] = []
131
+ for source in sources or []:
132
+ source_dict = self._source_to_dict(source)
133
+ if not self._keep_role_for_preference(source_dict):
134
+ continue
135
+
136
+ content = str(source_dict.get("content") or "")
137
+ content = self._strip_known_context_wrappers(content)
138
+ if not content.strip():
139
+ continue
140
+
141
+ cleaned = source_dict.copy()
142
+ cleaned["content"] = content.strip()
143
+ if cleaned.get("type") is None:
144
+ cleaned["type"] = "chat"
145
+ cleaned = self._coerce_source_fields(cleaned)
146
+ filtered.append(SourceMessage(**cleaned))
147
+ return filtered
148
+
149
+ def build_prompt_text(self, sources: list[Any] | None) -> str:
150
+ """Build a compact prompt text from filtered sources."""
151
+ return self.sources_to_prompt_text(self.filter_for_preference(sources))
152
+
153
+ def sources_to_prompt_text(self, sources: list[SourceMessage] | None) -> str:
154
+ """Build prompt text from sources that have already been filtered."""
155
+ lines = []
156
+ for source in sources or []:
157
+ role = source.role or "user"
158
+ content = (source.content or "").strip()
159
+ if not content:
160
+ continue
161
+ lines.append(f"{role}: {content}")
162
+ return "\n".join(lines)
163
+
164
+ def _source_to_dict(self, source: Any) -> dict[str, Any]:
165
+ if isinstance(source, SourceMessage):
166
+ return source.model_dump(exclude_none=True)
167
+ if isinstance(source, dict):
168
+ return source.copy()
169
+ if hasattr(source, "model_dump"):
170
+ return source.model_dump(exclude_none=True)
171
+ return {}
172
+
173
+ def _coerce_source_fields(self, source: dict[str, Any]) -> dict[str, Any]:
174
+ for key in ("chat_time", "message_id", "role", "type"):
175
+ if source.get(key) is not None and not isinstance(source[key], str):
176
+ source[key] = str(source[key])
177
+ return source
178
+
179
+ def _keep_role_for_preference(self, source: dict[str, Any]) -> bool:
180
+ source_type = str(source.get("type") or "chat").strip().lower()
181
+ role = str(source.get("role") or "").strip().lower()
182
+ if source_type in self.policy.blocked_source_types or role in self.policy.blocked_roles:
183
+ return False
184
+ return role in self.policy.allowed_roles
185
+
186
+ def _strip_known_context_wrappers(self, text: str) -> str:
187
+ text = text.replace("\r\n", "\n").replace("\r", "\n").strip()
188
+ if not text:
189
+ return ""
190
+
191
+ for rule in self.policy.rules:
192
+ text = self._apply_rule(text, rule)
193
+ if not text:
194
+ return ""
195
+ return text.strip()
196
+
197
+ def _apply_rule(self, text: str, rule: SourceFilterRule) -> str:
198
+ if rule.action == "extract_after_last":
199
+ extracted = self._extract_after_last_match(text, rule.patterns)
200
+ return text if extracted is None else extracted.strip()
201
+ if rule.action == "strip_after_first":
202
+ return self._strip_after_first_match(text, rule.patterns)
203
+ if rule.action == "drop_if_present":
204
+ return "" if any(pattern.search(text) for pattern in rule.patterns) else text
205
+ if rule.action == "drop_if_prefix":
206
+ stripped = text.strip()
207
+ return "" if any(pattern.match(stripped) for pattern in rule.patterns) else text
208
+ return text
209
+
210
+ def _extract_after_last_match(
211
+ self, text: str, patterns: tuple[re.Pattern[str], ...]
212
+ ) -> str | None:
213
+ best_match: re.Match[str] | None = None
214
+ for pattern in patterns:
215
+ for match in pattern.finditer(text):
216
+ if best_match is None or match.start() > best_match.start():
217
+ best_match = match
218
+ if best_match is None:
219
+ return None
220
+ return text[best_match.end() :]
221
+
222
+ def _strip_after_first_match(self, text: str, patterns: tuple[re.Pattern[str], ...]) -> str:
223
+ end = len(text)
224
+ for pattern in patterns:
225
+ match = pattern.search(text)
226
+ if match:
227
+ end = min(end, match.start())
228
+ return text[:end].strip()
@@ -179,8 +179,8 @@ class MemReadMessageHandler(BaseSchedulerHandler):
179
179
  is_upload_skill=is_upload_skill,
180
180
  )
181
181
  except Exception as e:
182
- logger.warning("%s: Fail to transfer mem: %s", e, memory_items)
183
- processed_memories = []
182
+ logger.warning("%s: Fail to transfer mem: %s", e, memory_items, exc_info=True)
183
+ return
184
184
 
185
185
  if processed_memories and len(processed_memories) > 0:
186
186
  flattened_memories = []
@@ -1,22 +1,28 @@
1
1
  NAIVE_EXPLICIT_PREFERENCE_EXTRACT_PROMPT = """
2
2
  You are a preference extraction assistant.
3
- Please extract the user's explicitly mentioned preferences from the following conversation.
4
-
5
- Notes:
6
- - A preference means the user's own explicit, relatively stable, and reusable attitude, choice, constraint, or habit. It should be useful for future interactions, recommendations, or personalization.
7
- - A single user statement can be enough for an explicit preference when the user clearly states a personal preference or a future handling rule; repeated behavior is not required for explicit preferences.
8
- - Words like "like/dislike/want/don't want/prefer" are helpful signals, but a current task request, information-seeking question, temporary state, or safety/factual concern is not a preference by itself.
9
- - Expressions scoped to the current moment or task, such as "now", "today", "this time", "this document", "this task", or "current", are scope cues rather than automatic exclusions. Treat them as one-off needs unless the user also states a reusable personal preference or a future handling rule, such as "from now on", "in the future", "every time", "always", or "use this going forward".
10
- - Focus on preferences stated by the user. Do not turn assistant advice, search suggestions, safety guidance, factual explanations, or answer content into user preferences unless the user explicitly endorses them as their own reusable choice.
11
- - When the user modifies or updates their preferences for the same topic or event, extract the complete evolution process of their preference changes, including both the original and updated preferences.
3
+ Extract the preferences explicitly stated by the user from the input below.
4
+
5
+ Preference criteria:
6
+ - A preference is a relatively stable and reusable attitude, choice, constraint, or habit explicitly expressed by the user. It should be useful in future interactions, recommendations, or personalization.
7
+ - One clear user statement is sufficient for an explicit preference. Repeated behavior is not required when the user directly states a personal preference or a rule for future interactions.
8
+ - Words such as "like", "dislike", "want", "do not want", and "prefer" are useful signals, but a current task request, information-seeking question, temporary state, or safety or factual concern is not a preference by itself.
9
+ - Extract only preferences that can reasonably be reused in future interactions. Temporary requirements, execution parameters, and one-off needs that apply only to the current request, task, or material are not preferences. Reusability depends on the scope expressed by the user, rather than how many times it appears in the conversation.
10
+ - When the user modifies or updates a preference about the same topic or event, capture the complete evolution, including both the original and updated preferences.
11
+ - When the user explicitly expresses a reusable endorsement, rejection, or choice in response to Agent or Assistant content, use only the user's own statement as preference evidence.
12
+
13
+ Source attribution:
14
+ - The input may be a conversation or a record of interactions between a user and an Agent.
15
+ - Extract preferences only from content that can be clearly attributed to the user personally.
16
+ - Ignore Agent or Assistant output and any context injected, retrieved, or generated during Agent execution, such as historical memories, tool calls, and tool results. Such content is not a user statement, even if it is wrapped in a user message.
17
+ - If the source of content cannot be determined reliably, do not use it to extract preferences.
12
18
 
13
19
  Requirements:
14
- 1. Keep only the preferences explicitly mentioned by the user and reasonably reusable beyond the current turn. Do not infer or assume. If the user mentions reasons for their preferences, include those reasons as well.
15
- 2. Output should be a list of concise natural language summaries and the corresponding context summary. The context summary should preserve the evidence for the user's preference, without rewriting assistant-only content as if it were the user's preference.
16
- 3. If multiple preferences are mentioned within the same topic or domain, you MUST combine them into a single entry, keep each entry information complete. Different topics of preferences should be divided into multiple entries.
17
- 4. If no explicit preference can be reasonably extracted, return [].
20
+ 1. Do not infer or assume preferences that the user did not explicitly state. If the user explains the reason for a preference, include that reason.
21
+ 2. Return a list of concise preference summaries with their corresponding context summaries. Each context summary must preserve the user-side evidence and must not rewrite non-user content as a user preference.
22
+ 3. Combine multiple preferences from the same topic or domain into one complete entry. Use separate entries for different topics.
23
+ 4. If no explicit preference can be reasonably extracted, return `[]`.
18
24
 
19
- Conversation:
25
+ Input:
20
26
  {qa_pair}
21
27
 
22
28
  Find ALL explicit preferences. If no explicit preferences found, return []. Output JSON only:
@@ -35,23 +41,29 @@ Find ALL explicit preferences. If no explicit preferences found, return []. Outp
35
41
 
36
42
  NAIVE_EXPLICIT_PREFERENCE_EXTRACT_PROMPT_ZH = """
37
43
  你是一个偏好提取助手。
38
- 请从以下对话中提取用户明确提及的偏好。
39
-
40
- 注意事项:
41
- - 偏好是指用户自身明确表达的、相对稳定且可复用的态度、选择、约束或习惯,通常能用于后续交互、推荐或个性化服务。
42
- - 对于显式偏好,只要用户单次清楚表达了个人偏好或后续处理规则,就可以提取;显式偏好不要求出现重复行为。
43
- - "喜欢/不喜欢/想要/不想要/偏好"等词汇是重要信号,但当前任务请求、信息查询、临时状态、安全或事实性疑问本身并不等同于偏好。
44
- - 带有“现在、今天、这次、这份、本次、当前”等当前时间或任务范围限定的表达,是范围线索而不是自动排除条件。除非用户同时表达了可复用的个人偏好或后续处理规则,如“以后、长期、每次、都按这个、今后”等,否则将其视为一次性需求。
45
- - 重点提取用户自己陈述的偏好。不要把助手建议、检索建议、安全提醒、事实解释或回答内容转写成用户偏好,除非用户明确认可其为自己的可复用选择。
46
- - 当用户针对同一主题或事件修改或更新其偏好时,提取其偏好变化的完整演变过程,包括原始偏好和更新后的偏好。
44
+ 请从下方输入中提取用户明确表达的偏好。
45
+
46
+ 偏好判断:
47
+ - 偏好是用户本人明确表达的、相对稳定且可复用的态度、选择、约束或习惯,通常能用于后续交互、推荐或个性化服务。
48
+ - 对于显式偏好,只要用户清楚表达了个人偏好或后续处理规则,单次表达即可作为证据,不要求出现重复行为。
49
+ - “喜欢、不喜欢、想要、不想要、偏好”等词语是重要信号,但当前任务请求、信息查询、临时状态、安全或事实性疑问本身并不等同于偏好。
50
+ - 仅提取能够合理复用于后续交互的偏好。仅适用于当前请求、当前任务或当前材料的临时要求、执行参数和一次性需求不属于偏好。偏好是否可复用取决于用户表达的适用范围,而不是其在对话中出现的次数。
51
+ - 当用户针对同一主题或事件修改或更新其偏好时,提取偏好变化的完整演变过程,包括原始偏好和更新后的偏好。
52
+ - 当用户对 Agent 或 Assistant 的内容明确表达可复用的认可、拒绝或选择时,仅将用户自己的表态作为偏好证据。
53
+
54
+ 来源判断:
55
+ - 输入可能是对话记录,或用户与 Agent 的交互记录。
56
+ - 仅从能够明确归因于用户本人表达的内容中提取偏好。
57
+ - 忽略 Agent 或 Assistant 的输出,以及 Agent 执行过程中注入、召回或生成的上下文,例如历史记忆、工具调用及其返回结果。即使这些内容被包装在 user 消息中,也不得视为用户本人发言。
58
+ - 无法可靠确认内容来源时,不要据此提取偏好。
47
59
 
48
60
  要求:
49
- 1. 只保留用户明确提到且可合理复用于当前轮次之外的偏好,不要推断或假设。如果用户提到了偏好的原因,也要包含这些原因。
50
- 2. 输出应该是一个条目列表,包含简洁的自然语言摘要和相应的上下文摘要。上下文摘要应保留用户偏好的证据,不要把仅来自助手的内容改写成用户偏好。
51
- 3. 如果在同一主题或领域内提到了多个偏好,你必须将它们合并为一个条目,保持每个条目信息完整。不同话题的偏好要分为多个条目。
52
- 4. 如果没有可以合理提取的显式偏好,返回[]
61
+ 1. 不要推断或假设用户未明确表达的偏好。如果用户说明了偏好的原因,也要包含该原因。
62
+ 2. 输出一个由简洁偏好摘要及相应上下文摘要组成的列表。上下文摘要必须保留来自用户的完整证据,不得把非用户内容改写成用户偏好。
63
+ 3. 同一主题或领域内的多个偏好必须合并为一个完整条目;不同主题的偏好应分别输出。
64
+ 4. 如果没有可以合理提取的显式偏好,返回 `[]`。
53
65
 
54
- 对话:
66
+ 输入:
55
67
  {qa_pair}
56
68
 
57
69
  找出所有显式偏好。如果没有找到显式偏好,返回[]。仅输出JSON:
@@ -74,8 +86,9 @@ You are a preference inference assistant. Please extract **implicit preferences*
74
86
 
75
87
  Notes:
76
88
  - Implicit preferences are rare. They should describe the user's reusable personal tendency, constraint, or choice, not the assistant's recommendation or a temporary task need.
77
- - Expressions limited to the current moment or task, such as "now", "today", "this time", "this document", "this task", or "current", are weak evidence for implicit preferences. Treat them as one-off needs unless there is additional user-side evidence of a recurring and reusable pattern.
78
- - For Assistant's responses or suggestions, they can only be extracted as the user's implicit preferences if the user later provides clear positive evidence, such as adoption, agreement, or action based on the suggestion. Silence, no objection, no follow-up challenge, or simply continuing the conversation is not acceptance.
89
+ - Extract only preferences that can reasonably be reused in future interactions. Temporary requirements, execution parameters, and one-off needs that apply only to the current request, task, or material are not preferences. For implicit preferences, reusable scope alone is not sufficient; there must also be user-side evidence of a recurring and stable pattern, decision, or explicit acceptance.
90
+ - The input may be a conversation or a record of interactions between a user and an Agent. Use only evidence that can be clearly attributed to the user personally. Ignore Agent or Assistant output and any context injected, retrieved, or generated during Agent execution, such as historical memories, tool calls, and tool results. Such content is not user evidence, even if it is wrapped in a user message. If its source cannot be determined reliably, do not use it.
91
+ - For Assistant's responses or suggestions, use only the user's subsequent response as preference evidence when the user provides clear positive evidence, such as adoption, agreement, or action based on the suggestion. Do not use the Assistant content itself as evidence. Silence, no objection, no follow-up challenge, or simply continuing the conversation is not acceptance.
79
92
  - Do not infer implicit preferences from assistant-only safety warnings, factual explanations, tool/search suggestions, or general advice. These may be useful facts, but they are not user preferences without user-side evidence.
80
93
  - For conversations with only one question-answer turn (single Q&A), implicit preferences cannot be extracted due to insufficient context and behavioral patterns. Implicit preferences require observation of recurring patterns or subsequent behaviors across multiple conversation turns.
81
94
 
@@ -138,8 +151,9 @@ NAIVE_IMPLICIT_PREFERENCE_EXTRACT_PROMPT_ZH = """
138
151
 
139
152
  注意事项:
140
153
  - 隐式偏好应谨慎提取。它应描述用户可复用的个人倾向、约束或选择,而不是助手的建议或一次性的任务需求。
141
- - “现在、今天、这次、这份、本次、当前”等限定在当前轮次或当前任务的表达,对隐式偏好来说只是弱证据。除非还有额外用户侧证据显示重复、稳定、可复用的模式,否则视为一次性需求。
142
- - 对于Assistant的回答内容或建议,只有在后续对话中用户提供明确的正向证据(如采纳、认同、按建议行动等)时,才能将相关内容提取为用户的隐式偏好。沉默、未反驳、未追问、继续对话本身都不代表接受。
154
+ - 仅提取能够合理复用于后续交互的偏好。仅适用于当前请求、当前任务或当前材料的临时要求、执行参数和一次性需求不属于偏好。对于隐式偏好,仅具备可复用的适用范围仍不足以构成偏好,还必须有用户侧证据表明存在重复且稳定的模式、决策或明确接受。
155
+ - 输入可能是对话记录,或用户与 Agent 的交互记录。仅使用能够明确归因于用户本人表达的内容作为证据。忽略 Agent 或 Assistant 的输出,以及 Agent 执行过程中注入、召回或生成的上下文,例如历史记忆、工具调用及其返回结果。即使这些内容被包装在 user 消息中,也不得视为用户证据。无法可靠确认内容来源时,不要据此推断偏好。
156
+ - 对于 Assistant 的回答或建议,只有用户在后续对话中提供明确的正向证据,例如采纳、认同或按建议行动时,才能将用户自己的后续表态作为偏好证据;不得将 Assistant 的内容本身作为证据。沉默、未反驳、未追问或仅仅继续对话,都不代表接受。
143
157
  - 不要从仅由助手给出的安全提醒、事实解释、工具/检索建议或一般建议中推断隐式偏好。这些内容可以是有用事实,但没有用户侧证据时不是用户偏好。
144
158
  - 对于只有一轮问答(一问一答)的对话,由于缺乏足够的上下文和行为模式,不能提取隐式偏好。隐式偏好需要从多轮对话中观察到的重复模式或后续行为来推断。
145
159
 
File without changes
File without changes
File without changes