MaiBot icon indicating copy to clipboard operation
MaiBot copied to clipboard

fix: 提升 ChatManager 的内存管理稳定性以消除潜在的泄漏风险

Open MySxan opened this issue 1 month ago • 1 comments

  • ✅ 接受:与main直接相关的Bug修复:提交到dev分支
  • 新增功能类pr需要经过issue提前讨论,否则不会被合并

请填写以下内容

    • [x] main 分支 禁止修改,请确认本次提交的分支 不是 main 分支
    • [x] 我确认我阅读了贡献指南
    • [x] 本次更新类型为:BUG修复
    • [ ] 本次更新类型为:功能新增
    • [x] 本次更新是否经过测试
  1. 请填写破坏性更新的具体内容(如有):无
  2. 请简要说明本次更新的内容和目的:
    • 目的是提升 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

MySxan avatar Dec 02 '25 05:12 MySxan

此修复理论上无法解决问题,因为last_messages是每次替换的,不会出现增长问题

SengokuCola avatar Dec 02 '25 07:12 SengokuCola