refactor(chat): 优化异步任务处理和参数传递机制

- 重构ExpressionSelector初始化,添加chat_id参数支持
- 优化StreamLoopManager中异步任务的创建和管理方式
- 简化MessageManager中的消息添加流程
- 调整Prompt中表情选择器的参数传递结构
This commit is contained in:
Windpicker-owo
2025-10-03 02:32:02 +08:00
parent a853722212
commit 2fc8e26d3c
4 changed files with 11 additions and 10 deletions

View File

@@ -71,7 +71,8 @@ def weighted_sample(population: list[dict], weights: list[float], k: int) -> lis
class ExpressionSelector:
def __init__(self):
def __init__(self, chat_id: str = ""):
self.chat_id = chat_id
self.llm_model = LLMRequest(
model_set=model_config.model_task_config.utils_small, request_type="expression.selector"
)

View File

@@ -9,6 +9,7 @@ from typing import Any
from src.chat.chatter_manager import ChatterManager
from src.chat.energy_system import energy_manager
from src.common.data_models.message_manager_data_model import StreamContext
from src.common.logger import get_logger
from src.config.config import global_config
from src.plugin_system.apis.chat_api import get_chat_manager
@@ -369,7 +370,7 @@ class StreamLoopManager:
logger.error(f"检查消息状态失败: {e}")
return False
async def _process_stream_messages(self, stream_id: str, context: Any) -> bool:
async def _process_stream_messages(self, stream_id: str, context: StreamContext) -> bool:
"""处理流消息
Args:
@@ -387,7 +388,8 @@ class StreamLoopManager:
start_time = time.time()
# 直接调用chatter_manager处理流上下文
results = await asyncio.create_task(self.chatter_manager.process_stream_context(stream_id, context))
context.processing_task = asyncio.create_task(self.chatter_manager.process_stream_context(stream_id, context))
results = await context.processing_task
success = results.get("success", False)
if success:

View File

@@ -89,9 +89,8 @@ class MessageManager:
logger.warning(f"MessageManager.add_message: 聊天流 {stream_id} 不存在")
return
await self._check_and_handle_interruption(chat_stream)
chat_stream.context_manager.context.processing_task = asyncio.create_task(
chat_stream.context_manager.add_message(message)
)
await chat_stream.context_manager.add_message(message)
except Exception as e:
logger.error(f"添加消息到聊天流 {stream_id} 时发生错误: {e}")

View File

@@ -519,10 +519,9 @@ class Prompt:
# 选择合适的表情
selected_expressions = await expression_selector.select_suitable_expressions_llm(
chat_history=chat_history,
current_message=self.parameters.target,
emotional_tone="neutral",
topic_type="general",
chat_id=self.parameters.chat_id,
chat_info=chat_history,
target_message=self.parameters.target,
)
# 构建表达习惯块