在iOS上体验Open-AutoGLM:从安装到流畅操作的完整指南

前言

最近我亲身体验了Open-AutoGLM在iOS设备上的表现,这个基于AI的iOS自动化工具给我留下了深刻印象。它能够理解自然语言指令,并自动操作手机完成各种任务。在这篇博客中,我将分享完整的安装过程、遇到的问题及解决方案,以及实际体验感受。

环境准备

1. 创建Python虚拟环境

首先需要准备一个干净的Python环境。我使用的是Anaconda:

bash

bash 复制代码
# 激活conda环境
. /opt/anaconda3/bin/activate && conda activate /opt/anaconda3/envs/AutoGLM

# 验证Python版本
python --version  # Python 3.12.8

2. 克隆项目仓库

bash 复制代码
git clone https://github.com/zai-org/Open-AutoGLM.git
cd Open-AutoGLM

安装过程

步骤1:安装依赖包

bash 复制代码
# 使用conda环境中的pip安装requirements.txt中的依赖
/opt/anaconda3/envs/AutoGLM/bin/pip install -r requirements.txt

安装过程顺利,主要依赖包括:

  • Pillow>=12.0.0(图像处理)
  • openai>=2.9.0(OpenAI API客户端)
  • 以及其他相关依赖

步骤2:安装Open-AutoGLM包

bash 复制代码
# 以可编辑模式安装
/opt/anaconda3/envs/AutoGLM/bin/pip install -e .

步骤3:获取特定PR分支

需要获取一个支持iOS PR143

bash 复制代码
# 用git命令拉取PR分支
git fetch origin pull/143/head:pr_143
git checkout pr_143

步骤4:安装iOS依赖工具

Open-AutoGLM需要libimobiledevice来连接iOS设备:

bash 复制代码
# 安装libimobiledevice
brew install libimobiledevice

遇到的问题:Homebrew ARM架构问题 (M1)

javascript 复制代码
Error: Cannot install under Rosetta 2 in ARM default prefix (/opt/homebrew)!

解决方案:使用正确的架构命令

bash 复制代码
arch -arm64 brew install libimobiledevice

步骤5:准备WebDriverAgent

WebDriverAgent是iOS自动化测试的核心组件:

bash 复制代码
# 克隆WebDriverAgent仓库
git clone https://github.com/appium/WebDriverAgent.git
cd WebDriverAgent

运行与配置

1.运行安装WebDirverAgent在手机上

这里需要使用Xcode打开WebDriverAgent.xcodeproj项目工程,并使用个苹果帐号配置bundle id进行签名设置

新开一个终端, 解锁手机, 运行WebDirverAgent

bash 复制代码
cd /path/to/WebDriverAgent
xcodebuild -project WebDriverAgent.xcodeproj \
           -scheme WebDriverAgentRunner \
           -destination 'platform=iOS,name=你的手机名称' \
           test

运行成功后,可以看到手机上安装了两个app: IntegrationAppWebDriverAgentRunner

期间需要确保手机处于解锁状态/输入密码解锁手机

成功后终端上会输出

less 复制代码
WebDriverAgentRunner-Runner[2339:504073] Built at Dec 14 2025 09:54:57
WebDriverAgentRunner-Runner[2339:504073] ServerURLHere->http://192.168.31.47:8100<-ServerURLHere

2.确保iOS设备已连接并信任电脑:

这里使用usb进行连接

bash 复制代码
# 检查设备连接
idevice_id -l
# 应该输出设备UDID,如:18513ab3335958d2cc31ec6f0934b37ab996ecd8

另开一个终端,输入以下端口映射命令

yaml 复制代码
iproxy 8100 8100

3.首次运行尝试

另起一个终端, 输入并运行以下ios.py命令, 这里总共需要有三个终端窗口同时存在,分别运行iproxyWebDirverAgentios.py

这里使用的是官方提供的Agent接口.所以需要注册账号并获取api-key BigModel替换下面命令中的your-api-key

bash 复制代码
cd /path/to/Open-AutoGLM

/opt/anaconda3/envs/AutoGLM/bin/python ios.py \
    --base-url "https://open.bigmodel.cn/api/paas/v4" \
    --model "autoglm-phone" \
    --api-key "your-api-key"

