Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
test_topic_drift_integration.py6.27 kB
#!/usr/bin/env python3 """ 主题漂移检测集成测试脚本 测试主题漂移检测器与MVP记忆管理器的集成效果 """ import os import sys import time from pathlib import Path # 添加项目根目录到Python路径 sys.path.insert(0, str(Path(__file__).parent)) def test_topic_drift_integration(): """测试主题漂移检测与MVP管理器的集成""" print("🧪 主题漂移检测集成测试") print("=" * 50) try: from mvp_memory import MVPMemoryManager # 初始化测试数据目录 test_data_dir = "./test_topic_drift_integration_data" if os.path.exists(test_data_dir): import shutil shutil.rmtree(test_data_dir) # 创建MVP管理器 mvp_manager = MVPMemoryManager(test_data_dir, use_enhanced=True) print("\n📝 添加测试记忆(不同主题)...") # 添加不同主题的测试记忆 test_memories = [ { "content": "Python是一种高级编程语言,语法简洁易学", "tags": ["编程", "Python"] }, { "content": "机器学习是人工智能的一个重要分支", "tags": ["AI", "机器学习"] }, { "content": "深度学习使用神经网络进行模式识别", "tags": ["AI", "深度学习"] }, { "content": "今天天气很好,适合出门散步", "tags": ["天气", "生活"] }, { "content": "晚餐吃了美味的意大利面", "tags": ["美食", "生活"] } ] # 添加记忆 for i, memory in enumerate(test_memories, 1): success = mvp_manager.remember( memory["content"], tags=memory["tags"] ) if success: print(f"✅ 已添加记忆 {i}: {memory['content'][:30]}...") else: print(f"❌ 添加失败: {memory['content'][:30]}...") print(f"\n📊 总共添加了 {len(test_memories)} 条测试记忆") # 等待一下确保记忆被索引 time.sleep(2) print("\n🔍 测试主题漂移检测...") print("-" * 40) # 测试查询序列 - 模拟主题漂移场景 test_queries = [ "Python编程语言特点", # 编程主题 "Python函数定义方法", # 继续编程主题 "机器学习算法原理", # 主题开始漂移到AI "深度学习神经网络", # 继续AI主题 "今天天气如何", # 主题漂移到生活 "晚餐吃什么好", # 继续生活主题 "Python web开发框架", # 主题回到编程 ] print("查询序列:") for i, query in enumerate(test_queries, 1): print(f" {i}. {query}") print("\n🔄 执行查询并观察主题漂移检测:") print("-" * 50) for i, query in enumerate(test_queries, 1): print(f"\n{i}. 查询: '{query}'") # 启用主题漂移检测 results_with_drift = mvp_manager.recall( query, top_k=3, use_topic_drift_detection=True ) print(f" 检索到 {len(results_with_drift)} 条结果") # 显示前2条结果的简要信息 for j, result in enumerate(results_with_drift[:2], 1): content = result.get('content', '')[:40] score = result.get('score', 0) print(f" {j}. {content}... (分数: {score:.3f})") print("\n📈 主题漂移检测统计:") if mvp_manager.topic_drift_detector: stats = mvp_manager.topic_drift_detector.get_statistics() for key, value in stats.items(): print(f" {key}: {value}") else: print(" 主题漂移检测器未初始化") print("\n✅ 主题漂移检测集成测试完成!") return True except Exception as e: print(f"❌ 测试失败: {e}") import traceback traceback.print_exc() return False def test_topic_drift_detector_standalone(): """测试独立的主题漂移检测器""" print("\n🔧 独立主题漂移检测器测试") print("-" * 30) try: from topic_drift_detector import TopicDriftDetector detector = TopicDriftDetector(window_size=3, drift_threshold=0.5, min_similarity=0.3) # 测试查询序列 test_queries = [ "Python编程基础", "Python函数使用", "机器学习算法", # 主题漂移 "深度学习网络", "今天天气很好", # 主题漂移 "晚餐计划安排", "Python web开发" # 主题回归 ] print("测试查询序列:") for i, query in enumerate(test_queries, 1): should_clear, reason = detector.should_clear_candidates(query) status = "🚨 清空候选集" if should_clear else "✅ 保持候选集" print(f" {i}. {query}") print(f" {status}: {reason}") print("\n📊 检测统计:") stats = detector.get_statistics() for key, value in stats.items(): print(f" {key}: {value}") return True except Exception as e: print(f"❌ 独立测试失败: {e}") return False if __name__ == "__main__": print("🚀 开始主题漂移检测测试") # 测试独立检测器 standalone_success = test_topic_drift_detector_standalone() # 测试集成功能 integration_success = test_topic_drift_integration() if standalone_success and integration_success: print("\n🎉 所有测试通过!") sys.exit(0) else: 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