Go to file
cfn 1a2185a926 feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
agent feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
build feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
frontend feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
internal feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
scripts feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
third_party feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
.gitattributes feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
.gitignore feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
CODEMAP.md feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
README.md feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
Taskfile.yml feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
go.mod feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
go.sum feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00
main.go feat: initialize iTuoke with real-time phone control 2026-11-04 18:25:43 +08:00

README.md

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