MaiBot/docs/hippocampus_to_memory_chest...

87 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 海马体到记忆仓库转换任务
## 功能描述
这个功能实现了每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`) 中:
```python
# 初始化记忆系统
hippocampus_manager.initialize()
logger.info("记忆系统初始化成功")
# 添加海马体到记忆仓库的转换任务
await async_task_manager.add_task(HippocampusToMemoryChestTask())
logger.info("海马体到记忆仓库转换任务已启动")
```
## 配置参数
- **等待时间**60秒启动后等待时间
- **执行间隔**60秒每次执行间隔
- **节点数量**5个每次随机选择的节点数
## 日志输出
任务执行过程中会输出详细的日志信息:
- `[海马体转换] 开始执行海马体到记忆仓库的转换任务`
- `[海马体转换] 随机选择了 X 个节点: [节点列表]`
- `[海马体转换] 拼接完成,内容长度: X 字符`
- `[海马体转换] 已保存到记忆仓库,标题: [生成的标题]`
- `[海马体转换] 已删除节点: [节点名称]`
- `[海马体转换] 已删除 X 个节点并同步到数据库`
- `[海马体转换] 转换任务完成`
## 错误处理
- 如果海马体管理器未初始化,会跳过本次转换
- 如果节点数量少于5个会跳过本次转换
- 如果没有有效的记忆内容,会跳过本次转换
- 如果标题生成失败,会跳过保存操作
- 所有错误都会记录到日志中
## 测试
可以使用提供的测试脚本进行功能验证:
```bash
python test_hippocampus_task.py
```
## 注意事项
1. 确保海马体管理器已正确初始化
2. 确保Memory_chest的LLM模型可用
3. 确保数据库连接正常
4. 任务会在系统启动后60秒开始第一次执行
5. **重要**:转换后的海马体节点会被永久删除,确保不会重复构建
6. 删除操作会自动同步到数据库,保持数据一致性