MaiBot/docs/hippocampus_to_memory_chest...

2.8 KiB
Raw Blame History

海马体到记忆仓库转换任务

功能描述

这个功能实现了每60秒自动将海马体的节点转换为记忆仓库格式的功能。系统会随机选择5个海马体节点将它们的记忆内容拼接成一个完整的文本然后使用LLM生成标题并存储到记忆仓库中。

实现细节

核心组件

  1. HippocampusToMemoryChestTask (src/chat/memory_system/hippocampus_to_memory_chest_task.py)
    • 继承自 AsyncTask 基类
    • 每60秒执行一次转换任务
    • 启动后等待60秒再开始第一次执行

工作流程

  1. 节点选择从海马体的所有节点中随机选择5个节点
  2. 内容拼接:将选中节点的记忆内容按格式拼接:
    【节点名称1】记忆内容1
    
    【节点名称2】记忆内容2
    
    ...
    
  3. 标题生成使用Memory_chest的LLM模型为拼接的内容生成描述性标题
  4. 数据存储将标题和内容保存到MemoryChest数据库表中
  5. 节点删除:如果保存成功,删除已转换的海马体节点,防止重复构建

集成方式

任务已集成到主系统 (src/main.py) 中:

# 初始化记忆系统
hippocampus_manager.initialize()
logger.info("记忆系统初始化成功")

# 添加海马体到记忆仓库的转换任务
await async_task_manager.add_task(HippocampusToMemoryChestTask())
logger.info("海马体到记忆仓库转换任务已启动")

配置参数

  • 等待时间60秒启动后等待时间
  • 执行间隔60秒每次执行间隔
  • 节点数量5个每次随机选择的节点数

日志输出

任务执行过程中会输出详细的日志信息:

  • [海马体转换] 开始执行海马体到记忆仓库的转换任务
  • [海马体转换] 随机选择了 X 个节点: [节点列表]
  • [海马体转换] 拼接完成,内容长度: X 字符
  • [海马体转换] 已保存到记忆仓库,标题: [生成的标题]
  • [海马体转换] 已删除节点: [节点名称]
  • [海马体转换] 已删除 X 个节点并同步到数据库
  • [海马体转换] 转换任务完成

错误处理

  • 如果海马体管理器未初始化,会跳过本次转换
  • 如果节点数量少于5个会跳过本次转换
  • 如果没有有效的记忆内容,会跳过本次转换
  • 如果标题生成失败,会跳过保存操作
  • 所有错误都会记录到日志中

测试

可以使用提供的测试脚本进行功能验证:

python test_hippocampus_task.py

注意事项

  1. 确保海马体管理器已正确初始化
  2. 确保Memory_chest的LLM模型可用
  3. 确保数据库连接正常
  4. 任务会在系统启动后60秒开始第一次执行
  5. 重要:转换后的海马体节点会被永久删除,确保不会重复构建
  6. 删除操作会自动同步到数据库,保持数据一致性