失踪两个半月,我又回来了。
两年前,公司因为一些自动化需求,我们采购了市面上比较主流的一款RPA产品。
但这两年用下来的感觉是,RPA确实能解决绝大多数的自动化问题,但维护成本实在太高。
这不,刚好一个月前智谱AI开源了一套叫作AutoGLM的GUI Agent框架,宣称是能让AI像人类一样看到手机屏幕内容并且执行自动化操作。
我寻思着有点意思,就去做了一把技术调研。
AutoGLM是什么
AutoGLM是一个开源的多模态智能体(Agent)框架,专门用于构建能够理解和操作手机图形界面(Phone GUI Agent)的AI助手。它结合了大语言模型(LLM)和计算机视觉技术,让AI能够像人类一样"看到"屏幕内容并执行操作。
简单来说,它是一个基于LLM 和计算机视觉技术 构建的自动化Agent框架,用来帮你解放双手,轻松操控手机。
AutoGLM能做什么
大家一定用过iphone的Siri语音智能助手吧,当你对它下达一个指令,它就能够帮你完成手机上的操作,AutoGLM其实干的就是这个,只不过更通用,更聪明,能支持更复杂的自动化操作!
举个例子,我让Safari帮我在淘宝上找出价格最低的AirPods Pro,并且支付下单,Safari做不到,但AutoGLM可以。
当然了,这两者的原理不同,Siri基于ios系统的内部API实现,因此有权限上的局限性,只能支持有系统操作权限的指令(能打开淘宝,但无法进行淘宝内的自动化操作),AutoGLM则是模拟人类进行自动化操作。
前阵子炒的火热的豆包手机也能做到和AutoGLM一样的事情,但AutoGLM具备跨设备的能力,它是技术框架而不是产品。
更重要的是,它开源啊!开源意味着什么,大家都是搞IT的,懂自懂。(再也不用担心钉钉没打上卡了)
AutoGLM的实现原理
AutoGLM 的底层逻辑是一个基于实时状态感知的动态决策闭环。
当用户下达了一条自然语言指令,如"打开企业微信",整个执行过程会被划分为3个阶段。
阶段一:指令解析
首先,Agent系统会通过自然语言理解引擎进行意图识别,大模型提取到关键动词"打开"和目标对象"企业微信",将自然语言转化为结构化指令,识别出任务类型为"应用启动",并确认目标应用为企业微信。
阶段二:任务规划和分解 大模型收到"启动企业微信应用"这条高级指令后,会将其拆解为一系列原子化的可执行步骤,在AutoGLM的框架设计中,这一步是关键的分水岭,它不仅会思考"做什么",还会通过内置的领域知识库(手机的操作逻辑)推理出"如何做"。
例如,对于"打开企业微信"这个任务,AutoGLM 内部的规划模块可能会生成如下步骤序列:
- 唤醒手机屏幕(如果处于休眠状态的话)
- 返回主屏幕
- 判断当前页面是否有企业微信应用图标
- 点击企业微信应用图标打开应用
这种规划过程,不仅依赖于大模型对通用任务步骤的推理能力,还紧密结合了 AutoGLM框架预先封装好的、针对手机操作系统的标准化单元。
阶段三:感知与执行
在这个阶段中,AutoGLM首先会利用ADB工具(Android Debug Bridge)对当前执行步骤下的手机屏幕进行实时截图,并将图像信息与当前的任务上下文一并发送给视觉理解模型。
视觉模型的核心工作,是进行像素到语义的翻译:
- 元素检测与解析:识别屏幕上的所有交互元素,如按钮、输入框、列表、图标,并标注其类型、位置和文本内容。
- 布局与结构理解:分析元素的层级和空间关系,理解当前屏幕的逻辑结构(比如这是一个登录页、设置列表还是一个对话窗口)。
- 状态与意图推断:结合任务上下文,判断当前界面状态。例如,在"发送微信消息"任务中,视觉模型能分辨出当前是停留在对话列表(需先点击联系人),还是已在聊天输入框界面(可直接输入文本)。
基于视觉模型的解析结果,AutoGLM会将其转化为精确的、可执行的动作指令序列,并再次通过ADB执行。
假如当前处于步骤2,返回主屏幕后视觉理解模型从屏幕截图中识别到企业微信应用图标,那么将位置信息告诉大语言模型后可以得到"找到目标应用,调用ADB点击对应屏幕位置"的决策。
如果从屏幕截图中未识别到企业微信应用图标,那么由大语言模型推理下一步行动的规划,也就是"左右翻页"查找企业微信应用。
重点总结
在AutoGLM的设计架构中,存在两种模型,分别是视觉理解模型 和大语言模型,各自承担不同的职责。
视觉理解模型 只负责解析屏幕截图 并将结构化的解析结果转换成自然语言并告知大语言模型,大语言模型 通过结合分解用户指令得到的逻辑步骤和视觉理解模型的实时描述结果进行决策 ,并推理出下一步行动,如此循环直到目标实现。
AutoGLM实战教学
这里仅以安卓手机为例,如果你是鸿蒙手机或苹果手机,请移步至官方文档。
官方文档地址:github.com/zai-org/Ope...
前置准备
- 一根支持数据传输的数据线
- 一台笔记本或台式机(有无线网卡更佳)
- 一部安卓系统手机
满足这些硬性条件后我们就可以开始了。
开发环境搭建
1. 安装Python环境
建议版本:
Python >= 3.10
pip >= 22.x
Python的安装过程这里不多做介绍,请自行百度~
2. 安装ADB工具
下载地址:developer.android.com/tools/relea...
下载完成后需要手动配置环境变量,否则运行AutoGLM项目时会出现识别不到ADB的情况。
3. 注册API Key
平台地址:bigmodel.cn/usercenter/...
注册好帐号后,按照以下步骤操作即可

