StableLearn Logo

搜索内容

AI Agents 7 min read

Open-AutoGLM:基于 AutoGLM 的开源手机智能助手框架

Open-AutoGLM 是基于 AutoGLM 构建的手机智能助手框架,支持多模态屏幕理解和自动化操作,用自然语言控制手机完成各种任务。

Cover image for Open-AutoGLM:基于 AutoGLM 的开源手机智能助手框架

本文发布于 283 天前,内容可能已过时,请注意甄别。

这是什么?

简单来说,Open-AutoGLM 就是一个能帮你自动操作手机的 AI 助手。你只需要告诉它”打开小红书搜索美食”,它就会自己看屏幕、点按钮、滑页面,帮你把事情办了。

它能做什么?

  • 看懂手机屏幕上的内容(用的是视觉语言模型)
  • 自动点击、滑动、输入文字
  • 理解你的意图,自己规划操作步骤
  • 遇到需要登录或验证码的地方,会提醒你手动处理

放心用:遇到敏感操作会先问你,不会乱来。还支持 WiFi 远程调试,不用一直插着数据线。

⚠️ 这个项目是用来学习研究的,别拿去干坏事哦。

先把模型下载下来

模型下载链接
AutoGLM-Phone-9B🤗 Hugging Face / 🤖 ModelScope

目前只支持中文,多语言版本在路上了。

环境准备

1. Python

用 Python 3.10 或更高版本就行。

2. 装个 ADB

ADB 是用来连接和控制手机的工具,必须装。

  1. 去官网下载,解压到你喜欢的地方
  2. 把路径加到环境变量里

Mac 用户:

   # 比如你解压到了 ~/Downloads/platform-tools
export PATH=${PATH}:~/Downloads/platform-tools

Windows 用户:可以搜一下”Windows 配置 ADB 环境变量”,教程很多。

3. 手机设置

你需要一台 Android 7.0 以上的手机(或者模拟器也行),然后:

  1. 开开发者模式:去设置 > 关于手机,疯狂点击”版本号”大概 10 次,直到提示”开发者模式已开启”
  2. 开 USB 调试:去设置 > 开发者选项,打开”USB 调试”
  3. 用数据线连上电脑,跑一下 adb devices,能看到设备就说明成功了

4. 装个特殊键盘

为了让 AI 能输入文字,需要装一个 ADB Keyboard。

装好后记得去设置 > 输入法里把它启用。

开始部署

1. 装依赖

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

2. 检查手机连接

注意:数据线要能传数据,有些线只能充电是不行的。

   # 看看手机连上没
adb devices

# 能看到类似这样的输出就对了:
# List of devices attached
# emulator-5554   device

3. 启动 AI 模型

用 vLLM 把模型跑起来:

   python3 -m vllm.entrypoints.openai.api_server \
 --served-model-name autoglm-phone-9b \
 --allowed-local-media-path /   \
 --mm-encoder-tp-mode data \
 --mm_processor_cache_type shm \
 --mm_processor_kwargs "{\"max_pixels\":5000000}" \
 --max-model-len 25480  \
 --chat-template-content-format string \
 --limit-mm-per-prompt "{\"image\":10}" \
 --model zai-org/AutoGLM-Phone-9B \
 --port 8000

跑起来之后,模型服务就在 http://localhost:8000/v1 了。

怎么用?

命令行玩法

   # 进入交互模式,可以一直聊
python main.py --base-url http://localhost:8000/v1 --model "autoglm-phone-9b"

# 直接给个任务
python main.py --base-url http://localhost:8000/v1 "找附近评分最高的电影院,帮我导航过去"

# 看看支持哪些 App
python main.py --list-apps

用代码调用

   from phone_agent import PhoneAgent
from phone_agent.model import ModelConfig

# 告诉它模型在哪
model_config = ModelConfig(
    base_url="http://localhost:8000/v1",
    model_name="autoglm-phone-9b",
)

# 创建助手
agent = PhoneAgent(model_config=model_config)

# 让它干活
result = agent.run("打开淘宝搜索无线耳机")
print(result)

不想插线?用 WiFi 连

不想一直插着数据线?可以用 WiFi 远程控制手机。

怎么设置

  1. 手机和电脑连同一个 WiFi
  2. 手机上开启”无线调试”(在开发者选项里)
   # 连接手机(IP 和端口换成你手机上显示的)
adb connect 192.168.1.100:5555

# 看看连上没
adb devices
# 能看到 192.168.1.100:5555 device 就成功了

常用命令

   # 看看连了哪些设备
adb devices

# 连接
adb connect 192.168.1.100:5555

# 断开
adb disconnect 192.168.1.100:5555

# 指定用哪台设备执行任务
python main.py --device-id 192.168.1.100:5555 --base-url http://localhost:8000/v1 --model "autoglm-phone-9b" "打开抖音刷视频"

支持哪些 App?

目前支持 50 多个主流应用:

类别应用
社交聊天微信、QQ、微博
电商购物淘宝、京东、拼多多
外卖美食美团、饿了么、肯德基
出行旅游携程、12306、滴滴
视频娱乐B站、抖音、爱奇艺
音乐音频网易云音乐、QQ音乐、喜马拉雅
生活服务大众点评、高德地图、百度地图
内容社区小红书、知乎、豆瓣

想看完整列表?跑一下 python main.py --list-apps。

能做哪些操作?

操作描述
Launch启动应用
Tap点击指定坐标
Type输入文本
Swipe滑动屏幕
Back返回上一页
Home返回主屏幕
Long Press长按
Double Tap双击
Wait等待页面加载
Take_over请求手动接管(登录/验证码)

高级配置

环境变量

变量描述默认值
PHONE_AGENT_BASE_URL模型 API 地址http://localhost:8000/v1
PHONE_AGENT_MODEL模型名称autoglm-phone-9b
PHONE_AGENT_MAX_STEPS每个任务最大步数100
PHONE_AGENT_DEVICE_IDADB 设备 ID(自动检测)

模型参数

   from phone_agent.model import ModelConfig

config = ModelConfig(
    base_url="http://localhost:8000/v1",
    api_key="EMPTY",  # 有 API 密钥就填,没有就空着
    model_name="autoglm-phone-9b",
    max_tokens=3000,  # 回复最长多少
    temperature=0.1,  # 越低越稳定
    frequency_penalty=0.2,
)

Agent 参数

   from phone_agent.agent import AgentConfig

config = AgentConfig(
    max_steps=100,  # 一个任务最多执行多少步
    device_id=None,  # 不填就自动找设备
    verbose=True,  # 想看 AI 在想什么就开这个
)

自定义交互

想自己控制确认流程?可以这样:

   def my_confirmation(message: str) -> bool:
    """遇到敏感操作时会调用这个"""
    return input(f"要执行 {message} 吗?(y/n): ").lower() == "y"


def my_takeover(message: str) -> None:
    """需要你手动操作时会调用这个"""
    print(f"需要你手动处理: {message}")
    input("搞定了按 Enter...")


agent = PhoneAgent(
    confirmation_callback=my_confirmation,
    takeover_callback=my_takeover,
)

遇到问题?

找不到设备

重启一下 ADB 试试:

   adb kill-server
adb start-server
adb devices

打不了字

  1. 检查 ADB Keyboard 装了没
  2. 去设置里看看有没有启用
  3. AI 会自动切换键盘,你不用管

截图是黑的

这说明 App 在显示敏感内容(比如支付页面、银行 App)。这时候 AI 会让你手动操作,正常的。

相关链接

分享文章

更多文章