Files
gui-agent/.memory/project-status.md

4.1 KiB
Raw Blame History

name, description, type
name description type
GUI Agent 项目状态 手机GUI Agent项目当前进度、技术决策和待确认事项 project

项目状态:端到端已跑通 + 手机端 OCR 已部署

设备信息

  • 华为 P40 ProELS-AN00
  • 序列号UQG5T20416000119
  • 分辨率1200x2640
  • 系统HarmonyOS 4.x兼容安卓层ADB 可用)
  • ADB 路径:/opt/homebrew/bin/adb
  • 连接注意:华为手机需在开发者选项中额外打开"仅充电模式下允许ADB调试"
  • 已开启「通过USB安装应用」权限2026-03-29

已完成

  • 七层管线骨架代码L1-L7全部就位
  • Web 控制台FastAPI + 暗色主题 UI已验证可运行
  • 端口 4380VLM 默认走 Poe API
  • 支持 8 种动作类型tap/swipe/type/long_press/back/home/scroll/wait
  • Agent 主循环含历史记忆(最近 5 步)和连续错误自动停止
  • ADB 截屏已验证通过2026-03-29
  • Mac 端 OCR 元素定位已验证2026-03-29— easyocr 中文识别,返回像素坐标
  • 中文文本输入已验证2026-03-29— uiautomator2 send_keys
  • 端到端发微信消息已跑通 3 次2026-03-29— "你是大聪明"、"祝你生日快乐"、"生日快乐"
  • 手机端 OCR Service APK 已部署2026-03-29— ML Kit Chinese bundled端口 18900

手机端 OCR Serviceandroid-ocr-service/

  • 引擎Google ML Kit text-recognition-chinesebundled 版,不依赖 GMS华为可用
  • 架构Kotlin APK = OcrEngine + NanoHTTPD(18900) + ForegroundService
  • 接口
    • GET /health — 健康检查
    • GET /ocr?path=/data/local/tmp/s.png — 读文件 OCR
    • GET /ocr?path=...&text=微信 — 按文本过滤
    • POST /snap — POST 图片字节直接 OCRNanoHTTPD 二进制处理有 bug待修
  • 使用流程
    adb shell am start -n com.guiagent.ocr/.MainActivity
    adb forward tcp:18900 tcp:18900
    adb shell "screencap -p /data/local/tmp/s.png"
    curl http://localhost:18900/ocr?path=/data/local/tmp/s.png
    
  • 性能:首次 ~2.4s(模型加载),后续 ~1.8s/次
  • 构建ANDROID_HOME=/opt/homebrew/share/android-commandlinetools JAVA_HOME=/opt/homebrew/Cellar/openjdk@21/21.0.10/libexec/openjdk.jdk/Contents/Home ./gradlew assembleDebug

关键技术决策

能力 方案 备注
元素定位Mac easyocr pytesseract 中文分词差uiautomator dump 在华为微信上返回空
元素定位(手机端) ML Kit Chinese (bundled) 不依赖 GMS/HMSAPK 自带模型
中文输入 uiautomator2 send_keys 需装辅助 APK华为需开 USB 安装权限
截屏 adb shell screencap -p /data/local/tmp/s.png 不经 FUSE比 /sdcard/ 快
adb input text 不支持中文 NullPointerExceptionclipboard 也不可用
截屏显示 必须 sips -Z 1800 缩小 原始 1200x2640 超 Claude 2000px 限制

已知问题

  1. OCR 偶尔误读("康"→"東")— ML Kit 和 easyocr 都有此问题
  2. POST /snap 端点 NanoHTTPD 二进制 body 解析 bug — 文件方式 workaround
  3. 微信双开弹选择框 — 每次 am start 会弹"使用以下方式打开"
  4. 发送按钮白字绿底 OCR 不稳定 — 用坐标 (1008, 2425) 或 OCR "(田发送"

下一步(周一继续)

  1. 速度优化:发送按钮固定坐标不走 OCR省2s缩短 sleep省2s目标 5-6s/操作
  2. OCR 推理优化:缩图再识别 / NNAPI 加速,目标 <1s
  3. 集成到 Agent 主循环device OCR 引擎接入 ocr_grounding.py
  4. 配置 .envPoe API Key
  5. 接入 VLMPoe API 调 Qwen2.5-VL— 复杂场景屏幕理解
  6. 端到端跑通复杂多步任务(滑动、长按、跨 App
  7. 完善验证纠错层

技术背景

项目灵感来自对字节 UI-TARS / 豆包手机的深度调研。结论:

  • UI-TARS 开源的是权重+推理壳,训练代码和系统级操控完全闭源
  • 核心壁垒不是模型,是"截屏→理解→定位→规划→执行→验证"的全链路
  • 本项目目标:用开源 VLM + ADB 复现这个全链路