diff --git a/main/xiaozhi-server/core/handle/sendAudioHandle.py b/main/xiaozhi-server/core/handle/sendAudioHandle.py index 63a2411c..20850ac2 100644 --- a/main/xiaozhi-server/core/handle/sendAudioHandle.py +++ b/main/xiaozhi-server/core/handle/sendAudioHandle.py @@ -316,3 +316,13 @@ async def send_stt_message(conn: "ConnectionHandler", text): await send_tts_message(conn, "start") # 发送start消息后客户端状态会处于说话中状态,同步服务端状态 conn.client_is_speaking = True + + +async def send_display_message(conn: "ConnectionHandler", text): + """发送纯显示消息""" + message = { + "type": "stt", + "text": text, + "session_id": conn.session_id + } + await conn.websocket.send(json.dumps(message)) diff --git a/main/xiaozhi-server/core/providers/tools/unified_tool_handler.py b/main/xiaozhi-server/core/providers/tools/unified_tool_handler.py index 6f289632..a5d4c3d8 100644 --- a/main/xiaozhi-server/core/providers/tools/unified_tool_handler.py +++ b/main/xiaozhi-server/core/providers/tools/unified_tool_handler.py @@ -13,6 +13,7 @@ from .server_mcp import ServerMCPExecutor from .device_iot import DeviceIoTExecutor from .device_mcp import DeviceMCPExecutor from .mcp_endpoint import MCPEndpointExecutor +from core.handle.sendAudioHandle import send_display_message class UnifiedToolHandler: @@ -167,6 +168,12 @@ class UnifiedToolHandler: self.logger.debug(f"调用函数: {function_name}, 参数: {arguments}") + # 发送工具调用显示消息到设备 + try: + await send_display_message(self.conn, f"% {function_name}") + except Exception as e: + self.logger.warning(f"发送工具调用显示消息失败: {e}") + # 执行工具调用 result = await self.tool_manager.execute_tool(function_name, arguments) return result