AutoGLM 中文文档 下载 App

AutoGLM 的 10 种原子操作详解

操作语言的意义

AutoGLM 输出的不是"点击右上角搜索"这种自然语言,而是一套固定的结构化操作 JSON。这套"操作语言"只有 10 个词汇,是整个框架最核心的中间接口。模型学会了用这 10 个动作组合完成手机上的几乎任何 GUI 任务。

每个动作 JSON 包含:


Launch — 启动应用

{
  "action": "Launch",
  "app": "美团"
}

让设备打开一个指定名称的应用。框架内部维护了一份 App 名称到 Android 包名的映射表(在 phone_agent/config/apps.py 里),模型只需要说"美团",框架会翻译成 adb shell am start -n com.sankuai.meituan/.MainActivity。

适用场景:任务开始时、需要切换 App 时。

Tap — 点击指定坐标

{
  "action": "Tap",
  "element": [540, 960]
}

点击屏幕上的某个坐标点。模型根据视觉理解判断出按钮的像素位置,直接给坐标值。框架翻译成 adb shell input tap 540 960。

适用场景:绝大多数交互——点按钮、点图标、点菜单项、点链接。

Type — 输入文本

{
  "action": "Type",
  "text": "附近的火锅店"
}

在当前聚焦的输入框里输入文本。Android 上有个特殊限制:原生 adb shell input text 不支持中文,所以框架需要 ADB Keyboard 配合——这也是 ADB Keyboard 安装 成为必经步骤的原因。

适用场景:搜索框输入、表单填写、聊天发送。

Swipe — 滑动屏幕

{
  "action": "Swipe",
  "element": [[540, 1200], [540, 300]],
  "desc": "向上滑动"
}

从一个坐标滑到另一个坐标,描述里标注滑动方向。翻译成 adb shell input swipe 540 1200 540 300 300(最后一个参数是滑动时长 ms)。

适用场景:列表翻页、下拉刷新、引导页滑动。

Back — 返回上一页

{
  "action": "Back"
}

模拟按下手机的返回键。Android 上是 adb shell input keyevent KEYCODE_BACK。

适用场景:导航层级跳转、关闭当前页面、从二级页面回到首页。

Home — 返回桌面

{
  "action": "Home"
}

模拟按下 Home 键回到手机桌面。Android 上是 adb shell input keyevent KEYCODE_HOME。

适用场景:任务开始前(确保在桌面)、App 卡死需要强制退出。

Long Press — 长按

{
  "action": "Long Press",
  "element": [540, 960]
}

在某个坐标上持续按住约 500ms。Android 上通过 adb shell input swipe 同坐标实现(滑动距离为 0)。

适用场景:拖拽操作、长按删除、长按弹出菜单。

Double Tap — 双击

{
  "action": "Double Tap",
  "element": [540, 960]
}

在同一坐标快速点击两次。框架内部连续调用两次 Tap 实现。

适用场景:地图缩放、图片双击放大、某些 App 的双击快捷操作。

Wait — 等待页面加载

{
  "action": "Wait"
}

让 Agent 暂停几秒,等页面加载完成。具体等待时长由框架配置,一般 3~5 秒。这是防御性操作——模型判断"页面还在转圈"时主动触发。

适用场景:网络请求加载、动画过渡、弹窗出现。

Take_over — 请求人工接管

{
  "action": "Take_over",
  "desc": "微信登录需要手机号验证码"
}

模型判断当前操作需要人类介入时触发。比如遇到登录验证码、支付密码输入、银行卡绑定等敏感场景。框架触发 takeover_callback(回调函数可自定义),暂停 Agent 执行,等人工完成后继续。

适用场景:验证码登录、支付确认、二次验证、隐私授权弹窗。


10 种操作的设备实现对比

操作Android (ADB)HarmonyOS NEXT (HDC)iOS (WDA)
Launcham start -naa start -a EntryAbility -b按 bundleId 启动
Tapinput tapuitest clicktap(x, y)
TypeADB Keyboard 注入uitest input(原生支持)type(text)
Swipeinput swipeuitest swipeswipe
Backinput keyevent BACKuitest back按导航栏返回
Homeinput keyevent HOMEuitest homehome()
Long Press长按模拟uitest longClicklongPress
Double Tap两次 tapuitest doubleClickdoubleTap
Wait时间 sleep时间 sleep时间 sleep
Take_overPython 回调Python 回调Python 回调

自定义操作(进阶)

框架预留了自定义扩展点。如果你需要 Agent 执行某个框架没内置的操作(比如长按某个按钮的同时拖动),可以在 phone_agent/actions/handler.py 里注册新的 action handler,并在 System Prompt 里告诉模型这个新动作的存在和用法。

相关阅读