MemoryOS 2.0.14__tar.gz → 2.0.16__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.
- {memoryos-2.0.14 → memoryos-2.0.16}/PKG-INFO +39 -67
- {memoryos-2.0.14 → memoryos-2.0.16}/README.md +38 -66
- {memoryos-2.0.14 → memoryos-2.0.16}/pyproject.toml +1 -1
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/__init__.py +1 -1
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/component_init.py +7 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/search_handler.py +2 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/product_models.py +19 -0
- memoryos-2.0.16/src/memos/dream/__init__.py +11 -0
- memoryos-2.0.16/src/memos/dream/hook_defs.py +25 -0
- memoryos-2.0.16/src/memos/dream/hooks.py +88 -0
- memoryos-2.0.16/src/memos/dream/maintenance.py +56 -0
- memoryos-2.0.16/src/memos/dream/pipeline/__init__.py +16 -0
- memoryos-2.0.16/src/memos/dream/pipeline/base.py +88 -0
- memoryos-2.0.16/src/memos/dream/pipeline/diary.py +148 -0
- memoryos-2.0.16/src/memos/dream/pipeline/motive.py +119 -0
- memoryos-2.0.16/src/memos/dream/pipeline/persistence.py +350 -0
- memoryos-2.0.16/src/memos/dream/pipeline/reasoning.py +189 -0
- memoryos-2.0.16/src/memos/dream/pipeline/recall.py +112 -0
- memoryos-2.0.16/src/memos/dream/plugin.py +99 -0
- memoryos-2.0.16/src/memos/dream/prompts/__init__.py +8 -0
- memoryos-2.0.16/src/memos/dream/prompts/motive_prompt.py +74 -0
- memoryos-2.0.16/src/memos/dream/prompts/reasoning_prompt.py +80 -0
- memoryos-2.0.16/src/memos/dream/routers/__init__.py +5 -0
- memoryos-2.0.16/src/memos/dream/routers/diary_router.py +92 -0
- memoryos-2.0.16/src/memos/dream/routers/trigger_router.py +42 -0
- memoryos-2.0.16/src/memos/dream/routes.py +21 -0
- memoryos-2.0.16/src/memos/dream/signal_store.py +85 -0
- memoryos-2.0.16/src/memos/dream/types.py +152 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_feedback/feedback.py +1 -1
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/multi_modal_struct.py +25 -3
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +18 -40
- memoryos-2.0.16/src/memos/mem_reader/read_skill_memory/upload_skill_memory.py +312 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +1 -4
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/schemas/task_schemas.py +1 -0
- memoryos-2.0.16/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_dream_handler.py +156 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +47 -1
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/registry.py +4 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/item.py +8 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +129 -2
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +107 -12
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/multi_mem_cube/single_cube.py +8 -2
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/plugins/base.py +5 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/plugins/component_bootstrap.py +5 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/plugins/hook_defs.py +24 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/plugins/manager.py +62 -3
- memoryos-2.0.14/src/memos/api/README_api.md +0 -13
- {memoryos-2.0.14 → memoryos-2.0.16}/LICENSE +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/client.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/config.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/context/dependencies.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/exceptions.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/add_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/base_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/chat_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/config_builders.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/feedback_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/formatters_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/memory_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/scheduler_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/handlers/suggestion_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/mcp_serve.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/middleware/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/middleware/auth.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/middleware/rate_limit.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/middleware/request_context.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/routers/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/routers/admin_router.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/routers/server_router.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/server_api.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/server_api_ext.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/utils/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/api/utils/api_keys.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/chunkers/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/chunkers/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/chunkers/charactertext_chunker.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/chunkers/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/chunkers/markdown_chunker.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/chunkers/sentence_chunker.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/chunkers/simple_chunker.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/cli.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/chunker.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/embedder.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/graph_db.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/internet_retriever.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/llm.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/mem_agent.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/mem_chat.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/mem_cube.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/mem_os.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/mem_reader.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/mem_scheduler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/mem_user.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/memory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/reranker.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/configs/vec_db.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/context/context.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/dependency.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/deprecation.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/embedders/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/embedders/ark.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/embedders/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/embedders/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/embedders/ollama.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/embedders/sentence_transformer.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/embedders/universal_api.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/exceptions.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/extras/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/graph_dbs/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/graph_dbs/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/graph_dbs/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/graph_dbs/item.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/graph_dbs/neo4j.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/graph_dbs/neo4j_community.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/graph_dbs/polardb.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/graph_dbs/postgres.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/hello_world.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/deepseek.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/hf.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/hf_singleton.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/minimax.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/ollama.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/openai.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/openai_new.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/qwen.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/llms/vllm.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/log.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_agent/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_agent/deepsearch_agent.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_agent/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_chat/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_chat/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_chat/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_chat/simple.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_cube/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_cube/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_cube/general.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_cube/navie.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_cube/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_feedback/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_feedback/simple_feedback.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_feedback/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_os/core.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_os/main.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_os/utils/default_config.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_os/utils/format_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_os/utils/reference_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/memory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/simple_struct.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/strategy_struct.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_reader/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/analyzer/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/base_mixins/queue_ops.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/base_scheduler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/general_modules/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/general_modules/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/general_scheduler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/monitors/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/orm_modules/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/schemas/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/metrics.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/webservice_modules/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_user/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_user/mysql_user_manager.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_user/persistent_factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_user/persistent_user_manager.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/mem_user/user_manager.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/activation/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/activation/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/activation/item.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/activation/kv.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/activation/vllmkv.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/parametric/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/parametric/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/parametric/item.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/parametric/lora.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/general.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/naive.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/prefer_text_memory/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/preference.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/simple_preference.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/simple_tree.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/organize/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/organize/manager.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memos_tools/dinding_report_bot.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memos_tools/lockfree_dict.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memos_tools/notification_service.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memos_tools/notification_utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memos_tools/singleton.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memos_tools/thread_safe_dict.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/multi_mem_cube/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/multi_mem_cube/composite_cube.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/multi_mem_cube/views.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/parsers/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/parsers/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/parsers/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/parsers/markitdown.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/plugins/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/plugins/hooks.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/concat.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/cosine_local.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/http_bge.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/http_bge_strategy.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/noop.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/strategies/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/strategies/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/strategies/concat_background.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/strategies/concat_docsource.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/strategies/dialogue_common.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/strategies/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/strategies/single_turn.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/search/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/search/search_service.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/settings.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/advanced_search_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/cloud_service_prompt.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/instruction_completion.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/mem_agent_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/mem_feedback_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/mem_reader_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/mem_scheduler_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/mem_search_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/mos_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/prefer_complete_prompt.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/skill_mem_prompt.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/tool_mem_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/templates/tree_reorganize_prompts.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/general_types.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/utils.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/vec_dbs/__init__.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/vec_dbs/base.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/vec_dbs/factory.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/vec_dbs/item.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/src/memos/vec_dbs/milvus.py +0 -0
- {memoryos-2.0.14 → memoryos-2.0.16}/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.
|
|
3
|
+
Version: 2.0.16
|
|
4
4
|
Summary: Intelligence Begins with Memory
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -88,51 +88,24 @@ Description-Content-Type: text/markdown
|
|
|
88
88
|
</a>
|
|
89
89
|
|
|
90
90
|
<h1 align="center">
|
|
91
|
-
<img src="https://statics.memtensor.com.cn/logo/memos_color_m.png" alt="MemOS Logo" width="
|
|
92
|
-
MemOS 2.0
|
|
93
|
-
|
|
91
|
+
<img src="https://statics.memtensor.com.cn/logo/memos_color_m.png" alt="MemOS Logo" width="48"/>
|
|
92
|
+
MemOS 2.0 Stardust(星尘)
|
|
93
|
+
|
|
94
94
|
</h1>
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
<img src="https://img.shields.io/pypi/pyversions/MemoryOS.svg" alt="Supported Python versions">
|
|
105
|
-
</a>
|
|
106
|
-
<a href="https://pypi.org/project/MemoryOS">
|
|
107
|
-
<img src="https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey" alt="Supported Platforms">
|
|
108
|
-
</a>
|
|
109
|
-
<a href="https://memos-docs.openmem.net/home/overview/">
|
|
110
|
-
<img src="https://img.shields.io/badge/Documentation-view-blue.svg" alt="Documentation">
|
|
111
|
-
</a>
|
|
112
|
-
<a href="https://arxiv.org/abs/2507.03724">
|
|
113
|
-
<img src="https://img.shields.io/badge/arXiv-2507.03724-b31b1b.svg" alt="ArXiv Paper">
|
|
114
|
-
</a>
|
|
115
|
-
<a href="https://github.com/MemTensor/MemOS/discussions">
|
|
116
|
-
<img src="https://img.shields.io/badge/GitHub-Discussions-181717.svg?logo=github" alt="GitHub Discussions">
|
|
117
|
-
</a>
|
|
118
|
-
<a href="https://discord.gg/Txbx3gebZR">
|
|
119
|
-
<img src="https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord" alt="Discord">
|
|
120
|
-
</a>
|
|
121
|
-
<a href="https://statics.memtensor.com.cn/memos/qr-code.png">
|
|
122
|
-
<img src="https://img.shields.io/badge/WeChat-Group-07C160.svg?logo=wechat" alt="WeChat Group">
|
|
123
|
-
</a>
|
|
124
|
-
<a href="https://opensource.org/license/apache-2-0/">
|
|
125
|
-
<img src="https://img.shields.io/badge/License-Apache_2.0-green.svg?logo=apache" alt="License">
|
|
126
|
-
</a>
|
|
127
|
-
<a href="https://github.com/IAAR-Shanghai/Awesome-AI-Memory">
|
|
128
|
-
<img alt="Awesome AI Memory" src="https://img.shields.io/badge/Resources-Awesome--AI--Memory-8A2BE2">
|
|
129
|
-
</a>
|
|
130
|
-
</p>
|
|
96
|
+
<p align="center">
|
|
97
|
+
<br>
|
|
98
|
+
<a href="https://memos-docs.openmem.net/home/overview/"><img src="https://img.shields.io/badge/Docs-Get--Start-002FA7?labelColor=gray&style=for-the-badge&logo=googledocs&logoColor=white" alt="Docs"></a>
|
|
99
|
+
<a href="https://arxiv.org/abs/2507.03724"><img src="https://img.shields.io/badge/ArXiv-2507.03724-B31B1B?labelColor=gray&style=for-the-badge&logo=arxiv&logoColor=white" alt="ArXiv"></a>
|
|
100
|
+
<a href="https://x.com/MemOS_dev"><img src="https://img.shields.io/badge/Follow-MemOS-000000?labelColor=gray&style=for-the-badge&logo=x&logoColor=white" alt="X"></a>
|
|
101
|
+
<a href="https://discord.gg/Txbx3gebZR"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscord.com%2Fapi%2Fv10%2Finvites%2FTxbx3gebZR%3Fwith_counts%3Dtrue&query=%24.approximate_presence_count&suffix=%20online&label=Discord&color=404EED&labelColor=gray&style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
|
|
102
|
+
<a href="https://github.com/IAAR-Shanghai/Awesome-AI-Memory"><img src="https://img.shields.io/badge/Resources-Awesome--AI--Memory-8A2BE2?labelColor=gray&style=for-the-badge&logo=awesomelists&logoColor=white" alt="Resources"></a>
|
|
103
|
+
</p>
|
|
131
104
|
|
|
132
105
|
<p align="center">
|
|
133
106
|
<strong>🎯 +43.70% Accuracy vs. OpenAI Memory</strong><br/>
|
|
134
|
-
<strong>🏆 Top-tier
|
|
135
|
-
<strong>💰 Saves 35.24%
|
|
107
|
+
<strong>🏆 Top-tier Long-term Memory + Personalization</strong><br/>
|
|
108
|
+
<strong>💰 Saves 35.24% Memory Tokens</strong><br/>
|
|
136
109
|
<sub>LoCoMo 75.80 • LongMemEval +40.43% • PrefEval-10 +2568% • PersonaMem +40.75%</sub>
|
|
137
110
|
<!-- <a href="https://memos.openmem.net/">
|
|
138
111
|
<img src="https://statics.memtensor.com.cn/memos/github_api_free_banner.gif" alt="MemOS Free API Banner">
|
|
@@ -148,35 +121,27 @@ Description-Content-Type: text/markdown
|
|
|
148
121
|
|
|
149
122
|
<!-- <br> -->
|
|
150
123
|
|
|
151
|
-
##
|
|
152
|
-
|
|
153
|
-

