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

78 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: GUI Agent 项目状态
description: 手机GUI Agent项目当前进度、技术决策和待确认事项
type: project
---
## 项目状态:端到端已跑通 + 手机端 OCR 已部署
### 设备信息
- **华为 P40 Pro**ELS-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待修
- **使用流程**
```bash
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 复现这个全链路