惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 【当耐特】
月光博客
月光博客
Vercel News
Vercel News
D
Docker
I
InfoQ
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
有赞技术团队
有赞技术团队
雷峰网
雷峰网
博客园 - 聂微东
小众软件
小众软件
Y
Y Combinator Blog
腾讯CDC
L
LangChain Blog
The GitHub Blog
The GitHub Blog
宝玉的分享
宝玉的分享
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
T
The Blog of Author Tim Ferriss

ImQi1

本站 CMS 已开源,欢迎体验 抖音刷到了一个模拟高中的游戏 或许我们每个人都有问题 介绍下本站特色功能及一些杂谈 蜘蛛侠4,咋说呢,还是挺烂的 找个工作好难啊 跟风做了一系列地图界面 川渝游结束,浅浅记录一下 来成都看大熊猫 跨越了两千公里,只为见到你 为了一个女孩,我哭了一整晚 彻底换到新的 CMS 了,Glass 主题介绍 我的 Nuxt 版网站即将上线了 个人毕业设计展 尝试从情绪中走出 更新到Ty1.3,顺便维护一些插件 没想到现在的编程AI已经这么好用了 Typecho 图床从USS迁移至COS ChatGPT年度总结,卖号纠纷,代码块新样式 近期拍摄的新照片 12月近况,实况照片功能 理想的未来和现实的现在 4000公里首摔,真是当头一棒 属实是信息差了,没想到现在的手机生态这么完善 比较是快乐的小偷 搬家,新车,父亲手术
zai-org / Open-AutoGLM 已开源,体验一下
· 2025-12-24 · via ImQi1

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

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

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