|
|
154
|
-
|
|
155
|
-
🦞 Your lobster now has a working memory system — choose **Cloud** or **Local** to get started.
|
|
156
|
-
|
|
157
|
-
### ☁️ Cloud Plugin — Hosted Memory Service
|
|
158
|
-
|
|
159
|
-
- [**72% lower token usage**](https://x.com/MemOS_dev/status/2020854044583924111) — intelligent memory retrieval instead of loading full chat history
|
|
160
|
-
- [**Multi-agent memory sharing**](https://x.com/MemOS_dev/status/2020538135487062094) — multi-instance agents share memory via same user_id, automatic context handoff
|
|
124
|
+
## 🧠 MemOS Plugin: Persistent Memory for Your AI Agents ✨
|
|
161
125
|
|
|
162
|
-
|
|
163
|
-
|
|
126
|
+
<div align="center">
|
|
127
|
+
|
|
128
|
+
<img width="1660" height="664" alt="MemOS Plugin Banner" src="https://github.com/user-attachments/assets/9d15dde2-196e-4f71-a364-dd5a33062117" />
|
|
164
129
|
|
|
165
|
-
|
|
130
|
+
Your lobsters and Hermes Agents now have **the best** memory system — choose ***Cloud Service*** or ***Self-hosted*** to get started 🏃🏻
|
|
166
131
|
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
- **
|
|
132
|
+
| 🔌 Plugin | <div align="center"> 💡 Core Features </div> | 🧩 Resources |
|
|
133
|
+
| :----: | :--- | :---: |
|
|
134
|
+
| 🧠 [**memos-local-plugin 2.0**](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) | <ul><li>One local-first memory core for **Hermes Agent** and **OpenClaw**.</li><li>Self-evolving memory: L1 trace, L2 policy, L3 world model,<br>and crystallized Skills driven by feedback.</li></ul> | 🌐 [Website](https://memos-claw.openmem.net/) · 📖 [Docs](https://memos-docs.openmem.net/cn/openclaw/local_plugin) · 🐙 [GitHub](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
|
|
135
|
+
| ☁️ [**OpenClaw Cloud Plugin**](https://x.com/MemOS_dev/status/2019254160919769171?s=20) | <ul><li>[Reduces token usage by 72%.](https://x.com/MemOS_dev/status/2020854044583924111)</li><li>[Multi-agent memory sharing by `user_id`.](https://x.com/MemOS_dev/status/2020538135487062094)</li></ul> | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
|
|
170
136
|
|
|
171
|
-
|
|
172
|
-
|
|
137
|
+
</div>
|
|
138
|
+
<br>
|
|
173
139
|
|
|
174
|
-
##
|
|
140
|
+
## 👾 MemOS: Memory Operating System for LLM & AI Agents
|
|
175
141
|
|
|
176
142
|
**MemOS** is a Memory Operating System for LLMs and AI agents that unifies **store / retrieve / manage** for long-term memory, enabling **context-aware and personalized** interactions with **KB**, **multi-modal**, **tool memory**, and **enterprise-grade** optimizations built in.
|
|
177
143
|
|
|
178
144
|
|
|
179
|
-
|
|
180
145
|
### Key Features
|
|
181
146
|
|
|
182
147
|
- **Unified Memory API**: A single API to add, retrieve, edit, and delete memory—structured as a graph, inspectable and editable by design, not a black-box embedding store.
|
|
@@ -188,6 +153,12 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
|
|
|
188
153
|
|
|
189
154
|
### News
|
|
190
155
|
|
|
156
|
+
- **2026-05-09** · 🧠 **memos-local-plugin 2.0**
|
|
157
|
+
Official local memory plugin for **Hermes Agent** and **OpenClaw**. One core powers self-evolving memory across L1 traces, L2 policies, L3 world models, and crystallized Skills, with local-first storage and feedback-driven retrieval.
|
|
158
|
+
|
|
159
|
+
- **2026-04-10** · 👧🏻 **MemOS Hermes Agent Local Plugin**
|
|
160
|
+
Official Hermes Agent memory plugins launched: Hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution, multi-agent collaboration. 100% local, zero cloud dependency.
|
|
161
|
+
|
|
191
162
|
- **2026-03-08** · 🦞 **MemOS OpenClaw Plugin — Cloud & Local**
|
|
192
163
|
Official OpenClaw memory plugins launched. **Cloud Plugin**: hosted memory service with 72% lower token usage and multi-agent memory sharing ([MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)). **Local Plugin** (`v1.0.0`): 100% on-device memory with persistent SQLite, hybrid search (FTS5 + vector), task summarization & skill evolution, multi-agent collaboration, and a full Memory Viewer dashboard.
|
|
193
164
|
|
|
@@ -285,7 +256,7 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
|
|
|
285
256
|
|
|
286
257
|
<br>
|
|
287
258
|
|
|
288
|
-
## 🚀
|
|
259
|
+
## 🚀 Quick-start Guide
|
|
289
260
|
|
|
290
261
|
### ☁️ 1、Cloud API (Hosted)
|
|
291
262
|
#### Get API Key
|
|
@@ -372,17 +343,18 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
|
|
|
372
343
|
res = requests.post(url=url, headers=headers, data=json.dumps(data))
|
|
373
344
|
print(f"result: {res.json()}")
|
|
374
345
|
```
|
|
375
|
-
|
|
346
|
+
|
|
376
347
|
<br>
|
|
377
348
|
|
|
378
349
|
## 📚 Resources
|
|
379
350
|
|
|
380
351
|
- **Awesome-AI-Memory**
|
|
381
|
-
This is a curated repository dedicated to resources on memory and memory systems for large language models. It systematically collects relevant research papers, frameworks, tools, and practical insights. The repository aims to organize and present the rapidly evolving research landscape of LLM memory, bridging multiple research directions including natural language processing, information retrieval, agentic systems, and cognitive science
|
|
382
|
-
|
|
352
|
+
This is a curated repository dedicated to resources on memory and memory systems for large language models. It systematically collects relevant research papers, frameworks, tools, and practical insights. The repository aims to organize and present the rapidly evolving research landscape of LLM memory, bridging multiple research directions including natural language processing, information retrieval, agentic systems, and cognitive science.<br/>
|
|
353
|
+
**Get started** 👉🏻 [IAAR-Shanghai/Awesome-AI-Memory](https://github.com/IAAR-Shanghai/Awesome-AI-Memory)
|
|
354
|
+
|
|
383
355
|
- **MemOS Cloud OpenClaw Plugin**
|
|
384
|
-
Official OpenClaw lifecycle plugin for MemOS Cloud. It automatically recalls context from MemOS before the agent starts and saves the conversation back to MemOS after the agent finishes
|
|
385
|
-
|
|
356
|
+
Official OpenClaw lifecycle plugin for MemOS Cloud. It automatically recalls context from MemOS before the agent starts and saves the conversation back to MemOS after the agent finishes.<br/>
|
|
357
|
+
**Get started** 👉🏻 [MemTensor/MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)
|
|
386
358
|
|
|
387
359
|
<br>
|
|
388
360
|
|
|
@@ -4,51 +4,24 @@
|
|
|
4
4
|
</a>
|
|
5
5
|
|
|
6
6
|
<h1 align="center">
|
|
7
|
-
<img src="https://statics.memtensor.com.cn/logo/memos_color_m.png" alt="MemOS Logo" width="
|
|
8
|
-
MemOS 2.0
|
|
9
|
-
|
|
7
|
+
<img src="https://statics.memtensor.com.cn/logo/memos_color_m.png" alt="MemOS Logo" width="48"/>
|
|
8
|
+
MemOS 2.0 Stardust(星尘)
|
|
9
|
+
|
|
10
10
|
</h1>
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<img src="https://img.shields.io/pypi/pyversions/MemoryOS.svg" alt="Supported Python versions">
|
|
21
|
-
</a>
|
|
22
|
-
<a href="https://pypi.org/project/MemoryOS">
|
|
23
|
-
<img src="https://img.shields.io/badge/Platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey" alt="Supported Platforms">
|
|
24
|
-
</a>
|
|
25
|
-
<a href="https://memos-docs.openmem.net/home/overview/">
|
|
26
|
-
<img src="https://img.shields.io/badge/Documentation-view-blue.svg" alt="Documentation">
|
|
27
|
-
</a>
|
|
28
|
-
<a href="https://arxiv.org/abs/2507.03724">
|
|
29
|
-
<img src="https://img.shields.io/badge/arXiv-2507.03724-b31b1b.svg" alt="ArXiv Paper">
|
|
30
|
-
</a>
|
|
31
|
-
<a href="https://github.com/MemTensor/MemOS/discussions">
|
|
32
|
-
<img src="https://img.shields.io/badge/GitHub-Discussions-181717.svg?logo=github" alt="GitHub Discussions">
|
|
33
|
-
</a>
|
|
34
|
-
<a href="https://discord.gg/Txbx3gebZR">
|
|
35
|
-
<img src="https://img.shields.io/badge/Discord-join%20chat-7289DA.svg?logo=discord" alt="Discord">
|
|
36
|
-
</a>
|
|
37
|
-
<a href="https://statics.memtensor.com.cn/memos/qr-code.png">
|
|
38
|
-
<img src="https://img.shields.io/badge/WeChat-Group-07C160.svg?logo=wechat" alt="WeChat Group">
|
|
39
|
-
</a>
|
|
40
|
-
<a href="https://opensource.org/license/apache-2-0/">
|
|
41
|
-
<img src="https://img.shields.io/badge/License-Apache_2.0-green.svg?logo=apache" alt="License">
|
|
42
|
-
</a>
|
|
43
|
-
<a href="https://github.com/IAAR-Shanghai/Awesome-AI-Memory">
|
|
44
|
-
<img alt="Awesome AI Memory" src="https://img.shields.io/badge/Resources-Awesome--AI--Memory-8A2BE2">
|
|
45
|
-
</a>
|
|
46
|
-
</p>
|
|
12
|
+
<p align="center">
|
|
13
|
+
<br>
|
|
14
|
+
<a href="https://memos-docs.openmem.net/home/overview/"><img src="https://img.shields.io/badge/Docs-Get--Start-002FA7?labelColor=gray&style=for-the-badge&logo=googledocs&logoColor=white" alt="Docs"></a>
|
|
15
|
+
<a href="https://arxiv.org/abs/2507.03724"><img src="https://img.shields.io/badge/ArXiv-2507.03724-B31B1B?labelColor=gray&style=for-the-badge&logo=arxiv&logoColor=white" alt="ArXiv"></a>
|
|
16
|
+
<a href="https://x.com/MemOS_dev"><img src="https://img.shields.io/badge/Follow-MemOS-000000?labelColor=gray&style=for-the-badge&logo=x&logoColor=white" alt="X"></a>
|
|
17
|
+
<a href="https://discord.gg/Txbx3gebZR"><img src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdiscord.com%2Fapi%2Fv10%2Finvites%2FTxbx3gebZR%3Fwith_counts%3Dtrue&query=%24.approximate_presence_count&suffix=%20online&label=Discord&color=404EED&labelColor=gray&style=for-the-badge&logo=discord&logoColor=white" alt="Discord"></a>
|
|
18
|
+
<a href="https://github.com/IAAR-Shanghai/Awesome-AI-Memory"><img src="https://img.shields.io/badge/Resources-Awesome--AI--Memory-8A2BE2?labelColor=gray&style=for-the-badge&logo=awesomelists&logoColor=white" alt="Resources"></a>
|
|
19
|
+
</p>
|
|
47
20
|
|
|
48
21
|
<p align="center">
|
|
49
22
|
<strong>🎯 +43.70% Accuracy vs. OpenAI Memory</strong><br/>
|
|
50
|
-
<strong>🏆 Top-tier
|
|
51
|
-
<strong>💰 Saves 35.24%
|
|
23
|
+
<strong>🏆 Top-tier Long-term Memory + Personalization</strong><br/>
|
|
24
|
+
<strong>💰 Saves 35.24% Memory Tokens</strong><br/>
|
|
52
25
|
<sub>LoCoMo 75.80 • LongMemEval +40.43% • PrefEval-10 +2568% • PersonaMem +40.75%</sub>
|
|
53
26
|
<!-- <a href="https://memos.openmem.net/">
|
|
54
27
|
<img src="https://statics.memtensor.com.cn/memos/github_api_free_banner.gif" alt="MemOS Free API Banner">
|
|
@@ -64,35 +37,27 @@
|
|
|
64
37
|
|
|
65
38
|
<!-- <br> -->
|
|
66
39
|
|
|
67
|
-
##
|
|
68
|
-
|
|
69
|
-

|
|
70
|
-
|
|
71
|
-
🦞 Your lobster now has a working memory system — choose **Cloud** or **Local** to get started.
|
|
72
|
-
|
|
73
|
-
### ☁️ Cloud Plugin — Hosted Memory Service
|
|
74
|
-
|
|
75
|
-
- [**72% lower token usage**](https://x.com/MemOS_dev/status/2020854044583924111) — intelligent memory retrieval instead of loading full chat history
|
|
76
|
-
- [**Multi-agent memory sharing**](https://x.com/MemOS_dev/status/2020538135487062094) — multi-instance agents share memory via same user_id, automatic context handoff
|
|
40
|
+
## 🧠 MemOS Plugin: Persistent Memory for Your AI Agents ✨
|
|
77
41
|
|
|
78
|
-
|
|
79
|
-
|
|
42
|
+
<div align="center">
|
|
43
|
+
|
|
44
|
+
<img width="1660" height="664" alt="MemOS Plugin Banner" src="https://github.com/user-attachments/assets/9d15dde2-196e-4f71-a364-dd5a33062117" />
|
|
80
45
|
|
|
81
|
-
|
|
46
|
+
Your lobsters and Hermes Agents now have **the best** memory system — choose ***Cloud Service*** or ***Self-hosted*** to get started 🏃🏻
|
|
82
47
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
- **
|
|
48
|
+
| 🔌 Plugin | <div align="center"> 💡 Core Features </div> | 🧩 Resources |
|
|
49
|
+
| :----: | :--- | :---: |
|
|
50
|
+
| 🧠 [**memos-local-plugin 2.0**](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) | <ul><li>One local-first memory core for **Hermes Agent** and **OpenClaw**.</li><li>Self-evolving memory: L1 trace, L2 policy, L3 world model,<br>and crystallized Skills driven by feedback.</li></ul> | 🌐 [Website](https://memos-claw.openmem.net/) · 📖 [Docs](https://memos-docs.openmem.net/cn/openclaw/local_plugin) · 🐙 [GitHub](https://github.com/hijzy/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
|
|
51
|
+
| ☁️ [**OpenClaw Cloud Plugin**](https://x.com/MemOS_dev/status/2019254160919769171?s=20) | <ul><li>[Reduces token usage by 72%.](https://x.com/MemOS_dev/status/2020854044583924111)</li><li>[Multi-agent memory sharing by `user_id`.](https://x.com/MemOS_dev/status/2020538135487062094)</li></ul> | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
|
|
86
52
|
|
|
87
|
-
|
|
88
|
-
|
|
53
|
+
</div>
|
|
54
|
+
<br>
|
|
89
55
|
|
|
90
|
-
##
|
|
56
|
+
## 👾 MemOS: Memory Operating System for LLM & AI Agents
|
|
91
57
|
|
|
92
58
|
**MemOS** is a Memory Operating System for LLMs and AI agents that unifies **store / retrieve / manage** for long-term memory, enabling **context-aware and personalized** interactions with **KB**, **multi-modal**, **tool memory**, and **enterprise-grade** optimizations built in.
|
|
93
59
|
|
|
94
60
|
|
|
95
|
-
|
|
96
61
|
### Key Features
|
|
97
62
|
|
|
98
63
|
- **Unified Memory API**: A single API to add, retrieve, edit, and delete memory—structured as a graph, inspectable and editable by design, not a black-box embedding store.
|
|
@@ -104,6 +69,12 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
|
|
|
104
69
|
|
|
105
70
|
### News
|
|
106
71
|
|
|
72
|
+
- **2026-05-09** · 🧠 **memos-local-plugin 2.0**
|
|
73
|
+
Official local memory plugin for **Hermes Agent** and **OpenClaw**. One core powers self-evolving memory across L1 traces, L2 policies, L3 world models, and crystallized Skills, with local-first storage and feedback-driven retrieval.
|
|
74
|
+
|
|
75
|
+
- **2026-04-10** · 👧🏻 **MemOS Hermes Agent Local Plugin**
|
|
76
|
+
Official Hermes Agent memory plugins launched: Hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution, multi-agent collaboration. 100% local, zero cloud dependency.
|
|
77
|
+
|
|
107
78
|
- **2026-03-08** · 🦞 **MemOS OpenClaw Plugin — Cloud & Local**
|
|
108
79
|
Official OpenClaw memory plugins launched. **Cloud Plugin**: hosted memory service with 72% lower token usage and multi-agent memory sharing ([MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)). **Local Plugin** (`v1.0.0`): 100% on-device memory with persistent SQLite, hybrid search (FTS5 + vector), task summarization & skill evolution, multi-agent collaboration, and a full Memory Viewer dashboard.
|
|
109
80
|
|
|
@@ -201,7 +172,7 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
|
|
|
201
172
|
|
|
202
173
|
<br>
|
|
203
174
|
|
|
204
|
-
## 🚀
|
|
175
|
+
## 🚀 Quick-start Guide
|
|
205
176
|
|
|
206
177
|
### ☁️ 1、Cloud API (Hosted)
|
|
207
178
|
#### Get API Key
|
|
@@ -288,17 +259,18 @@ Full tutorial → [MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/Mem
|
|
|
288
259
|
res = requests.post(url=url, headers=headers, data=json.dumps(data))
|
|
289
260
|
print(f"result: {res.json()}")
|
|
290
261
|
```
|
|
291
|
-
|
|
262
|
+
|
|
292
263
|
<br>
|
|
293
264
|
|
|
294
265
|
## 📚 Resources
|
|
295
266
|
|
|
296
267
|
- **Awesome-AI-Memory**
|
|
297
|
-
This is a curated repository dedicated to resources on memory and memory systems for large language models. It systematically collects relevant research papers, frameworks, tools, and practical insights. The repository aims to organize and present the rapidly evolving research landscape of LLM memory, bridging multiple research directions including natural language processing, information retrieval, agentic systems, and cognitive science
|
|
298
|
-
|
|
268
|
+
This is a curated repository dedicated to resources on memory and memory systems for large language models. It systematically collects relevant research papers, frameworks, tools, and practical insights. The repository aims to organize and present the rapidly evolving research landscape of LLM memory, bridging multiple research directions including natural language processing, information retrieval, agentic systems, and cognitive science.<br/>
|
|
269
|
+
**Get started** 👉🏻 [IAAR-Shanghai/Awesome-AI-Memory](https://github.com/IAAR-Shanghai/Awesome-AI-Memory)
|
|
270
|
+
|
|
299
271
|
- **MemOS Cloud OpenClaw Plugin**
|
|
300
|
-
Official OpenClaw lifecycle plugin for MemOS Cloud. It automatically recalls context from MemOS before the agent starts and saves the conversation back to MemOS after the agent finishes
|
|
301
|
-
|
|
272
|
+
Official OpenClaw lifecycle plugin for MemOS Cloud. It automatically recalls context from MemOS before the agent starts and saves the conversation back to MemOS after the agent finishes.<br/>
|
|
273
|
+
**Get started** 👉🏻 [MemTensor/MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)
|
|
302
274
|
|
|
303
275
|
<br>
|
|
304
276
|
|
|
@@ -179,6 +179,7 @@ def init_server() -> dict[str, Any]:
|
|
|
179
179
|
plugin_context = build_plugin_context(
|
|
180
180
|
graph_db=graph_db,
|
|
181
181
|
embedder=embedder,
|
|
182
|
+
llm=llm,
|
|
182
183
|
default_cube_config=default_cube_config,
|
|
183
184
|
nli_client_config=nli_client_config,
|
|
184
185
|
mem_reader_config=mem_reader_config,
|
|
@@ -285,6 +286,12 @@ def init_server() -> dict[str, Any]:
|
|
|
285
286
|
# Initialize SchedulerAPIModule
|
|
286
287
|
api_module = mem_scheduler.api_module
|
|
287
288
|
|
|
289
|
+
# Plugins keep a reference to the original context dict, so updating the shared
|
|
290
|
+
# section here makes the runtime handles visible without adding a second init step.
|
|
291
|
+
plugin_context["shared"]["mem_scheduler"] = mem_scheduler
|
|
292
|
+
plugin_context["shared"]["submit_scheduler_messages"] = mem_scheduler.submit_messages
|
|
293
|
+
plugin_context["shared"]["api_module"] = api_module
|
|
294
|
+
|
|
288
295
|
# Start scheduler if enabled
|
|
289
296
|
if os.getenv("API_SCHEDULER_ON", "true").lower() == "true":
|
|
290
297
|
mem_scheduler.start()
|
|
@@ -20,6 +20,7 @@ from memos.memories.textual.tree_text_memory.retrieve.retrieve_utils import (
|
|
|
20
20
|
from memos.multi_mem_cube.composite_cube import CompositeCubeView
|
|
21
21
|
from memos.multi_mem_cube.single_cube import SingleCubeView
|
|
22
22
|
from memos.multi_mem_cube.views import MemCubeView
|
|
23
|
+
from memos.plugins.hooks import hookable
|
|
23
24
|
|
|
24
25
|
|
|
25
26
|
logger = get_logger(__name__)
|
|
@@ -44,6 +45,7 @@ class SearchHandler(BaseHandler):
|
|
|
44
45
|
"naive_mem_cube", "mem_scheduler", "searcher", "deepsearch_agent"
|
|
45
46
|
)
|
|
46
47
|
|
|
48
|
+
@hookable("search")
|
|
47
49
|
def handle_search_memories(self, search_req: APISearchRequest) -> SearchResponse:
|
|
48
50
|
"""
|
|
49
51
|
Main handler for search memories endpoint.
|
|
@@ -438,6 +438,14 @@ class APISearchRequest(BaseRequest):
|
|
|
438
438
|
)
|
|
439
439
|
|
|
440
440
|
# ==== Context ====
|
|
441
|
+
reference_time: str | None = Field(
|
|
442
|
+
None,
|
|
443
|
+
description=(
|
|
444
|
+
"Optional reference time for time-sensitive search parsing. "
|
|
445
|
+
"If omitted, search uses the current server time."
|
|
446
|
+
),
|
|
447
|
+
)
|
|
448
|
+
|
|
441
449
|
chat_history: MessageList | None = Field(
|
|
442
450
|
None,
|
|
443
451
|
description=(
|
|
@@ -608,6 +616,17 @@ class APIADDRequest(BaseRequest):
|
|
|
608
616
|
description=("Whether this request represents user feedback. Default: False."),
|
|
609
617
|
)
|
|
610
618
|
|
|
619
|
+
# ==== Upload skill flag ====
|
|
620
|
+
is_upload_skill: bool = Field(
|
|
621
|
+
False,
|
|
622
|
+
description=(
|
|
623
|
+
"Whether this request is an upload skill request. "
|
|
624
|
+
"When True, the messages field should contain file items "
|
|
625
|
+
"with zip file download URLs for pre-built skill packages. "
|
|
626
|
+
"Default: False."
|
|
627
|
+
),
|
|
628
|
+
)
|
|
629
|
+
|
|
611
630
|
# ==== Backward compatibility fields (will delete later) ====
|
|
612
631
|
mem_cube_id: str | None = Field(
|
|
613
632
|
None,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Built-in Dream plugin package.
|
|
2
|
+
|
|
3
|
+
The default Dream implementation lives inside the core repository so it can be
|
|
4
|
+
discovered like any other MemOS plugin. Enterprise builds can swap the entry
|
|
5
|
+
point to an external plugin without changing the scheduler contract.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from memos.dream.plugin import CommunityDreamPlugin
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
__all__ = ["CommunityDreamPlugin"]
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""Dream plugin-owned hooks.
|
|
2
|
+
|
|
3
|
+
These hooks are plugin-scoped and allow extensions to observe or modify Dream
|
|
4
|
+
persistence behavior without changing the core pipeline.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from memos.plugins.hook_defs import define_hook
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class DreamH:
|
|
11
|
+
DREAM_BEFORE_PERSIST = "dream.before_persist"
|
|
12
|
+
DREAM_AFTER_PERSIST = "dream.after_persist"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
define_hook(
|
|
16
|
+
DreamH.DREAM_BEFORE_PERSIST,
|
|
17
|
+
description="Allow plugins to inspect/modify Dream results before persistence",
|
|
18
|
+
params=["mem_cube_id", "results"],
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
define_hook(
|
|
22
|
+
DreamH.DREAM_AFTER_PERSIST,
|
|
23
|
+
description="Allow plugins to react after Dream persistence completes",
|
|
24
|
+
params=["mem_cube_id", "results"],
|
|
25
|
+
)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def on_dream_execute(
|
|
7
|
+
plugin,
|
|
8
|
+
*,
|
|
9
|
+
mem_cube_id: str,
|
|
10
|
+
user_id: str,
|
|
11
|
+
user_name: str,
|
|
12
|
+
signal_snapshot,
|
|
13
|
+
text_mem,
|
|
14
|
+
scheduler_context,
|
|
15
|
+
**kwargs,
|
|
16
|
+
):
|
|
17
|
+
"""Single-provider Dream execution hook.
|
|
18
|
+
|
|
19
|
+
The scheduler handler always calls this hook. The active Dream plugin decides
|
|
20
|
+
which pipeline implementation to run. After the pipeline finishes, the hook
|
|
21
|
+
resets the signal store so the next accumulation cycle starts fresh.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
results = plugin.pipeline.run(
|
|
25
|
+
mem_cube_id=mem_cube_id,
|
|
26
|
+
user_id=user_id,
|
|
27
|
+
cube_id=mem_cube_id,
|
|
28
|
+
signal_snapshot=signal_snapshot,
|
|
29
|
+
text_mem=text_mem,
|
|
30
|
+
)
|
|
31
|
+
plugin.signal_store.reset(mem_cube_id=mem_cube_id)
|
|
32
|
+
return results
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
def on_add_signal(plugin, *, request, result, **kwargs) -> None:
|
|
36
|
+
"""Built-in Dream signal capture hook.
|
|
37
|
+
|
|
38
|
+
The current implementation only extracts enough information to build a scheduler payload.
|
|
39
|
+
If a runtime scheduler handle is not available yet, the signal is still kept
|
|
40
|
+
locally so manual triggering and future auto-trigger logic use the same store.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
mem_cube_id = _extract_mem_cube_id(request=request, result=result)
|
|
44
|
+
if not mem_cube_id:
|
|
45
|
+
return
|
|
46
|
+
|
|
47
|
+
memory_ids = _extract_memory_ids(result)
|
|
48
|
+
snapshot = plugin.signal_store.record_add(
|
|
49
|
+
mem_cube_id=mem_cube_id,
|
|
50
|
+
user_id=getattr(request, "user_id", "") or "",
|
|
51
|
+
user_name=getattr(request, "user_name", "") or "",
|
|
52
|
+
session_id=getattr(request, "session_id", "") or "",
|
|
53
|
+
memory_ids=memory_ids,
|
|
54
|
+
)
|
|
55
|
+
if plugin.signal_store.should_trigger(mem_cube_id=mem_cube_id):
|
|
56
|
+
plugin.submit_dream_task(
|
|
57
|
+
mem_cube_id=mem_cube_id,
|
|
58
|
+
user_id=snapshot.user_id,
|
|
59
|
+
user_name=snapshot.user_name,
|
|
60
|
+
signal_snapshot=snapshot,
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
def _extract_mem_cube_id(*, request, result) -> str:
|
|
65
|
+
writable_cube_ids = getattr(request, "writable_cube_ids", None) or []
|
|
66
|
+
if writable_cube_ids:
|
|
67
|
+
return writable_cube_ids[0]
|
|
68
|
+
|
|
69
|
+
data = getattr(result, "data", None) or []
|
|
70
|
+
for item in data:
|
|
71
|
+
if isinstance(item, dict) and item.get("mem_cube_id"):
|
|
72
|
+
return item["mem_cube_id"]
|
|
73
|
+
mem_cube_id = getattr(item, "mem_cube_id", None)
|
|
74
|
+
if mem_cube_id:
|
|
75
|
+
return mem_cube_id
|
|
76
|
+
return ""
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
def _extract_memory_ids(result) -> list[str]:
|
|
80
|
+
ids: list[str] = []
|
|
81
|
+
data = getattr(result, "data", None) or []
|
|
82
|
+
for item in data:
|
|
83
|
+
candidate: Any = (
|
|
84
|
+
item.get("memory_id") if isinstance(item, dict) else getattr(item, "memory_id", None)
|
|
85
|
+
)
|
|
86
|
+
if candidate:
|
|
87
|
+
ids.append(str(candidate))
|
|
88
|
+
return ids
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""Dream memory lifecycle maintenance.
|
|
2
|
+
|
|
3
|
+
This module is responsible for periodic cleanup of Dream-produced memories.
|
|
4
|
+
It is intentionally left unimplemented as a contribution entry point.
|
|
5
|
+
|
|
6
|
+
────────────────────────────────────────────────────────────────────────────
|
|
7
|
+
CONTRIBUTION GUIDE — Dream Memory Maintenance
|
|
8
|
+
────────────────────────────────────────────────────────────────────────────
|
|
9
|
+
|
|
10
|
+
Dream memories are not permanent. Each Dream-produced memory carries
|
|
11
|
+
`DreamMemoryLifecycle` metadata (see types.py) and should be periodically
|
|
12
|
+
evaluated for continued relevance.
|
|
13
|
+
|
|
14
|
+
Cleanup rules to implement:
|
|
15
|
+
|
|
16
|
+
1. STALE — Long time not hit
|
|
17
|
+
- If `last_hit_at` is older than a configurable TTL (e.g. 7 days),
|
|
18
|
+
the memory should be decayed or archived.
|
|
19
|
+
- Suggested approach: query graph_db for nodes where
|
|
20
|
+
metadata.source == "dream" and lifecycle.last_hit_at < threshold.
|
|
21
|
+
|
|
22
|
+
2. LOW USEFULNESS — Hit but not helpful
|
|
23
|
+
- If the memory is retrieved during queries but `usefulness_score`
|
|
24
|
+
remains below a threshold, it is noise rather than signal.
|
|
25
|
+
- Suggested approach: integrate with the retrieval layer to update
|
|
26
|
+
usefulness_score when a Dream memory is included in a response
|
|
27
|
+
but receives low relevance feedback.
|
|
28
|
+
|
|
29
|
+
3. INVALIDATED — Overturned by feedback
|
|
30
|
+
- If `invalidated_by_feedback` is set to True (e.g. by the feedback
|
|
31
|
+
API or a contradicting new memory), archive immediately.
|
|
32
|
+
- Suggested approach: register a hook on the feedback endpoint to
|
|
33
|
+
mark conflicting Dream memories.
|
|
34
|
+
|
|
35
|
+
Implementation hints:
|
|
36
|
+
|
|
37
|
+
- Create a `DreamMaintenanceTask` that runs on a scheduler interval
|
|
38
|
+
(e.g. daily) or is triggered by a hook.
|
|
39
|
+
- Use `graph_db.update_node(id, None, {"status": "archived", ...})` to
|
|
40
|
+
archive memories that fail the above checks.
|
|
41
|
+
- Consider a gradual decay: lower confidence over time rather than
|
|
42
|
+
hard-deleting on first miss.
|
|
43
|
+
- The `DreamMemoryLifecycle` model in types.py already provides the
|
|
44
|
+
fields you need: `last_hit_at`, `hit_count`, `usefulness_score`,
|
|
45
|
+
`invalidated_by_feedback`, `status`.
|
|
46
|
+
|
|
47
|
+
Entry point suggestion:
|
|
48
|
+
|
|
49
|
+
class DreamMaintenanceStrategy:
|
|
50
|
+
def run_maintenance(self, *, user_name: str, mem_cube_id: str) -> MaintenanceReport:
|
|
51
|
+
...
|
|
52
|
+
|
|
53
|
+
Register it in plugin.py and wire it to a scheduler interval or a
|
|
54
|
+
dedicated API endpoint (e.g. POST /dream/maintenance/run).
|
|
55
|
+
────────────────────────────────────────────────────────────────────────────
|
|
56
|
+
"""
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from memos.dream.pipeline.base import AbstractDreamPipeline
|
|
2
|
+
from memos.dream.pipeline.diary import StructuredDiarySummary
|
|
3
|
+
from memos.dream.pipeline.motive import MotiveFormation
|
|
4
|
+
from memos.dream.pipeline.persistence import DreamPersistence
|
|
5
|
+
from memos.dream.pipeline.reasoning import ConsolidationReasoning
|
|
6
|
+
from memos.dream.pipeline.recall import DirectRecall
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
__all__ = [
|
|
10
|
+
"AbstractDreamPipeline",
|
|
11
|
+
"ConsolidationReasoning",
|
|
12
|
+
"DirectRecall",
|
|
13
|
+
"DreamPersistence",
|
|
14
|
+
"MotiveFormation",
|
|
15
|
+
"StructuredDiarySummary",
|
|
16
|
+
]
|