一、引言:从“手动翻五页”到“一句话搞定”
试想这样一个场景:中秋节将至,你想在携程上预订北京的酒店——要求4星级、500-600元、适合2位成人入住。你需要打开App、输入城市、选择日期、筛选星级、设定价格区间、选择入住人数,然后一页一页翻看搜索结果,翻到第5页时眼睛已经花了,还要手动把心仪的酒店信息抄录到Excel里做对比……
现在,你只需要对着电脑说一句话:
“打开携程App,搜索北京的酒店,要求适合2位成人入住,入住时间为中秋节,4星级,500~600元,并将列表前5页保存到Excel文档。”
然后,你放在桌上的手机屏幕自动亮起——携程App自己打开了,搜索框自动输入了“北京”,日期自动选到了中秋节,筛选条件自动勾选了“4星级”“500-600元”“2位成人”,页面一页一页自动翻动,翻完5页后,酒店名称、价格、评分、地址等信息被自动提取,一份结构完整的Excel文件出现在你的电脑桌面上。
这并非科幻电影,而是基于 Mobile AI Use 这类GUI Agent技术已经可以实现的效果。
那么,这背后究竟是怎样的一套技术体系?本文将从架构到实现,为你拆解“手机多条件筛选 → 跨页数据提取 → Excel导出”的完整技术链路。
二、整体架构:从自然语言到Excel的四层闭环
要实现“一句话筛选酒店并导出Excel”,需要一套完整的“感知-理解-提取-生成”闭环。其核心架构可分为四个层次:
| 层级 | 核心功能 | 关键技术 |
|---|---|---|
| 设备连接层 | 建立浏览器与手机的通信桥梁 | WebUSB + WebADB协议 |
| 屏幕感知层 | 获取并理解手机屏幕内容 | 视觉语言模型(VLM)+ UI树 |
| 任务规划与执行层 | 将复杂指令分解为操作序列 | 多智能体协作 + 分层反思架构 |
| 数据提取与交付层 | 识别列表数据并生成Excel | 结构化提取 + Excel生成库 |
以“筛选酒店并导出Excel”为例,整个流程可以直观地表示为:
graph TD
A[用户指令: 筛选北京酒店4星500-600元中秋入住导出Excel] --> B[AI Agent接收指令];
B --> C[规划者分解任务];
C --> D[子目标1: 打开携程];
C --> E[子目标2: 搜索北京酒店];
C --> F[子目标3: 设置筛选条件];
C --> G[子目标4: 翻页并提取数据];
C --> H[子目标5: 生成Excel];
D --> I[执行循环];
E --> I;
F --> I;
G --> I;
I --> J[屏幕感知: 截图+UI树];
J --> K[决策: 下一步动作];
K --> L[执行: ADB命令];
L --> M[反思: 验证动作结果];
M --> J;
G --> N[数据提取];
N --> O[结构化数据];
O --> P[Excel生成];
P --> Q[交付到电脑端];接下来,我们深入每一层的具体实现。
三、关键技术拆解
1. 设备连接层:WebUSB + WebADB,浏览器直连手机
要控制手机,首先需要建立电脑与手机之间的通信桥梁。传统方式需要安装驱动和ADB工具集,而Mobile AI Use类工具利用 WebUSB API,直接在浏览器中完成这一过程。
WebUSB 是一个W3C标准,允许网页应用与USB设备直接通信。用户只需在浏览器弹窗中授权,网页即可获得手机的控制权。
ADB(Android Debug Bridge) 是谷歌官方的调试桥接工具。在WebUSB之上,工具通过 WebADB 实现了“浏览器中的ADB客户端”——在浏览器中重建了ADB Client和部分Server的功能。浏览器端发送 CNXN 握手包完成认证,即可与手机上的 adbd 守护进程建立连接。
WebDroid Agent等项目展示了这一技术的成熟应用:在浏览器中通过WebUSB/WebADB连接Android设备,截取手机屏幕并发送给视觉模型,再把模型返回的动作通过ADB执行。
这种“浏览器即客户端”的模式,实现了“零安装、即连即用”的体验——打开一个网页,连上手机,就能执行几乎所有的ADB操作。
2. 屏幕感知层:视觉语言模型如何“看懂”携程界面
要让AI像人一样操作携程App并提取酒店信息,它必须能“看懂”屏幕。这依赖于视觉语言模型(Vision-Language Model, VLM) 。
2.1 感知方式
系统通过ADB持续截取手机屏幕(adb exec-out screencap -p),将截图发送给VLM。VLM主要有两种感知方式:
- 像素级理解:模型直接“看”截图,理解图标、文字和布局的含义。ColorGUI-32B等专门针对移动GUI自动化的模型,可以读取屏幕图像、理解用户指令、推理下一步GUI操作并输出可执行动作。
- UI树辅助:通过Android的无障碍服务(AccessibilityService) 获取当前页面的UI层级结构(View Hierarchy)。这就像给AI提供了一份当前页面的“地图”,标明了每个UI元素的坐标、文本和属性。
实际实现中,Agent会同时利用截图和UI树信息,发送给视觉模型时附带当前App、设备状态、完整已安装应用列表和历史步骤等上下文。
2.2 坐标系统
模型返回的动作需要精确定位到屏幕上的元素。目前主流方案支持两种坐标格式:
- 像素坐标:直接使用截图像素值(如
{"action": "tap", "x": 540, "y": 960}) - 归一化坐标:使用0-1000的归一化坐标(Vision-Pointer风格),更便于模型泛化
系统会自动解析、规范化并校验模型返回的动作。
3. 任务规划与执行层:从“打开携程”到“翻完5页”
这是整个方案的核心环节。当用户下达“筛选酒店并导出Excel”的指令后,Agent需要将这个复杂任务分解为一系列可执行的子任务。
3.1 多智能体协作架构
单智能体架构在处理这类长周期、多步骤任务时容易失败——上下文污染、静默失败、重复动作循环等问题频发。因此,现代手机Agent普遍采用多智能体协作架构。
以Minitap的mobile-use方案为例,其六智能体分解架构包括:
- 规划者(Planner) :将用户指令分解为高层子目标
- 协调者(Orchestrator) :协调各智能体的工作流程
- 上下文管理者(Contextor) :维护任务上下文
- 核心处理器(Cortex) :处理核心推理
- 执行者(Executor) :执行具体动作
- 屏幕分析者(Screen Analyzer) :分析屏幕内容
这种架构通过认知分离(每个智能体维护独立的上下文)、确定性后验证(对文本输入等操作进行设备状态校验)和元认知推理(检测循环并触发策略变更),在AndroidWorld基准测试中实现了100%的成功率。
3.2 分层反思驱动
MobileUse项目提出了分层反思架构(Hierarchical Reflection Architecture) ,使Agent能够在多个时间尺度上进行自我监控、检测和恢复错误——从单个动作到整体任务完成,同时通过“按需反思”策略保持效率。
具体到“筛选酒店”任务,Agent的规划者会将指令分解为以下子目标:
- 启动携程App:通过ADB执行
adb shell am start启动应用 - 搜索“北京” :定位搜索框 → 输入文本 → 点击搜索
- 设置日期为中秋节:定位日期选择器 → 选择中秋节日期
- 筛选4星级:定位星级筛选 → 勾选“4星级”
- 筛选500-600元:定位价格区间 → 输入500和600
- 筛选2位成人:定位入住人数 → 选择“2位成人”
- 翻页并提取数据:循环执行“截图→提取→滑动翻页”直到5页完成
- 生成Excel:组装数据 → 导出文件
每一步都遵循“观察 → 思考 → 行动 → 验证”的闭环。
4. 数据提取与交付层:从酒店列表到Excel文件
数据提取是整个任务的技术难点——需要从手机屏幕的酒店列表中识别出结构化信息,并转换为Excel格式。
4.1 列表数据提取
Agent通过VLM识别屏幕上的酒店列表,提取每个酒店条目的关键字段:
- 酒店名称
- 价格(每晚/每晚起)
- 评分
- 地址/位置
- 房型信息
提取方式有两种路径:
| 路径 | 实现方式 | 适用场景 |
|---|---|---|
| UI树提取 | 直接解析AccessibilityService返回的UI层级 | 列表结构清晰、数据以文本形式存在 |
| VLM视觉提取 | 将截图发送给多模态模型进行语义理解 | UI复杂、存在图片/图标等非文本元素 |
实际实现中,两者往往结合使用。
对于“翻5页”的需求,Agent会循环执行“提取当前页数据 → 滑动到下一页”直到翻完5页。MobileUse的主动探索模块(Proactive Exploration Module) 可以帮助Agent在陌生环境中更好地理解和导航。
4.2 翻页与数据拼接
Agent需要精确控制翻页操作:
- 提取当前页的酒店列表
- 执行滑动操作(
adb shell input swipe) - 等待页面加载完成
- 提取新一页的数据
- 拼接至已有数据集中
- 重复直到翻完5页
4.3 Excel生成与交付
提取的结构化数据通过Excel处理库(如Python的 openpyxl、JavaScript的 SpreadJS 等)生成标准的 .xlsx 文件。
生成的Excel通常包含:
- 表头(酒店名称、价格、评分、地址等)
- 数据行(每页提取的酒店信息)
- 基本格式(列宽、字体、数字格式等)
文件可以通过以下方式交付到电脑:
- 云端同步:在云端虚拟手机中操作,文件直接可访问
- 本地传输:通过
adb pull命令从手机传输到电脑 - Web下载:在浏览器界面中直接下载
四、完整执行流程:以“携程筛选酒店”为例
让我们结合上述技术,看看一次完整的酒店筛选与数据导出任务是如何执行的:
指令输入:用户在Web界面输入“打开携程App,搜索北京的酒店,要求适合2位成人入住,入住时间为中秋节,4星级,500~600元,将列表前5页保存到Excel文档”。
设备连接:Web页面通过WebUSB与开启USB调试的手机建立连接。
任务规划:Agent的规划者将指令分解为8个子目标。
执行循环开始:
- 感知:系统截取手机屏幕,将截图和UI树信息发送给视觉语言模型。
- 决策:执行者根据当前屏幕状态决定下一个动作。
- 执行:通过ADB执行具体操作(点击、输入、滑动等)。
- 反思:核心处理器验证动作是否成功,如失败则触发重试或策略调整。
具体操作序列:
- 启动携程App(
adb shell am start) - 点击搜索框,输入“北京”
- 点击日期选择器,选择中秋节日期
- 点击星级筛选,勾选“4星级”
- 点击价格区间,输入500和600
- 点击入住人数,选择“2位成人”
- 点击搜索按钮
- 启动携程App(
数据提取循环(重复5次):
- 截取当前屏幕
- VLM提取酒店列表数据
- 拼接至数据集
- 执行下滑操作
- 等待页面加载
Excel生成:组装5页数据,通过Excel库生成
.xlsx文件。文件交付:文件通过云端同步或Web下载出现在电脑端。
整个过程中,用户只需要说一句话,剩下的全部由Agent自动完成。
五、技术挑战与展望
尽管技术前景广阔,当前阶段的手机Agent仍面临一些挑战:
- UI多样性:不同App(携程、美团、淘宝等)的UI风格差异巨大,VLM需要强大的泛化能力。
- 长周期任务可靠性:涉及多步骤、多页面的任务容易出现累积错误,需要分层反思和错误恢复机制。
- 数据提取准确性:从屏幕提取的数据需要校验,特别是价格、日期等格式。
- 性能与成本:每次操作都需调用云端VLM,对网络和计算资源有较高要求。
- 安全性:涉及支付、下单等高风险操作时,需要人工确认机制。
不过,随着多模态模型能力的持续增强和Agent框架的日益成熟,这些挑战正在被逐步克服。MobileUse在AndroidWorld基准测试中取得了62.9%的成功率,而Minitap的mobile-use更是实现了100%的完美成绩。AutoGLM等产品化智能体已经可以在携程上完成酒店预订等复杂任务。
从“人找信息”到“信息找人”,手机GUI Agent正在重新定义我们与移动设备的交互方式。未来,你只需说出需求,所有设备就会协同工作,自动完成信息的采集、整理和分析。