Files
workphone-sdk/sdk/agent/skills/network_reconnect.py

61 lines
2.1 KiB
Python

"""
网络连接恢复技能 - 断网时尝试恢复上网(仅合法操作)
通过 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": []}