diff --git a/main/xiaozhi-server/core/connection.py b/main/xiaozhi-server/core/connection.py index 9a59d388..8f406ed1 100644 --- a/main/xiaozhi-server/core/connection.py +++ b/main/xiaozhi-server/core/connection.py @@ -42,9 +42,10 @@ class TTSException(RuntimeError): class ConnectionHandler: def __init__( - self, config: Dict[str, Any], _vad, _asr, _llm, _tts, _memory, _intent + self, config: Dict[str, Any], _vad, _asr, _llm, _tts, _memory, _intent, server=None ): - self.config = copy.deepcopy(config) + self.config = config + self.server = server self.logger = setup_logging() self.auth = AuthMiddleware(config) @@ -256,6 +257,12 @@ class ConnectionHandler: if config_model in ["llm", "tts", "asr", "vad", "intent", "memory"]: updated_modules.append(config_model) + # 同步更新 WebSocketServer 的配置 + if self.server: + async with self.server.config_lock: # 使用锁确保线程安全 + for config_model in updated_modules: + self.server.config[config_model].update(new_config[config_model]) + # 批量初始化模块 if updated_modules: try: diff --git a/main/xiaozhi-server/core/websocket_server.py b/main/xiaozhi-server/core/websocket_server.py index fae94046..4b933865 100644 --- a/main/xiaozhi-server/core/websocket_server.py +++ b/main/xiaozhi-server/core/websocket_server.py @@ -11,6 +11,7 @@ class WebSocketServer: def __init__(self, config: dict): self.config = config self.logger = setup_logging() + self.config_lock = asyncio.Lock() modules = initialize_modules( self.logger, self.config, True, True, True, True, True, True ) @@ -43,6 +44,7 @@ class WebSocketServer: self._tts, self._memory, self._intent, + self # 传入当前 WebSocketServer 实例 ) self.active_connections.add(handler) try: