MemoryOS 2.0.27__tar.gz → 2.0.32__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {memoryos-2.0.27 → memoryos-2.0.32}/PKG-INFO +70 -19
- {memoryos-2.0.27 → memoryos-2.0.32}/README.md +68 -17
- {memoryos-2.0.27 → memoryos-2.0.32}/pyproject.toml +2 -2
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/__init__.py +1 -1
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/config.py +23 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/chat_handler.py +2 -1
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/component_init.py +9 -1
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/config_builders.py +20 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/routers/server_router.py +2 -1
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/chunkers/base.py +25 -9
- memoryos-2.0.32/src/memos/chunkers/simple_chunker.py +113 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/llm.py +11 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/mem_scheduler.py +19 -4
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/embedders/cache.py +16 -4
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/embedders/factory.py +2 -0
- memoryos-2.0.32/src/memos/embedders/universal_api.py +148 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/openai.py +53 -37
- memoryos-2.0.32/src/memos/llms/qwen.py +30 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/vllm.py +10 -6
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/eval_analyzer.py +13 -6
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/init_components_for_scheduler.py +1 -6
- memoryos-2.0.27/src/memos/chunkers/simple_chunker.py +0 -53
- memoryos-2.0.27/src/memos/embedders/universal_api.py +0 -112
- memoryos-2.0.27/src/memos/llms/qwen.py +0 -13
- {memoryos-2.0.27 → memoryos-2.0.32}/LICENSE +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/client.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/context/dependencies.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/exceptions.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/add_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/base_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/cube_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/feedback_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/formatters_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/memory_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/scheduler_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/search_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/handlers/suggestion_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/lifecycle.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/mcp_serve.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/middleware/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/middleware/auth.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/middleware/rate_limit.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/middleware/request_context.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/product_models.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/routers/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/routers/admin_router.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/server_api.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/server_api_ext.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/utils/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/api/utils/api_keys.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/chunkers/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/chunkers/charactertext_chunker.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/chunkers/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/chunkers/markdown_chunker.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/chunkers/sentence_chunker.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/cli.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/chunker.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/embedder.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/graph_db.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/internet_retriever.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/mem_agent.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/mem_chat.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/mem_cube.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/mem_os.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/mem_reader.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/mem_user.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/memory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/reranker.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/configs/vec_db.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/context/context.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dependency.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/deprecation.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/README.md +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/contextualization.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/enrichment.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/hook_defs.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/hooks.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/maintenance.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/pipeline/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/pipeline/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/pipeline/diary.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/pipeline/motive.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/pipeline/persistence.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/pipeline/reasoning.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/pipeline/recall.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/plugin.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/prompts/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/prompts/context_binding_prompt.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/prompts/context_summary_prompt.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/prompts/motive_prompt.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/prompts/reasoning_prompt.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/routers/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/routers/diary_router.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/routers/trigger_router.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/routes.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/search.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/signal_store.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/dream/types.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/embedders/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/embedders/ark.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/embedders/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/embedders/ollama.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/embedders/sentence_transformer.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/exceptions.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/extras/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/graph_dbs/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/graph_dbs/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/graph_dbs/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/graph_dbs/item.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/graph_dbs/neo4j.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/graph_dbs/neo4j_community.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/graph_dbs/polardb.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/graph_dbs/postgres.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/hello_world.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/deepseek.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/hf.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/hf_singleton.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/minimax.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/ollama.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/openai_new.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/llms/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/log.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_agent/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_agent/deepsearch_agent.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_agent/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_chat/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_chat/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_chat/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_chat/simple.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_cube/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_cube/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_cube/general.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_cube/navie.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_cube/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_feedback/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_feedback/feedback.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_feedback/simple_feedback.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_feedback/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_os/core.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_os/main.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_os/utils/default_config.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_os/utils/format_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_os/utils/reference_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/memory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/multi_modal_struct.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/assistant_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/file_content_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/image_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/multi_modal_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/string_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/system_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/text_content_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/tool_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/user_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_multi_modal/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_pref_memory/process_preference_memory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_skill_memory/process_skill_memory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/read_skill_memory/upload_skill_memory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/simple_struct.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/strategy_struct.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_reader/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/api_analyzer.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/mos_for_test_scheduler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/analyzer/scheduler_for_eval.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/base_mixins/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/base_mixins/memory_ops.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/base_mixins/queue_ops.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/base_mixins/web_log_ops.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/base_scheduler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/api_misc.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/misc.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/scheduler_logger.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/general_modules/task_threads.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/general_scheduler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/activation_memory_manager.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/enhancement_pipeline.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/filter_pipeline.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/memory_filter.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/post_processor.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/rerank_pipeline.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/retriever.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/search_pipeline.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/memory_manage_modules/search_service.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/monitors/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/monitors/dispatcher_monitor.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/monitors/general_monitor.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/monitors/task_schedule_monitor.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/optimized_scheduler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/api_redis_model.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/base_model.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/monitor_models.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/orm_modules/redis_model.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/scheduler_factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/analyzer_schemas.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/api_schemas.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/general_schemas.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/message_schemas.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/monitor_schemas.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/schemas/task_schemas.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/base_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/context.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/dispatcher.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/add_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/answer_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/feedback_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_dream_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_read_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/mem_reorganize_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/memory_update_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/pref_add_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/handlers/query_handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/local_queue.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/orchestrator.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/redis_queue.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/registry.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/task_schedule_modules/task_queue.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/api_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/config_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/db_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/filter_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/metrics.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/misc_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/monitor_event_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/utils/status_tracker.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/webservice_modules/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/webservice_modules/rabbitmq_service.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_scheduler/webservice_modules/redis_service.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_user/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_user/mysql_persistent_user_manager.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_user/mysql_user_manager.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_user/persistent_factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_user/persistent_user_manager.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_user/redis_persistent_user_manager.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/mem_user/user_manager.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/activation/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/activation/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/activation/item.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/activation/kv.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/activation/vllmkv.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/parametric/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/parametric/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/parametric/item.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/parametric/lora.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/general.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/item.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/naive.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/adder.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/config.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/extractor.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/retrievers.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/spliter.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/prefer_text_memory/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/preference.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/simple_preference.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/simple_tree.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/handler.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/manager.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/relation_reason_detector.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/organize/reorganizer.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/advanced_searcher.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/bm25_util.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/bochasearch.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/internet_retriever_factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/reasoner.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/recall.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/reranker.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/retrieval_mid_structs.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/retrieve_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/searcher.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/task_goal_parser.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/tavilysearch.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memories/textual/tree_text_memory/retrieve/xinyusearch.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memos_tools/dinding_report_bot.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memos_tools/lockfree_dict.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memos_tools/notification_service.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memos_tools/notification_utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memos_tools/singleton.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memos_tools/thread_safe_dict.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/memos_tools/thread_safe_dict_segment.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/multi_mem_cube/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/multi_mem_cube/composite_cube.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/multi_mem_cube/single_cube.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/multi_mem_cube/views.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/parsers/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/parsers/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/parsers/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/parsers/markitdown.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/plugins/README.md +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/plugins/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/plugins/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/plugins/component_bootstrap.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/plugins/hook_defs.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/plugins/hooks.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/plugins/manager.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/concat.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/cosine_local.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/http_bge.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/http_bge_strategy.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/noop.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/strategies/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/strategies/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/strategies/concat_background.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/strategies/concat_docsource.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/strategies/dialogue_common.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/strategies/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/strategies/single_turn.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/reranker/strategies/singleturn_outmem.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/search/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/search/search_service.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/settings.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/advanced_search_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/cloud_service_prompt.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/instruction_completion.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/mem_agent_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/mem_feedback_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/mem_reader_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/mem_reader_strategy_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/mem_scheduler_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/mem_search_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/mos_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/prefer_complete_prompt.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/skill_mem_prompt.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/tool_mem_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/templates/tree_reorganize_prompts.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/general_types.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_assistant_message_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_image_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_input_audio_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_refusal_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_content_part_text_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_message_custom_tool_call_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_message_function_tool_call_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_message_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_message_tool_call_union_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_system_message_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_tool_message_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/types/openai_chat_completion_types/chat_completion_user_message_param.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/utils.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/vec_dbs/__init__.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/vec_dbs/base.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/vec_dbs/factory.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/vec_dbs/item.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/vec_dbs/milvus.py +0 -0
- {memoryos-2.0.27 → memoryos-2.0.32}/src/memos/vec_dbs/qdrant.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: MemoryOS
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.32
|
|
4
4
|
Summary: Intelligence Begins with Memory
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
@@ -30,7 +30,7 @@ Provides-Extra: tavily
|
|
|
30
30
|
Provides-Extra: tree-mem
|
|
31
31
|
Requires-Dist: alibabacloud-oss-v2 (>=1.2.2,<1.2.3) ; extra == "all"
|
|
32
32
|
Requires-Dist: alibabacloud-oss-v2 (>=1.2.2,<1.2.3) ; extra == "skill-mem"
|
|
33
|
-
Requires-Dist: cachetools (>=6.0.0)
|
|
33
|
+
Requires-Dist: cachetools (>=6.0.0)
|
|
34
34
|
Requires-Dist: chonkie (>=1.0.7,<2.0.0) ; extra == "all"
|
|
35
35
|
Requires-Dist: chonkie (>=1.0.7,<2.0.0) ; extra == "mem-reader"
|
|
36
36
|
Requires-Dist: concurrent-log-handler (>=0.9.28,<1.0.0)
|
|
@@ -110,9 +110,16 @@ Description-Content-Type: text/markdown
|
|
|
110
110
|
|
|
111
111
|
|
|
112
112
|
<div align="center">
|
|
113
|
-
<img width="1660"
|
|
113
|
+
<img width="1660" alt="MemOS agent ecosystem: OpenClaw, Hermes, and DeepSeek Harness" src="./assets/readme/memos-agent-ecosystem.png" />
|
|
114
114
|
</div>
|
|
115
115
|
|
|
116
|
+
> [!TIP]
|
|
117
|
+
> **New: Connect MemOS to DeepSeek Harness (`dsh`)**
|
|
118
|
+
>
|
|
119
|
+
> Add automatic recall, background capture, hybrid retrieval, and a local Memory Viewer to DeepSeek Harness—powered by the same MemOS core used across agent ecosystems.
|
|
120
|
+
>
|
|
121
|
+
> **[Get started →](#memos-plugin)**
|
|
122
|
+
|
|
116
123
|
---
|
|
117
124
|
|
|
118
125
|
## 👾 MemOS: Memory Operating System for LLM & AI Agents
|
|
@@ -130,6 +137,9 @@ Description-Content-Type: text/markdown
|
|
|
130
137
|
|
|
131
138
|
### News
|
|
132
139
|
|
|
140
|
+
- **2026-08-17** · 🐋 **MemOS Connects with DeepSeek Harness**
|
|
141
|
+
MemOS now brings persistent memory to **DeepSeek Harness** through both local and cloud plugins. DSH can automatically recall relevant context before a task and retain new experience after a successful turn, without modifying its core.
|
|
142
|
+
|
|
133
143
|
- **2026-07-02** · 🏆 **MemOS Advances Agent and User Memory Benchmarks**
|
|
134
144
|
With MemOS, **OpenClaw** improves average task completion from **36.63% to 50.87%** across five agent tasks. MemOS also achieves **88.83 on LoCoMo** and **89.20 on LongMemEval**, and leads in **OmniMemEval**, a unified evaluation of 14 commercial memory products across ten datasets.
|
|
135
145
|
|
|
@@ -138,7 +148,7 @@ Description-Content-Type: text/markdown
|
|
|
138
148
|
|
|
139
149
|
- **2026-04-10** · 👧🏻 **MemOS Hermes Agent Local Plugin**
|
|
140
150
|
Official Hermes Agent memory plugins launched: Hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution, multi-agent collaboration. 100% local, zero cloud dependency.
|
|
141
|
-
|
|
151
|
+
|
|
142
152
|
- **2026-03-08** · 🦞 **MemOS OpenClaw Plugin — Cloud & Local**
|
|
143
153
|
Official OpenClaw memory plugins launched. **Cloud Plugin**: hosted memory service with 72% lower token usage and multi-agent memory sharing ([MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)). **Local Plugin** (`v1.0.0`): 100% on-device memory with persistent SQLite, hybrid search (FTS5 + vector), task summarization & skill evolution, multi-agent collaboration, and a full Memory Viewer dashboard.
|
|
144
154
|
|
|
@@ -177,12 +187,12 @@ MemOS gives AI agents long-term memory. Common uses:
|
|
|
177
187
|
MemOS is built around four entry points. Pick the one that matches your scenario.
|
|
178
188
|
|
|
179
189
|
|
|
180
|
-
| | Cloud API | Self-Host |
|
|
181
|
-
| ------------ | ----------------------- | ------------------ | ------------------------ |
|
|
182
|
-
| Best for | Your app, fully managed | Teams on own infra | OpenClaw users, zero ops | Hermes
|
|
183
|
-
| Setup | Get an API key | docker compose up | openclaw plugins install | npm install +
|
|
184
|
-
| Infra needed | None (hosted) | Neo4j + Qdrant | None (uses MemOS Cloud) | None (local SQLite)
|
|
185
|
-
| Data lives | MemOS Cloud | Your servers | MemOS Cloud | Your machine
|
|
190
|
+
| | Cloud API | Self-Host | MemOS Cloud Plugin | Local Plugin |
|
|
191
|
+
| ------------ | ----------------------- | ------------------ | ------------------------ | ------------------------------------------------ |
|
|
192
|
+
| Best for | Your app, fully managed | Teams on own infra | OpenClaw users, zero ops | DeepSeek Harness, Hermes, or OpenClaw; on-device |
|
|
193
|
+
| Setup | Get an API key | docker compose up | openclaw plugins install | npm install + agent-specific setup |
|
|
194
|
+
| Infra needed | None (hosted) | Neo4j + Qdrant | None (uses MemOS Cloud) | None (local SQLite) |
|
|
195
|
+
| Data lives | MemOS Cloud | Your servers | MemOS Cloud | Your machine |
|
|
186
196
|
|
|
187
197
|
### ☁️ Use the Cloud API (Hosted)
|
|
188
198
|
|
|
@@ -249,7 +259,7 @@ cd src
|
|
|
249
259
|
uvicorn memos.api.server_api:app --host 0.0.0.0 --port 8000 --workers 1
|
|
250
260
|
```
|
|
251
261
|
|
|
252
|
-
See `
|
|
262
|
+
See [`docker/.env.example-full`](./docker/.env.example-full) for all configuration options (LLM provider, embedder, vector DB, graph DB, scheduler). The full deployment guide is at [https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/](https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/).
|
|
253
263
|
|
|
254
264
|
**Try the API:**
|
|
255
265
|
|
|
@@ -283,18 +293,20 @@ res = requests.post(f"{base}/search", headers=headers, data=json.dumps({
|
|
|
283
293
|
print(res.json())
|
|
284
294
|
```
|
|
285
295
|
|
|
296
|
+
<a id="memos-plugin"></a>
|
|
297
|
+
|
|
286
298
|
### 🧠 MemOS Plugin: Persistent Memory for Your AI Agents ✨
|
|
287
299
|
|
|
288
|
-
|
|
300
|
+
MemOS gives OpenClaw, Hermes, and DeepSeek Harness a shared local memory core; the managed ***MemOS Cloud Plugin*** is available for OpenClaw and DeepSeek Harness 🏃🏻
|
|
289
301
|
|
|
290
302
|
| 🔌 Plugin | 💡 Core Features | 🧩 Resources |
|
|
291
303
|
| ------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
292
304
|
| 🧠 **[memos-local-plugin 2.0](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin)** | | 🌐 [Website](https://memos-claw.openmem.net/) · 📖 [Docs](https://memos-docs.openmem.net/cn/openclaw/local_plugin) · 🐙 [GitHub](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
|
|
293
|
-
| ☁️ **[
|
|
305
|
+
| ☁️ **[MemOS Cloud Plugin](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin)** | | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
|
|
294
306
|
|
|
295
|
-
#### 1.
|
|
307
|
+
#### 1. MemOS Cloud Plugin
|
|
296
308
|
|
|
297
|
-
|
|
309
|
+
Use MemOS Cloud for persistent memory in OpenClaw or DeepSeek Harness — no infrastructure to run.
|
|
298
310
|
|
|
299
311
|
- **Repo:** [MemTensor/MemOS ·](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin) `apps/MemOS-Cloud-OpenClaw-Plugin`
|
|
300
312
|
- **NPM:** `[@memtensor/memos-cloud-openclaw-plugin](https://www.npmjs.com/package/@memtensor/memos-cloud-openclaw-plugin)`
|
|
@@ -310,16 +322,55 @@ openclaw gateway restart
|
|
|
310
322
|
|
|
311
323
|
The plugin recalls memories from MemOS Cloud before each agent run and saves new messages back after the run ends.
|
|
312
324
|
|
|
313
|
-
|
|
325
|
+
##### DeepSeek Harness
|
|
326
|
+
|
|
327
|
+
Connect DeepSeek Harness to MemOS Cloud through its native plugin mechanism. Before the first model step of each user request, the plugin recalls relevant cloud memories; after a successful turn, it saves the new user and assistant messages back to MemOS Cloud.
|
|
328
|
+
|
|
329
|
+
1. [Create a MemOS API Key](https://memos-dashboard.openmem.net/cn/apikeys/).
|
|
330
|
+
2. Install the cloud plugin into the default DSH `web` profile:
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
npx @deepseek-ai/dsh plugin --profile web add @memtensor/memos-cloud-dsh-plugin@latest
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
3. Add the API Key to `~/.dsh/.credentials.yaml`:
|
|
337
|
+
|
|
338
|
+
```yaml
|
|
339
|
+
MEMOS_API_KEY: mpg-your-key
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
4. Add the minimal plugin configuration to `~/.dsh/settings.yaml`:
|
|
314
343
|
|
|
315
|
-
|
|
344
|
+
```yaml
|
|
345
|
+
memos-cloud:
|
|
346
|
+
apiKeyEnv: MEMOS_API_KEY
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
5. Restart the DSH Web profile:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
npx @deepseek-ai/dsh web
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
The cloud plugin is fail-open: a temporary MemOS Cloud outage does not interrupt the current DSH task.
|
|
356
|
+
|
|
357
|
+
#### 2. Local Plugin (OpenClaw, Hermes, and DeepSeek Harness)
|
|
358
|
+
|
|
359
|
+
You use DeepSeek Harness, Hermes Agent, or OpenClaw and want 100% on-device memory — nothing leaves your machine.
|
|
316
360
|
|
|
317
361
|
- **Repo:** [MemTensor/MemOS ·](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin) `apps/memos-local-plugin`
|
|
318
362
|
- **NPM:** `[@memtensor/memos-local-plugin](https://www.npmjs.com/package/@memtensor/memos-local-plugin)`
|
|
319
363
|
- **Docs:** [https://memos-docs.openmem.net/cn/openclaw/local_plugin](https://memos-docs.openmem.net/cn/openclaw/local_plugin)
|
|
364
|
+
- **DeepSeek Harness:** [integration details](./apps/memos-local-plugin/adapters/deepseek-harness/README.md)
|
|
320
365
|
- **Viewer dashboard:** see `apps/memos-local-plugin/viewer/`
|
|
321
366
|
|
|
322
|
-
Install (macOS / Linux):
|
|
367
|
+
Install for DeepSeek Harness (macOS / Linux):
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh | bash -s -- --agent dsh --profile web
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
Install for OpenClaw or Hermes (macOS / Linux):
|
|
323
374
|
|
|
324
375
|
```bash
|
|
325
376
|
curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh | bash
|
|
@@ -331,7 +382,7 @@ Install (Windows PowerShell):
|
|
|
331
382
|
irm https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.ps1 -OutFile "$env:TEMP\memos-install.ps1"; powershell -ExecutionPolicy Bypass -File "$env:TEMP\memos-install.ps1"
|
|
332
383
|
```
|
|
333
384
|
|
|
334
|
-
Requires Node.js and an already-installed OpenClaw or Hermes. The installer
|
|
385
|
+
Requires Node.js and an already-installed DeepSeek Harness, OpenClaw, or Hermes. The installer deploys MemOS to the selected agent runtime; the DeepSeek Harness target installs it as an out-of-tree DSH bundle, while the OpenClaw and Hermes targets write the initial `config.yaml` in their respective agent homes.
|
|
335
386
|
|
|
336
387
|
Features: hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution (L1 traces / L2 policies / L3 world model), multi-agent collaboration, local-first SQLite storage.
|
|
337
388
|
|
|
@@ -26,9 +26,16 @@
|
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
<div align="center">
|
|
29
|
-
<img width="1660"
|
|
29
|
+
<img width="1660" alt="MemOS agent ecosystem: OpenClaw, Hermes, and DeepSeek Harness" src="./assets/readme/memos-agent-ecosystem.png" />
|
|
30
30
|
</div>
|
|
31
31
|
|
|
32
|
+
> [!TIP]
|
|
33
|
+
> **New: Connect MemOS to DeepSeek Harness (`dsh`)**
|
|
34
|
+
>
|
|
35
|
+
> Add automatic recall, background capture, hybrid retrieval, and a local Memory Viewer to DeepSeek Harness—powered by the same MemOS core used across agent ecosystems.
|
|
36
|
+
>
|
|
37
|
+
> **[Get started →](#memos-plugin)**
|
|
38
|
+
|
|
32
39
|
---
|
|
33
40
|
|
|
34
41
|
## 👾 MemOS: Memory Operating System for LLM & AI Agents
|
|
@@ -46,6 +53,9 @@
|
|
|
46
53
|
|
|
47
54
|
### News
|
|
48
55
|
|
|
56
|
+
- **2026-08-17** · 🐋 **MemOS Connects with DeepSeek Harness**
|
|
57
|
+
MemOS now brings persistent memory to **DeepSeek Harness** through both local and cloud plugins. DSH can automatically recall relevant context before a task and retain new experience after a successful turn, without modifying its core.
|
|
58
|
+
|
|
49
59
|
- **2026-07-02** · 🏆 **MemOS Advances Agent and User Memory Benchmarks**
|
|
50
60
|
With MemOS, **OpenClaw** improves average task completion from **36.63% to 50.87%** across five agent tasks. MemOS also achieves **88.83 on LoCoMo** and **89.20 on LongMemEval**, and leads in **OmniMemEval**, a unified evaluation of 14 commercial memory products across ten datasets.
|
|
51
61
|
|
|
@@ -54,7 +64,7 @@
|
|
|
54
64
|
|
|
55
65
|
- **2026-04-10** · 👧🏻 **MemOS Hermes Agent Local Plugin**
|
|
56
66
|
Official Hermes Agent memory plugins launched: Hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution, multi-agent collaboration. 100% local, zero cloud dependency.
|
|
57
|
-
|
|
67
|
+
|
|
58
68
|
- **2026-03-08** · 🦞 **MemOS OpenClaw Plugin — Cloud & Local**
|
|
59
69
|
Official OpenClaw memory plugins launched. **Cloud Plugin**: hosted memory service with 72% lower token usage and multi-agent memory sharing ([MemOS-Cloud-OpenClaw-Plugin](https://github.com/MemTensor/MemOS-Cloud-OpenClaw-Plugin)). **Local Plugin** (`v1.0.0`): 100% on-device memory with persistent SQLite, hybrid search (FTS5 + vector), task summarization & skill evolution, multi-agent collaboration, and a full Memory Viewer dashboard.
|
|
60
70
|
|
|
@@ -93,12 +103,12 @@ MemOS gives AI agents long-term memory. Common uses:
|
|
|
93
103
|
MemOS is built around four entry points. Pick the one that matches your scenario.
|
|
94
104
|
|
|
95
105
|
|
|
96
|
-
| | Cloud API | Self-Host |
|
|
97
|
-
| ------------ | ----------------------- | ------------------ | ------------------------ |
|
|
98
|
-
| Best for | Your app, fully managed | Teams on own infra | OpenClaw users, zero ops | Hermes
|
|
99
|
-
| Setup | Get an API key | docker compose up | openclaw plugins install | npm install +
|
|
100
|
-
| Infra needed | None (hosted) | Neo4j + Qdrant | None (uses MemOS Cloud) | None (local SQLite)
|
|
101
|
-
| Data lives | MemOS Cloud | Your servers | MemOS Cloud | Your machine
|
|
106
|
+
| | Cloud API | Self-Host | MemOS Cloud Plugin | Local Plugin |
|
|
107
|
+
| ------------ | ----------------------- | ------------------ | ------------------------ | ------------------------------------------------ |
|
|
108
|
+
| Best for | Your app, fully managed | Teams on own infra | OpenClaw users, zero ops | DeepSeek Harness, Hermes, or OpenClaw; on-device |
|
|
109
|
+
| Setup | Get an API key | docker compose up | openclaw plugins install | npm install + agent-specific setup |
|
|
110
|
+
| Infra needed | None (hosted) | Neo4j + Qdrant | None (uses MemOS Cloud) | None (local SQLite) |
|
|
111
|
+
| Data lives | MemOS Cloud | Your servers | MemOS Cloud | Your machine |
|
|
102
112
|
|
|
103
113
|
### ☁️ Use the Cloud API (Hosted)
|
|
104
114
|
|
|
@@ -165,7 +175,7 @@ cd src
|
|
|
165
175
|
uvicorn memos.api.server_api:app --host 0.0.0.0 --port 8000 --workers 1
|
|
166
176
|
```
|
|
167
177
|
|
|
168
|
-
See `
|
|
178
|
+
See [`docker/.env.example-full`](./docker/.env.example-full) for all configuration options (LLM provider, embedder, vector DB, graph DB, scheduler). The full deployment guide is at [https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/](https://memos-docs.openmem.net/open_source/getting_started/rest_api_server/).
|
|
169
179
|
|
|
170
180
|
**Try the API:**
|
|
171
181
|
|
|
@@ -199,18 +209,20 @@ res = requests.post(f"{base}/search", headers=headers, data=json.dumps({
|
|
|
199
209
|
print(res.json())
|
|
200
210
|
```
|
|
201
211
|
|
|
212
|
+
<a id="memos-plugin"></a>
|
|
213
|
+
|
|
202
214
|
### 🧠 MemOS Plugin: Persistent Memory for Your AI Agents ✨
|
|
203
215
|
|
|
204
|
-
|
|
216
|
+
MemOS gives OpenClaw, Hermes, and DeepSeek Harness a shared local memory core; the managed ***MemOS Cloud Plugin*** is available for OpenClaw and DeepSeek Harness 🏃🏻
|
|
205
217
|
|
|
206
218
|
| 🔌 Plugin | 💡 Core Features | 🧩 Resources |
|
|
207
219
|
| ------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
208
220
|
| 🧠 **[memos-local-plugin 2.0](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin)** | | 🌐 [Website](https://memos-claw.openmem.net/) · 📖 [Docs](https://memos-docs.openmem.net/cn/openclaw/local_plugin) · 🐙 [GitHub](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin) · 📦 [NPM](https://www.npmjs.com/package/@memtensor/memos-local-plugin) |
|
|
209
|
-
| ☁️ **[
|
|
221
|
+
| ☁️ **[MemOS Cloud Plugin](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin)** | | 🖥️ [MemOS Dashboard](https://memos-dashboard.openmem.net/login/) · 📖 [Full Tutorial](https://memos-docs.openmem.net/openclaw/guide#_4-update-plugin) |
|
|
210
222
|
|
|
211
|
-
#### 1.
|
|
223
|
+
#### 1. MemOS Cloud Plugin
|
|
212
224
|
|
|
213
|
-
|
|
225
|
+
Use MemOS Cloud for persistent memory in OpenClaw or DeepSeek Harness — no infrastructure to run.
|
|
214
226
|
|
|
215
227
|
- **Repo:** [MemTensor/MemOS ·](https://github.com/MemTensor/MemOS/tree/main/apps/MemOS-Cloud-OpenClaw-Plugin) `apps/MemOS-Cloud-OpenClaw-Plugin`
|
|
216
228
|
- **NPM:** `[@memtensor/memos-cloud-openclaw-plugin](https://www.npmjs.com/package/@memtensor/memos-cloud-openclaw-plugin)`
|
|
@@ -226,16 +238,55 @@ openclaw gateway restart
|
|
|
226
238
|
|
|
227
239
|
The plugin recalls memories from MemOS Cloud before each agent run and saves new messages back after the run ends.
|
|
228
240
|
|
|
229
|
-
|
|
241
|
+
##### DeepSeek Harness
|
|
242
|
+
|
|
243
|
+
Connect DeepSeek Harness to MemOS Cloud through its native plugin mechanism. Before the first model step of each user request, the plugin recalls relevant cloud memories; after a successful turn, it saves the new user and assistant messages back to MemOS Cloud.
|
|
244
|
+
|
|
245
|
+
1. [Create a MemOS API Key](https://memos-dashboard.openmem.net/cn/apikeys/).
|
|
246
|
+
2. Install the cloud plugin into the default DSH `web` profile:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
npx @deepseek-ai/dsh plugin --profile web add @memtensor/memos-cloud-dsh-plugin@latest
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
3. Add the API Key to `~/.dsh/.credentials.yaml`:
|
|
253
|
+
|
|
254
|
+
```yaml
|
|
255
|
+
MEMOS_API_KEY: mpg-your-key
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
4. Add the minimal plugin configuration to `~/.dsh/settings.yaml`:
|
|
230
259
|
|
|
231
|
-
|
|
260
|
+
```yaml
|
|
261
|
+
memos-cloud:
|
|
262
|
+
apiKeyEnv: MEMOS_API_KEY
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
5. Restart the DSH Web profile:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
npx @deepseek-ai/dsh web
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
The cloud plugin is fail-open: a temporary MemOS Cloud outage does not interrupt the current DSH task.
|
|
272
|
+
|
|
273
|
+
#### 2. Local Plugin (OpenClaw, Hermes, and DeepSeek Harness)
|
|
274
|
+
|
|
275
|
+
You use DeepSeek Harness, Hermes Agent, or OpenClaw and want 100% on-device memory — nothing leaves your machine.
|
|
232
276
|
|
|
233
277
|
- **Repo:** [MemTensor/MemOS ·](https://github.com/MemTensor/MemOS/tree/main/apps/memos-local-plugin) `apps/memos-local-plugin`
|
|
234
278
|
- **NPM:** `[@memtensor/memos-local-plugin](https://www.npmjs.com/package/@memtensor/memos-local-plugin)`
|
|
235
279
|
- **Docs:** [https://memos-docs.openmem.net/cn/openclaw/local_plugin](https://memos-docs.openmem.net/cn/openclaw/local_plugin)
|
|
280
|
+
- **DeepSeek Harness:** [integration details](./apps/memos-local-plugin/adapters/deepseek-harness/README.md)
|
|
236
281
|
- **Viewer dashboard:** see `apps/memos-local-plugin/viewer/`
|
|
237
282
|
|
|
238
|
-
Install (macOS / Linux):
|
|
283
|
+
Install for DeepSeek Harness (macOS / Linux):
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh | bash -s -- --agent dsh --profile web
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
Install for OpenClaw or Hermes (macOS / Linux):
|
|
239
290
|
|
|
240
291
|
```bash
|
|
241
292
|
curl -fsSL https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.sh | bash
|
|
@@ -247,7 +298,7 @@ Install (Windows PowerShell):
|
|
|
247
298
|
irm https://raw.githubusercontent.com/MemTensor/MemOS/main/apps/memos-local-plugin/install.ps1 -OutFile "$env:TEMP\memos-install.ps1"; powershell -ExecutionPolicy Bypass -File "$env:TEMP\memos-install.ps1"
|
|
248
299
|
```
|
|
249
300
|
|
|
250
|
-
Requires Node.js and an already-installed OpenClaw or Hermes. The installer
|
|
301
|
+
Requires Node.js and an already-installed DeepSeek Harness, OpenClaw, or Hermes. The installer deploys MemOS to the selected agent runtime; the DeepSeek Harness target installs it as an out-of-tree DSH bundle, while the OpenClaw and Hermes targets write the initial `config.yaml` in their respective agent homes.
|
|
251
302
|
|
|
252
303
|
Features: hybrid retrieval (FTS5 + vector), smart dedup, tiered skill evolution (L1 traces / L2 policies / L3 world model), multi-agent collaboration, local-first SQLite storage.
|
|
253
304
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
##############################################################################
|
|
5
5
|
|
|
6
6
|
name = "MemoryOS"
|
|
7
|
-
version = "2.0.
|
|
7
|
+
version = "2.0.32"
|
|
8
8
|
description = "Intelligence Begins with Memory"
|
|
9
9
|
license = {text = "Apache-2.0"}
|
|
10
10
|
readme = "README.md"
|
|
@@ -48,6 +48,7 @@ dependencies = [
|
|
|
48
48
|
"python-dateutil (>=2.9.0.post0,<3.0.0)",
|
|
49
49
|
"prometheus-client (>=0.23.1,<0.24.0)",
|
|
50
50
|
"concurrent-log-handler (>=0.9.28,<1.0.0)", # Process-safe rotating file handler
|
|
51
|
+
"cachetools (>=6.0.0)", # Embedding request caching
|
|
51
52
|
]
|
|
52
53
|
|
|
53
54
|
[project.urls]
|
|
@@ -128,7 +129,6 @@ all = [
|
|
|
128
129
|
"datasketch (>=1.6.5,<2.0.0)",
|
|
129
130
|
"jieba (>=0.38.1,<0.42.1)",
|
|
130
131
|
"rank-bm25 (>=0.2.2)",
|
|
131
|
-
"cachetools (>=6.0.0)",
|
|
132
132
|
# NOT exist in the above optional groups
|
|
133
133
|
# Because they are either huge-size dependencies or infrequently used dependencies.
|
|
134
134
|
# We kindof don't want users to install them.
|
|
@@ -463,6 +463,28 @@ class APIConfig:
|
|
|
463
463
|
# Fallback to memreader config (same behavior as before for users who don't customize)
|
|
464
464
|
return APIConfig.get_memreader_config()
|
|
465
465
|
|
|
466
|
+
@staticmethod
|
|
467
|
+
def get_suggestion_llm_config() -> dict[str, Any]:
|
|
468
|
+
"""Get LLM configuration for suggestion query generation.
|
|
469
|
+
|
|
470
|
+
Fallback chain: SUGGESTION_MODEL -> MEMREADER_GENERAL_MODEL -> memreader config.
|
|
471
|
+
"""
|
|
472
|
+
suggestion_model = os.getenv("SUGGESTION_MODEL")
|
|
473
|
+
if suggestion_model:
|
|
474
|
+
return APIConfig._build_provider_llm_config(suggestion_model)
|
|
475
|
+
return APIConfig.get_memreader_general_llm_config()
|
|
476
|
+
|
|
477
|
+
@staticmethod
|
|
478
|
+
def get_scheduler_llm_config() -> dict[str, Any]:
|
|
479
|
+
"""Get LLM configuration for scheduler-owned LLM tasks.
|
|
480
|
+
|
|
481
|
+
Fallback chain: MEMSCHEDULER_MODEL -> MEMREADER_GENERAL_MODEL.
|
|
482
|
+
"""
|
|
483
|
+
scheduler_model = os.getenv("MEMSCHEDULER_MODEL")
|
|
484
|
+
if scheduler_model:
|
|
485
|
+
return APIConfig._build_provider_llm_config(scheduler_model)
|
|
486
|
+
return APIConfig.get_memreader_general_llm_config()
|
|
487
|
+
|
|
466
488
|
@staticmethod
|
|
467
489
|
def get_image_parser_llm_config() -> dict[str, Any]:
|
|
468
490
|
"""Get LLM configuration for image parsing (requires vision model).
|
|
@@ -622,6 +644,7 @@ class APIConfig:
|
|
|
622
644
|
"provider": os.getenv("MOS_EMBEDDER_PROVIDER", "openai"),
|
|
623
645
|
"api_key": os.getenv("MOS_EMBEDDER_API_KEY", "sk-xxxx"),
|
|
624
646
|
"model_name_or_path": os.getenv("MOS_EMBEDDER_MODEL", "text-embedding-3-large"),
|
|
647
|
+
"embedding_dims": int(os.getenv("EMBEDDING_DIMENSION", "1024")),
|
|
625
648
|
"headers_extra": json.loads(os.getenv("MOS_EMBEDDER_HEADERS_EXTRA", "{}")),
|
|
626
649
|
"base_url": os.getenv("MOS_EMBEDDER_API_BASE", "http://openai.com"),
|
|
627
650
|
"backup_client": os.getenv("MOS_EMBEDDER_BACKUP_CLIENT", "false").lower()
|
|
@@ -92,6 +92,7 @@ class ChatHandler(BaseHandler):
|
|
|
92
92
|
|
|
93
93
|
self.chat_llms = chat_llms
|
|
94
94
|
self.playground_chat_llms = playground_chat_llms or chat_llms
|
|
95
|
+
self.suggestion_llm = getattr(dependencies, "suggestion_llm", dependencies.llm)
|
|
95
96
|
self.search_handler = search_handler
|
|
96
97
|
self.add_handler = add_handler
|
|
97
98
|
self.online_bot = online_bot
|
|
@@ -1232,7 +1233,7 @@ class ChatHandler(BaseHandler):
|
|
|
1232
1233
|
},
|
|
1233
1234
|
{"role": "user", "content": further_suggestion_prompt},
|
|
1234
1235
|
]
|
|
1235
|
-
response = self.
|
|
1236
|
+
response = self.suggestion_llm.generate(message_list)
|
|
1236
1237
|
clean_response = clean_json_response(response)
|
|
1237
1238
|
response_json = json.loads(clean_response)
|
|
1238
1239
|
return response_json["query"]
|
|
@@ -21,6 +21,8 @@ from memos.api.handlers.config_builders import (
|
|
|
21
21
|
build_mem_reader_config,
|
|
22
22
|
build_nli_client_config,
|
|
23
23
|
build_reranker_config,
|
|
24
|
+
build_scheduler_llm_config,
|
|
25
|
+
build_suggestion_llm_config,
|
|
24
26
|
)
|
|
25
27
|
from memos.configs.mem_scheduler import SchedulerConfigFactory
|
|
26
28
|
from memos.embedders.factory import EmbedderFactory
|
|
@@ -158,6 +160,8 @@ def init_server() -> dict[str, Any]:
|
|
|
158
160
|
graph_db_config = build_graph_db_config()
|
|
159
161
|
llm_config = build_llm_config()
|
|
160
162
|
feedback_llm_config = build_feedback_llm_config()
|
|
163
|
+
suggestion_llm_config = build_suggestion_llm_config()
|
|
164
|
+
scheduler_llm_config = build_scheduler_llm_config()
|
|
161
165
|
chat_llm_config = build_chat_llm_config()
|
|
162
166
|
playground_chat_llm_config = build_chat_llm_config("PLAYGROUND_CHAT_MODEL_LIST")
|
|
163
167
|
embedder_config = build_embedder_config()
|
|
@@ -173,6 +177,8 @@ def init_server() -> dict[str, Any]:
|
|
|
173
177
|
graph_db = GraphStoreFactory.from_config(graph_db_config)
|
|
174
178
|
llm = LLMFactory.from_config(llm_config)
|
|
175
179
|
feedback_llm = LLMFactory.from_config(feedback_llm_config)
|
|
180
|
+
suggestion_llm = LLMFactory.from_config(suggestion_llm_config)
|
|
181
|
+
scheduler_llm = LLMFactory.from_config(scheduler_llm_config)
|
|
176
182
|
chat_llms = (
|
|
177
183
|
_init_chat_llms(chat_llm_config)
|
|
178
184
|
if os.getenv("ENABLE_CHAT_API", "false") == "true"
|
|
@@ -281,7 +287,7 @@ def init_server() -> dict[str, Any]:
|
|
|
281
287
|
)
|
|
282
288
|
mem_scheduler: OptimizedScheduler = SchedulerFactory.from_config(scheduler_config)
|
|
283
289
|
mem_scheduler.initialize_modules(
|
|
284
|
-
chat_llm=
|
|
290
|
+
chat_llm=scheduler_llm,
|
|
285
291
|
process_llm=mem_reader.general_llm,
|
|
286
292
|
db_engine=BaseDBManager.create_default_sqlite_engine(),
|
|
287
293
|
mem_reader=mem_reader,
|
|
@@ -325,6 +331,8 @@ def init_server() -> dict[str, Any]:
|
|
|
325
331
|
"graph_db": graph_db,
|
|
326
332
|
"mem_reader": mem_reader,
|
|
327
333
|
"llm": llm,
|
|
334
|
+
"suggestion_llm": suggestion_llm,
|
|
335
|
+
"scheduler_llm": scheduler_llm,
|
|
328
336
|
"chat_llms": chat_llms,
|
|
329
337
|
"playground_chat_llms": playground_chat_llms,
|
|
330
338
|
"embedder": embedder,
|
|
@@ -167,6 +167,26 @@ def build_feedback_llm_config() -> dict[str, Any]:
|
|
|
167
167
|
return LLMConfigFactory.model_validate(APIConfig.get_feedback_llm_config())
|
|
168
168
|
|
|
169
169
|
|
|
170
|
+
def build_suggestion_llm_config() -> dict[str, Any]:
|
|
171
|
+
"""
|
|
172
|
+
Build suggestion LLM configuration.
|
|
173
|
+
|
|
174
|
+
Returns:
|
|
175
|
+
Validated suggestion LLM configuration dictionary
|
|
176
|
+
"""
|
|
177
|
+
return LLMConfigFactory.model_validate(APIConfig.get_suggestion_llm_config())
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
def build_scheduler_llm_config() -> dict[str, Any]:
|
|
181
|
+
"""
|
|
182
|
+
Build scheduler LLM configuration.
|
|
183
|
+
|
|
184
|
+
Returns:
|
|
185
|
+
Validated scheduler LLM configuration dictionary
|
|
186
|
+
"""
|
|
187
|
+
return LLMConfigFactory.model_validate(APIConfig.get_scheduler_llm_config())
|
|
188
|
+
|
|
189
|
+
|
|
170
190
|
def build_internet_retriever_config() -> dict[str, Any]:
|
|
171
191
|
"""
|
|
172
192
|
Build internet retriever configuration.
|
|
@@ -97,6 +97,7 @@ cube_handler = CubeHandler(dependencies)
|
|
|
97
97
|
# (These can be accessed from the components dict without unpacking all of them)
|
|
98
98
|
mem_scheduler: BaseScheduler = components["mem_scheduler"]
|
|
99
99
|
llm = components["llm"]
|
|
100
|
+
suggestion_llm = components.get("suggestion_llm", llm)
|
|
100
101
|
naive_mem_cube = components["naive_mem_cube"]
|
|
101
102
|
redis_client = components["redis_client"]
|
|
102
103
|
status_tracker = TaskStatusTracker(redis_client=redis_client)
|
|
@@ -327,7 +328,7 @@ def get_suggestion_queries(suggestion_req: SuggestionRequest):
|
|
|
327
328
|
user_id=suggestion_req.mem_cube_id,
|
|
328
329
|
language=suggestion_req.language,
|
|
329
330
|
message=suggestion_req.message,
|
|
330
|
-
llm=
|
|
331
|
+
llm=suggestion_llm,
|
|
331
332
|
naive_mem_cube=naive_mem_cube,
|
|
332
333
|
)
|
|
333
334
|
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import re
|
|
2
|
+
import uuid
|
|
2
3
|
|
|
3
4
|
from abc import ABC, abstractmethod
|
|
4
5
|
|
|
@@ -17,6 +18,12 @@ class Chunk:
|
|
|
17
18
|
class BaseChunker(ABC):
|
|
18
19
|
"""Base class for all text chunkers."""
|
|
19
20
|
|
|
21
|
+
_URL_PATTERN = r'https?://[^\s<>"{}|\\^`\[\]]+'
|
|
22
|
+
_URL_PLACEHOLDER_PREFIX = "__URL_"
|
|
23
|
+
_URL_PLACEHOLDER_PATTERN = re.compile(
|
|
24
|
+
rf"{re.escape(_URL_PLACEHOLDER_PREFIX)}(?:[0-9a-f]+_)?\d+__"
|
|
25
|
+
)
|
|
26
|
+
|
|
20
27
|
@abstractmethod
|
|
21
28
|
def __init__(self, config: BaseChunkerConfig):
|
|
22
29
|
"""Initialize the chunker with the given configuration."""
|
|
@@ -25,6 +32,17 @@ class BaseChunker(ABC):
|
|
|
25
32
|
def chunk(self, text: str) -> list[Chunk]:
|
|
26
33
|
"""Chunk the given text into smaller chunks."""
|
|
27
34
|
|
|
35
|
+
@classmethod
|
|
36
|
+
def _new_url_placeholder_prefix(cls, text: str) -> str:
|
|
37
|
+
"""Return a placeholder namespace that cannot collide with the input."""
|
|
38
|
+
if cls._URL_PLACEHOLDER_PREFIX not in text:
|
|
39
|
+
return cls._URL_PLACEHOLDER_PREFIX
|
|
40
|
+
|
|
41
|
+
while True:
|
|
42
|
+
placeholder_prefix = f"{cls._URL_PLACEHOLDER_PREFIX}{uuid.uuid4().hex[:8]}_"
|
|
43
|
+
if placeholder_prefix not in text:
|
|
44
|
+
return placeholder_prefix
|
|
45
|
+
|
|
28
46
|
def protect_urls(self, text: str) -> tuple[str, dict[str, str]]:
|
|
29
47
|
"""
|
|
30
48
|
Protect URLs in text from being split during chunking.
|
|
@@ -35,16 +53,16 @@ class BaseChunker(ABC):
|
|
|
35
53
|
Returns:
|
|
36
54
|
tuple: (Text with URLs replaced by placeholders, URL mapping dictionary)
|
|
37
55
|
"""
|
|
38
|
-
|
|
39
|
-
|
|
56
|
+
url_map: dict[str, str] = {}
|
|
57
|
+
placeholder_prefix = self._new_url_placeholder_prefix(text)
|
|
40
58
|
|
|
41
59
|
def replace_url(match):
|
|
42
60
|
url = match.group(0)
|
|
43
|
-
placeholder = f"
|
|
61
|
+
placeholder = f"{placeholder_prefix}{len(url_map)}__"
|
|
44
62
|
url_map[placeholder] = url
|
|
45
63
|
return placeholder
|
|
46
64
|
|
|
47
|
-
protected_text = re.sub(
|
|
65
|
+
protected_text = re.sub(self._URL_PATTERN, replace_url, text)
|
|
48
66
|
return protected_text, url_map
|
|
49
67
|
|
|
50
68
|
def restore_urls(self, text: str, url_map: dict[str, str]) -> str:
|
|
@@ -58,8 +76,6 @@ class BaseChunker(ABC):
|
|
|
58
76
|
Returns:
|
|
59
77
|
str: Text with URLs restored
|
|
60
78
|
"""
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return restored_text
|
|
79
|
+
return self._URL_PLACEHOLDER_PATTERN.sub(
|
|
80
|
+
lambda match: url_map.get(match.group(0), match.group(0)), text
|
|
81
|
+
)
|