memory_migrator.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import os
  2. import json
  3. import shutil
  4. from ..core.memory_pool import GlobalMemoryPool
  5. class MemoryMigrator:
  6. def __init__(self, source_dir, target_dir=None):
  7. self.source_dir = source_dir
  8. self.target_dir = target_dir or './.aceflow/memory_pool'
  9. self.memory_pool = GlobalMemoryPool()
  10. def migrate(self):
  11. """执行记忆迁移"""
  12. # 检查源目录是否存在
  13. if not os.path.exists(self.source_dir):
  14. print(f"源目录不存在: {self.source_dir}")
  15. return False
  16. # 创建目标目录
  17. os.makedirs(self.target_dir, exist_ok=True)
  18. # 遍历源目录
  19. for root, dirs, files in os.walk(self.source_dir):
  20. for file in files:
  21. if file.endswith('.json'):
  22. file_path = os.path.join(root, file)
  23. try:
  24. # 读取记忆文件
  25. with open(file_path, 'r', encoding='utf-8') as f:
  26. memory_data = json.load(f)
  27. # 确定记忆类型
  28. mem_type = memory_data.get('type', 'UNK')
  29. if mem_type not in self.memory_pool.memory_types:
  30. print(f"跳过未知记忆类型: {mem_type} - {file}")
  31. continue
  32. # 存储到新记忆池
  33. new_memory_id = self.memory_pool.store_memory(
  34. mem_type,
  35. memory_data.get('content', ''),
  36. memory_data.get('metadata', {})
  37. )
  38. print(f"迁移记忆: {file} → {new_memory_id}")
  39. except Exception as e:
  40. print(f"迁移失败 {file}: {str(e)}")
  41. print("记忆迁移完成")
  42. return True
  43. if __name__ == "__main__":
  44. # 默认从旧记忆池目录迁移
  45. migrator = MemoryMigrator(source_dir='./old_memory_pool')
  46. migrator.migrate()