You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

88 lines
2.9 KiB

#!/usr/bin/env python3
"""mem0 集成架构测试"""
import asyncio
import logging
import sys
sys.path.insert(0, '/root/.openclaw/workspace/skills/mem0-integration')
from mem0_client import mem0_client
from openclaw_interceptor import intercept_before_llm, intercept_after_response
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
async def mock_llm(system_prompt, user_message):
"""模拟 LLM 调用"""
return f"这是模拟回复:{user_message[:20]}..."
async def test_full_flow():
"""测试完整对话流程"""
print("=" * 60)
print("🧪 测试 mem0 集成架构(生产级)")
print("=" * 60)
# ========== 启动 mem0 Client ==========
print("\n0 启动 mem0 Client...")
await mem0_client.start()
print(f"✅ mem0 Client 已启动")
context = {
'user_id': '5237946060',
'agent_id': 'general'
}
# ========== 测试 1: Pre-Hook 检索 ==========
print("\n1 测试 Pre-Hook 检索...")
query = "我平时喜欢用什么时区?"
memory_prompt = await intercept_before_llm(query, context)
if memory_prompt:
print(f"✅ 检索到记忆:\n{memory_prompt}")
else:
print(" 未检索到记忆(正常,首次对话)")
# ========== 测试 2: 完整对话流程 ==========
print("\n2 测试完整对话流程...")
user_message = "我平时喜欢使用 UTC 时区,请用简体中文和我交流"
print(f"用户:{user_message}")
response = await mock_llm("system", user_message)
print(f"助手:{response}")
# ========== 测试 3: Post-Hook 异步写入 ==========
print("\n3 测试 Post-Hook 异步写入...")
await intercept_after_response(user_message, response, context)
print(f"✅ 对话已提交到异步队列")
print(f" 队列大小:{len(mem0_client.async_queue.queue) if mem0_client.async_queue else 0}")
# ========== 等待异步写入完成 ==========
print("\n4 等待异步写入 (5 秒)...")
await asyncio.sleep(5)
# ========== 测试 4: 验证记忆已存储 ==========
print("\n5 验证记忆已存储...")
memories = await mem0_client.pre_hook_search("时区", **context)
print(f"✅ 检索到 {len(memories)} 条记忆")
for i, mem in enumerate(memories, 1):
print(f" {i}. {mem.get('memory', 'N/A')[:100]}")
# ========== 状态报告 ==========
print("\n" + "=" * 60)
print("📊 系统状态:")
status = mem0_client.get_status()
for key, value in status.items():
print(f" {key}: {value}")
print("=" * 60)
# ========== 关闭 ==========
print("\n6 关闭 mem0 Client...")
await mem0_client.shutdown()
print("✅ 已关闭")
print("\n✅ 测试完成")
if __name__ == '__main__':
asyncio.run(test_full_flow())