2.7 KiB
2.7 KiB
iTuoke
手机操控桌面应用:Wails + Vue3 + TypeScript(UI) / Go(ADB 设备核心) / Python(Agent 独立进程)。
架构
frontend/ UI:左画面 | 右对话 | 设置 | 日志
main.go 桌面壳入口(窗口 + 注册服务)
internal/device/ ADB 连接 / 视频预览 / 实时触摸控制(Go)
internal/agent/ 对接 Python Agent 的桥
internal/protocol/ 版本化 JSON-RPC 契约
agent/ Python Agent 进程(可后接云端模型)
关键改代码位置已在源文件顶部用 [关键] / [入口] / [UI · …] 备注标出。
开发
需要 Go 1.26、Node.js 22.18+(测试直接运行 TypeScript)、npm 和 Wails v3。macOS 实时预览还需安装 scrcpy 5.0.1 与 ffmpeg(当前控制协议对应 scrcpy 5.0.1)。首次运行先安装前端依赖,并同步内置 ADB:
npm --prefix frontend install
./scripts/sync-platform-tools.sh
# 1) 生成前端绑定(改 Go 导出方法后重跑)
wails3 generate bindings -ts -i ./...
# 2) 跑桌面应用(热重载)
wails3 dev
# 3) 可选:单独起 Python Agent
cd agent && python3 main.py
macOS 开发运行会把应用包同步到 ~/Applications/iTuoke.app 后启动,避免从外置磁盘运行时反复触发「可移除宗卷」文件授权。ADB 使用应用专用的本地后台服务,不复用其他工具的默认服务;配对记录继续保留。
内置 ADB(客户无需安装)
./scripts/sync-platform-tools.sh # 同步 platform-tools 到 third_party/
wails3 build # macOS 打包时自动拷进 .app/Contents/Resources/
运行时优先使用应用内置 adb,不依赖客户电脑是否安装过 Android SDK。
当前能力
- USB / 无线 ADB 设备发现、配对、连接与离线重连。
- scrcpy 视频预览,支持适应窗口及 50%–200% 缩放。
- 预览中点按、长按及连续拖动:按下、移动、松开实时发送到 scrcpy 控制通道。
- 深色、浅色和跟随系统主题,连接配置与缩放偏好持久化。
- 设置与日志页面;Go/Python Agent 对话目前仍为 stub,尚未接入模型。
frontend/bindings/、依赖目录、构建产物、录屏和本机配置不提交;前端绑定由上述生成命令或 Wails 构建任务重建。图标、原始图标素材及各平台打包模板保留在仓库。
验证
node --test frontend/tests/*.test.mjs
npm --prefix frontend run build
go test -race ./internal/...
可选实机预览检查(设备需已连接到 iTuoke 的专用 ADB 服务):
ITUOKE_TEST_DEVICE='手机IP:连接端口' go test -race ./internal/device -run TestLocalPhonePreview -v -count=1