diff --git a/src/chat/replyer/group_generator.py b/src/chat/replyer/group_generator.py index 3a24f04f..fd0dd732 100644 --- a/src/chat/replyer/group_generator.py +++ b/src/chat/replyer/group_generator.py @@ -594,7 +594,18 @@ class DefaultReplyer: else: bot_nickname = "" - prompt_personality = f"{global_config.personality.personality};" + # 获取基础personality + prompt_personality = global_config.personality.personality + + # 检查是否需要随机替换为状态 + if (global_config.personality.states and + global_config.personality.state_probability > 0 and + random.random() < global_config.personality.state_probability): + # 随机选择一个状态替换personality + selected_state = random.choice(global_config.personality.states) + prompt_personality = selected_state + + prompt_personality = f"{prompt_personality};" return f"你的名字是{bot_name}{bot_nickname},你{prompt_personality}" async def build_prompt_reply_context( diff --git a/src/chat/replyer/private_generator.py b/src/chat/replyer/private_generator.py index c7702bbb..747fe0c4 100644 --- a/src/chat/replyer/private_generator.py +++ b/src/chat/replyer/private_generator.py @@ -522,7 +522,18 @@ class PrivateReplyer: else: bot_nickname = "" - prompt_personality = f"{global_config.personality.personality};" + # 获取基础personality + prompt_personality = global_config.personality.personality + + # 检查是否需要随机替换为状态 + if (global_config.personality.states and + global_config.personality.state_probability > 0 and + random.random() < global_config.personality.state_probability): + # 随机选择一个状态替换personality + selected_state = random.choice(global_config.personality.states) + prompt_personality = selected_state + + prompt_personality = f"{prompt_personality};" return f"你的名字是{bot_name}{bot_nickname},你{prompt_personality}" async def build_prompt_reply_context( diff --git a/src/config/official_configs.py b/src/config/official_configs.py index 28ef63d0..d509ad9c 100644 --- a/src/config/official_configs.py +++ b/src/config/official_configs.py @@ -57,6 +57,12 @@ class PersonalityConfig(ConfigBase): private_plan_style: str = "" """私聊说话规则,行为风格""" + states: list[str] = field(default_factory=lambda: []) + """状态列表,用于随机替换personality""" + + state_probability: float = 0.0 + """状态概率,每次构建人格时替换personality的概率""" + @dataclass class RelationshipConfig(ConfigBase): diff --git a/template/bot_config_template.toml b/template/bot_config_template.toml index df7058a1..9d7941b4 100644 --- a/template/bot_config_template.toml +++ b/template/bot_config_template.toml @@ -1,5 +1,5 @@ [inner] -version = "6.19.0" +version = "6.19.1" #----以下是给开发人员阅读的,如果你只是部署了麦麦,不需要阅读---- #如果你想要修改配置文件,请递增version的值 @@ -47,6 +47,16 @@ private_plan_style = """ 2.如果相同的内容已经被执行,请不要重复执行 3.某句话如果已经被回复过,不要重复回复""" +# 状态,可以理解为人格多样性,会随机替换人格 +states = [ + "是一个女大学生,喜欢上网聊天,会刷小红书。" , + "是一个大二心理学生,会刷贴吧和中国知网。" , + "是一个赛博网友,最近很想吐槽人。" +] + +# 替换概率,每次构建人格时替换personality的概率(0.0-1.0) +state_probability = 0.3 + [expression] # 表达方式模式 mode = "classic"