📱 前言:Appium 已死?视觉 Agent 当立!
前段时间,字节发布的“豆包手机”和荣耀的“任意门”火了,核心卖点都是“AI 懂你的屏幕,能帮你操作手机”。
作为开发者,你可能会问:“这不就是自动化脚本吗?”
错!大错特错!
传统的脚本(Appium/Airtest)是“盲人摸象”,它们依赖底层的 XML 控件 ID。一旦 APP 改版,ID 变了,脚本直接报废。
而AppAgent是“睁眼看世界”。它利用GPT-4o或Qwen-VL这种视觉大模型,直接**“看”手机截屏,像人类一样通过“视觉感知”**来决定点哪里。
今天,我就带大家用开源的AppAgent框架,手搓一个简易版“豆包手机”,实现**“由 AI 自动刷抖音,看到喜欢的猫咪视频就自动点赞”**的黑科技!
🧠 核心原理:AI 是怎么“玩手机”的?
AppAgent 的工作流程非常符合人类的直觉,分为三个阶段:感知(See) -> 思考(Think) -> 行动(Act)。
1. 视觉感知 (Visual Perception)
AI 截取当前手机屏幕。为了让大模型能准确描述位置,AppAgent 会在屏幕上覆盖一层**“透明的数字标号”**(或者直接划分网格)。
比如,“点赞按钮”上可能覆盖了数字[25]。
2. 决策推理 (Reasoning)
我们将截图和标号发给 GPT-4o,并附上 Prompt:
“你现在的任务是刷视频。如果视频里有猫,就点击点赞按钮(标号 25);否则,执行上滑操作。”
3. 执行动作 (Action)
大模型返回决策:Tap(25)或Swipe(Up)。
AppAgent 将其翻译成adb shell input tap x y命令,发送给安卓手机。
架构流程图(无括号版):
🛠️ 实战环节:环境搭建
1. 硬件准备
- 一台 Android 手机(开启 USB 调试)。
- 电脑(Windows/Mac 均可,装好 Python 和 ADB)。
2. 克隆 AppAgent 仓库
AppAgent 是腾讯开源的项目,我们直接站在巨人的肩膀上。
gitclone https://github.com/mnotgod96/AppAgentcdAppAgent pipinstall-r requirements.txt3. 配置模型 (config.yaml)
你需要一个能看懂图片的“大脑”。推荐使用GPT-4o(最强)或Qwen-VL-Max(国产性价比)。
OPENAI_API_KEY:"sk-xxxx"OPENAI_API_MODEL:"gpt-4o"⚔️ 黑科技演示:训练 AI 玩 抖音
AppAgent 有个非常牛逼的**“探索阶段 (Exploration Phase)”。
它不需要你手写规则,你可以让 AI 自己去 APP 里乱点一通,它会自己总结**出:“哦,原来点这里是评论,点那里是转发。”
Step 1: 探索模式 (Learn)
运行脚本,选择“探索模式”。
python learn.py --app tiktok --mode explorationAI 会自动打开抖音,尝试点击各个图标,并记录下每个图标的功能文档。
- 点击“爱心” -> 发现数字变了 -> 记录:这是点赞。
- 上滑屏幕 -> 视频变了 -> 记录:这是切换视频。
Step 2: 部署模式 (Act)
教会了徒弟,现在让它自己干活。
我们编写一个简单的任务 Prompt:
User Prompt:
“不断地上滑刷视频。仔细观察视频内容,如果视频中出现了‘猫’或者‘狗’,就给我点个赞,然后继续刷。如果是广告,直接快速划走。”
运行代码:
python run_agent.py --app tiktok --task"Auto swipe and like cats"见证奇迹的时刻:
你会看到手机屏幕自己在动!
- 屏幕出现美女跳舞 -> AI 判断“无猫” -> 执行
Swipe Up。 - 屏幕出现一只布偶猫 -> AI 识别成功 -> 执行
Tap(Like_Icon)-> 执行Swipe Up。 - 屏幕出现广告 -> AI 识别文本“广告” -> 执行
Swipe Up。
💻 核心代码剖析 (简化版)
为了让大家理解这玩意儿是怎么跑起来的,我把核心的 Python 逻辑抽取出来:
fromapp_agentimportAppAgentfromandroid_envimportAndroidDevice# 1. 连接手机device=AndroidDevice(serial="emulator-5554")# 2. 初始化视觉 Agentagent=AppAgent(model="gpt-4o",device=device)# 3. 任务循环task="刷视频,看到猫就点赞"whileTrue:# 抓屏 + 视觉识别ui_elements=device.capture_and_label()# AI 思考action=agent.think(screenshot=ui_elements,instruction=task)# action 返回: {"action_type": "click", "element_id": 5}# 执行ifaction["action_type"]=="click":device.click(action["element_id"])elifaction["action_type"]=="swipe":device.swipe("up")print(f"🤖 AI 执行了:{action}")🔮 总结与展望
看到这里,你可能觉得这就是个“高级按键精灵”。
但在我看来,AppAgent 代表了操作系统交互的未来。
想象一下:
- 老人模式:老人对着手机说“给孙子发个红包”,AI 自动操作微信完成转账。
- 跨 App 协作:说一句“帮我把刚才大众点评的餐厅地址发给李总,并预约明晚的滴滴”,AI 自动在三个 App 之间跳转操作。
这就是“豆包手机”想做的事,也是**On-Device AI(端侧智能)**的终极形态。
别再死磕 XML 和 XPath 了,给你的爬虫和脚本装上一双“眼睛”吧!