Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
test_multi_memory_cube.py6.19 kB
#!/usr/bin/env python3 """ 测试多Memory模块的MemCube实现 验证6类专用Memory模块的创建、配置和基本操作 """ import os import sys import tempfile import shutil from pathlib import Path # 添加项目根目录到Python路径 sys.path.insert(0, str(Path(__file__).parent)) def test_multi_memory_config(): """测试MultiMemoryMemCubeConfig配置""" print("🧪 测试MultiMemoryMemCubeConfig配置...") try: from memos.configs.mem_cube import MultiMemoryMemCubeConfig from memos.configs.memory import MemoryConfigFactory # 创建6类专用Memory配置(使用uninitialized避免依赖问题) mem_configs = { 'code_snippet_mem': MemoryConfigFactory(backend='uninitialized'), 'error_log_mem': MemoryConfigFactory(backend='uninitialized'), 'api_sample_mem': MemoryConfigFactory(backend='uninitialized'), 'file_chunk_mem': MemoryConfigFactory(backend='uninitialized'), 'git_commit_mem': MemoryConfigFactory(backend='uninitialized'), 'product_graph_mem': MemoryConfigFactory(backend='uninitialized') } # 创建配置 config = MultiMemoryMemCubeConfig( user_id="test_user", memory_configs=mem_configs ) print(f"✅ 配置创建成功") print(f" 用户ID: {config.user_id}") print(f" Cube ID: {config.cube_id}") print(f" Memory模块数量: {len(config.memory_configs)}") return config except Exception as e: print(f"❌ 配置测试失败: {e}") import traceback traceback.print_exc() return None def test_multi_memory_cube(config): """测试MultiMemoryMemCube实现""" print("\n🧪 测试MultiMemoryMemCube实现...") try: from memos.mem_cube.general import MultiMemoryMemCube # 创建MemCube cube = MultiMemoryMemCube(config) print(f"✅ MemCube创建成功") # 列出Memory模块 memories = cube.list_memories() print(f" Memory模块列表:") for name, mem_type in memories.items(): print(f" - {name}: {mem_type}") return cube except Exception as e: print(f"❌ MemCube测试失败: {e}") return None def test_memory_ops_sdk(): """测试MultiMemoryOps SDK""" print("\n🧪 测试MultiMemoryOps SDK...") try: from memory_ops_sdk import MultiMemoryOps # 创建临时目录 temp_dir = tempfile.mkdtemp() # 初始化SDK(使用uninitialized避免依赖问题) multi_mem = MultiMemoryOps(data_dir=temp_dir, verbose=True) if multi_mem.memory_cube is None: print("❌ SDK初始化失败") return False # 列出Memory模块 modules = multi_mem.list_memory_modules() print(f"✅ SDK初始化成功,支持的Memory模块:") for name, desc in modules.items(): print(f" - {name}: {desc}") # 获取统计信息(跳过实际的记忆操作,因为需要外部依赖) print(f"\n📊 Memory模块统计信息:") stats = multi_mem.get_memory_stats() for name, stat in stats.items(): print(f" - {name}: {stat['count']} 条记忆, 状态: {stat['status']}") # 清理临时目录 shutil.rmtree(temp_dir, ignore_errors=True) return True except Exception as e: print(f"❌ SDK测试失败: {e}") import traceback traceback.print_exc() return False def test_dump_and_load(): """测试序列化和加载功能""" print("\n🧪 测试序列化和加载功能...") try: from memos.configs.mem_cube import MultiMemoryMemCubeConfig from memos.configs.memory import MemoryConfigFactory from memos.mem_cube.general import MultiMemoryMemCube # 创建临时目录 temp_dir = tempfile.mkdtemp() # 创建配置和MemCube(使用uninitialized避免依赖问题) mem_configs = { 'test_mem': MemoryConfigFactory(backend='uninitialized') } config = MultiMemoryMemCubeConfig(memory_configs=mem_configs) cube = MultiMemoryMemCube(config) # 序列化 cube.dump(temp_dir) print(f"✅ 序列化成功到: {temp_dir}") # 检查文件 config_file = os.path.join(temp_dir, "config.json") if os.path.exists(config_file): print(f" ✅ 配置文件已创建: config.json") else: print(f" ❌ 配置文件未找到") # 从目录加载 loaded_cube = MultiMemoryMemCube.init_from_dir(temp_dir) print(f"✅ 从目录加载成功") # 验证加载的配置 loaded_memories = loaded_cube.list_memories() print(f" 加载的Memory模块: {list(loaded_memories.keys())}") # 清理临时目录 shutil.rmtree(temp_dir, ignore_errors=True) return True except Exception as e: print(f"❌ 序列化测试失败: {e}") import traceback traceback.print_exc() return False def main(): """主测试函数""" print("🚀 开始测试多Memory模块MemCube实现") print("=" * 60) # 测试配置 config = test_multi_memory_config() if config is None: print("❌ 配置测试失败,终止测试") return False # 测试MemCube cube = test_multi_memory_cube(config) if cube is None: print("❌ MemCube测试失败,终止测试") return False # 测试SDK sdk_success = test_memory_ops_sdk() if not sdk_success: print("❌ SDK测试失败") return False # 测试序列化 dump_success = test_dump_and_load() if not dump_success: print("❌ 序列化测试失败") return False print("\n" + "=" * 60) print("🎉 所有测试通过!多Memory模块MemCube实现成功") return True if __name__ == "__main__": success = main() sys.exit(0 if success else 1)

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/qinshu1109/memos-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server