封面

zai-org / Open-AutoGLM 已开源,体验一下

Phone Agent 是一个基于 AutoGLM 构建的手机端智能助理框架,它能够以多模态方式理解手机屏幕内容,并通过自动化操作帮助用户完成任务。系统通过 ADB(Android Debug Bridge)来控制设备,以视觉语言模型进行屏幕感知,再结合智能规划能力生成并执行操作流程。用户只需用自然语言描述需求,如“打开小红书搜索美食”,Phone Agent 即可自动解析意图、理解当前界面、规划下一步动作并完成整个流程。系统还内置敏感操作确认机制,并支持在登录或验证码场景下进行人工接管。同时,它提供远程 ADB 调试能力,可通过 WiFi 或网络连接设备,实现灵活的远程控制与开发。

抖音刷到这个项目的。我从去年就关注到它了,今天既然开源了,那就在本地部署一下吧。

Github 地址是 https://github.com/zai-org/Open-AutoGLM

环境安装

首先我们要安装 Python,官方推荐安装 3.10 以上的版本。

> python --version
Python 3.13.7

接下来安装 adb 工具,下载后将它所在的目录添加到环境变量中。

> adb --version
Android Debug Bridge version 1.0.41
Version 36.0.0-13206524
Installed as A:\platform-tools\adb.exe
Running on Windows 10.0.22000

然后安装 ADBKeyboard,进入后下载原始文件。安装在手机后,在设置中打开此键盘。

打开键盘
打开键盘

运行项目

首先将项目保存到本地,可以用 Git Clone 命令。

> cd .\Open-AutoGLM-main\
> ls

    目录: A:\Open-AutoGLM-main


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2025/12/24      9:38                  .github
d-----       2025/12/24      9:38                  docs
d-----       2025/12/24      9:38                  examples
d-----       2025/12/24      9:38                  phone_agent
d-----       2025/12/24      9:38                  resources
d-----       2025/12/24      9:38                  scripts
-a----       2025/12/22     13:01            538   .gitignore
-a----       2025/12/22     13:01            534 󰉢  .pre-commit-config.yaml
-a----       2025/12/22     13:01          17404   ios.py
-a----       2025/12/22     13:01          11342 󰄤  LICENSE
-a----       2025/12/22     13:01          28769   main.py
-a----       2025/12/22     13:01          32421 󰪷  README.md
-a----       2025/12/22     13:01           9545   README_coding_agent.md
-a----       2025/12/22     13:01          33945   README_en.md
-a----       2025/12/22     13:01            421 󰈙  requirements.txt
-a----       2025/12/22     13:01           1460   setup.py

安装依赖:

pip install -r requirements.txt 
pip install -e .

打开手机的 USB 调试模式,连接电脑,运行命令查看是否连接成功。

打开调试模式
打开调试模式

> adb devices                                                                                                                           
List of devices attached
3B6F6AE8GCL0LCZL        device

然后还需要一个运行的模型,我自己是在智谱AI平台上申请的ApiKey,申请地址在 https://docs.bigmodel.cn/cn/api/introduction

如果是这样的话,那么运行指令的命令就是:

python main.py --base-url https://open.bigmodel.cn/api/paas/v4 --model "autoglm-phone" --apikey "your-bigmodel-api-key" "打开美团搜索附近的火锅店"

运行以后,控制台会先检测 adb 连接状态,然后每次读取屏幕内容,然后尝试执行分步点击,到最后会给出运行结果,效果还是很不错的。

🔍 Checking system requirements...
--------------------------------------------------
1. Checking ADB installation... ✅ OK (Android Debug Bridge version 1.0.41)
2. Checking connected devices... ✅ OK (1 device(s): 3B6F6AE8GCL0LCZL)
3. Checking ADB Keyboard... ✅ OK
--------------------------------------------------
✅ All system checks passed!

