memu-py 1.2.0__tar.gz → 1.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) hide show
  1. {memu_py-1.2.0 → memu_py-1.3.0}/.github/workflows/pr-title.yml +1 -1
  2. {memu_py-1.2.0 → memu_py-1.3.0}/CHANGELOG.md +28 -0
  3. memu_py-1.3.0/PKG-INFO +634 -0
  4. memu_py-1.3.0/README.md +597 -0
  5. memu_py-1.3.0/docs/integrations/grok.md +53 -0
  6. memu_py-1.3.0/docs/langgraph_integration.md +97 -0
  7. memu_py-1.3.0/docs/providers/grok.md +66 -0
  8. memu_py-1.3.0/docs/sealos_use_case.md +54 -0
  9. memu_py-1.3.0/docs/tutorials/getting_started.md +181 -0
  10. memu_py-1.3.0/examples/example_4_openrouter_memory.py +112 -0
  11. memu_py-1.3.0/examples/example_5_with_lazyllm_client.py +250 -0
  12. memu_py-1.3.0/examples/getting_started_robust.py +107 -0
  13. memu_py-1.3.0/examples/langgraph_demo.py +76 -0
  14. memu_py-1.3.0/examples/proactive/memory/config.py +66 -0
  15. memu_py-1.3.0/examples/proactive/memory/local/common.py +31 -0
  16. memu_py-1.3.0/examples/proactive/memory/local/memorize.py +38 -0
  17. memu_py-1.3.0/examples/proactive/memory/local/tools.py +42 -0
  18. memu_py-1.3.0/examples/proactive/memory/platform/memorize.py +31 -0
  19. memu_py-1.3.0/examples/proactive/memory/platform/tools.py +52 -0
  20. memu_py-1.3.0/examples/proactive/proactive.py +198 -0
  21. memu_py-1.3.0/examples/sealos_support_agent.py +70 -0
  22. {memu_py-1.2.0 → memu_py-1.3.0}/pyproject.toml +13 -1
  23. memu_py-1.3.0/readme/README_en.md +595 -0
  24. memu_py-1.3.0/readme/README_es.md +598 -0
  25. memu_py-1.3.0/readme/README_fr.md +599 -0
  26. memu_py-1.3.0/readme/README_ja.md +596 -0
  27. memu_py-1.3.0/readme/README_ko.md +595 -0
  28. memu_py-1.3.0/readme/README_zh.md +593 -0
  29. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/app/service.py +13 -0
  30. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/app/settings.py +24 -1
  31. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/models.py +4 -2
  32. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/models.py +3 -0
  33. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/models.py +3 -1
  34. memu_py-1.3.0/src/memu/integrations/__init__.py +3 -0
  35. memu_py-1.3.0/src/memu/integrations/langgraph.py +163 -0
  36. memu_py-1.3.0/src/memu/llm/backends/__init__.py +7 -0
  37. memu_py-1.3.0/src/memu/llm/backends/grok.py +11 -0
  38. memu_py-1.3.0/src/memu/llm/backends/openrouter.py +70 -0
  39. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/llm/http_client.py +19 -0
  40. memu_py-1.3.0/src/memu/llm/lazyllm_client.py +134 -0
  41. memu_py-1.3.0/tests/__init__.py +0 -0
  42. memu_py-1.3.0/tests/integrations/test_langgraph.py +80 -0
  43. memu_py-1.3.0/tests/llm/test_grok_provider.py +46 -0
  44. memu_py-1.3.0/tests/test_lazyllm.py +91 -0
  45. memu_py-1.3.0/tests/test_openrouter.py +161 -0
  46. {memu_py-1.2.0 → memu_py-1.3.0}/tests/test_postgres.py +2 -2
  47. memu_py-1.3.0/tests/utils/test_conversation.py +91 -0
  48. {memu_py-1.2.0 → memu_py-1.3.0}/uv.lock +863 -3
  49. memu_py-1.2.0/PKG-INFO +0 -476
  50. memu_py-1.2.0/README.md +0 -446
  51. memu_py-1.2.0/README_zh.md +0 -582
  52. memu_py-1.2.0/src/memu/llm/backends/__init__.py +0 -5
  53. {memu_py-1.2.0 → memu_py-1.3.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  54. {memu_py-1.2.0 → memu_py-1.3.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  55. {memu_py-1.2.0 → memu_py-1.3.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  56. {memu_py-1.2.0 → memu_py-1.3.0}/.github/ISSUE_TEMPLATE/hackathon_task.yml +0 -0
  57. {memu_py-1.2.0 → memu_py-1.3.0}/.github/ISSUE_TEMPLATE/improvement_suggestion.yml +0 -0
  58. {memu_py-1.2.0 → memu_py-1.3.0}/.github/workflows/build.yml +0 -0
  59. {memu_py-1.2.0 → memu_py-1.3.0}/.github/workflows/release-please.yml +0 -0
  60. {memu_py-1.2.0 → memu_py-1.3.0}/.gitignore +0 -0
  61. {memu_py-1.2.0 → memu_py-1.3.0}/.pre-commit-config.yaml +0 -0
  62. {memu_py-1.2.0 → memu_py-1.3.0}/.python-version +0 -0
  63. {memu_py-1.2.0 → memu_py-1.3.0}/CONTRIBUTING.md +0 -0
  64. {memu_py-1.2.0 → memu_py-1.3.0}/Cargo.lock +0 -0
  65. {memu_py-1.2.0 → memu_py-1.3.0}/Cargo.toml +0 -0
  66. {memu_py-1.2.0 → memu_py-1.3.0}/LICENSE.txt +0 -0
  67. {memu_py-1.2.0 → memu_py-1.3.0}/MANIFEST.in +0 -0
  68. {memu_py-1.2.0 → memu_py-1.3.0}/Makefile +0 -0
  69. {memu_py-1.2.0 → memu_py-1.3.0}/assets/banner.png +0 -0
  70. {memu_py-1.2.0 → memu_py-1.3.0}/assets/benchmark.png +0 -0
  71. {memu_py-1.2.0 → memu_py-1.3.0}/assets/memorize.png +0 -0
  72. {memu_py-1.2.0 → memu_py-1.3.0}/assets/partners/LazyLLM.png +0 -0
  73. {memu_py-1.2.0 → memu_py-1.3.0}/assets/partners/buddie.png +0 -0
  74. {memu_py-1.2.0 → memu_py-1.3.0}/assets/partners/bytebase.png +0 -0
  75. {memu_py-1.2.0 → memu_py-1.3.0}/assets/partners/jazz.png +0 -0
  76. {memu_py-1.2.0 → memu_py-1.3.0}/assets/partners/openagents.png +0 -0
  77. {memu_py-1.2.0 → memu_py-1.3.0}/assets/partners/xroute.png +0 -0
  78. {memu_py-1.2.0 → memu_py-1.3.0}/assets/qrcode.png +0 -0
  79. {memu_py-1.2.0 → memu_py-1.3.0}/assets/retrieve.png +0 -0
  80. {memu_py-1.2.0 → memu_py-1.3.0}/assets/star.gif +0 -0
  81. {memu_py-1.2.0 → memu_py-1.3.0}/assets/structure.png +0 -0
  82. {memu_py-1.2.0 → memu_py-1.3.0}/assets/usecase/ai_companion-0000.jpg +0 -0
  83. {memu_py-1.2.0 → memu_py-1.3.0}/assets/usecase/ai_creation-0000.jpg +0 -0
  84. {memu_py-1.2.0 → memu_py-1.3.0}/assets/usecase/ai_edu-0000.jpg +0 -0
  85. {memu_py-1.2.0 → memu_py-1.3.0}/assets/usecase/ai_ip-0000.png +0 -0
  86. {memu_py-1.2.0 → memu_py-1.3.0}/assets/usecase/ai_robot-0000.jpg +0 -0
  87. {memu_py-1.2.0 → memu_py-1.3.0}/assets/usecase/ai_role_play-0000.jpg +0 -0
  88. {memu_py-1.2.0 → memu_py-1.3.0}/assets/usecase/ai_therapy-0000.jpg +0 -0
  89. {memu_py-1.2.0 → memu_py-1.3.0}/docs/sqlite.md +0 -0
  90. {memu_py-1.2.0 → memu_py-1.3.0}/examples/example_1_conversation_memory.py +0 -0
  91. {memu_py-1.2.0 → memu_py-1.3.0}/examples/example_2_skill_extraction.py +0 -0
  92. {memu_py-1.2.0 → memu_py-1.3.0}/examples/example_3_multimodal_memory.py +0 -0
  93. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/activities.md +0 -0
  94. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/experiences.md +0 -0
  95. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/goals.md +0 -0
  96. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/habits.md +0 -0
  97. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/knowledge.md +0 -0
  98. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/opinions.md +0 -0
  99. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/personal_info.md +0 -0
  100. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/preferences.md +0 -0
  101. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/relationships.md +0 -0
  102. {memu_py-1.2.0 → memu_py-1.3.0}/examples/output/conversation_example/work_life.md +0 -0
  103. {memu_py-1.2.0/src/memu/blob → memu_py-1.3.0/examples/proactive/memory/local}/__init__.py +0 -0
  104. {memu_py-1.2.0/src/memu/prompts/retrieve → memu_py-1.3.0/examples/proactive/memory/platform}/__init__.py +0 -0
  105. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/conversations/conv1.json +0 -0
  106. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/conversations/conv2.json +0 -0
  107. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/conversations/conv3.json +0 -0
  108. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/docs/doc1.txt +0 -0
  109. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/docs/doc2.txt +0 -0
  110. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/images/image1.png +0 -0
  111. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/logs/log1.txt +0 -0
  112. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/logs/log2.txt +0 -0
  113. {memu_py-1.2.0 → memu_py-1.3.0}/examples/resources/logs/log3.txt +0 -0
  114. {memu_py-1.2.0 → memu_py-1.3.0}/setup.cfg +0 -0
  115. {memu_py-1.2.0 → memu_py-1.3.0}/src/lib.rs +0 -0
  116. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/__init__.py +0 -0
  117. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/_core.pyi +0 -0
  118. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/app/__init__.py +0 -0
  119. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/app/crud.py +0 -0
  120. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/app/memorize.py +0 -0
  121. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/app/patch.py +0 -0
  122. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/app/retrieve.py +0 -0
  123. {memu_py-1.2.0/tests → memu_py-1.3.0/src/memu/blob}/__init__.py +0 -0
  124. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/blob/local_fs.py +0 -0
  125. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/__init__.py +0 -0
  126. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/factory.py +0 -0
  127. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/__init__.py +0 -0
  128. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/models.py +0 -0
  129. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/repo.py +0 -0
  130. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/repositories/__init__.py +0 -0
  131. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/repositories/category_item_repo.py +0 -0
  132. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/repositories/filter.py +0 -0
  133. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/repositories/memory_category_repo.py +0 -0
  134. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/repositories/memory_item_repo.py +0 -0
  135. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/repositories/resource_repo.py +0 -0
  136. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/state.py +0 -0
  137. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/inmemory/vector.py +0 -0
  138. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/interfaces.py +0 -0
  139. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/__init__.py +0 -0
  140. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/migration.py +0 -0
  141. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/migrations/__init__.py +0 -0
  142. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/migrations/env.py +0 -0
  143. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/postgres.py +0 -0
  144. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/repositories/__init__.py +0 -0
  145. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/repositories/base.py +0 -0
  146. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/repositories/category_item_repo.py +0 -0
  147. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/repositories/memory_category_repo.py +0 -0
  148. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/repositories/memory_item_repo.py +0 -0
  149. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/repositories/resource_repo.py +0 -0
  150. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/schema.py +0 -0
  151. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/postgres/session.py +0 -0
  152. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/repositories/__init__.py +0 -0
  153. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/repositories/category_item.py +0 -0
  154. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/repositories/memory_category.py +0 -0
  155. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/repositories/memory_item.py +0 -0
  156. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/repositories/resource.py +0 -0
  157. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/__init__.py +0 -0
  158. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/repositories/__init__.py +0 -0
  159. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/repositories/base.py +0 -0
  160. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/repositories/category_item_repo.py +0 -0
  161. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/repositories/memory_category_repo.py +0 -0
  162. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/repositories/memory_item_repo.py +0 -0
  163. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/repositories/resource_repo.py +0 -0
  164. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/schema.py +0 -0
  165. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/session.py +0 -0
  166. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/sqlite/sqlite.py +0 -0
  167. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/database/state.py +0 -0
  168. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/embedding/__init__.py +0 -0
  169. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/embedding/backends/__init__.py +0 -0
  170. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/embedding/backends/base.py +0 -0
  171. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/embedding/backends/doubao.py +0 -0
  172. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/embedding/backends/openai.py +0 -0
  173. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/embedding/http_client.py +0 -0
  174. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/embedding/openai_sdk.py +0 -0
  175. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/llm/backends/base.py +0 -0
  176. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/llm/backends/doubao.py +0 -0
  177. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/llm/backends/openai.py +0 -0
  178. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/llm/openai_sdk.py +0 -0
  179. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/llm/wrapper.py +0 -0
  180. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/__init__.py +0 -0
  181. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/category_patch/__init__.py +0 -0
  182. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/category_patch/category.py +0 -0
  183. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/category_summary/__init__.py +0 -0
  184. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/category_summary/category.py +0 -0
  185. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/memory_type/__init__.py +0 -0
  186. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/memory_type/behavior.py +0 -0
  187. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/memory_type/event.py +0 -0
  188. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/memory_type/knowledge.py +0 -0
  189. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/memory_type/profile.py +0 -0
  190. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/memory_type/skill.py +0 -0
  191. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/preprocess/__init__.py +0 -0
  192. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/preprocess/audio.py +0 -0
  193. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/preprocess/conversation.py +0 -0
  194. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/preprocess/document.py +0 -0
  195. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/preprocess/image.py +0 -0
  196. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/preprocess/video.py +0 -0
  197. /memu_py-1.2.0/docs/.gitkeep → /memu_py-1.3.0/src/memu/prompts/retrieve/__init__.py +0 -0
  198. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/retrieve/judger.py +0 -0
  199. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/retrieve/llm_category_ranker.py +0 -0
  200. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/retrieve/llm_item_ranker.py +0 -0
  201. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/retrieve/llm_resource_ranker.py +0 -0
  202. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/retrieve/pre_retrieval_decision.py +0 -0
  203. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/retrieve/query_rewriter.py +0 -0
  204. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/prompts/retrieve/query_rewriter_judger.py +0 -0
  205. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/utils/__init__.py +0 -0
  206. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/utils/conversation.py +0 -0
  207. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/utils/video.py +0 -0
  208. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/workflow/__init__.py +0 -0
  209. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/workflow/interceptor.py +0 -0
  210. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/workflow/pipeline.py +0 -0
  211. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/workflow/runner.py +0 -0
  212. {memu_py-1.2.0 → memu_py-1.3.0}/src/memu/workflow/step.py +0 -0
  213. {memu_py-1.2.0 → memu_py-1.3.0}/tests/example/example_conversation.json +0 -0
  214. {memu_py-1.2.0 → memu_py-1.3.0}/tests/rust_entry_test.py +0 -0
  215. {memu_py-1.2.0 → memu_py-1.3.0}/tests/test_inmemory.py +0 -0
  216. {memu_py-1.2.0 → memu_py-1.3.0}/tests/test_sqlite.py +0 -0
@@ -17,7 +17,7 @@ jobs:
17
17
  name: Validate PR title
18
18
  runs-on: ubuntu-latest
19
19
  steps:
20
- - uses: amannn/action-semantic-pull-request@v5
20
+ - uses: amannn/action-semantic-pull-request@v6
21
21
  env:
22
22
  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
23
23
  with:
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.3.0](https://github.com/NevaMind-AI/memU/compare/v1.2.0...v1.3.0) (2026-01-29)
4
+
5
+
6
+ ### Features
7
+
8
+ * add happened at and extra fields to memory item ([#262](https://github.com/NevaMind-AI/memU/issues/262)) ([77938e9](https://github.com/NevaMind-AI/memU/commit/77938e9c282e1c0eda11088675c35975d85c4ff0))
9
+ * add proactive example ([#268](https://github.com/NevaMind-AI/memU/issues/268)) ([d3d1de1](https://github.com/NevaMind-AI/memU/commit/d3d1de1d9b0f45d9b14479cbaa4462458b172005))
10
+ * add Sealos support agent use case (Track G) ([#255](https://github.com/NevaMind-AI/memU/issues/255)) ([8fbdf3c](https://github.com/NevaMind-AI/memU/commit/8fbdf3c301f74f2aa85604837e00bb305b8801ec))
11
+ * integrate LazyLLM to provide more llm services ([#265](https://github.com/NevaMind-AI/memU/issues/265)) ([c03f639](https://github.com/NevaMind-AI/memU/commit/c03f639677d6c897b75dfe28d0cd92d5b5270957))
12
+ * **integrations:** Add LangGraph Adapter for MemU (Track A) ([#258](https://github.com/NevaMind-AI/memU/issues/258)) ([50b5502](https://github.com/NevaMind-AI/memU/commit/50b5502ebcacd86401f98b1bb7e5a6577fab7126))
13
+ * **llm:** add Grok (xAI) integration ([#179](https://github.com/NevaMind-AI/memU/issues/179)) ([#236](https://github.com/NevaMind-AI/memU/issues/236)) ([1e16309](https://github.com/NevaMind-AI/memU/commit/1e1630948af535f8ed9d608e6c4f9d2748d4ce8e))
14
+ * Openrouter integration as backend provider ([#182](https://github.com/NevaMind-AI/memU/issues/182)) ([cba667a](https://github.com/NevaMind-AI/memU/commit/cba667a56daca5093c9b79a598c7d2ffda813756))
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * memory type & proactive example ([#272](https://github.com/NevaMind-AI/memU/issues/272)) ([710f14d](https://github.com/NevaMind-AI/memU/commit/710f14d4b171c5cde609a9dc2caf454681ab94b3))
20
+ * proactive examples ([#273](https://github.com/NevaMind-AI/memU/issues/273)) ([603ae12](https://github.com/NevaMind-AI/memU/commit/603ae122b94741bb350656086960c4e2bb868c2a))
21
+
22
+
23
+ ### Documentation
24
+
25
+ * Add link to memU bot ([#276](https://github.com/NevaMind-AI/memU/issues/276)) ([2f84231](https://github.com/NevaMind-AI/memU/commit/2f842311ed592c1a45cdb9e24f7a128da97a0a39))
26
+ * multilingual readme ([#271](https://github.com/NevaMind-AI/memU/issues/271)) ([200f47a](https://github.com/NevaMind-AI/memU/commit/200f47a15ff7d05fc435abe1d2cefbb3774548fe))
27
+ * Update memU bot link to include full URL ([#277](https://github.com/NevaMind-AI/memU/issues/277)) ([6874eaf](https://github.com/NevaMind-AI/memU/commit/6874eaf278e910d07a4427dd4c06f9c4c21283ce))
28
+ * update readme ([#266](https://github.com/NevaMind-AI/memU/issues/266)) ([16ae534](https://github.com/NevaMind-AI/memU/commit/16ae534675a5e0711256a5e2147b9190fd8b2524))
29
+ * update README ([#270](https://github.com/NevaMind-AI/memU/issues/270)) ([b531d39](https://github.com/NevaMind-AI/memU/commit/b531d39e5538449b31cb212aea1deea24e12180f))
30
+
3
31
  ## [1.2.0](https://github.com/NevaMind-AI/memU/compare/v1.1.2...v1.2.0) (2026-01-14)
4
32
 
5
33
 
memu_py-1.3.0/PKG-INFO ADDED
@@ -0,0 +1,634 @@
1
+ Metadata-Version: 2.4
2
+ Name: memu-py
3
+ Version: 1.3.0
4
+ Classifier: Development Status :: 4 - Beta
5
+ Classifier: Intended Audience :: Developers
6
+ Classifier: Operating System :: OS Independent
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: Programming Language :: Python :: 3.13
9
+ Requires-Dist: defusedxml>=0.7.1
10
+ Requires-Dist: httpx>=0.28.1
11
+ Requires-Dist: numpy>=2.3.4
12
+ Requires-Dist: openai>=2.8.0
13
+ Requires-Dist: pydantic>=2.12.4
14
+ Requires-Dist: sqlmodel>=0.0.27
15
+ Requires-Dist: alembic>=1.14.0
16
+ Requires-Dist: pendulum>=3.1.0
17
+ Requires-Dist: langchain-core>=1.2.7
18
+ Requires-Dist: lazyllm>=0.7.3
19
+ Requires-Dist: claude-agent-sdk>=0.1.24 ; extra == 'claude'
20
+ Requires-Dist: langgraph>=0.0.10 ; extra == 'langgraph'
21
+ Requires-Dist: langchain-core>=0.1.0 ; extra == 'langgraph'
22
+ Requires-Dist: pgvector>=0.3.4 ; extra == 'postgres'
23
+ Requires-Dist: sqlalchemy[postgresql-psycopgbinary]>=2.0.36 ; extra == 'postgres'
24
+ Provides-Extra: claude
25
+ Provides-Extra: langgraph
26
+ Provides-Extra: postgres
27
+ License-File: LICENSE.txt
28
+ Summary: AI Memory and Conversation Management Framework - Simple as mem0, Powerful as MemU
29
+ Keywords: ai,memory,conversation,llm,chatbot,agent
30
+ Author-email: MemU Team <contact@nevamind.ai>
31
+ Requires-Python: >=3.13
32
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
33
+ Project-URL: Bug Tracker, https://github.com/NevaMind-AI/MemU/issues
34
+ Project-URL: Documentation, https://github.com/NevaMind-AI/MemU#readme
35
+ Project-URL: Homepage, https://github.com/NevaMind-AI/MemU
36
+
37
+ ![MemU Banner](assets/banner.png)
38
+
39
+ <div align="center">
40
+
41
+ # memU
42
+
43
+ ### Always-On Proactive Memory for AI Agents
44
+
45
+ [![PyPI version](https://badge.fury.io/py/memu-py.svg)](https://badge.fury.io/py/memu-py)
46
+ [![License: Apache 2.0](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
47
+ [![Python 3.13+](https://img.shields.io/badge/python-3.13+-blue.svg)](https://www.python.org/downloads/)
48
+ [![Discord](https://img.shields.io/badge/Discord-Join%20Chat-5865F2?logo=discord&logoColor=white)](https://discord.gg/memu)
49
+ [![Twitter](https://img.shields.io/badge/Twitter-Follow-1DA1F2?logo=x&logoColor=white)](https://x.com/memU_ai)
50
+
51
+ <a href="https://trendshift.io/repositories/17374" target="_blank"><img src="https://trendshift.io/api/badge/repositories/17374" alt="NevaMind-AI%2FmemU | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
52
+
53
+ **[English](readme/README_en.md) | [中文](readme/README_zh.md) | [日本語](readme/README_ja.md) | [한국어](readme/README_ko.md) | [Español](readme/README_es.md) | [Français](readme/README_fr.md)**
54
+
55
+ </div>
56
+
57
+ ---
58
+
59
+ memU is a memory framework built for **24/7 proactive agents**.
60
+ It is designed for long-running use and greatly **reduces the LLM token cost** of keeping agents always online, making always-on, evolving agents practical in production systems.
61
+ memU **continuously captures and understands user intent**. Even without a command, the agent can tell what you are about to do and act on it by itself.
62
+
63
+ check our [memU bot](https://memu.bot)
64
+
65
+ ---
66
+
67
+ ## ⭐️ Star the repository
68
+
69
+ <img width="100%" src="https://github.com/NevaMind-AI/memU/blob/main/assets/star.gif" />
70
+ If you find memU useful or interesting, a GitHub Star ⭐️ would be greatly appreciated.
71
+
72
+ ---
73
+
74
+
75
+ ## ✨ Core Features
76
+
77
+ | Capability | Description |
78
+ |------------|-------------|
79
+ | 🤖 **24/7 Proactive Agent** | Always-on memory agent that works continuously in the background—never sleeps, never forgets |
80
+ | 🎯 **User Intention Capture** | Understands and remembers user goals, preferences, and context across sessions automatically |
81
+ | 💰 **Cost Efficient** | Reduces long-running token costs by caching insights and avoiding redundant LLM calls |
82
+ ---
83
+
84
+ ## 🔄 How Proactive Memory Works
85
+
86
+ ```bash
87
+
88
+ cd examples/proactive
89
+ python proactive.py
90
+
91
+ ```
92
+
93
+ ---
94
+
95
+ ### Proactive Memory Lifecycle
96
+ ```
97
+ ┌─────────────────────────────────────────────────┐
98
+ │ 1. USER INITIAL QUERY │
99
+ │ └─ User input, context, or any trigger event │
100
+ │ Conversation starts here │
101
+ └─────────────────────────────────────────────────┘
102
+
103
+ ┌─────────────────────────────────────────────────┐
104
+ │ 2. AGENT PLANNING / ACTIONS │
105
+ │ └─ Analyze request, execute tasks │
106
+ │ Retrieve relevant memories for context │
107
+ └─────────────────────────────────────────────────┘
108
+
109
+ ┌─────────────────────────────────────────────────┐
110
+ │ 3. MEMORIZE & UPDATE TODOLIST │
111
+ │ └─ Store new insights, facts, preferences │
112
+ │ Modify task list based on progress │
113
+ └─────────────────────────────────────────────────┘
114
+
115
+ ┌─────────────────────────────────────────────────┐
116
+ │ 4. PREDICT USER INTENT │
117
+ │ └─ Anticipate next steps and needs │
118
+ │ Proactively prepare relevant context │
119
+ └─────────────────────────────────────────────────┘
120
+
121
+ ┌─────────────────────────────────────────────────┐
122
+ │ 5. LOOP (2 → 4) │
123
+ │ └─ Continuous iteration until task complete │
124
+ │ Agent-driven proactive workflow │
125
+ └─────────────────────────────────────────────────┘
126
+ ```
127
+
128
+ ---
129
+
130
+ ## 🎯 Proactive Use Cases
131
+
132
+ ### 1. **Information Recommendation**
133
+ *Agent monitors interests and proactively surfaces relevant content*
134
+ ```python
135
+ # User has been researching AI topics
136
+ MemU tracks: reading history, saved articles, search queries
137
+
138
+ # When new content arrives:
139
+ Agent: "I found 3 new papers on RAG optimization that align with
140
+ your recent research on retrieval systems. One author
141
+ (Dr. Chen) you've cited before published yesterday."
142
+
143
+ # Proactive behaviors:
144
+ - Learns topic preferences from browsing patterns
145
+ - Tracks author/source credibility preferences
146
+ - Filters noise based on engagement history
147
+ - Times recommendations for optimal attention
148
+ ```
149
+
150
+ ### 2. **Email Management**
151
+ *Agent learns communication patterns and handles routine correspondence*
152
+ ```python
153
+ # MemU observes email patterns over time:
154
+ - Response templates for common scenarios
155
+ - Priority contacts and urgent keywords
156
+ - Scheduling preferences and availability
157
+ - Writing style and tone variations
158
+
159
+ # Proactive email assistance:
160
+ Agent: "You have 12 new emails. I've drafted responses for 3 routine
161
+ requests and flagged 2 urgent items from your priority contacts.
162
+ Should I also reschedule tomorrow's meeting based on the
163
+ conflict John mentioned?"
164
+
165
+ # Autonomous actions:
166
+ ✓ Draft context-aware replies
167
+ ✓ Categorize and prioritize inbox
168
+ ✓ Detect scheduling conflicts
169
+ ✓ Summarize long threads with key decisions
170
+ ```
171
+
172
+ ### 3. **Trading & Financial Monitoring**
173
+ *Agent tracks market context and user investment behavior*
174
+ ```python
175
+ # MemU learns trading preferences:
176
+ - Risk tolerance from historical decisions
177
+ - Preferred sectors and asset classes
178
+ - Response patterns to market events
179
+ - Portfolio rebalancing triggers
180
+
181
+ # Proactive alerts:
182
+ Agent: "NVDA dropped 5% in after-hours trading. Based on your past
183
+ behavior, you typically buy tech dips above 3%. Your current
184
+ allocation allows for $2,000 additional exposure while
185
+ maintaining your 70/30 equity-bond target."
186
+
187
+ # Continuous monitoring:
188
+ - Track price alerts tied to user-defined thresholds
189
+ - Correlate news events with portfolio impact
190
+ - Learn from executed vs. ignored recommendations
191
+ - Anticipate tax-loss harvesting opportunities
192
+ ```
193
+
194
+
195
+ ...
196
+
197
+ ---
198
+
199
+ ## 🗂️ Hierarchical Memory Architecture
200
+
201
+ MemU's three-layer system enables both **reactive queries** and **proactive context loading**:
202
+
203
+ <img width="100%" alt="structure" src="assets/structure.png" />
204
+
205
+ | Layer | Reactive Use | Proactive Use |
206
+ |-------|--------------|---------------|
207
+ | **Resource** | Direct access to original data | Background monitoring for new patterns |
208
+ | **Item** | Targeted fact retrieval | Real-time extraction from ongoing interactions |
209
+ | **Category** | Summary-level overview | Automatic context assembly for anticipation |
210
+
211
+ **Proactive Benefits:**
212
+ - **Auto-categorization**: New memories self-organize into topics
213
+ - **Pattern Detection**: System identifies recurring themes
214
+ - **Context Prediction**: Anticipates what information will be needed next
215
+
216
+ ---
217
+
218
+ ## 🚀 Quick Start
219
+
220
+ ### Option 1: Cloud Version
221
+
222
+ Experience proactive memory instantly:
223
+
224
+ 👉 **[memu.so](https://memu.so)** - Hosted service with 7×24 continuous learning
225
+
226
+ For enterprise deployment with custom proactive workflows, contact **info@nevamind.ai**
227
+
228
+ #### Cloud API (v3)
229
+
230
+ | Base URL | `https://api.memu.so` |
231
+ |----------|----------------------|
232
+ | Auth | `Authorization: Bearer YOUR_API_KEY` |
233
+
234
+ | Method | Endpoint | Description |
235
+ |--------|----------|-------------|
236
+ | `POST` | `/api/v3/memory/memorize` | Register continuous learning task |
237
+ | `GET` | `/api/v3/memory/memorize/status/{task_id}` | Check real-time processing status |
238
+ | `POST` | `/api/v3/memory/categories` | List auto-generated categories |
239
+ | `POST` | `/api/v3/memory/retrieve` | Query memory (supports proactive context loading) |
240
+
241
+ 📚 **[Full API Documentation](https://memu.pro/docs#cloud-version)**
242
+
243
+ ---
244
+
245
+ ### Option 2: Self-Hosted
246
+
247
+ #### Installation
248
+ ```bash
249
+ pip install -e .
250
+ ```
251
+
252
+ #### Basic Example
253
+
254
+ > **Requirements**: Python 3.13+ and an OpenAI API key
255
+
256
+ **Test Continuous Learning** (in-memory):
257
+ ```bash
258
+ export OPENAI_API_KEY=your_api_key
259
+ cd tests
260
+ python test_inmemory.py
261
+ ```
262
+
263
+ **Test with Persistent Storage** (PostgreSQL):
264
+ ```bash
265
+ # Start PostgreSQL with pgvector
266
+ docker run -d \
267
+ --name memu-postgres \
268
+ -e POSTGRES_USER=postgres \
269
+ -e POSTGRES_PASSWORD=postgres \
270
+ -e POSTGRES_DB=memu \
271
+ -p 5432:5432 \
272
+ pgvector/pgvector:pg16
273
+
274
+ # Run continuous learning test
275
+ export OPENAI_API_KEY=your_api_key
276
+ cd tests
277
+ python test_postgres.py
278
+ ```
279
+
280
+ Both examples demonstrate **proactive memory workflows**:
281
+ 1. **Continuous Ingestion**: Process multiple files sequentially
282
+ 2. **Auto-Extraction**: Immediate memory creation
283
+ 3. **Proactive Retrieval**: Context-aware memory surfacing
284
+
285
+ See [`tests/test_inmemory.py`](tests/test_inmemory.py) and [`tests/test_postgres.py`](tests/test_postgres.py) for implementation details.
286
+
287
+ ---
288
+
289
+ ### Custom LLM and Embedding Providers
290
+
291
+ MemU supports custom LLM and embedding providers beyond OpenAI. Configure them via `llm_profiles`:
292
+ ```python
293
+ from memu import MemUService
294
+
295
+ service = MemUService(
296
+ llm_profiles={
297
+ # Default profile for LLM operations
298
+ "default": {
299
+ "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
300
+ "api_key": "your_api_key",
301
+ "chat_model": "qwen3-max",
302
+ "client_backend": "sdk" # "sdk" or "http"
303
+ },
304
+ # Separate profile for embeddings
305
+ "embedding": {
306
+ "base_url": "https://api.voyageai.com/v1",
307
+ "api_key": "your_voyage_api_key",
308
+ "embed_model": "voyage-3.5-lite"
309
+ }
310
+ },
311
+ # ... other configuration
312
+ )
313
+ ```
314
+
315
+ ---
316
+
317
+ ### OpenRouter Integration
318
+
319
+ MemU supports [OpenRouter](https://openrouter.ai) as a model provider, giving you access to multiple LLM providers through a single API.
320
+
321
+ #### Configuration
322
+ ```python
323
+ from memu import MemoryService
324
+
325
+ service = MemoryService(
326
+ llm_profiles={
327
+ "default": {
328
+ "provider": "openrouter",
329
+ "client_backend": "httpx",
330
+ "base_url": "https://openrouter.ai",
331
+ "api_key": "your_openrouter_api_key",
332
+ "chat_model": "anthropic/claude-3.5-sonnet", # Any OpenRouter model
333
+ "embed_model": "openai/text-embedding-3-small", # Embedding model
334
+ },
335
+ },
336
+ database_config={
337
+ "metadata_store": {"provider": "inmemory"},
338
+ },
339
+ )
340
+ ```
341
+
342
+ #### Environment Variables
343
+
344
+ | Variable | Description |
345
+ |----------|-------------|
346
+ | `OPENROUTER_API_KEY` | Your OpenRouter API key from [openrouter.ai/keys](https://openrouter.ai/keys) |
347
+
348
+ #### Supported Features
349
+
350
+ | Feature | Status | Notes |
351
+ |---------|--------|-------|
352
+ | Chat Completions | Supported | Works with any OpenRouter chat model |
353
+ | Embeddings | Supported | Use OpenAI embedding models via OpenRouter |
354
+ | Vision | Supported | Use vision-capable models (e.g., `openai/gpt-4o`) |
355
+
356
+ #### Running OpenRouter Tests
357
+ ```bash
358
+ export OPENROUTER_API_KEY=your_api_key
359
+
360
+ # Full workflow test (memorize + retrieve)
361
+ python tests/test_openrouter.py
362
+
363
+ # Embedding-specific tests
364
+ python tests/test_openrouter_embedding.py
365
+
366
+ # Vision-specific tests
367
+ python tests/test_openrouter_vision.py
368
+ ```
369
+
370
+ See [`examples/example_4_openrouter_memory.py`](examples/example_4_openrouter_memory.py) for a complete working example.
371
+
372
+ ---
373
+
374
+ ## 📖 Core APIs
375
+
376
+ ### `memorize()` - Continuous Learning Pipeline
377
+
378
+ Processes inputs in real-time and immediately updates memory:
379
+
380
+ <img width="100%" alt="memorize" src="assets/memorize.png" />
381
+ ```python
382
+ result = await service.memorize(
383
+ resource_url="path/to/file.json", # File path or URL
384
+ modality="conversation", # conversation | document | image | video | audio
385
+ user={"user_id": "123"} # Optional: scope to a user
386
+ )
387
+
388
+ # Returns immediately with extracted memory:
389
+ {
390
+ "resource": {...}, # Stored resource metadata
391
+ "items": [...], # Extracted memory items (available instantly)
392
+ "categories": [...] # Auto-updated category structure
393
+ }
394
+ ```
395
+
396
+ **Proactive Features:**
397
+ - Zero-delay processing—memories available immediately
398
+ - Automatic categorization without manual tagging
399
+ - Cross-reference with existing memories for pattern detection
400
+
401
+ ### `retrieve()` - Dual-Mode Intelligence
402
+
403
+ MemU supports both **proactive context loading** and **reactive querying**:
404
+
405
+ <img width="100%" alt="retrieve" src="assets/retrieve.png" />
406
+
407
+ #### RAG-based Retrieval (`method="rag"`)
408
+
409
+ Fast **proactive context assembly** using embeddings:
410
+
411
+ - ✅ **Instant context**: Sub-second memory surfacing
412
+ - ✅ **Background monitoring**: Can run continuously without LLM costs
413
+ - ✅ **Similarity scoring**: Identifies most relevant memories automatically
414
+
415
+ #### LLM-based Retrieval (`method="llm"`)
416
+
417
+ Deep **anticipatory reasoning** for complex contexts:
418
+
419
+ - ✅ **Intent prediction**: LLM infers what user needs before they ask
420
+ - ✅ **Query evolution**: Automatically refines search as context develops
421
+ - ✅ **Early termination**: Stops when sufficient context is gathered
422
+
423
+ #### Comparison
424
+
425
+ | Aspect | RAG (Fast Context) | LLM (Deep Reasoning) |
426
+ |--------|-------------------|---------------------|
427
+ | **Speed** | ⚡ Milliseconds | 🐢 Seconds |
428
+ | **Cost** | 💰 Embedding only | 💰💰 LLM inference |
429
+ | **Proactive use** | Continuous monitoring | Triggered context loading |
430
+ | **Best for** | Real-time suggestions | Complex anticipation |
431
+
432
+ #### Usage
433
+ ```python
434
+ # Proactive retrieval with context history
435
+ result = await service.retrieve(
436
+ queries=[
437
+ {"role": "user", "content": {"text": "What are their preferences?"}},
438
+ {"role": "user", "content": {"text": "Tell me about work habits"}}
439
+ ],
440
+ where={"user_id": "123"}, # Optional: scope filter
441
+ method="rag" # or "llm" for deeper reasoning
442
+ )
443
+
444
+ # Returns context-aware results:
445
+ {
446
+ "categories": [...], # Relevant topic areas (auto-prioritized)
447
+ "items": [...], # Specific memory facts
448
+ "resources": [...], # Original sources for traceability
449
+ "next_step_query": "..." # Predicted follow-up context
450
+ }
451
+ ```
452
+
453
+ **Proactive Filtering**: Use `where` to scope continuous monitoring:
454
+ - `where={"user_id": "123"}` - User-specific context
455
+ - `where={"agent_id__in": ["1", "2"]}` - Multi-agent coordination
456
+ - Omit `where` for global context awareness
457
+
458
+ > 📚 **For complete API documentation**, see [SERVICE_API.md](docs/SERVICE_API.md) - includes proactive workflow patterns, pipeline configuration, and real-time update handling.
459
+
460
+ ---
461
+
462
+ ## 💡 Proactive Scenarios
463
+
464
+ ### Example 1: Always-Learning Assistant
465
+
466
+ Continuously learns from every interaction without explicit memory commands:
467
+ ```bash
468
+ export OPENAI_API_KEY=your_api_key
469
+ python examples/example_1_conversation_memory.py
470
+ ```
471
+
472
+ **Proactive Behavior:**
473
+ - Automatically extracts preferences from casual mentions
474
+ - Builds relationship models from interaction patterns
475
+ - Surfaces relevant context in future conversations
476
+ - Adapts communication style based on learned preferences
477
+
478
+ **Best for:** Personal AI assistants, customer support that remembers, social chatbots
479
+
480
+ ---
481
+
482
+ ### Example 2: Self-Improving Agent
483
+
484
+ Learns from execution logs and proactively suggests optimizations:
485
+ ```bash
486
+ export OPENAI_API_KEY=your_api_key
487
+ python examples/example_2_skill_extraction.py
488
+ ```
489
+
490
+ **Proactive Behavior:**
491
+ - Monitors agent actions and outcomes continuously
492
+ - Identifies patterns in successes and failures
493
+ - Auto-generates skill guides from experience
494
+ - Proactively suggests strategies for similar future tasks
495
+
496
+ **Best for:** DevOps automation, agent self-improvement, knowledge capture
497
+
498
+ ---
499
+
500
+ ### Example 3: Multimodal Context Builder
501
+
502
+ Unifies memory across different input types for comprehensive context:
503
+ ```bash
504
+ export OPENAI_API_KEY=your_api_key
505
+ python examples/example_3_multimodal_memory.py
506
+ ```
507
+
508
+ **Proactive Behavior:**
509
+ - Cross-references text, images, and documents automatically
510
+ - Builds unified understanding across modalities
511
+ - Surfaces visual context when discussing related topics
512
+ - Anticipates information needs by combining multiple sources
513
+
514
+ **Best for:** Documentation systems, learning platforms, research assistants
515
+
516
+ ---
517
+
518
+ ## 📊 Performance
519
+
520
+ MemU achieves **92.09% average accuracy** on the Locomo benchmark across all reasoning tasks, demonstrating reliable proactive memory operations.
521
+
522
+ <img width="100%" alt="benchmark" src="https://github.com/user-attachments/assets/6fec4884-94e5-4058-ad5c-baac3d7e76d9" />
523
+
524
+ View detailed experimental data: [memU-experiment](https://github.com/NevaMind-AI/memU-experiment)
525
+
526
+ ---
527
+
528
+ ## 🧩 Ecosystem
529
+
530
+ | Repository | Description | Proactive Features |
531
+ |------------|-------------|-------------------|
532
+ | **[memU](https://github.com/NevaMind-AI/memU)** | Core proactive memory engine | 7×24 learning pipeline, auto-categorization |
533
+ | **[memU-server](https://github.com/NevaMind-AI/memU-server)** | Backend with continuous sync | Real-time memory updates, webhook triggers |
534
+ | **[memU-ui](https://github.com/NevaMind-AI/memU-ui)** | Visual memory dashboard | Live memory evolution monitoring |
535
+
536
+ **Quick Links:**
537
+ - 🚀 [Try MemU Cloud](https://app.memu.so/quick-start)
538
+ - 📚 [API Documentation](https://memu.pro/docs)
539
+ - 💬 [Discord Community](https://discord.gg/memu)
540
+
541
+ ---
542
+
543
+ ## 🤝 Partners
544
+
545
+ <div align="center">
546
+
547
+ <a href="https://github.com/TEN-framework/ten-framework"><img src="https://avatars.githubusercontent.com/u/113095513?s=200&v=4" alt="Ten" height="40" style="margin: 10px;"></a>
548
+ <a href="https://openagents.org"><img src="assets/partners/openagents.png" alt="OpenAgents" height="40" style="margin: 10px;"></a>
549
+ <a href="https://github.com/milvus-io/milvus"><img src="https://miro.medium.com/v2/resize:fit:2400/1*-VEGyAgcIBD62XtZWavy8w.png" alt="Milvus" height="40" style="margin: 10px;"></a>
550
+ <a href="https://xroute.ai/"><img src="assets/partners/xroute.png" alt="xRoute" height="40" style="margin: 10px;"></a>
551
+ <a href="https://jaaz.app/"><img src="assets/partners/jazz.png" alt="Jazz" height="40" style="margin: 10px;"></a>
552
+ <a href="https://github.com/Buddie-AI/Buddie"><img src="assets/partners/buddie.png" alt="Buddie" height="40" style="margin: 10px;"></a>
553
+ <a href="https://github.com/bytebase/bytebase"><img src="assets/partners/bytebase.png" alt="Bytebase" height="40" style="margin: 10px;"></a>
554
+ <a href="https://github.com/LazyAGI/LazyLLM"><img src="assets/partners/LazyLLM.png" alt="LazyLLM" height="40" style="margin: 10px;"></a>
555
+
556
+ </div>
557
+
558
+ ---
559
+
560
+ ## 🤝 How to Contribute
561
+
562
+ We welcome contributions from the community! Whether you're fixing bugs, adding features, or improving documentation, your help is appreciated.
563
+
564
+ ### Getting Started
565
+
566
+ To start contributing to MemU, you'll need to set up your development environment:
567
+
568
+ #### Prerequisites
569
+ - Python 3.13+
570
+ - [uv](https://github.com/astral-sh/uv) (Python package manager)
571
+ - Git
572
+
573
+ #### Setup Development Environment
574
+ ```bash
575
+ # 1. Fork and clone the repository
576
+ git clone https://github.com/YOUR_USERNAME/memU.git
577
+ cd memU
578
+
579
+ # 2. Install development dependencies
580
+ make install
581
+ ```
582
+
583
+ The `make install` command will:
584
+ - Create a virtual environment using `uv`
585
+ - Install all project dependencies
586
+ - Set up pre-commit hooks for code quality checks
587
+
588
+ #### Running Quality Checks
589
+
590
+ Before submitting your contribution, ensure your code passes all quality checks:
591
+ ```bash
592
+ make check
593
+ ```
594
+
595
+ The `make check` command runs:
596
+ - **Lock file verification**: Ensures `pyproject.toml` consistency
597
+ - **Pre-commit hooks**: Lints code with Ruff, formats with Black
598
+ - **Type checking**: Runs `mypy` for static type analysis
599
+ - **Dependency analysis**: Uses `deptry` to find obsolete dependencies
600
+
601
+ ### Contributing Guidelines
602
+
603
+ For detailed contribution guidelines, code standards, and development practices, please see [CONTRIBUTING.md](CONTRIBUTING.md).
604
+
605
+ **Quick tips:**
606
+ - Create a new branch for each feature or bug fix
607
+ - Write clear commit messages
608
+ - Add tests for new functionality
609
+ - Update documentation as needed
610
+ - Run `make check` before pushing
611
+
612
+ ---
613
+
614
+ ## 📄 License
615
+
616
+ [Apache License 2.0](LICENSE.txt)
617
+
618
+ ---
619
+
620
+ ## 🌍 Community
621
+
622
+ - **GitHub Issues**: [Report bugs & request features](https://github.com/NevaMind-AI/memU/issues)
623
+ - **Discord**: [Join the community](https://discord.com/invite/hQZntfGsbJ)
624
+ - **X (Twitter)**: [Follow @memU_ai](https://x.com/memU_ai)
625
+ - **Contact**: info@nevamind.ai
626
+
627
+ ---
628
+
629
+ <div align="center">
630
+
631
+ ⭐ **Star us on GitHub** to get notified about new releases!
632
+
633
+ </div>
634
+