4.遇到的问题及解决方案

问题3:python库缺失

vbnet 复制代码
ImportError: Using SOCKS proxy, but the 'socksio' package is not installed.
Error: requests library not found. Install it: pip install requests

解决方案

bash 复制代码
/opt/anaconda3/envs/AutoGLM/bin/pip install socksio requests

实际体验

成功运行

当所有问题解决后,会看到以下提示:

体验

输入指令在小红书中搜索麦克杰克逊, 然后下面是agent思考过程与操作日志与WebDriverAgent的截屏日志

sql 复制代码
Enter your task:  在小红书中搜索麦克杰克逊

==================================================

💭 思考过程:

--------------------------------------------------

用户想要在小红书中搜索"麦克杰克逊"。当前在系统桌面。


我需要:

1. 启动小红书应用

2. 在小红书中找到搜索功能

3. 输入"麦克杰克逊"进行搜索


首先,我需要启动小红书应用。从截图中可以看到小红书的图标在左上角。
让我使用Launch工具来启动小红书。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Launch",

  "app": "小红书",

  "_metadata": "do"

}

==================================================
==================================================

💭 思考过程:

--------------------------------------------------

好的,小红书已经打开了。我可以看到当前在个人主页的"笔记"标签页。我需要找到搜索功能。
在屏幕顶部右侧,我可以看到一个搜索图标(放大镜图标)。让我点击它来进入搜索界面。
搜索图标的位置大约在右上角,坐标大约是 (932, 153)。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Tap",

  "element": [

    932,

    153

  ],

  "_metadata": "do"

}

==================================================
Physically tap on (1097, 391)
==================================================

💭 思考过程:

--------------------------------------------------

好的,搜索界面已经打开了。我可以看到一个搜索输入框,提示文字是"搜索我的笔记/收藏/赞过"。下方显示了一个键盘。

现在我需要:

1. 点击搜索输入框

2. 输入"麦克杰克逊"

3. 点击搜索按钮

让我先点击搜索输入框,然后输入文字。搜索输入框的位置大约在 (448, 153)。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Tap",

  "element": [

    448,

    153

  ],

  "_metadata": "do"

}

==================================================

Physically tap on (527, 391)
  
==================================================

💭 思考过程:

--------------------------------------------------

好的,搜索输入框已经被激活了,我可以看到光标在输入框中。现在我可以直接输入"麦克杰克逊"了。根据指南,Type操作会自动清除现有文本并输入新文本。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Type",

  "text": "麦克杰克逊",

  "_metadata": "do"

}

==================================================
==================================================

💭 思考过程:

--------------------------------------------------

太好了!我已经成功输入了"麦克杰克逊"。我可以看到搜索框中显示了"麦克杰克逊"这几个字。现在我需要点击右侧的"搜索"按钮来执行搜索。

搜索按钮在右下角,蓝色的按钮,位置大约在 (899, 847)。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Tap",

  "element": [

    899,

    847

  ],

  "_metadata": "do"

}

==================================================

Physically tap on (1059, 2164)

==================================================

💭 思考过程:

--------------------------------------------------

好的,搜索已经执行了。现在显示的是搜索结果页面。页面显示:

- 顶部有搜索框,显示"麦克杰克逊"

- 有几个标签:笔记·0、收藏·0、赞过·0、浏览记录·0

- 当前在"笔记"标签下

- 中间显示"没找到我的笔记"

这表示在用户的笔记中搜索"麦克杰克逊"没有找到相关内容。但是用户要求的是在小红书中搜索,可能用户是想搜索整个小红书的内容,而不是限制在用户的笔记中。

让我看看是否需要切换到其他标签。我注意到有"浏览记录·0"的标签,可能还有其他选项。但通常在小红书中搜索某个人名,我应该看看是否有相关的内容。

让我尝试点击其他标签看看是否有结果。或者,用户可能想要搜索的是"麦克杰克逊"这个人,而不是"麦克杰克逊"这个词。让我试试看是否有其他选项。

