refactor(chat): 异步化聊天系统并重构兴趣值计算机制
将同步调用改为异步调用以提升性能,重构兴趣值计算流程以支持更灵活的组件化架构。主要改进包括: - 异步化ChatManager相关方法,避免阻塞主线程 - 重构兴趣值计算系统,从插件内部计算改为通过兴趣管理器统一处理 - 新增should_act字段支持更细粒度的动作决策 - 优化初始化逻辑,避免构造函数中的异步操作 - 扩展插件系统支持兴趣计算器组件注册 - 更新数据库模型以支持新的兴趣值相关字段 这些改进提升了系统的响应性能和可扩展性,同时保持了API的向后兼容性。
This commit is contained in:
@@ -85,7 +85,7 @@ class ExpressionLearner:
|
||||
model_set=model_config.model_task_config.replyer, request_type="expressor.learner"
|
||||
)
|
||||
self.chat_id = chat_id
|
||||
self.chat_name = get_chat_manager().get_stream_name(chat_id) or chat_id
|
||||
self.chat_name = chat_id # 初始化时使用chat_id,稍后异步更新
|
||||
|
||||
# 维护每个chat的上次学习时间
|
||||
self.last_learning_time: float = time.time()
|
||||
@@ -93,6 +93,14 @@ class ExpressionLearner:
|
||||
# 学习参数
|
||||
self.min_messages_for_learning = 25 # 触发学习所需的最少消息数
|
||||
self.min_learning_interval = 300 # 最短学习时间间隔(秒)
|
||||
self._chat_name_initialized = False
|
||||
|
||||
async def _initialize_chat_name(self):
|
||||
"""异步初始化chat_name"""
|
||||
if not self._chat_name_initialized:
|
||||
stream_name = await get_chat_manager().get_stream_name(self.chat_id)
|
||||
self.chat_name = stream_name or self.chat_id
|
||||
self._chat_name_initialized = True
|
||||
|
||||
def can_learn_for_chat(self) -> bool:
|
||||
"""
|
||||
@@ -166,6 +174,9 @@ class ExpressionLearner:
|
||||
Returns:
|
||||
bool: 是否成功触发学习
|
||||
"""
|
||||
# 初始化chat_name
|
||||
await self._initialize_chat_name()
|
||||
|
||||
if not await self.should_trigger_learning():
|
||||
return False
|
||||
|
||||
@@ -323,7 +334,7 @@ class ExpressionLearner:
|
||||
return []
|
||||
learnt_expressions, chat_id = res
|
||||
|
||||
chat_stream = get_chat_manager().get_stream(chat_id)
|
||||
chat_stream = await get_chat_manager().get_stream(chat_id)
|
||||
if chat_stream is None:
|
||||
group_name = f"聊天流 {chat_id}"
|
||||
elif chat_stream.group_info:
|
||||
|
||||
Reference in New Issue
Block a user