🔍 Checking model API...
--------------------------------------------------
1. Checking API connectivity (https://open.bigmodel.cn/api/paas/v4)... ✅ OK
--------------------------------------------------
✅ Model API checks passed!

==================================================
Phone Agent - AI-powered phone automation
==================================================
Model: autoglm-phone
Base URL: https://open.bigmodel.cn/api/paas/v4
Max Steps: 100
Language: cn
Device Type: ADB
Device: 3B6F6AE8GCL0LCZL (auto-detected)
==================================================

Task: 打开美团搜索附近的火锅店


==================================================
💭 思考过程:
--------------------------------------------------
用户想要打开美团并搜索附近的火锅店。当前屏幕显示的是微信聊天界面。

我需要:
1. 启动美团应用
2. 在美团中搜索附近的火锅店

首先,我应该使用Launch功能打开美团应用。


==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 3.485s
思考完成延迟:        4.313s
总推理时间:          4.493s
==================================================
Parsing action: do(action="Launch", app="美团")
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Launch",
  "app": "美团"
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
好的,美团应用已经打开了。我可以看到美团的主界面,顶部有一个搜索框,显示着"土豆泥芝士火鸡面"。我需要点击这个搜索框,然后输入"火锅"来搜索附近的火锅店。

搜索框的位置大约在屏幕顶部,坐标大约在(389, 116)左右。


==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 4.451s
思考完成延迟:        5.066s
总推理时间:          5.264s
==================================================
Parsing action: do(action="Tap", element=[389,116])
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Tap",
  "element": [
    389,
    116
  ]
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
看起来我点击了搜索框后,页面跳转到了一个小说阅读页面。这可能是美团的某个功能页面。我需要返回到主界面,然后重新点击搜索框来搜索火锅店。让我先点击返回按钮。


==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 3.270s
思考完成延迟:        5.001s
总推理时间:          5.221s
==================================================
Parsing action: do(action="Tap", element=[75,77])
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Tap",
  "element": [
    75,
    77
  ]
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
出现了一个弹窗,显示"小说桌卡活动首次开启,直接赠送大额现金",金额为¥11.01,有一个"去桌卡访问立即提现"的按钮。我需要关闭这个弹窗,然后继续搜索火锅店。我可以点击弹窗上的关闭按钮(X按钮),位置大约在(499, 752)。


==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 2.563s
思考完成延迟:        3.203s
总推理时间:          3.536s
==================================================
Parsing action: do(action="Tap", element=[499,752])
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Tap",
  "element": [
    499,
    752
  ]
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
好的,弹窗已经关闭了。现在我看到的是小说阅读页面,顶部有一个搜索框,显示"吃喝玩乐上美团"。我需要点击这个搜索框,然后输入"火锅"来搜索附近的火锅店。搜索框的位置大约在(389, 139)左右。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 3.770s
思考完成延迟:        4.304s
总推理时间:          4.528s
==================================================
Parsing action: do(action="Tap", element=[389,139])
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Tap",
  "element": [
    389,
    139
  ]
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
很好!搜索页面已经打开了。我可以看到:顶部有一个搜索框,显示"搜索外卖、商家或商品",下面有历史搜索记录,包括"面条"、"电脑房"、"电脑"、"火鸡面"、"楠火锅"、"湘菜"、"火鸡面芝士烤冷面"、"药店"、"三七"等。我 还可以看到"发现"部分有一些推荐的搜索词,以及"附近"部分有一些分类图标,包括"小吃快餐"、"健身房"、"自习室"、"网吧"、"理发"等。

我需要在搜索框中输入"火锅"来搜索附近的火锅店。搜索框的位置大约在(389, 84)左右。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 2.413s
思考完成延迟:        3.486s
总推理时间:          3.689s
==================================================
Parsing action: do(action="Type", text="火锅")
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Type",
  "text": "火锅"
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
很好!我已经输入了"火锅",现在搜索框中显示"火锅",并且下面出现了一些搜索建议,包括:火锅、火锅食材、火锅自助、火锅外卖、火锅鸡、火锅团购套餐、火锅鸡、许府牛火锅双人餐49.9抢、火锅底料等。我需要点击"搜索" 按钮或者点击第一个搜索建议"火锅"来搜索附近的火锅店。搜索按钮的位置在右上角,大约在(863, 134)左右。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 3.476s
思考完成延迟:        4.387s
总推理时间:          4.608s
==================================================
Parsing action: do(action="Tap", element=[863,134])
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Tap",
  "element": [
    863,
    134
  ]
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
很好!搜索结果页面已经加载了。我可以看到:顶部显示"火锅",下面有筛选选项,包括"瑞家坚果"、"综合排序"、"距离最近"等。还有分类标签,包括"神券商家"、"双旦大促"、"快递"、"人气热销"、"美妙火锅"等。但是页面内 容区域目前是空白的,可能正在加载搜索结果。我需要等待一下,让搜索结果加载完成。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 2.602s
思考完成延迟:        3.546s
总推理时间:          3.709s
==================================================
Parsing action: do(action="Wait", duration="1 seconds")
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "do",
  "action": "Wait",
  "duration": "1 seconds"
}
==================================================


