feat:内置频率调整,减轻Planner负担

This commit is contained in:
SengokuCola
2025-10-14 13:17:08 +08:00
parent a97d8b4e3d
commit 36d95848d1
12 changed files with 126 additions and 106 deletions

View File

@@ -1,75 +0,0 @@
# BetterFrequency 频率控制插件
这是一个用于控制MaiBot聊天频率的插件支持实时调整talk_frequency参数。
## 功能特性
- 💬 **Talk Frequency控制**: 调整机器人的发言频率
- 📊 **状态显示**: 实时查看当前频率控制状态
-**实时生效**: 设置后立即生效,无需重启
- 💾 **不保存消息**: 命令执行反馈不会保存到数据库
- 🚀 **简化命令**: 支持完整命令和简化命令两种形式
## 命令列表
### 1. 设置Talk Frequency
```
/chat talk_frequency <数字> # 完整命令
/chat t <数字> # 简化命令
```
- 功能设置当前聊天的talk_frequency调整值
- 参数支持0到1之间的数值
- 示例:
- `/chat talk_frequency 1.0``/chat t 1.0` - 设置发言频率调整为1.0(最高频率)
- `/chat talk_frequency 0.5``/chat t 0.5` - 设置发言频率调整为0.5
- `/chat talk_frequency 0.0``/chat t 0.0` - 设置发言频率调整为0.0(最低频率)
### 2. 显示当前状态
```
/chat show # 完整命令
/chat s # 简化命令
```
- 功能:显示当前聊天的频率控制状态
- 显示内容:
- 当前talk_frequency值
- 可用命令提示(包含简化命令)
## 配置说明
插件配置文件 `config.toml` 包含以下选项:
```toml
[plugin]
name = "better_frequency_plugin"
version = "1.0.0"
enabled = true
[frequency]
default_talk_adjust = 1.0 # 默认talk_frequency调整值
max_adjust_value = 1.0 # 最大调整值
min_adjust_value = 0.0 # 最小调整值
```
## 使用场景
- **提高机器人活跃度**: 设置较高的talk_frequency值接近1.0
- **降低机器人活跃度**: 设置较低的talk_frequency值接近0.0
- **精细调节**: 使用小数进行微调
- **实时监控**: 通过show命令查看当前状态
- **快速操作**: 使用简化命令提高操作效率
## 注意事项
1. 调整值会立即生效,影响当前聊天的机器人行为
2. 命令执行反馈消息不会保存到数据库
3. 支持0到1之间的数值
4. 每个聊天都有独立的频率控制设置
5. 简化命令和完整命令功能完全相同,可根据个人习惯选择
## 技术实现
- 基于MaiCore插件系统开发
- 使用frequency_api进行频率控制操作
- 使用send_api发送反馈消息
- 支持异步操作和错误处理
- 正则表达式支持多种命令格式

View File

@@ -2,7 +2,7 @@
"manifest_version": 1,
"name": "发言频率控制插件|BetterFrequency Plugin",
"version": "2.0.0",
"description": "控制聊天频率支持设置focus_value和talk_frequency调整值提供完整命令和简化命令",
"description": "控制聊天频率支持设置focus_value和talk_frequency调整值提供命令",
"author": {
"name": "SengokuCola",
"url": "https://github.com/MaiM-with-u"
@@ -30,12 +30,6 @@
"description": "设置当前聊天的talk_frequency调整值",
"pattern": "/chat talk_frequency <数字> 或 /chat t <数字>"
},
{
"type": "action",
"name": "frequency_adjust",
"description": "调整当前聊天的发言频率",
"pattern": "/chat frequency_adjust <数字> 或 /chat f <数字>"
},
{
"type": "command",
"name": "show_frequency",

View File

@@ -55,7 +55,7 @@ class FrequencyAdjustAction(BaseAction):
return False, error_msg
# 2. 获取当前频率值
current_frequency = frequency_api.get_current_talk_frequency(self.chat_id)
current_frequency = frequency_api.get_current_talk_value(self.chat_id)
# 3. 计算新的频率值(使用比率而不是绝对值)
# calculated_frequency = current_frequency * multiply

View File

@@ -37,9 +37,13 @@ class SetTalkFrequencyCommand(BaseCommand):
# 设置talk_frequency
frequency_api.set_talk_frequency_adjust(chat_id, value)
final_value = frequency_api.get_current_talk_value(chat_id)
adjust_value = frequency_api.get_talk_frequency_adjust(chat_id)
base_value = final_value / adjust_value
# 发送反馈消息(不保存到数据库)
await send_api.text_to_stream(
f"已设置当前聊天的talk_frequency调整值为: {value}",
f"已设置当前聊天的talk_frequency调整值为: {value}\n当前talk_value: {final_value:.2f}\n发言频率调整: {adjust_value:.2f}\n基础值: {base_value:.2f}",
chat_id,
storage_message=False
)
@@ -71,12 +75,16 @@ class ShowFrequencyCommand(BaseCommand):
chat_id = self.message.chat_stream.stream_id
# 获取当前频率控制状态
current_talk_frequency = frequency_api.get_current_talk_frequency(chat_id)
current_talk_frequency = frequency_api.get_current_talk_value(chat_id)
talk_frequency_adjust = frequency_api.get_talk_frequency_adjust(chat_id)
base_value = current_talk_frequency / talk_frequency_adjust
# 构建显示消息
status_msg = f"""当前聊天频率控制状态
Talk Frequency (发言频率):
Talk Value (发言频率):
• 基础值: {base_value:.2f}
• 发言频率调整: {talk_frequency_adjust:.2f}
• 当前值: {current_talk_frequency:.2f}
使用命令:
@@ -120,7 +128,7 @@ class BetterFrequencyPlugin(BasePlugin):
config_schema: dict = {
"plugin": {
"name": ConfigField(type=str, default="better_frequency_plugin", description="插件名称"),
"version": ConfigField(type=str, default="1.0.1", description="插件版本"),
"version": ConfigField(type=str, default="1.0.2", description="插件版本"),
"enabled": ConfigField(type=bool, default=True, description="是否启用插件"),
},
"frequency": {
@@ -128,10 +136,10 @@ class BetterFrequencyPlugin(BasePlugin):
"max_adjust_value": ConfigField(type=float, default=1.0, description="最大调整值"),
"min_adjust_value": ConfigField(type=float, default=0.0, description="最小调整值"),
},
"features": {
"enable_frequency_adjust_action": ConfigField(type=bool, default=False, description="是否启用频率调节动作FrequencyAdjustAction"),
"enable_commands": ConfigField(type=bool, default=True, description="是否启用命令功能(/chat命令"),
}
# "features": {
# "enable_frequency_adjust_action": ConfigField(type=bool, default=False, description="是否启用频率调节动作FrequencyAdjustAction"),
# "enable_commands": ConfigField(type=bool, default=True, description="是否启用命令功能(/chat命令"),
# }
}
def get_plugin_components(self) -> List[Tuple[ComponentInfo, Type]]:
@@ -145,7 +153,7 @@ class BetterFrequencyPlugin(BasePlugin):
])
# 根据配置决定是否注册频率调节动作组件
if self.config.get("features", {}).get("enable_frequency_adjust_action", True):
components.append((FrequencyAdjustAction.get_action_info(), FrequencyAdjustAction))
# if self.config.get("features", {}).get("enable_frequency_adjust_action", True):
# components.append((FrequencyAdjustAction.get_action_info(), FrequencyAdjustAction))
return components