Open-AutoGLM与Appium对比评测:AI驱动自动化效率提升实测
1. 引言
如果你做过手机自动化测试,或者想用程序控制手机完成一些重复任务,那你一定听说过Appium。它就像一个万能的遥控器,通过编写代码来模拟人的点击、滑动操作。但今天,我想跟你聊聊一个不太一样的“新玩家”——Open-AutoGLM。
简单来说,Open-AutoGLM(也叫Phone Agent)是一个能“看懂”手机屏幕的AI智能助理。你不需要告诉它“点击屏幕坐标(100,200)”,你只需要像跟人说话一样告诉它:“打开小红书,搜一下附近的美食”。剩下的,它会自己看屏幕、自己思考、自己操作。
这听起来是不是有点科幻?但这就是多模态大模型带来的变化。它把传统的“坐标驱动”自动化,升级成了“意图驱动”的智能自动化。
这篇文章,我就带你亲手体验一下这两个框架。我会用同一个任务——在抖音上搜索并关注一个指定博主,来分别用Open-AutoGLM和Appium实现。咱们不看枯燥的理论,就看实际干活的效率、代码的复杂度和最终的效果。看看这个号称“AI驱动”的新框架,到底是不是真的更聪明、更好用。
2. 认识两位选手:Appium vs. Open-AutoGLM
在开始实战前,咱们先快速了解一下两位选手的基本情况。了解它们的核心原理,才能明白为什么测试结果会不一样。
2.1 传统王者:Appium
Appium是一个老牌的、开源的移动端自动化测试框架。它的设计理念非常经典:
- 基于WebDriver协议:它通过一套标准协议与手机上的“自动化代理”通信。
- 元素定位驱动:你需要告诉Appium要操作哪个UI元素。比如,一个按钮,你可能需要通过它的ID、文字内容或者XPath路径来找到它。
- 脚本化执行:你需要编写详细的步骤脚本:“先找到搜索框元素 -> 在搜索框里输入文字 -> 点击搜索按钮 -> 在结果列表里找到目标 -> 点击关注按钮”。
它的优点很明显:生态成熟、社区庞大、支持多种编程语言(Python, Java等)、对iOS和Android支持都很好。 但缺点也很突出:脚本脆弱。一旦App界面改版,按钮的ID变了或者位置挪了,你的脚本就“瞎”了,必须重新修改和调试。它就像一个非常听话但有点“死脑筋”的机器人。
2.2 AI新秀:Open-AutoGLM (Phone Agent)
Open-AutoGLM是智谱开源的手机端AI Agent框架。它的工作方式完全不同:
- 多模态理解:它的核心是一个视觉语言模型(VLM)。它能像人一样,“看”懂手机屏幕截图,理解上面有什么文字、图标、按钮。
- 意图解析与规划:你给它一个自然语言指令,比如“打开抖音搜索博主dycwo11nt61d并关注”。它不会直接去找“搜索框”这个元素,而是先理解你的最终目标,然后自己规划步骤:“第一步,我需要找到并打开抖音App。第二步,我需要找到搜索入口。第三步...”。
- 自动执行:规划好步骤后,它会结合对当前屏幕的理解,生成具体的操作(如点击某个位置的“搜索”图标),并通过ADB发送给手机执行。
它的核心优势:极其灵活。只要AI能看懂界面,理论上就能操作。App界面怎么变,它都能适应,因为它是靠“视觉”和“理解”来操作的,而不是依赖固定的元素标识。 目前的挑战:依赖云端或本地的大模型服务,响应速度可能不如本地直接调用快,且对模型的理解能力要求较高。
简单总结一下两者的根本区别:
| 特性 | Appium | Open-AutoGLM (Phone Agent) |
|---|---|---|
| 驱动方式 | 元素定位驱动 | 视觉理解与意图驱动 |
| 脚本逻辑 | 需要详细步骤和元素定位信息 | 只需要最终目标(自然语言指令) |
| 健壮性 | 低(依赖元素稳定性) | 高(依赖模型视觉理解能力) |
| 上手门槛 | 中(需学习定位方式和API) | 低(自然语言交互) |
| 灵活性 | 低(脚本与界面强绑定) | 高(可适应界面变化) |
了解完背景,接下来咱们就进入实战环节,看看它们在实际任务中表现如何。
3. 实战准备:搭建Open-AutoGLM测试环境
为了让Open-AutoGLM跑起来,我们需要两部分:一个提供AI模型能力的“大脑”(服务端),和一个连接手机并执行操作的“手脚”(控制端)。这里我们主要演示控制端在本地电脑的连接与使用。
3.1 硬件与环境准备
你需要准备以下几样东西:
- 一台电脑:Windows或macOS都可以。
- Python环境:建议使用Python 3.10或更高版本。
- 一部安卓手机:系统需要Android 7.0以上。如果没有真机,用安卓模拟器(如夜神、MuMu)也行。
- ADB工具:这是连接和控制安卓设备的关键桥梁。
安装和配置ADB(以Windows为例):
- 从官网下载
platform-tools工具包并解压。 - 配置环境变量:右键“此电脑” -> “属性” -> “高级系统设置” -> “环境变量”。在“系统变量”里找到
Path,点击编辑,将你解压的platform-tools文件夹的完整路径添加进去。 - 验证:打开命令提示符(CMD),输入
adb version,如果显示出版本信息,说明配置成功。
macOS配置更简单: 打开终端(Terminal),假设你把工具包解压在了Downloads文件夹:
export PATH=$PATH:~/Downloads/platform-tools
你可以把这行命令加到~/.zshrc或~/.bash_profile文件里,这样每次打开终端就自动配置好了。
3.2 手机端设置
要让电脑控制手机,需要在手机上打开几个开关:
- 开启开发者模式:进入手机的“设置” -> “关于手机”,连续点击“版本号”7次左右,直到提示“您已处于开发者模式”。
- 开启USB调试:退回设置,找到新出现的“开发者选项”,进入后开启“USB调试”。
- 安装ADB Keyboard(可选但推荐):这是一个特殊的输入法,允许电脑通过ADB直接向手机输入文字,比模拟触屏打字快得多。下载APK安装后,在“设置” -> “语言与输入法”里,将默认键盘切换到“ADB Keyboard”。
3.3 部署控制端代码
控制端代码就是Open-AutoGLM项目本身,我们从GitHub上把它克隆下来。
# 1. 克隆项目仓库到本地
git clone https://github.com/zai-org/Open-AutoGLM
# 进入项目目录
cd Open-AutoGLM
# 2. 安装项目所需的Python依赖包
pip install -r requirements.txt
# 以“可编辑”模式安装当前目录的包,方便后续开发
pip install -e .
3.4 连接你的手机
连接有两种方式,USB最稳定,WiFi更灵活。
USB连接(推荐新手): 用数据线连接手机和电脑。在电脑终端运行:
adb devices
如果看到一行输出包含你的设备ID和device字样,比如abc123def device,就说明连接成功了。
WiFi无线连接: 有时候不想被线缆束缚,可以用WiFi连接。
- 先用USB线连接一次,并执行:
这个命令让手机在5555端口监听TCP/IP连接。adb tcpip 5555 - 拔掉USB线。在手机“设置” -> “关于手机” -> “状态信息”里找到手机的IP地址(通常是192.168.x.x格式)。
- 在电脑上执行:
再次运行adb connect 192.168.x.x:5555adb devices,你应该能看到一个通过IP地址连接的设备。
环境搭建好了,手机也连上了,最激动人心的部分来了:让AI接管你的手机。
4. 效率实测:用自然语言让AI完成任务
现在,我们就要用Open-AutoGLM来完成文章开头提到的任务:在抖音上搜索并关注一个指定博主。
4.1 一行命令启动AI代理
假设你已经按照第三章准备好了服务端(一个运行着autoglm-phone-9b模型的云服务器),并且知道它的IP地址和端口。那么,让AI开始工作简单得不可思议。
在你的Open-AutoGLM项目目录下,打开终端,输入如下命令(请替换尖括号<>内的内容为你的实际信息):
python main.py \
--device-id <你的设备ID> \
--base-url http://<云服务器IP>:<端口>/v1 \
--model "autoglm-phone-9b" \
"打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他!"
参数解释:
--device-id: 就是你用adb devices看到的那个设备ID或IP地址。--base-url: 你部署的AI模型服务的访问地址。--model: 指定要使用的模型名称。- 最后那个引号里的字符串:就是你给AI下的命令,用最自然的大白话就行。
按下回车,神奇的事情发生了。你的手机会自动亮屏、解锁(如果没设密码)、找到抖音图标并打开、进入App后找到搜索框、输入你指定的抖音号、在搜索结果中找到该博主、进入他的主页、最后点击“关注”按钮。
整个过程,你只需要告诉它“要做什么”,至于“怎么做”,它自己会看、会想、会操作。
4.2 使用Python API进行更灵活的控制
除了命令行,Open-AutoGLM也提供了Python API,方便你集成到自己的脚本或应用中。
from phone_agent.adb import ADBConnection, list_devices
from phone_agent.agent import PhoneAgent
# 1. 连接设备
conn = ADBConnection()
success, message = conn.connect("192.168.1.100:5555") # 你的设备IP
print(f"连接状态: {message}")
# 2. 创建AI代理实例
agent = PhoneAgent(
base_url="http://your-server-ip:port/v1",
model="autoglm-phone-9b",
device_id="192.168.1.100:5555"
)
# 3. 下达指令
task_description = "打开抖音,搜索用户‘科技美学’,浏览他的三个最新视频,然后返回首页。"
try:
result = agent.run(task_description)
print(f"任务执行结果: {result}")
except Exception as e:
print(f"任务执行出错: {e}")
# 4. 断开连接
conn.disconnect("192.168.1.100:5555")
通过API,你可以轻松地串联多个复杂任务,或者根据AI执行的结果(比如屏幕上出现了某个特定内容)来动态决定下一步做什么,实现更高级的自动化流程。
看到这里,你可能已经感受到Open-AutoGLM的便捷了。但光说它好不行,我们得拉出传统的Appium来比一比,看看在完成同一个任务时,两者的差异到底有多大。
5. 对比评测:当Appium遇到同一个任务
现在,我们用Appium来实现完全相同的任务:“打开抖音搜索抖音号为:dycwo11nt61d 的博主并关注他”。为了公平对比,我们使用相同的Python环境,并假设手机已经连接好。
5.1 Appium实现代码一览
首先,你需要安装Appium的Python客户端:pip install Appium-Python-Client。
然后,下面是一段典型的Appium脚本框架,用于完成我们的任务。请注意,这段代码很可能无法直接运行,因为其中查找元素的“定位器”(如id, xpath)需要根据你手机上抖音App的实际界面来调整,而且不同版本的App,这些定位信息可能会变。
from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
import time
# 1. 定义设备能力和App信息
desired_caps = {
'platformName': 'Android',
'deviceName': '你的设备名',
'appPackage': 'com.ss.android.ugc.aweme', # 抖音的包名
'appActivity': '.main.MainActivity', # 抖音的主Activity
'noReset': True, # 不重置App
'automationName': 'UiAutomator2'
}
# 2. 连接Appium服务器(默认本地4723端口)
driver = webdriver.Remote('http://localhost:4723', desired_caps)
time.sleep(5) # 等待App启动
try:
# 3. 找到并点击“首页”的搜索按钮(需要事先探查元素)
# 这个id或xpath非常容易因版本更新而失效
search_entry = driver.find_element(AppiumBy.ID, ‘com.ss.android.ugc.aweme:id/搜索按钮ID’)
search_entry.click()
time.sleep(2)
# 4. 找到搜索输入框并输入抖音号
search_box = driver.find_element(AppiumBy.ID, ‘com.ss.android.ugc.aweme:id/搜索框ID’)
search_box.send_keys(‘dycwo11nt61d’)
time.sleep(1)
# 5. 点击键盘上的“搜索”键或搜索按钮
driver.press_keycode(66) # 回车键
time.sleep(3) # 等待搜索结果加载
# 6. 在结果中点击“用户”Tab,然后找到对应用户(这里假设是第一个)
user_tab = driver.find_element(AppiumBy.XPATH, ‘//android.widget.TextView[@text=“用户”]’)
user_tab.click()
time.sleep(2)
target_user = driver.find_element(AppiumBy.XPATH, ‘(//某个代表用户的布局)[1]’)
target_user.click()
time.sleep(3)
# 7. 在用户主页找到“关注”按钮并点击
follow_button = driver.find_element(AppiumBy.ID, ‘com.ss.android.ugc.aweme:id/关注按钮ID’)
if follow_button.text == “关注”: # 检查是否未关注
follow_button.click()
print(“关注成功!”)
else:
print(“已关注或按钮状态异常。”)
time.sleep(2)
except Exception as e:
print(f“执行过程中出错:{e}”)
# 出错时截图,便于调试
driver.save_screenshot(‘error_screenshot.png’)
finally:
# 8. 退出
driver.quit()
5.2 核心痛点分析
看完上面这段代码,即使你不是开发者,也能直观地感受到几个问题:
- 极度脆弱:代码严重依赖
ID和XPath这些“定位器”。只要抖音App更新,界面布局或元素ID稍有变动,整个脚本就崩溃了。你需要重新打开App,用工具(如Appium Inspector)探查新的元素信息,然后修改代码。这个过程耗时耗力。 - 步骤繁琐:你需要像写电影分镜脚本一样,把“点击这里”、“在那里输入文字”、“等待3秒”等每一个微观步骤都精确地写出来。
- 调试困难:一旦脚本在某个步骤失败,你需要查看日志、分析截图,去判断是元素没找到,还是网络慢没加载出来,或者是其他意外弹窗(比如青少年模式提示)干扰了流程。
- 缺乏智能:脚本没有任何“理解”能力。如果搜索结果的用户不在第一个,或者“关注”按钮因为某种原因变成了“已关注”或“发消息”,脚本就无法正确处理,除非你写入更复杂的判断逻辑。
而这,恰恰是Open-AutoGLM想要解决的问题。 它把“如何找到搜索框”这个具体问题,交给了能看懂屏幕的AI去实时解决。你的脚本只需要关心业务目标:“找到并关注这个人”。
6. 总结:谁更适合你?
经过从原理到实战的对比,我们可以清晰地看到两个框架处于自动化演进的不同阶段。
选择Appium,如果你:
- 需要进行严格的、重复性的UI自动化测试,测试用例需要精确到每个像素点。
- 操作的App界面非常稳定,短期内不会有大改动。
- 你的团队已经熟悉了Appium生态,并且有成熟的测试脚本维护流程。
- 对执行速度有极致要求,且不能接受任何因模型推理带来的延迟(哪怕是几百毫秒)。
选择Open-AutoGLM (Phone Agent),如果你:
- 想要快速实现一个自动化流程,比如自动签到、收集信息、批量操作等,并且不想花大量时间研究App的UI结构。
- 面对的App更新频繁,你不想每次更新都去调整和维护脚本。
- 你是个人开发者或小团队,希望用最低的成本和最快的速度让想法落地。
- 你的任务可以用自然语言清晰描述,比如“把微信里今天收到的所有文件保存到网盘”。
- 你愿意尝试并接受AI技术带来的不确定性(偶尔可能会点错,但大方向正确)。
在我看来,Open-AutoGLM代表了一种趋势:自动化正从“手工编排的机械流程”向“目标驱动的智能体”演进。 它降低了自动化的门槛,让更多不懂技术细节的人也能享受到自动化的便利。虽然现阶段它在执行精度和速度上可能还无法完全取代Appium在核心测试场景的地位,但在大量灵活、多变的业务流程自动化场景中,它已经展现出了巨大的潜力和独特的价值。
未来,随着多模态模型理解能力的进一步增强,这类AI驱动的自动化框架只会越来越聪明、越来越可靠。也许不久之后,我们真的只需要动动嘴皮子,就能让AI助手帮我们搞定手机上所有繁琐的操作了。
获取更多AI镜像
想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。

被折叠的 条评论
为什么被折叠?



