MaiBot
MaiBot copied to clipboard
fix: 提升 ChatManager 的内存管理稳定性以消除潜在的泄漏风险
- ✅ 接受:与main直接相关的Bug修复:提交到dev分支
- 新增功能类pr需要经过issue提前讨论,否则不会被合并
请填写以下内容
-
- [x]
main分支 禁止修改,请确认本次提交的分支 不是main分支
- [x]
-
- [x] 我确认我阅读了贡献指南
-
- [x] 本次更新类型为:BUG修复
- [ ] 本次更新类型为:功能新增
-
- [x] 本次更新是否经过测试
- 请填写破坏性更新的具体内容(如有):无
- 请简要说明本次更新的内容和目的:
- 目的是提升 ChatManager 的内存管理稳定性以消除潜在的泄漏风险。
- 虽然 #1395 中提到的内存泄漏现象目前尚未确认原因,但是在排查过程中发现 ChatManager 存在一些潜在问题:
- 后台任务在 init 中创建,如果 ChatManager 被多次初始化会生成多个无限循环的任务且无法自动释放
- 后台任务缺少生命周期管理可能造成重复创建等问题
- last_messages 没有上限与过期机制确实可能造成内存压力
- 主要改动包括:
- 移除 ChatManager 在 init 中自动启动后台任务的行为,改为显式调用 start() 来避免重复创建无限循环。
- 使用 _cleanup_task / _auto_save_task / _initialize_task 保存 task handler 并新增 shutdown() 方法实现取消
- 通过 LRU 最大缓存数限制和TTL 过期清理控制 last_messages 缓存
- auto_start 参数以维持兼容性(默认为 True)
其他信息
- 关联 Issue:#1395
此修复理论上无法解决问题,因为last_messages是每次替换的,不会出现增长问题