实际上,看起来这个搜索功能是搜索"我的笔记/收藏/赞过"中的内容,而不是搜索整个小红书的内容。如果用户想要搜索整个小红书的内容,可能需要使用不同的搜索方式。

让我尝试返回首页,看看是否有全局搜索功能。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Tap",

  "element": [

    98,

    932

  ],

  "_metadata": "do"

}

==================================================

Physically tap on (115, 2382)

==================================================

💭 思考过程:

--------------------------------------------------

好的,我已经返回到小红书的首页了。我可以看到:

- 顶部有导航栏:关注、发现、深圳

- 右上角有搜索图标(放大镜)

- 底部有导航栏:首页、市集、+、消息、我

现在我需要点击右上角的搜索图标来进行全局搜索。搜索图标的位置大约在 (926, 93)。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Tap",

  "element": [

    926,

    93

  ],

  "_metadata": "do"

}

==================================================

Physically tap on (1090, 237)
  
==================================================

💭 思考过程:

--------------------------------------------------

太好了!现在我进入了全局搜索界面。我可以看到:

- 顶部有搜索框,显示"李嘉诚儿子被插"(这是之前的搜索历史)

- 有"历史记录"部分,显示了一些历史搜索

- 有"猜你想搜"部分,显示了一些推荐搜索

- 有"小红书热点"部分

- 底部有键盘


现在我需要:

1. 点击搜索框

2. 输入"麦克杰克逊"

3. 点击搜索按钮

让我先点击搜索框,然后输入文字。搜索框的位置大约在 (448, 93)。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Tap",

  "element": [

    448,

    93

  ],

  "_metadata": "do"

}

==================================================

Physically tap on (527, 237)

==================================================

💭 思考过程:

--------------------------------------------------

好的,搜索框已经被激活了,我可以看到出现了一个弹出菜单,有"粘贴"和"自动填充"选项。现在我可以直接输入"麦克杰克逊"了。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Type",

  "text": "麦克杰克逊",

  "_metadata": "do"

}

==================================================
==================================================

💭 思考过程:

--------------------------------------------------

太好了!我已经成功输入了"麦克杰克逊",并且小红书显示了很多相关的搜索建议:

- 麦克杰克逊舞蹈

- 麦克杰克逊如何变白的

- 麦克杰克逊的经典歌曲

- 麦克杰克逊经典mv

- 麦克杰克逊太空步

- 麦克杰克逊

- 麦克杰克逊视频

- 麦克杰克逊女儿

- 麦克杰克逊超模伴舞

现在我需要点击右侧的"搜索"按钮来执行搜索,或者直接点击其中一个建议。让我点击右上角的"搜索"按钮。搜索按钮的位置大约在 (918, 93)。

--------------------------------------------------

🎯 执行动作:

{

  "action": "Tap",

  "element": [

    918,

    93

  ],

  "_metadata": "do"

}

==================================================

Physically tap on (1081, 237)

==================================================

💭 思考过程:

--------------------------------------------------

完美!搜索已经成功执行了。现在我可以看到"麦克杰克逊"的搜索结果页面:



顶部显示:

- 搜索框中显示"麦克杰克逊"

- 有多个标签:全部、用户、商品、图片、地点、群聊

- 当前在"全部"标签下

- 有一个提示:"为您显示'迈克杰克逊'的搜索结果,仍然搜索'麦克杰克逊'"

 
下方有多个分类标签:综合、经典歌曲、僵尸mv、舞蹈、白藏风、变白

搜索结果显示了多个与麦克杰克逊相关的内容:

1. "Michael Jackson 🌟 Dangerous 疯狂的舞蹈..." - 音符旅人,4391赞

2. "#迈克尔杰克逊 与维密超模同台飙歌比舞,创造了音..." - MJ群社区,8309赞

3. "迈克尔杰克逊 经典45°太空步" - 显示了一个视频

4. 右侧还有一个视频内容

任务已经成功完成!我已经在小红书中搜索了"麦克杰克逊",并且显示了相关的搜索结果。

--------------------------------------------------

🎯 执行动作:

