""" 网络连接恢复技能 - 断网时尝试恢复上网(仅合法操作) 通过 Hawk 模块执行:开 WiFi、打开系统网络设置、连接已保存网络等。 不涉及且永不涉及:破解密码、未授权访问等任何违规行为。 若设备无可用已保存网络,仅打开 WiFi 设置供用户手动连接或输入密码。 """ import logging import sys import os from typing import Dict, Any # 兼容独立运行和包导入 _agent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) if _agent_dir not in sys.path: sys.path.insert(0, _agent_dir) try: from skills.base import BaseSkill except ImportError: from ..base import BaseSkill logger = logging.getLogger(__name__) class NetworkReconnectSkill(BaseSkill): """网络连接恢复技能 - 与 Hawk 协同,仅做合法网络恢复""" PACKAGE = "" NAME = "网络恢复" def try_reconnect(self) -> Dict[str, Any]: """ 尝试恢复网络:委托 Hawk 执行开 WiFi、打开设置、连接已保存网络等合法操作。 若仍连不上,返回建议(如「请在设置中手动连接或输入密码」)。 """ try: from hawk import try_reconnect_network, is_network_available if self.d is None: return {"success": False, "message": "无设备,无法执行网络恢复", "steps": []} if is_network_available(self.d): return {"success": True, "message": "当前已有网络", "steps": ["检测到网络"]} result = try_reconnect_network(self.d) if self.bus: self.bus.append(self.NAME, result.get("message", ""), data=result) return result except ImportError as e: logger.warning("Hawk 模块未安装,无法执行网络恢复: %s", e) return { "success": False, "message": "Hawk 模块不可用,请检查网络或手动连接 WiFi", "steps": [], } except Exception as e: logger.exception("网络恢复失败") return {"success": False, "message": str(e), "steps": []}