fix:优化表达方式log和最大表达数量,优化配置文件注释

This commit is contained in:
SengokuCola
2025-06-03 20:33:01 +08:00
parent f94f14cce2
commit e2d478441d
3 changed files with 29 additions and 13 deletions

View File

@@ -7,10 +7,11 @@ from src.config.config import global_config
from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp_random, build_anonymous_messages from src.chat.utils.chat_message_builder import get_raw_msg_by_timestamp_random, build_anonymous_messages
from src.chat.utils.prompt_builder import Prompt, global_prompt_manager from src.chat.utils.prompt_builder import Prompt, global_prompt_manager
import os import os
from src.chat.message_receive.chat_stream import chat_manager
import json import json
MAX_EXPRESSION_COUNT = 100 MAX_EXPRESSION_COUNT = 300
logger = get_logger("expressor") logger = get_logger("expressor")
@@ -129,9 +130,19 @@ class ExpressionLearner:
type_str = "句法特点" type_str = "句法特点"
else: else:
raise ValueError(f"Invalid type: {type}") raise ValueError(f"Invalid type: {type}")
logger.info(f"开始学习{type_str}...") # logger.info(f"开始学习{type_str}...")
learnt_expressions: Optional[List[Tuple[str, str, str]]] = await self.learn_expression(type, num) learnt_expressions,chat_id = await self.learn_expression(type, num)
logger.info(f"学习到{len(learnt_expressions) if learnt_expressions else 0}{type_str}")
chat_stream = chat_manager.get_stream(chat_id)
if chat_stream.group_info:
group_name = chat_stream.group_info.group_name
else:
group_name = f"{chat_stream.user_info.user_nickname}的私聊"
learnt_expressions_str = ""
for _chat_id, situation, style in learnt_expressions:
learnt_expressions_str += f"{situation}->{style}\n"
logger.info(f"{group_name} 学习到{type_str}:\n{learnt_expressions_str}")
# learnt_expressions: List[(chat_id, situation, style)] # learnt_expressions: List[(chat_id, situation, style)]
if not learnt_expressions: if not learnt_expressions:
@@ -188,7 +199,7 @@ class ExpressionLearner:
json.dump(old_data, f, ensure_ascii=False, indent=2) json.dump(old_data, f, ensure_ascii=False, indent=2)
return learnt_expressions return learnt_expressions
async def learn_expression(self, type: str, num: int = 10) -> Optional[List[Tuple[str, str, str]]]: async def learn_expression(self, type: str, num: int = 10) -> Optional[Tuple[List[Tuple[str, str, str]], str]]:
"""选择从当前到最近1小时内的随机num条消息然后学习这些消息的表达方式 """选择从当前到最近1小时内的随机num条消息然后学习这些消息的表达方式
Args: Args:
@@ -233,7 +244,7 @@ class ExpressionLearner:
expressions: List[Tuple[str, str, str]] = self.parse_expression_response(response, chat_id) expressions: List[Tuple[str, str, str]] = self.parse_expression_response(response, chat_id)
return expressions return expressions,chat_id
def parse_expression_response(self, response: str, chat_id: str) -> List[Tuple[str, str, str]]: def parse_expression_response(self, response: str, chat_id: str) -> List[Tuple[str, str, str]]:
""" """

View File

