9.1 KiB
9.1 KiB
手机自主控制 & 远程控制方案
让手机自己完成任务,无需电脑;支持语音控制和互联网远程控制
一、三种控制模式
┌─────────────────────────────────────────────────────────────────┐
│ 控制模式对比 │
├───────────────┬───────────────┬───────────────┬─────────────────┤
│ 模式 │ 本地控制 │ 局域网控制 │ 互联网控制 │
├───────────────┼───────────────┼───────────────┼─────────────────┤
│ 电脑要求 │ 需要电脑 │ 需要电脑 │ 不需要电脑 │
│ 网络要求 │ USB连接 │ 同一WiFi │ 任意网络 │
│ 控制方式 │ 命令行/API │ HTTP API │ 云端控制 │
│ 语音控制 │ ❌ │ ❌ │ ✅ │
│ 适用场景 │ 开发调试 │ 办公室使用 │ 随时随地 │
└───────────────┴───────────────┴───────────────┴─────────────────┘
二、方案1: 手机本地自主运行
2.1 原理
┌─────────────────────────────────────┐
│ 手机内部 │
│ │
│ ┌─────────────┐ ┌────────────┐ │
│ │ VoiceAgent │───►│ 执行操作 │ │
│ │ (Python) │ │ (点击/滑动) │ │
│ └─────────────┘ └────────────┘ │
│ ▲ │
│ │ 语音命令 │
│ │ │
│ ┌─────────────┐ │
│ │ 麦克风 │ │
│ └─────────────┘ │
└─────────────────────────────────────┘
2.2 在手机上安装运行环境
步骤1: 安装Termux
# 从F-Droid下载Termux (不要用Google Play版本)
# https://f-droid.org/packages/com.termux/
步骤2: 配置Termux
# 更新包管理器
pkg update && pkg upgrade -y
# 安装Python
pkg install python -y
# 安装依赖
pip install websockets uiautomator2 SpeechRecognition
# 授权存储权限
termux-setup-storage
步骤3: 复制Agent到手机
# 在电脑上执行
adb push sdk/agent/ /sdcard/workphone-agent/
步骤4: 运行Agent
# 在Termux中执行
cd /sdcard/workphone-agent
python voice_agent.py --device-id my-phone-001
2.3 语音命令示例
| 语音命令 | 执行动作 |
|---|---|
| "打开微信" | 启动微信APP |
| "打开豆包" | 启动豆包APP |
| "给张三发消息说你好" | 打开微信→搜索张三→发送"你好" |
| "截图" | 截取当前屏幕 |
| "返回" | 按返回键 |
| "回到桌面" | 按Home键 |
| "向上滑" | 向上滑动屏幕 |
三、方案2: 互联网远程控制
3.1 架构图
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 你的手机/电脑 │ │ 云服务器 │ │ 工作手机 │
│ (任意位置) │ │ (公网IP) │ │ (任意位置) │
│ │ HTTPS │ │ WSS │ │
│ 浏览器/APP ─┼────────►│ SDK服务 ─┼────────►│ Agent │
│ │ │ 端口: 443 │ │ (Termux运行) │
└──────────────────┘ └──────────────────┘ └──────────────────┘
│ │ │
│ │ │
北京/出差/家里 阿里云/腾讯云 办公室/仓库
3.2 部署云服务器
步骤1: 购买云服务器
推荐配置:
- 阿里云/腾讯云 轻量应用服务器
- 2核4G,50G SSD
- 带宽3-5Mbps
- 约60-100元/月
步骤2: 部署SDK服务
# SSH登录服务器
ssh root@your-server-ip
# 安装Docker
curl -fsSL https://get.docker.com | sh
# 上传SDK代码
scp -r sdk/ root@your-server-ip:/root/
# 启动服务
cd /root/sdk
docker compose up -d
步骤3: 配置域名和HTTPS
# 安装Nginx
apt install nginx certbot python3-certbot-nginx -y
# 申请SSL证书
certbot --nginx -d sdk.yourdomain.com
# 配置反向代理
# /etc/nginx/sites-available/sdk
server {
listen 443 ssl;
server_name sdk.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/sdk.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/sdk.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8899;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
3.3 手机连接云服务器
# 在手机Termux中运行
python voice_agent.py \
--device-id my-phone-001 \
--server wss://sdk.yourdomain.com/ws/device/my-phone-001
3.4 从任意位置控制
# 从任何有网络的地方
curl https://sdk.yourdomain.com/api/v3/adb/devices/my-phone-001/screenshot
# 发送消息
curl -X POST https://sdk.yourdomain.com/api/v3/message/send \
-H "Content-Type: application/json" \
-d '{
"device_id": "my-phone-001",
"platform": "wechat",
"to_id": "张三",
"content": "你好"
}'
四、方案3: 内网穿透(免服务器)
4.1 使用FRP内网穿透
如果不想购买服务器,可以使用免费的内网穿透服务:
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ 你的手机 │ │ FRP服务器 │ │ 电脑 │
│ (任意位置) │ 公网 │ (免费/自建) │ 穿透 │ (家里/办公室) │
│ ├────────►│ frp.xxx.com ├────────►│ SDK服务 │
└──────────────────┘ └──────────────────┘ └──────────────────┘
配置frpc.ini:
[common]
server_addr = frp.xxx.com
server_port = 7000
token = your-token
[sdk]
type = tcp
local_ip = 127.0.0.1
local_port = 8899
remote_port = 18899
免费FRP服务推荐:
- Sakura Frp: https://www.natfrp.com/
- OpenFrp: https://www.openfrp.net/
五、快速开始指南
5.1 最简单的方式(5分钟上手)
第一步:手机安装Termux
- 从F-Droid下载安装
第二步:在Termux运行
pkg update && pkg install python -y
pip install websockets uiautomator2
curl -O https://your-server/agent.py
python agent.py
第三步:语音控制
- 说"小助手"唤醒
- 说"打开微信"执行命令
5.2 推荐配置
| 场景 | 推荐方案 |
|---|---|
| 个人使用,偶尔控制 | 方案1 本地语音控制 |
| 公司使用,多台手机 | 方案2 云服务器 |
| 测试/开发 | 方案3 内网穿透 |
六、安全建议
- API密钥: 务必设置强密码
- HTTPS: 生产环境必须使用HTTPS
- 防火墙: 只开放必要端口
- 日志: 记录所有操作日志
- 权限: 限制可执行的操作类型
附录: 常用命令
# === 手机端 ===
# 启动语音Agent
python voice_agent.py --device-id phone-001
# 连接远程服务器
python voice_agent.py --server wss://sdk.xxx.com/ws/device/phone-001
# === 远程控制 ===
# 截图
curl https://sdk.xxx.com/api/v3/adb/devices/phone-001/screenshot
# 点击
curl -X POST https://sdk.xxx.com/api/v3/adb/devices/phone-001/click \
-H "Content-Type: application/json" -d '{"x":540,"y":1200}'
# 执行快捷操作
curl -X POST https://sdk.xxx.com/api/v3/experience/shortcuts/wechat_send_message/execute/phone-001 \
-d '{"variables":{"contact":"张三","message":"你好"}}'