feat 为focus加入 mentioned bonus

This commit is contained in:
SengokuCola
2025-07-24 22:03:27 +08:00
parent 28861d60b1
commit 33606e7028
6 changed files with 33 additions and 15 deletions

View File

@@ -279,9 +279,15 @@ class ActionPlanner:
self.last_obs_time_mark = time.time()
if mode == ChatMode.FOCUS:
if global_config.normal_chat.mentioned_bot_inevitable_reply:
mentioned_bonus = "有人提到你"
if global_config.normal_chat.at_bot_inevitable_reply:
mentioned_bonus = "有人提到你或者at你"
by_what = "聊天内容"
target_prompt = '\n "target_message_id":"触发action的消息id"'
no_action_block = """重要说明1
no_action_block = f"""重要说明1
- 'no_reply' 表示只进行不进行回复,等待合适的回复时机
- 当你刚刚发送了消息没有人回复时选择no_reply
- 当你一次发送了太多消息为了避免打扰聊天节奏选择no_reply
@@ -289,13 +295,13 @@ class ActionPlanner:
动作reply
动作描述:参与聊天回复,发送文本进行表达
- 你想要闲聊或者随便附和
- 有人提到你
- {mentioned_bonus}
- 如果你刚刚进行了回复,不要对同一个话题重复回应
{
{{
"action": "reply",
"target_message_id":"触发action的消息id",
"reason":"回复的原因"
}
}}
"""
else:

View File

@@ -450,6 +450,9 @@ class DefaultReplyer:
def _parse_reply_target(self, target_message: str) -> tuple:
sender = ""
target = ""
# 添加None检查防止NoneType错误
if target_message is None:
return sender, target
if ":" in target_message or "" in target_message:
# 使用正则表达式匹配中文或英文冒号
parts = re.split(pattern=r"[:]", string=target_message, maxsplit=1)
@@ -462,6 +465,10 @@ class DefaultReplyer:
# 关键词检测与反应
keywords_reaction_prompt = ""
try:
# 添加None检查防止NoneType错误
if target is None:
return keywords_reaction_prompt
# 处理关键词规则
for rule in global_config.keyword_reaction.keyword_rules:
if any(keyword in target for keyword in rule.keywords):
@@ -524,7 +531,7 @@ class DefaultReplyer:
# 其他用户的对话
background_dialogue_list.append(msg_dict)
except Exception as e:
logger.error(f"无法处理历史消息记录: {msg_dict}, 错误: {e}")
logger.error(f"![1753364551656](image/default_generator/1753364551656.png)记录: {msg_dict}, 错误: {e}")
# 构建背景对话 prompt
background_dialogue_prompt = ""