Files
workphone-sdk/sdk/docs/架构说明.md

9.0 KiB
Raw Blame History

工作手机SDK v3.0 - 系统架构说明

一、整体架构图

┌──────────────────────────────────────────────────────────────────┐
│                         你的Mac电脑                              │
│                                                                  │
│  ┌─────────────────────┐    ┌─────────────────────────────────┐ │
│  │   SDK服务 (Python)   │    │     Android模拟器/真机           │ │
│  │                     │    │                                 │ │
│  │  FastAPI服务器      │◄───┤     emulator-5554               │ │
│  │  端口: 8899         │ADB │     (RedMi13模拟器)             │ │
│  │                     │命令│                                 │ │
│  │  位置:              │    │     运行的APP:                  │ │
│  │  sdk/app/main.py    │    │     - 豆包                      │ │
│  │                     │    │     - Chrome                    │ │
│  └─────────────────────┘    │     - 设置                      │ │
│           ▲                 │                                 │ │
│           │ HTTP API        │     位置:                       │ │
│           │                 │     ~/.android/avd/RedMi13.avd  │ │
│           ▼                 └─────────────────────────────────┘ │
│  ┌─────────────────────┐           ▲                           │
│  │   存客宝后端 (PHP)   │           │                           │
│  │                     │           │ USB/WiFi                  │
│  │   调用SDK的API      │           │                           │
│  └─────────────────────┘    ┌──────┴──────┐                    │
│                             │  scrcpy窗口  │                    │
│                             │  (屏幕镜像)  │                    │
│                             └─────────────┘                    │
└──────────────────────────────────────────────────────────────────┘

二、各组件位置

组件 位置 说明
SDK服务端 /Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/app/ Python FastAPI服务
SDK配置 /Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/.env 环境变量配置
PHP客户端 /Users/karuo/Documents/开发/2、私域银行/工作手机/sdk/php-sdk/ 存客宝调用SDK的库
模拟器AVD ~/.android/avd/RedMi13.avd/ Android虚拟设备文件
ADB工具 /usr/local/share/android-commandlinetools/ Android调试桥

三、通信流程详解

流程1存客宝发送微信消息

存客宝后端                    SDK服务                      手机/模拟器
    │                           │                              │
    │ 1. HTTP POST              │                              │
    │ /api/v3/message/send      │                              │
    │ {device_id, platform,     │                              │
    │  to_id, content}          │                              │
    │─────────────────────────►│                              │
    │                           │                              │
    │                           │ 2. adb shell命令             │
    │                           │ 启动微信、搜索联系人、        │
    │                           │ 点击、输入、发送              │
    │                           │─────────────────────────────►│
    │                           │                              │
    │                           │ 3. 操作完成                   │
    │                           │◄─────────────────────────────│
    │                           │                              │
    │ 4. 返回结果               │                              │
    │ {success: true,           │                              │
    │  message_id: xxx}         │                              │
    │◄─────────────────────────│                              │

流程2截图

存客宝后端                    SDK服务                      手机/模拟器
    │                           │                              │
    │ POST /screenshot          │                              │
    │─────────────────────────►│                              │
    │                           │ adb exec-out screencap -p    │
    │                           │─────────────────────────────►│
    │                           │                              │
    │                           │ 返回PNG图片数据               │
    │                           │◄─────────────────────────────│
    │                           │                              │
    │ {base64: "iVBORw0..."}   │                              │
    │◄─────────────────────────│                              │

四、核心技术原理

4.1 ADB (Android Debug Bridge)

ADB是Android官方的调试工具SDK通过它控制手机

# 查看连接的设备
adb devices

# 截图
adb exec-out screencap -p > screen.png

# 点击屏幕坐标
adb shell input tap 540 1200

# 滑动
adb shell input swipe 540 1800 540 600 500

# 输入文字
adb shell input text "Hello"

# 启动APP
adb shell am start -n com.tencent.mm/.ui.LauncherUI

# 按键
adb shell input keyevent KEYCODE_BACK

4.2 SDK将ADB封装成HTTP API

# sdk/app/services/adb_device.py

class ADBDevice:
    def click(self, x: int, y: int):
        """点击坐标"""
        self._shell(f"input tap {x} {y}")
    
    def screenshot(self):
        """截图"""
        result = subprocess.run(
            ["adb", "-s", self.serial, "exec-out", "screencap", "-p"],
            capture_output=True
        )
        return base64.b64encode(result.stdout)

4.3 存客宝通过PHP调用

// 存客宝后端代码
$sdk = new WorkPhoneClient('http://localhost:8899', 'api-key');

// 发送消息
$sdk->sendMessage('emulator-5554', 'wechat', '张三', '你好');

// 截图
$screenshot = $sdk->screenshot('emulator-5554');

五、实际运行的进程

# 1. SDK服务进程
ps aux | grep python
# Python  63973  ...  uvicorn main:app --host 0.0.0.0 --port 8899

# 2. 模拟器进程
ps aux | grep emulator
# emulator -avd RedMi13 -no-snapshot -gpu host

# 3. ADB服务进程
ps aux | grep adb
# adb -L tcp:5037 fork-server server

# 4. scrcpy屏幕镜像
ps aux | grep scrcpy
# scrcpy -s emulator-5554 --window-title "红米13模拟器"

六、文件关系图

sdk/
├── app/                          # SDK服务端
│   ├── main.py                   # FastAPI入口 (监听8899端口)
│   ├── config.py                 # 配置
│   ├── routers/
│   │   ├── adb.py                # ADB设备控制API
│   │   ├── devices.py            # 设备管理API
│   │   └── unified.py            # 统一消息API
│   └── services/
│       └── adb_device.py         # ADB命令封装
│
├── php-sdk/
│   └── WorkPhoneClient.php       # 存客宝用的PHP客户端
│
└── agent/                        # 手机端Agent (可选)
    └── agent.py                  # 运行在手机上的程序

七、为什么这样设计

优点

  1. 无需ROOT - 使用官方ADB接口不需要ROOT手机
  2. 跨平台 - 支持任何Android APP不限于微信
  3. 成本低 - 不依赖第三方服务商
  4. 可扩展 - 可以添加AI Agent实现智能控制

与奥创的区别

特性 自研SDK 奥创
控制方式 ADB命令 Hook注入
需要ROOT
支持APP 任意APP 仅微信
月费用 服务器成本(~500元) 500元/台
稳定性 高(官方接口) 中(可能被检测)