Files
workphone-sdk/sdk/docs/手机自主控制方案.md

9.1 KiB
Raw Blame History

手机自主控制 & 远程控制方案

让手机自己完成任务,无需电脑;支持语音控制和互联网远程控制


一、三种控制模式

┌─────────────────────────────────────────────────────────────────┐
│                       控制模式对比                               │
├───────────────┬───────────────┬───────────────┬─────────────────┤
│     模式      │     本地控制   │   局域网控制   │   互联网控制    │
├───────────────┼───────────────┼───────────────┼─────────────────┤
│  电脑要求     │    需要电脑    │   需要电脑     │   不需要电脑    │
│  网络要求     │    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核4G50G 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服务推荐:


五、快速开始指南

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 内网穿透

六、安全建议

  1. API密钥: 务必设置强密码
  2. HTTPS: 生产环境必须使用HTTPS
  3. 防火墙: 只开放必要端口
  4. 日志: 记录所有操作日志
  5. 权限: 限制可执行的操作类型

附录: 常用命令

# === 手机端 ===
# 启动语音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":"你好"}}'