mirror of https://github.com/Mai-with-u/MaiBot.git
87 lines
2.8 KiB
Markdown
87 lines
2.8 KiB
Markdown
# 海马体到记忆仓库转换任务
|
||
|
||
## 功能描述
|
||
|
||
这个功能实现了每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. 删除操作会自动同步到数据库,保持数据一致性
|