==================================================
💭 思考过程:
--------------------------------------------------
太好了!搜索结果已经加载完成了。我可以看到附近的火锅店列表,包括:\n1. 塔拉牧羊人涮肉馆 - 5.0分,99条评价,人均¥69,黎明广场,3.5km,有团购优惠,有多个菜品选项(100%好评度)\n2. 老胡同铜火锅(沈阳陶瓷大世界店) - 5.0分,192条评价,人均¥54,大东区,682m,有团购优惠,有多个菜品选项(100%好评度)\n3. 狼头山火锅KTV欢唱·烤串(陶瓷...) - 4.7分,147条评价,人均¥68,大东区,725m,有团购优惠,有多个菜品选项(100%好评度)\n4. 还有更多火锅店...

用户要求搜索附近的火锅店,现在已经成功搜索到了附近的火锅店列表,任务已经完成。

==================================================
⏱️  性能指标:
--------------------------------------------------
首 Token 延迟 (TTFT): 4.712s
思考完成延迟:        7.063s
总推理时间:          10.867s
==================================================
Parsing action: finish(message="任务完成!我已经成功打开美团并搜索到了附近的火锅店。搜索结果显示了多家附近的火锅店,包括:

1. **塔拉牧羊人涮肉馆** - 5.0分,人均¥69,距离3.5km
2. **老胡同铜火锅(沈阳陶瓷大世界店)** - 5.0分,人均¥54,距离682m
3. **狼头山火锅KTV欢唱·烤串** - 4.7分,人均¥68,距离725m

每家店都有详细的评分、评价数、人均消费和距离信息,还有团购优惠和菜品选项。您可以点击任意一家查看更多详情或选择菜品。")
--------------------------------------------------
🎯 执行动作:
{
  "_metadata": "finish",
  "message": "任务完成!我已经成功打开美团并搜索到了附近的火锅店。搜索结果显示了多家附近的火锅店,包括:\n\n1. **塔拉牧羊人涮肉馆** - 5.0分,人均¥69,距离3.5km\n2. **老胡同铜火锅(沈阳陶瓷大世界店)** - 5.0分,人均¥54,距离682m\n3. **狼头山火锅KTV欢唱·烤串** - 4.7分,人均¥68,距离725m\n\n每家店都有详细的评分、评价数、人均消费和距离信息,还有团购优惠和菜品选项。您可以点击任意一家查看更多详情或选择菜品。"
}
==================================================


🎉 ================================================
✅ 任务完成: 任务完成!我已经成功打开美团并搜索到了附近的火锅店。搜索结果显示了多家附近的火锅店,包括:

1. **塔拉牧羊人涮肉馆** - 5.0分,人均¥69,距离3.5km
2. **老胡同铜火锅(沈阳陶瓷大世界店)** - 5.0分,人均¥54,距离682m
3. **狼头山火锅KTV欢唱·烤串** - 4.7分,人均¥68,距离725m

每家店都有详细的评分、评价数、人均消费和距离信息,还有团购优惠和菜品选项。您可以点击任意一家查看更多详情或选择菜品。
==================================================


Result: 任务完成!我已经成功打开美团并搜索到了附近的火锅店。搜索结果显示了多家附近的火锅店,包括:

1. **塔拉牧羊人涮肉馆** - 5.0分,人均¥69,距离3.5km
2. **老胡同铜火锅(沈阳陶瓷大世界店)** - 5.0分,人均¥54,距离682m
3. **狼头山火锅KTV欢唱·烤串** - 4.7分,人均¥68,距离725m

每家店都有详细的评分、评价数、人均消费和距离信息,还有团购优惠和菜品选项。您可以点击任意一家查看更多详情或选择菜品。

有意思的是,进入美团以后,它跳到了广告页面,在运行结果能看出来。退出广告后,它成功找到了附近的火锅店。

评论

评论即代表你已阅读并同意评论协议
  1. Lane

    2025年的AI发展真的太迅猛了,先是面向开发者,出现了很多AI IDE,很快也将面向更多普通用户,成为个人的手机智能助理,期待2026年各大手机厂商和大模型巨头的表现:[cat-blobcatalt]

    3小时前 湖南电信
  2. obaby
    obaby oba.by

    这个功能不错,前端时间发布的豆包手机应该也是差不多的功能,不过豆包是全移动端了。

    5小时前 山东移动
内容加载中...