修复Action组件可用性和实现消息驱动思考循环

Action组件修复:
- 在core_actions插件中正确注册reply动作
ps:这个优先还是使用之前系统原有的reply,新增这个仅作为回退使用

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

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

大C发力了,今天有一点感冒所以停止思考这一块()
This commit is contained in:
Furina-1013-create
2025-08-22 13:42:05 +08:00
parent a5159bb030
commit 3de02fd3a7
8 changed files with 701 additions and 15 deletions

122
FIXES_SUMMARY.md Normal file
View File

@@ -0,0 +1,122 @@
# MaiBot-Plus 修复总结
## 修复的问题
### 1. Action组件可用性问题
**问题描述**: 用户反馈"no_reply动作还是不可用",并且可用动作列表中缺少 `reply``no_reply` 动作。
**根本原因**:
- `reply` 动作没有在 `core_actions` 插件中注册
- `_manifest.json` 文件缺少 `reply` 动作的声明
- `config.toml` 配置文件没有 `enable_reply` 选项
**修复内容**:
1. **plugin.py**: 添加了 `ReplyAction` 的导入和注册
```python
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` 动作的组件声明
```json
{
"type": "action",
"name": "reply",
"description": "执行基本回复动作"
}
```
3. **config.toml**: 添加了完整的组件配置
```toml
enable_no_reply = true
enable_reply = true
enable_emoji = true
enable_anti_injector_manager = true
```
### 2. 思考循环触发机制问题
**问题描述**:
- 用户反馈"思考间隔明显太短了才1秒左右应该等到有新的消息才进行下一个思考循环"
- 系统使用固定0.1秒间隔无论是否有新消息都进行思考循环,造成资源浪费
**根本原因**:
- 主聊天循环使用固定的短间隔轮询
- 不区分是否有新消息,即使没有新消息也会进行思考循环
- 违反了"消息驱动"的设计理念
**修复内容**:
1. **消息驱动机制**: 修改为只有在有新消息时才触发思考循环
```python
# 只有在有新消息时才进行思考循环处理
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_reply` 和 `reply` 动作将出现在可用动作列表中
- 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可用性问题