{

  "_metadata": "finish",

  "message": "任务完成!我已经成功在小红书中搜索\"麦克杰克逊\"。搜索结果显示了多个相关内容,包括:\n\n1. 麦克杰克逊的舞蹈视频,如\"Dangerous 疯狂的舞蹈\"\n2. 与维密超模同台表演的内容\n3. 麦克杰克逊的经典45°太空步视频\n4. 还有其他相关的经典歌曲、MV、舞蹈等分类标签\n\n您现在可以浏览这些搜索结果,点击任何感兴趣的视频或内容查看详情。"

}

==================================================


🎉 ================================================

✅ 任务完成: 任务完成!我已经成功在小红书中搜索"麦克杰克逊"。搜索结果显示了多个相关内容,包括:


1. 麦克杰克逊的舞蹈视频,如"Dangerous 疯狂的舞蹈"

2. 与维密超模同台表演的内容

3. 麦克杰克逊的经典45°太空步视频

4. 还有其他相关的经典歌曲、MV、舞蹈等分类标签


您现在可以浏览这些搜索结果,点击任何感兴趣的视频或内容查看详情。

==================================================

Result: 任务完成!我已经成功在小红书中搜索"麦克杰克逊"。搜索结果显示了多个相关内容,包括:

1. 麦克杰克逊的舞蹈视频,如"Dangerous 疯狂的舞蹈"

2. 与维密超模同台表演的内容

3. 麦克杰克逊的经典45°太空步视频

4. 还有其他相关的经典歌曲、MV、舞蹈等分类标签

您现在可以浏览这些搜索结果,点击任何感兴趣的视频或内容查看详情。

总结

通过上述日志分析,它执行这个任务的过程:

  1. 首先它进行拆解任务: 启动小红书、找到搜索功能、输入搜索内容
  2. 由于之前有启动过小红书,并处于个人中心页面,所以它先是在个人中心进行搜索
  3. 然后发现不正确,重新定位到首页.
  4. 在首页的搜索框中进行搜索,并执行了搜索操作
  5. 最后根据搜索结果截图确认了任务完成

在iPhone 15 Pro上能基本无误的完成操作指令, 从日志可以看出,它的点击操作是通过点击坐标位置实现的,在主流手机上还算准确的. 但是在使用非主流手机(iPhone 6s)时, 它返回的坐标偏移较大, 会陷入点击->截屏->无效纠正->点击的死循环. 在github上也有比较多的点击不准确的issue

未来可能的应用场景:

  1. 自然语言自动化测试 - 直接通过产品需要文档自行拆解任务,进行自动化测试,减少编写自动化测试代码
  2. 外挂,游戏外挂,降低外挂制作的门槛
  3. app智能助手,提升各个app内的Ai助手能力. app内实现一套基于坐标点击的模拟框架代替WebDriverAgent功能

小实验: 提升智障Siri能力, 让Siri接入这套能力: 使用Open-AutoGLM给Siri装上眼睛和双手

相关推荐
SakuraOnTheWay2 小时前
玩转n8n | 我用n8n+AI把枯燥论文变成了手绘海报(附Prompt技巧)
人工智能
Maynor9962 小时前
Vibe Coding:AI驱动的编程新范式
人工智能
AiMagicGaGa2 小时前
AIGC 时代的“机器写作”:为何 AI 检测 (AI Detector) 已成为刚需?
人工智能·自然语言处理·aigc
数据的世界012 小时前
重构智慧书-第14条:现实与风度
人工智能
2401_841495642 小时前
【自然语言处理】语义基石:WordNet与知网赋能自然语言处理的深层逻辑与实践路径
人工智能·自然语言处理·机器翻译·信息检索·情感分析·知识问答·词义消歧
极客BIM工作室2 小时前
从技术架构角度看WAN:拆解通义万相的视频生成“引擎”
人工智能
陈天伟教授2 小时前
人工智能应用-机器视觉:车牌识别(1)
人工智能·神经网络·机器学习
程序员哈基耄2 小时前
AI塔罗占卜:科技与灵性的智慧对话
人工智能·科技
deardao2 小时前
【AAAI-26:时序概念漂移】DeepBooTS:用于时序漂移的双流残差增强
人工智能·时间序列·事件检测