feat:内置频率调整,减轻Planner负担
This commit is contained in:
@@ -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发送反馈消息
|
||||
- 支持异步操作和错误处理
|
||||
- 正则表达式支持多种命令格式
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user