news 2026/5/1 7:28:32

复刻豆包手机?,让 AI 操作手机:AppAgent 原理与实战,基于视觉大模型实现“自动化刷视频”

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
复刻豆包手机?,让 AI 操作手机:AppAgent 原理与实战,基于视觉大模型实现“自动化刷视频”

📱 前言:Appium 已死?视觉 Agent 当立!

前段时间,字节发布的“豆包手机”和荣耀的“任意门”火了,核心卖点都是“AI 懂你的屏幕,能帮你操作手机”

作为开发者,你可能会问:“这不就是自动化脚本吗?”
错!大错特错!

传统的脚本(Appium/Airtest)是“盲人摸象”,它们依赖底层的 XML 控件 ID。一旦 APP 改版,ID 变了,脚本直接报废。
AppAgent是“睁眼看世界”。它利用GPT-4oQwen-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. 实时截屏
2. 覆盖数字标记
3. 输入视觉模型
4. 思考并输出指令
5. 映射为坐标
6. 执行操作
Android 手机
屏幕截图
带标号的图片
GPT-4o / Qwen-VL
指令: 点击标号 5
ADB 命令

🛠️ 实战环节:环境搭建

1. 硬件准备
  • 一台 Android 手机(开启 USB 调试)。
  • 电脑(Windows/Mac 均可,装好 Python 和 ADB)。
2. 克隆 AppAgent 仓库

AppAgent 是腾讯开源的项目,我们直接站在巨人的肩膀上。

gitclone https://github.com/mnotgod96/AppAgentcdAppAgent pipinstall-r requirements.txt
3. 配置模型 (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 exploration

AI 会自动打开抖音,尝试点击各个图标,并记录下每个图标的功能文档。

  • 点击“爱心” -> 发现数字变了 -> 记录:这是点赞。
  • 上滑屏幕 -> 视频变了 -> 记录:这是切换视频。
Step 2: 部署模式 (Act)

教会了徒弟,现在让它自己干活。
我们编写一个简单的任务 Prompt:

User Prompt:

“不断地上滑刷视频。仔细观察视频内容,如果视频中出现了‘猫’或者‘狗’,就给我点个赞,然后继续刷。如果是广告,直接快速划走。”

运行代码:

python run_agent.py --app tiktok --task"Auto swipe and like cats"

见证奇迹的时刻:
你会看到手机屏幕自己在动!

  1. 屏幕出现美女跳舞 -> AI 判断“无猫” -> 执行Swipe Up
  2. 屏幕出现一只布偶猫 -> AI 识别成功 -> 执行Tap(Like_Icon)-> 执行Swipe Up
  3. 屏幕出现广告 -> 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 了,给你的爬虫和脚本装上一双“眼睛”吧!


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/19 21:42:18

ChatBox与Ollama完美联姻:从404困境到流畅对话的华丽转身

ChatBox与Ollama完美联姻:从404困境到流畅对话的华丽转身 【免费下载链接】chatbox Chatbox是一款开源的AI桌面客户端,它提供简单易用的界面,助用户高效与AI交互。可以有效提升工作效率,同时确保数据安全。源项目地址:…

作者头像 李华
网站建设 2026/4/20 6:58:08

Apache Doris的部署

Apache Doris 部署有单机快速部署和生产环境的集群部署两种常见方式,单机部署适合测试与开发,集群部署适用于正式业务场景。以下是基于主流 2.x 版本的详细部署步骤,以 Linux 系统为例: 前期准备 环境依赖安装 组件要求及安装命…

作者头像 李华
网站建设 2026/4/12 14:36:33

现代 PHP8+ 实战特性介绍 Enums、Fibers 和 Attributes

PHP 一直是 Web 开发领域使用最广泛的语言之一。这些年来,它的特性不断演进,每个版本都让语言变得更有表现力、更高效、对开发者更友好。如果你一直在关注最近的版本更新,可能已经注意到一些令人兴奋的新功能,它们能彻底改变你写 …

作者头像 李华
网站建设 2026/4/30 23:13:50

蓝牙耳机音质天梯图:从入门到高烧,这五款机型让好声音无需天价

曾几何时,好音质意味着笨重的设备与纠缠的线材,2025年的蓝牙耳机技术发展正重新定义“高保真无线音频”的标准。今年以来,随着蓝牙5.3、LE Audio技术的普及以及LDAC、LHDC等高清编码格式的全面推广,消费者对无线耳机的音质要求显著…

作者头像 李华
网站建设 2026/4/18 10:14:21

如何利用ArcGIS探索中国立体地形分布?

如何利用ArcGIS探索中国立体地形分布? 【免费下载链接】中国地形数据下载 本仓库提供了一份详细的中国地形数据文件,该文件可在ArcGIS软件中打开并进行进一步分析和可视化。中国地形地势西高东低,呈阶梯状分布;地形多种多样&#…

作者头像 李华
网站建设 2026/5/1 5:48:18

交换网络综合试验

一、试验拓扑要求二、试验需求1. 内网IP地址使用172.16.0.0/16划分; 2. vlan遵循最少vlan透传原则; 3. vlan2 属于 instance1;vlan3 属于 instance2,SW1是instance1的主根,instance2的备份根, SW2反之; 4. …

作者头像 李华