上一篇文章简单调研了下利用 AI 进行 UI 自动化的技术,顺着这个思路,是不是可以给 AI 一个手机,让它帮我们做更多事情呢?搜索一下,发现已经有人开发了 mobile-use 这个项目,今天就来玩一下。
首先需要安装好 adb,并通过 USB 数据线连接安卓手机,打开开发者模式,并开启 USB 调试模式,在终端输入 adb devices
,如果显示有设备,则说明安装成功。
然后,写个简单的 Demo 脚本:
1 | const {mobileUse} = require('mobile-use') |
编写一个 task.txt
文件,即将手机笔记本中的内容复制到腾讯元宝中并提交:
1 | 1. open com.hihonor.notepad |
执行 node index.js task.txt
。
效果如下所示:
我们还是通过请求日志来分析一下是怎么实现的。
第一次发送的请求如下所示,可以看到定义了 openApp
,listApps
和 computer
三个 tool,这些 tool 最终都是通过 adb 来操作设备。
1 | { |
大模型返回 openApp
的 tool call,打开笔记本:
1 | { |
第二次请求,将 openApp
以及执行结果追加到 messges 中给大模型:
1 | { |
大模型返回 computer
类型的 tool call,参数为 {"action": "ui_dump"}
,即获取页面的 UI 信息:
1 | { |
看一下 ui_dump
返回的结果,是一个 JSON 格式的数据结构,包含所有页面的元素的坐标、类型等信息。它是通过解析 uiautomator dump
的结果得到的。
1 | { |
然后 LLM 通过分析页面信息,得到 Taylor Swift
的点击坐标返回 computer
类型的 tool call,参数为 {"action": "tap", "coordinate":[72,666]}
:
1 | { |
之后就是不停地重复类似的步骤了。
给大模型装配上手和脚以后,可以催生出很多应用场景,比如让大模型同时陪我的几个女朋友一起聊天,我就可以安心学习 AI 了,想想就开心。