Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
test_memory_ops_sdk.py11.7 kB
#!/usr/bin/env python3 """ MemOS Memory Ops SDK 测试脚本 全面测试SDK的功能和接口 """ import os import sys import time import tempfile import shutil from pathlib import Path # 添加项目根目录到Python路径 sys.path.insert(0, str(Path(__file__).parent)) def test_basic_operations(): """测试基础操作""" print("🧪 测试基础操作") print("-" * 30) try: from memory_ops_sdk import MemoryOps # 使用临时目录 with tempfile.TemporaryDirectory() as temp_dir: mem = MemoryOps(data_dir=temp_dir, verbose=True) try: # 测试添加记忆 print("测试添加记忆...") success1 = mem.add("测试记忆1", tags=["测试"]) success2 = mem.add("测试记忆2", tags=["测试", "SDK"]) if success1 and success2: print("✅ 添加记忆测试通过") else: print("❌ 添加记忆测试失败") return False # 测试查询记忆 print("测试查询记忆...") results = mem.query("测试") if len(results) >= 2: print(f"✅ 查询记忆测试通过 (找到 {len(results)} 条)") else: print(f"❌ 查询记忆测试失败 (只找到 {len(results)} 条)") return False # 测试反馈 if results: print("测试反馈功能...") memory_id = results[0].get('id') if memory_id: feedback_success = mem.feedback(memory_id, "👍") if feedback_success: print("✅ 反馈功能测试通过") else: print("❌ 反馈功能测试失败") return False # 测试统计信息 print("测试统计信息...") stats = mem.stats() if stats and 'status' in stats: print("✅ 统计信息测试通过") else: print("❌ 统计信息测试失败") return False # 测试健康检查 print("测试健康检查...") is_healthy = mem.health() if is_healthy: print("✅ 健康检查测试通过") else: print("⚠️ 健康检查返回异常(可能是正常的)") return True finally: mem.close() except Exception as e: print(f"❌ 基础操作测试失败: {e}") return False def test_context_manager(): """测试上下文管理器""" print("\n🔧 测试上下文管理器") print("-" * 30) try: from memory_ops_sdk import MemoryOps with tempfile.TemporaryDirectory() as temp_dir: # 测试上下文管理器 with MemoryOps(data_dir=temp_dir, verbose=True) as mem: success = mem.add("上下文管理器测试", tags=["上下文"]) results = mem.query("上下文") if success and len(results) > 0: print("✅ 上下文管理器测试通过") return True else: print("❌ 上下文管理器测试失败") return False # 上下文管理器应该自动清理资源 print("✅ 资源自动清理完成") except Exception as e: print(f"❌ 上下文管理器测试失败: {e}") return False def test_convenience_functions(): """测试便捷函数""" print("\n⚡ 测试便捷函数") print("-" * 30) try: from memory_ops_sdk import create_memory_ops, get_global_memory_ops with tempfile.TemporaryDirectory() as temp_dir: # 测试create_memory_ops mem1 = create_memory_ops(temp_dir, verbose=True) try: success = mem1.add("便捷函数测试1", tags=["便捷"]) if success: print("✅ create_memory_ops测试通过") else: print("❌ create_memory_ops测试失败") return False finally: mem1.close() # 测试get_global_memory_ops mem2 = get_global_memory_ops(data_dir=temp_dir, verbose=True) success = mem2.add("便捷函数测试2", tags=["全局"]) if success: print("✅ get_global_memory_ops测试通过") else: print("❌ get_global_memory_ops测试失败") return False return True except Exception as e: print(f"❌ 便捷函数测试失败: {e}") return False def test_advanced_features(): """测试高级功能""" print("\n🚀 测试高级功能") print("-" * 30) try: from memory_ops_sdk import MemoryOps with tempfile.TemporaryDirectory() as temp_dir: with MemoryOps(data_dir=temp_dir, verbose=True) as mem: # 测试带元数据的添加 metadata = { "source": "测试脚本", "priority": "high", "category": "测试" } success = mem.add("高级功能测试", tags=["高级", "元数据"], metadata=metadata) if not success: print("❌ 元数据添加测试失败") return False # 测试高级查询 results = mem.query( "高级功能", limit=3, use_reranker=True, use_time_decay=True, use_topic_drift=False ) if len(results) == 0: print("❌ 高级查询测试失败") return False # 测试导出功能 memories = mem.dump() if len(memories) == 0: print("❌ 导出功能测试失败") return False # 测试优化功能 optimize_success = mem.optimize() # 优化可能失败,这是正常的 print("✅ 高级功能测试通过") return True except Exception as e: print(f"❌ 高级功能测试失败: {e}") return False def test_error_handling(): """测试错误处理""" print("\n🛡️ 测试错误处理") print("-" * 30) try: from memory_ops_sdk import MemoryOps # 测试未初始化的情况 mem = MemoryOps(auto_init=False, verbose=True) try: mem.add("这应该失败") print("❌ 错误处理测试失败 - 应该抛出异常") return False except RuntimeError: print("✅ 正确捕获未初始化异常") # 测试手动初始化 if mem.init(): print("✅ 手动初始化成功") mem.close() else: print("⚠️ 手动初始化失败(可能是环境问题)") return True except Exception as e: print(f"❌ 错误处理测试失败: {e}") return False def test_performance(): """测试性能""" print("\n⚡ 测试性能") print("-" * 30) try: from memory_ops_sdk import MemoryOps with tempfile.TemporaryDirectory() as temp_dir: with MemoryOps(data_dir=temp_dir, verbose=False) as mem: # 测试批量添加性能 start_time = time.time() for i in range(10): mem.add(f"性能测试记忆 {i}", tags=["性能"]) add_time = time.time() - start_time print(f"添加10条记忆耗时: {add_time:.2f}秒") # 测试批量查询性能 start_time = time.time() for i in range(5): results = mem.query(f"性能测试 {i}") query_time = time.time() - start_time print(f"查询5次耗时: {query_time:.2f}秒") # 性能阈值检查 if add_time < 30 and query_time < 15: # 宽松的阈值 print("✅ 性能测试通过") return True else: print("⚠️ 性能可能需要优化") return True # 不算失败,只是提醒 except Exception as e: print(f"❌ 性能测试失败: {e}") return False def test_sdk_import(): """测试SDK导入""" print("📦 测试SDK导入") print("-" * 30) try: # 测试主要导入 from memory_ops_sdk import MemoryOps print("✅ MemoryOps导入成功") from memory_ops_sdk import create_memory_ops print("✅ create_memory_ops导入成功") from memory_ops_sdk import get_global_memory_ops print("✅ get_global_memory_ops导入成功") # 测试类实例化 mem = MemoryOps(auto_init=False) print(f"✅ MemoryOps实例化成功: {mem}") return True except Exception as e: print(f"❌ SDK导入测试失败: {e}") return False def main(): """主测试函数""" print("🧠 MemOS Memory Ops SDK 测试") print("=" * 50) # 运行所有测试 tests = [ ("SDK导入", test_sdk_import), ("基础操作", test_basic_operations), ("上下文管理器", test_context_manager), ("便捷函数", test_convenience_functions), ("高级功能", test_advanced_features), ("错误处理", test_error_handling), ("性能测试", test_performance) ] passed = 0 total = len(tests) for test_name, test_func in tests: try: if test_func(): passed += 1 print(f"✅ {test_name} 测试通过") else: print(f"❌ {test_name} 测试失败") except Exception as e: print(f"💥 {test_name} 测试异常: {e}") # 汇总结果 print("\n📊 测试结果汇总") print("=" * 50) print(f"总测试数: {total}") print(f"通过数: {passed}") print(f"失败数: {total - passed}") print(f"通过率: {passed/total*100:.1f}%") if passed == total: print("\n🎉 所有测试通过!SDK功能正常") return True else: print(f"\n⚠️ {total - passed} 个测试失败,请检查相关功能") return False if __name__ == "__main__": try: success = main() sys.exit(0 if success else 1) except KeyboardInterrupt: print("\n🛑 测试被中断") sys.exit(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