Files
workphone-sdk/sdk/agent/docs/AGENT_HAWK.md

42 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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