Files
Mofox-Core/FIXES_SUMMARY.md
Furina-1013-create 3de02fd3a7 修复Action组件可用性和实现消息驱动思考循环
Action组件修复:
- 在core_actions插件中正确注册reply动作
ps:这个优先还是使用之前系统原有的reply,新增这个仅作为回退使用

- 更新_manifest.json、config.toml和plugin.py

- 解决no_reply和reply动作不可用问题(关于这个我觉得是之前的那个在focus模式下设置了提及/@ 必回然后移除动作的先后顺序这一块有问题)

大C发力了,今天有一点感冒所以停止思考这一块()
2025-08-22 13:42:05 +08:00

4.3 KiB
Raw Blame History

MaiBot-Plus 修复总结

修复的问题

1. Action组件可用性问题

问题描述: 用户反馈"no_reply动作还是不可用",并且可用动作列表中缺少 replyno_reply 动作。

根本原因:

  • reply 动作没有在 core_actions 插件中注册
  • _manifest.json 文件缺少 reply 动作的声明
  • config.toml 配置文件没有 enable_reply 选项

修复内容:

  1. plugin.py: 添加了 ReplyAction 的导入和注册

    from src.plugins.built_in.core_actions.reply import ReplyAction
    # 在配置schema中添加
    "enable_reply": ConfigField(type=bool, default=True, description="是否启用基本回复动作")
    # 在组件注册中添加
    if self.get_config("components.enable_reply", True):
        components.append((ReplyAction.get_action_info(), ReplyAction))
    
  2. _manifest.json: 添加了 reply 动作的组件声明

    {
      "type": "action", 
      "name": "reply",
      "description": "执行基本回复动作"
    }
    
  3. config.toml: 添加了完整的组件配置

    enable_no_reply = true
    enable_reply = true
    enable_emoji = true
    enable_anti_injector_manager = true
    

2. 思考循环触发机制问题

问题描述:

  • 用户反馈"思考间隔明显太短了才1秒左右应该等到有新的消息才进行下一个思考循环"
  • 系统使用固定0.1秒间隔无论是否有新消息都进行思考循环,造成资源浪费

根本原因:

  • 主聊天循环使用固定的短间隔轮询
  • 不区分是否有新消息,即使没有新消息也会进行思考循环
  • 违反了"消息驱动"的设计理念

修复内容:

  1. 消息驱动机制: 修改为只有在有新消息时才触发思考循环

    # 只有在有新消息时才进行思考循环处理
    if has_new_messages:
        # 根据聊天模式处理新消息
        if self.context.loop_mode == ChatMode.FOCUS:
            for message in recent_messages:
                await self.cycle_processor.observe(message)
    
  2. 优化等待策略:

    • 有新消息时: 0.1秒快速检查后续消息
    • 无新消息时: 1.0秒轻量级状态检查
    • 完全避免无意义的思考循环
  3. 保持主动思考独立性: 主动思考系统有自己的时间间隔,不受此修改影响

修复验证

已验证的修复项目

reply 动作注册: manifest、config和plugin.py中都已正确配置
no_reply 动作注册: 配置完整且可用
循环间隔优化: 动态间隔逻辑已实现
配置文件完整性: 所有必需的配置项都已添加

预期效果

  1. Action系统:

    • no_replyreply 动作将出现在可用动作列表中
    • Action回退机制将正常工作
    • 不再出现"未找到Action组件"错误
  2. 思考循环性能:

    • 消息驱动机制: 只有新消息到达时才触发思考循环
    • 无消息时仅状态检查: 避免无意义的思考处理
    • CPU使用率大幅降低: 消除连续的高频思考循环
    • 快速消息响应: 有新消息时仍保持0.1秒响应速度
    • 主动思考独立: 不影响主动思考系统的时间间隔机制

技术细节

Action注册流程

plugin.py 导入 → _manifest.json 声明 → config.toml 启用 → 运行时注册

消息驱动思考策略

消息状态     → 系统行为
有新消息     → 0.1秒快速响应 + 思考循环处理
无新消息     → 1.0秒状态检查 + 跳过思考循环
主动思考     → 独立时间间隔(1500秒) + 独立触发机制

部署建议

  1. 重启服务: 修改了核心循环逻辑建议重启MaiBot服务
  2. 监控性能: 观察CPU使用率是否有明显下降
  3. 测试Action: 验证no_reply和reply动作是否在可用列表中出现
  4. 检查日志: 确认不再出现Action组件错误

后续优化建议

  1. 消息事件驱动: 考虑使用事件驱动机制完全消除轮询
  2. 配置化间隔: 将循环间隔参数添加到配置文件中
  3. 性能监控: 添加循环性能指标收集
  4. Action热重载: 实现Action组件的热重载机制

修复日期: 2025年1月17日
修复范围: Action系统 + 聊天循环优化
预计效果: 大幅减少CPU使用率解决Action可用性问题