当AI学会“订酒店”:手机多条件筛选与数据导出自动化技术实现

一、引言:从“手动翻五页”到“一句话搞定”

试想这样一个场景:中秋节将至,你想在携程上预订北京的酒店——要求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的规划者会将指令分解为以下子目标:

  1. 启动携程App:通过ADB执行 adb shell am start 启动应用
  2. 搜索“北京” :定位搜索框 → 输入文本 → 点击搜索
  3. 设置日期为中秋节:定位日期选择器 → 选择中秋节日期
  4. 筛选4星级:定位星级筛选 → 勾选“4星级”
  5. 筛选500-600元:定位价格区间 → 输入500和600
  6. 筛选2位成人:定位入住人数 → 选择“2位成人”
  7. 翻页并提取数据:循环执行“截图→提取→滑动翻页”直到5页完成
  8. 生成Excel:组装数据 → 导出文件

每一步都遵循“观察 → 思考 → 行动 → 验证”的闭环。

4. 数据提取与交付层:从酒店列表到Excel文件

数据提取是整个任务的技术难点——需要从手机屏幕的酒店列表中识别出结构化信息,并转换为Excel格式。

4.1 列表数据提取

Agent通过VLM识别屏幕上的酒店列表,提取每个酒店条目的关键字段:

  • 酒店名称
  • 价格(每晚/每晚起)
  • 评分
  • 地址/位置
  • 房型信息

提取方式有两种路径:

路径 实现方式 适用场景
UI树提取 直接解析AccessibilityService返回的UI层级 列表结构清晰、数据以文本形式存在
VLM视觉提取 将截图发送给多模态模型进行语义理解 UI复杂、存在图片/图标等非文本元素

实际实现中,两者往往结合使用。

对于“翻5页”的需求,Agent会循环执行“提取当前页数据 → 滑动到下一页”直到翻完5页。MobileUse的主动探索模块(Proactive Exploration Module) 可以帮助Agent在陌生环境中更好地理解和导航。

4.2 翻页与数据拼接

Agent需要精确控制翻页操作:

  1. 提取当前页的酒店列表
  2. 执行滑动操作(adb shell input swipe)
  3. 等待页面加载完成
  4. 提取新一页的数据
  5. 拼接至已有数据集中
  6. 重复直到翻完5页

4.3 Excel生成与交付

提取的结构化数据通过Excel处理库(如Python的 openpyxl、JavaScript的 SpreadJS 等)生成标准的 .xlsx 文件。

生成的Excel通常包含:

  • 表头(酒店名称、价格、评分、地址等)
  • 数据行(每页提取的酒店信息)
  • 基本格式(列宽、字体、数字格式等)

文件可以通过以下方式交付到电脑:

  • 云端同步:在云端虚拟手机中操作,文件直接可访问
  • 本地传输:通过 adb pull 命令从手机传输到电脑
  • Web下载:在浏览器界面中直接下载

四、完整执行流程:以“携程筛选酒店”为例

让我们结合上述技术,看看一次完整的酒店筛选与数据导出任务是如何执行的:

  1. 指令输入:用户在Web界面输入“打开携程App,搜索北京的酒店,要求适合2位成人入住,入住时间为中秋节,4星级,500~600元,将列表前5页保存到Excel文档”。

  2. 设备连接:Web页面通过WebUSB与开启USB调试的手机建立连接。

  3. 任务规划:Agent的规划者将指令分解为8个子目标。

  4. 执行循环开始:

    • 感知:系统截取手机屏幕,将截图和UI树信息发送给视觉语言模型。
    • 决策:执行者根据当前屏幕状态决定下一个动作。
    • 执行:通过ADB执行具体操作(点击、输入、滑动等)。
    • 反思:核心处理器验证动作是否成功,如失败则触发重试或策略调整。
  5. 具体操作序列:

    • 启动携程App(adb shell am start)
    • 点击搜索框,输入“北京”
    • 点击日期选择器,选择中秋节日期
    • 点击星级筛选,勾选“4星级”
    • 点击价格区间,输入500和600
    • 点击入住人数,选择“2位成人”
    • 点击搜索按钮
  6. 数据提取循环(重复5次):

    • 截取当前屏幕
    • VLM提取酒店列表数据
    • 拼接至数据集
    • 执行下滑操作
    • 等待页面加载
  7. Excel生成:组装5页数据,通过Excel库生成 .xlsx 文件。

  8. 文件交付:文件通过云端同步或Web下载出现在电脑端。

整个过程中,用户只需要说一句话,剩下的全部由Agent自动完成。

五、技术挑战与展望

尽管技术前景广阔,当前阶段的手机Agent仍面临一些挑战:

  • UI多样性:不同App(携程、美团、淘宝等)的UI风格差异巨大,VLM需要强大的泛化能力。
  • 长周期任务可靠性:涉及多步骤、多页面的任务容易出现累积错误,需要分层反思和错误恢复机制。
  • 数据提取准确性:从屏幕提取的数据需要校验,特别是价格、日期等格式。
  • 性能与成本:每次操作都需调用云端VLM,对网络和计算资源有较高要求。
  • 安全性:涉及支付、下单等高风险操作时,需要人工确认机制。

不过,随着多模态模型能力的持续增强和Agent框架的日益成熟,这些挑战正在被逐步克服。MobileUse在AndroidWorld基准测试中取得了62.9%的成功率,而Minitap的mobile-use更是实现了100%的完美成绩。AutoGLM等产品化智能体已经可以在携程上完成酒店预订等复杂任务。

从“人找信息”到“信息找人”,手机GUI Agent正在重新定义我们与移动设备的交互方式。未来,你只需说出需求,所有设备就会协同工作,自动完成信息的采集、整理和分析。