@@ -75,9 +75,9 @@ class SubHeartflow:
self.log_prefix = ( self.log_prefix = (
chat_manager.get_stream_name(self.subheartflow_id) or self.subheartflow_id chat_manager.get_stream_name(self.subheartflow_id) or self.subheartflow_id
) # Keep this line or adjust if utils provides name ) # Keep this line or adjust if utils provides name
logger.debug( # logger.debug(
f"SubHeartflow {self.chat_id} initialized: is_group={self.is_group_chat}, target_info={self.chat_target_info}" # f"SubHeartflow {self.chat_id} initialized: is_group={self.is_group_chat}, target_info={self.chat_target_info}"
) # )
# 根据配置决定初始状态 # 根据配置决定初始状态
if global_config.chat.chat_mode == "focus": if global_config.chat.chat_mode == "focus":

View File

@@ -109,7 +109,6 @@ planner_type = "simple" # 规划器类型可选值complex复杂规划
self_identify_processor = true # 是否启用自我识别处理器 self_identify_processor = true # 是否启用自我识别处理器
relation_processor = true # 是否启用关系识别处理器 relation_processor = true # 是否启用关系识别处理器
tool_use_processor = false # 是否启用工具使用处理器 tool_use_processor = false # 是否启用工具使用处理器
mind_processor = false # 是否启用思维处理器
working_memory_processor = false # 是否启用工作记忆处理器,消耗量大 working_memory_processor = false # 是否启用工作记忆处理器,消耗量大
[emoji] [emoji]
@@ -135,7 +134,7 @@ consolidate_memory_interval = 2000 # 记忆整合间隔 单位秒 间隔越低
consolidation_similarity_threshold = 0.7 # 相似度阈值 consolidation_similarity_threshold = 0.7 # 相似度阈值
consolidation_check_percentage = 0.01 # 检查节点比例 consolidation_check_percentage = 0.01 # 检查节点比例
#不希望记忆的词,已经记忆的不会受到影响 #不希望记忆的词,已经记忆的不会受到影响,需要手动清理
memory_ban_words = [ "表情包", "图片", "回复", "聊天记录" ] memory_ban_words = [ "表情包", "图片", "回复", "聊天记录" ]
[mood] # 仅在 普通聊天 有效 [mood] # 仅在 普通聊天 有效
@@ -143,11 +142,17 @@ mood_update_interval = 1.0 # 情绪更新间隔 单位秒
mood_decay_rate = 0.95 # 情绪衰减率 mood_decay_rate = 0.95 # 情绪衰减率
mood_intensity_factor = 1.0 # 情绪强度因子 mood_intensity_factor = 1.0 # 情绪强度因子
# 规则
# keyword_rules 用于设置关键词触发的额外回复知识
# 添加新规则方法:在 keyword_rules 数组中增加一项,格式如下:
# { keywords = ["关键词1", "关键词2"], reaction = "触发这些关键词时的回复内容" }
# 例如添加一个新规则当检测到“你好”或“hello”时回复“你好有什么可以帮你
# { keywords = ["你好", "hello"], reaction = "你好,有什么可以帮你?" }
[keyword_reaction] [keyword_reaction]
keyword_rules = [ keyword_rules = [
{ keywords = ["人机", "bot", "机器", "入机", "robot", "机器人", "ai", "AI"], reaction = "有人说你是人机或者机器人,否定这一事实,攻击或反问他。注意,只有认为你是机器人才回复,否则不要否认" }, { keywords = ["人机", "bot", "机器", "入机", "robot", "机器人", "ai", "AI"], reaction = "有人说你是人机或者机器人,否定这一事实,攻击或反问他。注意,只有认为你是机器人才回复,否则不要否认" },
{ keywords = ["测试关键词回复", "test"], reaction = "回答测试成功" } { keywords = ["测试关键词回复", "test"], reaction = "回答测试成功" }
# 在此处添加更多规则,格式同上
] ]
regex_rules = [ regex_rules = [
@@ -164,7 +169,7 @@ word_replace_rate=0.006 # 整词替换概率
[response_splitter] [response_splitter]
enable = true # 是否启用回复分割器 enable = true # 是否启用回复分割器
max_length = 512 # 回复允许的最大长度 max_length = 512 # 回复允许的最大长度
max_sentence_num = 7 # 回复允许的最大句子数 max_sentence_num = 8 # 回复允许的最大句子数
enable_kaomoji_protection = false # 是否启用颜文字保护 enable_kaomoji_protection = false # 是否启用颜文字保护