2.0 KiB
2.0 KiB
Agent 与 Hawk 边界与协同说明
代码隔离
| 板块 | 目录 | 职责 |
|---|---|---|
| Agent | agent.py, skill_executor.py, skills/* |
业务逻辑、技能执行、WebSocket 连接与重连策略、与服务器通信 |
| Hawk | hawk/* |
仅负责网络层:检测网络、开/关 WiFi、打开系统网络设置、连接已保存网络、重试等 |
- Agent 不实现 Hawk 的细节(如
svc wifi、打开设置页 UI);Hawk 不依赖 Agent 或技能总线。 - 协同仅通过接口:Agent 调用
hawk.try_reconnect_network(device)与hawk.is_network_available(device)。
协同方式
-
断网时自动恢复网络
Agent 在 WebSocket 断开且准备重连前,若存在设备句柄self.d,会调用try_reconnect_network(self.d),由 Hawk 在设备上执行合法网络恢复(开 WiFi、打开设置、连接已保存网络等),再继续指数退避重连。 -
自然语言触发
用户说「连接网络」「恢复网络」「打开 WiFi」「断网了」等时,Agent 通过 SkillExecutor 调用network_reconnect技能,该技能内部委托 Hawk 执行上述合法操作。
网络恢复行为(仅合法)
Hawk 只做以下操作,不包含且永不包含破解密码、未授权访问等任何违规行为:
- 通过系统 shell 开启 WiFi:
svc wifi enable - 打开系统「设置」→「网络/WLAN/Wi‑Fi」页面
- 在设置页中点击「已保存」「已知网络」等,尝试连接已保存网络
- 若仍无网络,返回说明「请在本机选择已保存网络或手动输入密码连接」
用户若需连接新网络或输入密码,仅在系统设置界面内手动完成。
依赖关系
Agent (agent.py, skills/)
└─ 可选依赖 Hawk:from hawk import try_reconnect_network
Hawk (hawk/)
└─ 仅依赖 uiautomator2 设备对象,无 Agent 依赖
Hawk 缺失时,Agent 仍可运行;断网时仅跳过「尝试恢复网络」步骤,直接进入重连退避。