原来使用AutoGLM,稍微用用就要收费,想不到豆包手机出来后,AutoGLM居然开源了!
你有没有想过,有一天只需要对手机说一句话,它就能自动帮你完成复杂的操作?比如“打开美团,搜索附近的火锅店,找评分最高的那家,帮我订今晚7点的位子”,然后你就可以继续做别的事,等它搞定?
这不是科幻电影,而是现在就能实现的技术。今天要和你聊的Open-AutoGLM,就是这样一个能够理解屏幕、自主操作手机的AI助手。
简单来说,Open-AutoGLM是一个手机端的AI智能助理框架。它基于智谱AI的AutoGLM技术构建,核心能力是:能"看懂"手机屏幕上的内容,并像人一样去点击、滑动、输入,帮你完成各种任务。
想象一下,你的手机里住着一个看不见的小助手。你告诉它要做什么,它就会:
观察当前屏幕显示的是什么
思考下一步该做什么
执行具体的操作(点击按钮、输入文字等)
继续观察结果,直到任务完成
整个过程完全自动化,你只需要在开始时说明需求,最后确认支付这类敏感操作就行了。
Open-AutoGLM使用的是AutoGLM-Phone-9B模型,这是一个多模态视觉语言模型。通俗地说,它不仅能理解文字,还能"看懂"图片。
每当需要执行操作时,系统会先给手机截个图,把这张图片发给AI模型。模型会分析图片内容:
这是哪个APP?
当前在什么页面?
屏幕上有哪些可以点击的按钮?
搜索框在哪里?
有没有出现错误提示?
这就像给AI装了一双眼睛,让它能像人一样"看"手机屏幕。
光能看还不够,还得会思考。Open-AutoGLM的规划能力体现在:
任务分解: 当你说"打开小红书搜索美食攻略"时,AI会把这个需求拆解成多个步骤:
1. 启动小红书APP
2. 找到搜索框并点击
3. 输入"美食攻略"
4. 点击搜索按钮
5. 等待结果加载
上下文理解: AI会记住之前的操作。比如你说"打开淘宝",然后说"搜索蓝牙耳机",它知道要在已经打开的淘宝里搜索,而不是重新打开APP。
错误处理: 如果遇到广告弹窗、网络加载慢等情况,AI会自动判断并处理,比如关闭弹窗、等待加载完成。
AI想好了要做什么,怎么真正去操作手机呢?答案是ADB(Android Debug Bridge)。
ADB是Android系统的调试工具,通过USB数据线(或WiFi)连接手机和电脑,可以让电脑发送指令控制手机。Open-AutoGLM就是通过ADB来执行具体操作:
#点击屏幕某个位置adbshellinputtap5001000#输入文字adbshellinputtext"蓝牙耳机"#滑动屏幕adbshellinputswipe5001500500500#按返回键adbshellinputkeyevent4
为了输入中文,系统还使用了ADB Keyboard这个专门的输入法,因为普通的ADB命令对中文支持不太好。
整个系统的工作流程可以用一个循环来描述:
让我用一个实际例子说明。假设你的指令是:"打开美团,搜索附近的川菜馆"
第一轮循环:
截图: 系统发现当前在手机桌面
AI思考: "需要启动美团APP"
决策: 执行Launch操作,启动美团
执行: 通过ADB命令打开美团
第二轮循环:
截图: 美团首页已打开
AI思考: "看到了顶部的搜索框,需要点击它"
决策: Tap操作,点击搜索框坐标[500, 120]
执行: 模拟点击搜索框
第三轮循环:
截图: 搜索框已激活,弹出键盘
AI思考: "需要输入搜索关键词"
决策: Type操作,输入"川菜馆"
执行: 通过ADB Keyboard输入文字
第四轮循环:
截图: 文字已输入
AI思考: "需要点击搜索按钮"
决策: Tap操作,点击搜索按钮
执行: 点击搜索
第五轮循环:
截图: 搜索结果页面
AI思考: "任务完成,已显示附近的川菜馆列表"
决策: 返回成功状态
结束: 任务完成
每一步,AI都会根据当前屏幕的实际情况做出判断。如果中间出现了广告弹窗,它会先关闭弹窗再继续;如果网络慢了,它会等待页面加载。
说了这么多理论,咱们来实战一下。我会带你从零开始,一步步搭建一个能用的系统。
硬件要求:
一台电脑(Windows/Mac/Linux都可以)
一部Android 7.0以上的手机(或者Android模拟器)
一根能传输数据的USB线(很重要!有些线只能充电)
软件环境:
Python 3.10 或更高版本
至少16GB内存(用于运行AI模型)
50GB以上硬盘空间(模型文件比较大)
ADB是连接手机和电脑的桥梁,必须先装好。
下载ADB工具
访问 Android官网 下载适合你系统的版本,解压到一个好记的位置,比如D:\adb或/Users/你的用户名/adb
配置环境变量
Mac用户在终端执行:
echo'exportPATH=$PATH:/Users/你的用户名/adb'>>~/.zshrcsource~/.zshrc
Windows用户:
右键"此电脑" → "属性" → "高级系统设置"
点击"环境变量"
在"系统变量"中找到"
ath",点击"编辑"
新建一条,填入你的ADB目录路径
验证安装
打开命令行,输入:
adbversion
如果看到版本信息,说明安装成功了。
4. 连接手机
手机设置里要开启两个东西:
开发者模式:设置 → 关于手机 → 连续点击"版本号"7-10次,直到提示"您已处于开发者模式"
USB调试:设置 → 开发者选项 → 打开"USB调试"
用数据线连接手机和电脑,手机上会弹出"是否允许USB调试"的提示,点击"允许"。
然后在电脑上输入:
adbdevices
你应该能看到类似这样的输出:
Listofdevicesattachedabcd1234device
如果显示"unauthorized",说明手机上还没允许,检查一下手机屏幕的提示。
这是一个特殊的输入法,让AI能够输入中文。
下载APK文件:ADBKeyboard.apk
安装到手机:
adbinstallADBKeyboard.apk
在手机上:设置 → 系统 → 语言和输入法 → 虚拟键盘 → 启用"ADB Keyboard"
这是最核心也是最复杂的部分。AI模型需要相当的计算资源。
下载模型文件
模型托管在Hugging Face上,大概18GB左右:
#先安装git-lfsgitlfsinstall#下载模型(需要一段时间)gitclonehttps://huggingface.co/zai-org/AutoGLM-Phone-9B
如果国内下载慢,可以用ModelScope镜像:
gitclonehttps://www.modelscope.cn/ZhipuAI/AutoGLM-Phone-9B.git
安装推理引擎
我推荐用vLLM,它对多模态模型支持比较好:
pipinstallvllm
如果你的显卡是NVIDIA的,确保已经安装了CUDA。可以用这个命令检查:
nvidia-smi
启动模型服务
创建一个启动脚本start_model.sh:
python3-mvllm.entrypoints.openai.api_server\--served-model-nameautoglm-phone-9b\--allowed-local-media-path/\--mm-encoder-tp-modedata\--mm_processor_cache_typeshm\--mm_processor_kwargs'{"max_pixels":5000000}'\--max-model-len25480\--chat-template-content-formatstring\--limit-mm-per-prompt'{"image":10}'\--model./AutoGLM-Phone-9B\--port8000运行脚本:
bashstart_model.sh
首次启动会加载模型到显存,需要等几分钟。看到类似这样的输出就说明成功了:
INFO:Uvicornrunningonhttp://0.0.0.0:8000
性能建议:
显存至少需要12GB(推荐16GB以上)
如果显存不够,可以用--tensor-parallel-size 2开启多卡并行
CPU内存建议32GB以上
终于到主程序了!
下载代码
gitclonehttps://github.com/zai-org/Open-AutoGLM.gitcdOpen-AutoGLM
安装依赖
pipinstall-rrequirements.txtpipinstall-e.
测试一下
pythonmain.py--base-urlhttp://localhost:8000/v1--modelautoglm-phone-9b"打开设置"
如果一切正常,你会看到系统开始工作:截图、分析、执行操作。手机上的设置APP应该会自动打开。
现在我们来做几个实际任务,感受一下AI助手的能力。
示例1: 美团订餐
pythonmain.py--base-urlhttp://localhost:8000/v1\--modelautoglm-phone-9b\"打开美团,搜索附近评分最高的川菜馆"
系统会:
启动美团APP
点击搜索框
输入"川菜馆"
等待搜索结果
按评分排序
整个过程你会在终端看到详细的日志:
==================================================💭思考过程:--------------------------------------------------当前在桌面,需要启动美团应用--------------------------------------------------🎯执行动作:{"action":"Launch","app":"美团"}====================================================================================================💭思考过程:--------------------------------------------------美团已打开,看到顶部有搜索框,坐标大约在[540,150]--------------------------------------------------🎯执行动作:{"action":"Tap","element":[540,150]}==================================================...(继续执行其他步骤)示例2: 淘宝购物
#也可以用PythonAPIfromphone_AgentimportPhoneAgentfromphone_agent.modelimportModelConfig#配置模型model_config=ModelConfig(base_url="http://localhost:8000/v1",model_name="autoglm-phone-9b",)#创建Agentagent=PhoneAgent(model_config=model_config)#执行任务result=agent.run("打开淘宝搜索蓝牙耳机,找销量最高的")print(f"任务结果:{result}")示例3: 自定义敏感操作处理
对于支付、删除等敏感操作,系统会请求确认:
defmy_confirmation(message):"""自定义确认函数"""print(f"\n⚠️需要确认:{message}")choice=input("是否继续?(y/n):")returnchoice.lower()=='y'defmy_takeover(message):"""需要人工接管时的处理"""print(f"\n🤚需要人工操作:{message}")input("完成后按回车继续...")agent=PhoneAgent(model_config=model_config,confirmation_callback=my_confirmation,takeover_callback=my_takeover)#这个任务会在支付前请求确认agent.run("打开美团订一份外卖")运行时如果遇到支付环节,会暂停并提示:
⚠️需要确认:即将支付28.5元是否继续?(y/n):n❌用户取消了操作
Open-AutoGLM目前支持50多个主流中文APP,覆盖生活的方方面面:
生活服务类:
外卖点餐:美团、饿了么
打车出行:滴滴出行、高德地图
酒店预订:携程、去哪儿
购票:12306、猫眼电影
电商购物类:
淘宝、京东、拼多多
自动搜索商品
筛选价格、销量
加入购物车
社交娱乐类:
微信:发消息、朋友圈操作
抖音、快手:自动刷视频
小红书:搜索笔记
B站:搜索视频、一键三连
工具类:
备忘录记事
日历添加提醒
设置闹钟
批量文件操作
查看完整列表:
python main.py --list-apps
系统支持人类在手机上的所有基本操作:
操作 | 描述 | 示例场景 |
|---|---|---|
Launch | 启动APP | 打开淘宝 |
Tap | 点击 | 点击搜索按钮 |
Type | 输入文字 | 输入搜索关键词 |
Swipe | 滑动 | 向下滚动查看更多 |
Long Press | 长按 | 长按删除消息 |
Double Tap | 双击 | 双击点赞 |
Back | 返回 | 返回上一页 |
Home | 回桌面 | 退出当前APP |
Wait | 等待 | 等待页面加载 |
Take_over | 人工接管 | 需要输入验证码 |
除了USB连接,Open-AutoGLM还支持通过WiFi远程控制手机,这在很多场景下非常有用。
使用场景:
手机和电脑不在一起
想躺床上用电脑控制手机
多台手机同时控制
服务器上部署,远程访问
配置步骤:
手机开启无线调试
设置 → 开发者选项 → 无线调试 → 开启
记下显示的IP地址和端口,比如192.168.1.100:5555
电脑连接手机
adbconnect192.168.1.100:5555
验证连接
adbdevices#应该显示:192.168.1.100:5555device
使用时指定设备
pythonmain.py\--device-id192.168.1.100:5555\--base-urlhttp://localhost:8000/v1\--modelautoglm-phone-9b\"打开抖音刷视频"ythonAPI方式:fromphone_agent.adbimportADBConnection#连接远程设备conn=ADBConnection()success,msg=conn.connect("192.168.1.100:5555")print(f"连接状态:{msg}")#后续使用和USB连接一样agent=PhoneAgent(model_config=model_config,device_id="192.168.1.100:5555")
说了这么多技术细节,Open-AutoGLM究竟解决了什么实际问题呢?
每天要做的很多事情都是重复的:
每天早上打开日历看今天的安排
定期在某个APP上查看订单状态
每周在几个平台上查找特定信息
这些任务完全可以交给AI完成,你只需要看结果就行。
有些任务需要跨多个APP操作:
"查天气预报,如果明天下雨就在备忘录里提醒我带伞"
"在多个外卖平台比价,找最便宜的下单"
"把今天拍的所有照片上传到云盘"
AI可以理解整个流程,自动完成所有步骤。
对于视力障碍或操作不便的用户,语音+AI控制可以极大提升手机使用体验。只需要说出需求,AI就能帮忙完成操作。
如果你是开发者,可以用Open-AutoGLM来:
自动化APP测试
模拟用户行为收集数据
批量操作进行压力测试
让我分享几个真实的使用场景:
案例1: 出差助手
#一句话搞定所有行程安排agent.run("""帮我安排明天去上海的行程:1.在12306买明天早上8点到上海的高铁票2.在携程订明晚的酒店,靠近人民广场3.在高德地图标记酒店位置4.在日历里添加提醒""")案例2: 批量操作
#批量点赞朋友圈agent.run("打开微信,给最近3天的朋友圈前10条点赞")#批量下载agent.run("打开小红书,搜索'美食摄影',保存前20张图片")案例3:定时任务importscheduleimporttimedefdaily_news():agent.run("""打开今日头条,搜索'人工智能新闻',截图前5条,发送到微信'我的电脑'""")#每天早上8点执行schedule.every().day.at("08:00").do(daily_news)whileTrue:schedule.run_pending(time.sleep(60)在使用过程中,有几个需要注意的地方:
敏感信息: 系统会看到屏幕上的所有内容,包括聊天记录、账号信息等
支付操作: 默认会在支付前请求人工确认,建议保持这个设置
云端模型: 如果用云端API,屏幕截图会上传,注意数据隐私
APP版本: 不同版本的APP界面可能不同,AI的识别可能有偏差
网络延迟: 如果网络慢,等待时间可能较长
异常处理: 遇到意外弹窗(广告、更新提示等)可能会卡住
计算资源: 本地部署需要较好的显卡
云端API: 如果用云端服务,会有调用费用
时间成本: 某些复杂任务可能比手动操作更慢
自动化操作: 某些APP可能禁止自动化操作
批量操作: 注意不要违反APP的使用条款
商业使用: 商业用途需要注意版权和授权问题
在使用中可能会遇到一些问题,这里提供解决方案:
问题1: 找不到设备
❌error:nodevices/emulatorsfound
解决方法:
#重启ADB服务adbkill-serveradbstart-serveradbdevices
问题2: 输入中文失败
检查ADB Keyboard是否安装并启用
在手机设置里把ADB Keyboard设为默认输入法
系统会在需要时自动切换
问题3: 截图是黑屏 这通常是因为APP启用了屏幕保护(银行类、支付类APP常见)。
系统会自动检测并请求人工接管。
问题4: AI判断错误
可能是屏幕太复杂,AI识别失败
可以在prompts.py里调整系统提示词,增加特定场景的说明
或者手动接管,完成关键步骤后再让AI继续
问题5: 模型加载失败
OutOfMemoryError:CUDAoutofmemory
显存不足,可以:
减少--max-model-len参数
使用量化版本的模型
升级显卡或使用云端GPU
如果你想深度定制Open-AutoGLM,这里是一些方向:
修改phone_agent/config/prompts.py:
SYSTEM_PROMPT="""你是一个专业的手机操作助手。特殊规则:-在购物时,优先选择官方旗舰店的商品-避免使用拼多多等平台-遇到广告自动关闭-每次操作前说明理由你特别擅长:{你要增强的领域}"""编辑phone_agent/config/apps.py:
APP_PACKAGE_MAPPING={"你的APP名称":"com.example.yourapp",#...其他APP}在phone_agent/actions/handler.py添加新操作:
defexecute_custom_action(self,params):"""自定义操作"""#实现你的逻辑pass
fromphone_agentimportPhoneAgentclassMyAssistant:def__init__(self):self.agent=PhoneAgent(...)defhandle_user_request(self,request):#预处理processed=self.preprocess(request)#执行result=self.agent.run(processed)#后处理returnself.postprocess(result)
Open-AutoGLM不是完美的,但它展示了一种可能性:AI不只是聊天,还可以真正帮你做事。
它的价值不在于炫技,而在于解放你的时间。那些繁琐的、重复的、让你感到厌烦的手机操作,现在可以交给AI了。
当然,技术还在发展初期,有很多不完善的地方。但正因如此,才有更多的探索空间。如果你是开发者,这是一个很好的学习和贡献的机会;如果你是普通用户,可以期待它在不久的将来变得更加好用。
| 欢迎光临 链载Ai (http://www.lianzai.com/) | Powered by Discuz! X3.5 |