不得不说智谱还是很慷慨的,新用户注册送2000万Token,对于非重度用户来说绝对是够用的。
3. 获取源码
仓库地址:github.com/zai-org/Ope...
shell
git clone https://github.com/zai-org/Open-AutoGLM.git
4. 配置API Key
进入项目根目录并创建.env文件
txt
# .env 文件内容,这里把${API_KEY}替换成刚刚复制的API Key
GLM_API_KEY=${API_KEY}
5. 安装项目依赖
shell
# 1. 安装基础依赖
pip install -r requirements.txt
# 2. 以编辑模式安装项目本身 (关键步骤)
pip install -e .
到这里,PC端的项目环境配置我们就完成了,接下来开始进行手机端项目环境配置。
6. 启用开发者模式
在手机上,进入"设置" → "关于手机",找到"版本号",连续点击 7 次(直到出现提示),你会看到"您已处于开发者模式"的提示。
返回设置主界面,进入"开发者选项",找到"USB调试"和"无线调试"两个选项并开启。
这一步每台手机有些许差异,大家根据实际情况操作就行。
7. 安装ADB Keyboard
下载地址:github.com/senzhk/ADBK...
下载完成后在手机上进行应用安装。
安装完成后需要在手机【设置-键盘-输入法】中手动切换为ADB Keyboard。
输入时屏幕底部会出现ADB Keyboard的字样(每台手机可能有差异)。
8. 项目依赖安装
shell
# 1. 进入项目
cd Open-AutoGLM
# 2. 安装基础依赖
pip install -r requirements.txt
# 3. 以编辑模式安装项目本身 (关键步骤)
pip install -e .
# 4.
9. 验证设备通信
在项目运行之前,用准备好的数据线连接电脑和手机,确保能正常通信(连接成功手机上会出现是否信任设备的弹窗,确认即可)。
shell
# 在控制台输入adb devices命令,验证设备是否连接成功(如果找不到adb命令,请检查步骤2)
adb devices
当连接成功,控制台会输出设备信息
shell
List of devices attached
xxxxx device
到这里,我们就完成了整个开发环境的搭建。
项目运行
方式一
我们先采用最简单的方式,也就是通过主文件入口运行AutoGLM。
shell
# 1. 进入项目
cd Open-AutoGLM
# 2. 运行AutoGLM
python main.py --base-url https://open.bigmodel.cn/api/paas/v4 --model "autoglm-phone" --apikey "这里填之前注册的API Key" "这里填要执行的操作,比如打开企业微信"
如果运行成功,会出现如下输出,并且在手机会开始执行进行自动化操作,否则请根据日志输出排查相应步骤。

除了数据线传输,AutoGLM也支持局域网传输,手机和电脑需要连接同一局域网,然后在命令行参数中携带--connect参数并填写ip和端口信息。
shell
# 127.0.0.1需要替换成实际的局域网ip,通信的默认端口为5555,不需要做更改
python main.py --connect 127.0.0.1:5555 --base-url https://open.bigmodel.cn/api/paas/v4 --model "autoglm-phone" --apikey "这里填之前注册的API Key" "这里填要执行的操作,比如打开企业微信"
方式二
AutoGLM项目本身已经集成了接口服务,如果我们想作为服务暴露给外部进行调用,可以采用这种方式运行。
shell
# 启动服务
# uvicorn server:app --host 0.0.0.0 --port 8001
bash
# 健康检查(GET请求)
http://{ip}:8001/health
# 列出当前已连接设备(GET请求)
http://{ip}:8001/devices
# 运行AutoGLM(POST请求)
http://{ip}:8001/run
{
"task": "打开企业微信",
"base_url": "https://open.bigmodel.cn/api/paas/v4", # 可选,默认读取环境变量
"model": "autoglm-phone", # 可选
"api_key": "这里填写API_Key", # 可选
"device_type": "adb" | "hdc" | "ios", # 可选,默认 adb
"device_id": "emulator-5554", # 可选
"max_steps": 100, # 可选
"lang": "cn" | "en", # 可选
"wda_url": "http://localhost:8100" # iOS可选
}
第三方工具拓展
如果大家仅仅想尝个鲜,或是想要开箱即用,那么推荐使用社区的可视化工具【AutoGLM GUI】,应用内置了AutoGLM的全部运行环境,只需要在手机上安装好ADB Keyboard,开启调试模式,就能够以最直观的方式运行AutoGLM。
仓库地址:github.com/suyiiyii/Au...

整个界面的布局非常简洁清晰,左侧是连接的设备信息,中间是AutoGLM的思考过程,右侧是手机的实时画面。
结语
AutoGLM有意思在哪儿?我认为是它的设计理念,它抛弃了传统自动化那套预设流程,通过实时的图像解析和规划推理来完成自动化。
按钮没出来就等等,布局变了就找找,应用崩溃了就重启,实在不行还知道换条路试试。
不得不说,这是一个很大胆的下注,压的是LLM这个方向的未来,毕竟AI幻觉、推理效率低下、Token费用高这些被诟病的问题未来究竟会不会被解决,我们谁也说不准。
但文明与科技的进步始于期待和想象,任何一个先驱者都值得被尊敬。
现在的GUI Agent虽然还不太完美,但这条路,已经挺让人期待了。