AgentCPM-GUI:开源多模态设备端智能体,一键实现安卓应用自动化操作

原创 发布日期:
68

一、AgentCPM-GUI是什么?

AgentCPM-GUI是一款面向安卓系统的开源设备端GUI(图形用户界面)智能代理,由清华大学自然语言处理实验室(THUNLP)、中国人民大学与ModelBest联合研发。它基于80亿参数的MiniCPM-V模型优化而来,核心能力是接收用户自然语言指令与智能手机屏幕截图,通过对GUI元素的识别、理解与推理,自主生成相应的操作指令,实现安卓应用的自动化交互。

简单来说,AgentCPM-GUI就像一位“手机操作助手”——无需手动点击屏幕、输入文字或切换页面,只需告诉它你想完成的任务(如“打开小红书搜索美食攻略”“点击哔哩哔哩的会员按钮”),并提供当前手机屏幕截图,它就能自动分析界面布局、识别目标组件,输出精准的操作步骤,直接驱动安卓设备完成任务。

作为首个针对中文应用深度优化的开源GUI智能代理,AgentCPM-GUI打破了传统自动化工具对脚本依赖、适配性差的痛点,通过大语言模型的多模态理解与强化推理能力,实现了“自然语言指令→屏幕截图→自动化操作”的端到端闭环,且全程在设备端运行,兼顾效率与隐私安全。

二、功能特色

AgentCPM-GUI围绕“精准识别、高效执行、中文适配、设备端部署”四大核心目标设计,具备以下五大突出特色:

1. 高质量GUI接地能力,组件识别精准高效

“GUI接地”是指模型将自然语言指令与屏幕上的可视化组件建立关联的能力,这是GUI自动化的核心基础。AgentCPM-GUI基于大规模双语安卓数据集进行预训练,涵盖了安卓系统中常见的所有GUI组件类型,包括按钮、输入框、文本标签、图标、下拉菜单、弹窗等,能够精准识别不同应用、不同分辨率下的组件位置与功能属性。

无论是原生安卓应用的标准组件,还是第三方应用的自定义UI(如小红书的卡片式布局、大众点评的评分图标),模型都能通过预训练积累的组件特征库,快速完成“指令关键词→组件匹配”的映射,为后续操作生成提供准确的定位基础。

2. 深度适配中文应用,覆盖30+热门场景

作为首个开源的中文应用专用GUI智能代理,AgentCPM-GUI针对中文应用的界面设计、交互逻辑、文本特征进行了专项微调。目前已覆盖30+款国内热门安卓应用,涵盖生活服务、娱乐影音、社交分享、工具类等多个领域,具体包括:

应用类别 代表应用
地图导航 高德地图
生活服务 大众点评、美团
娱乐影音 哔哩哔哩、腾讯视频
社交分享 小红书、微博
办公工具 WPS、石墨文档
电商购物 淘宝、京东

这些应用的界面文本多为中文,交互逻辑带有鲜明的国内产品特色(如“立即领取”“加入购物车”“关注”等高频按钮),AgentCPM-GUI通过针对性微调,解决了通用GUI模型在中文场景下的“理解偏差”问题,操作成功率显著高于同类多语言模型。

3. 强化规划与推理,复杂任务轻松应对

传统GUI自动化工具往往只能执行单一、简单的点击操作,无法处理需要多步骤规划、逻辑判断的复杂任务。AgentCPM-GUI通过强化微调(Reinforcement Fine-Tuning, RFT)技术,赋予模型“思考能力”——在输出每一步操作前,会先分析任务目标、当前界面状态、后续步骤路径,再生成最优操作指令。

例如,当用户指令为“在大众点评中搜索北京朝阳区的火锅,筛选评分4.5分以上的店铺并查看top3”时,模型会依次完成:识别“搜索框”并点击→输入“北京朝阳区 火锅”→点击“搜索”按钮→找到“筛选”入口→设置“评分4.5+”条件→滚动页面查看前3家店铺。整个过程中,模型会自主处理界面跳转、弹窗干扰、步骤依赖等问题,无需用户额外干预。

4. 紧凑动作空间设计,设备端运行高效轻量化

设备端部署的核心诉求是“低资源消耗、高推理速度”。AgentCPM-GUI通过优化动作空间定义与输出格式,实现了轻量化运行:

  • 动作空间精简:将安卓操作归纳为6类核心动作(点击、长按、滑动、按键、输入文本、等待),覆盖99%以上的应用交互场景,避免冗余动作类型;

  • 输出格式紧凑:采用无额外空格的JSON格式,平均动作长度仅9.7个令牌(Token),远低于同类模型的20+令牌,大幅减少推理计算量;

  • 图像预处理优化:自动将输入截图的长边缩至1120px,在不影响组件识别精度的前提下,降低图像数据的存储与计算开销。

这些设计让AgentCPM-GUI能够在普通安卓设备或配置中等的PC端流畅运行,无需高端GPU支持,满足设备端本地化部署的需求。

5. 开源开放,支持二次开发与灵活扩展

AgentCPM-GUI的全部代码、训练数据、评估基准均已开源,开发者可基于此进行二次开发:

  • 提供SFT(监督微调)与RFT(强化微调)完整训练源码,支持自定义数据集适配特定应用场景;

  • 开源中文应用评估基准CAGUI,方便开发者验证模型优化效果;

  • 支持Hugging Face与vLLM两种推理方式,适配不同部署场景(快速测试、高并发服务);

  • 动作空间支持扩展,可根据需求新增自定义动作类型(如“双指缩放”“滑动解锁”等)。

AgentCPM-GUI:开源多模态设备端智能体,一键实现安卓应用自动化操作

三、技术细节

1. 模型基础架构

AgentCPM-GUI基于MiniCPM-V 8B(80亿参数)构建,MiniCPM-V是一款轻量化多模态大语言模型,具备图像-文本对齐、跨模态理解的核心能力。AgentCPM-GUI在其基础上进行了以下优化:

  • 多模态输入层增强:针对屏幕截图的特征,优化图像编码器的局部特征提取能力,提升GUI组件的细粒度识别精度;

  • 动作生成头设计:新增专门的动作生成输出层,适配JSON格式的结构化输出,确保操作指令的语法正确性;

  • 强化微调模块:引入RFT训练框架,通过“任务成功率”作为奖励信号,优化模型的步骤规划与逻辑推理能力。

模型支持torch.bfloat16精度推理,可部署在GPU(CUDA)或CPU环境,设备端部署时推荐使用GPU加速以提升响应速度。

2. 核心技术原理

(1)GUI组件识别与接地

模型通过大规模双语安卓GUI数据集预训练,学习组件的视觉特征(形状、颜色、位置分布)与文本特征(组件上的文字描述)的关联关系。例如,当用户指令中出现“会员”关键词时,模型会同时匹配屏幕中“文字为会员”的组件与“常见会员按钮的视觉特征”(如红色背景、皇冠图标、右上角位置等),实现精准定位。

预训练数据包含百万级安卓应用截图与对应的组件标注,覆盖不同分辨率(720P、1080P、2K)、不同系统版本(安卓9-14)、不同应用类型,确保模型在复杂场景下的泛化能力。

(2)强化微调(RFT)推理机制

RFT是AgentCPM-GUI实现复杂任务规划的核心技术,其流程如下:

  1. 任务拆解:模型将用户的复杂指令拆解为多个子步骤(如“搜索火锅→筛选评分→查看店铺”拆解为3个子步骤);

  2. 动作生成:针对每个子步骤,生成候选操作指令(如“点击搜索框”“输入关键词”);

  3. 效果预测:模型预测当前操作执行后的界面状态(如“输入关键词后会显示搜索结果页”);

  4. 奖励反馈:根据实际执行结果(任务是否推进、是否出现错误界面)给予奖励或惩罚;

  5. 模型更新:通过强化学习算法调整模型参数,优化后续步骤的动作选择。

通过这一机制,模型能够逐步学会“先做什么、再做什么”,避免无效操作,提升复杂任务的成功率。

(3)动作空间与坐标系统

模型采用标准化的动作定义与坐标系统,确保操作指令的通用性与准确性:

动作类型 必选参数 可选参数 功能说明 输出示例
Click(点击) POINT:[x,y](相对坐标) duration(时长)、thought(推理过程)、STATUS(任务状态) 单点触摸屏幕指定位置,适用于按钮、图标等组件 {"POINT":[729,69],"thought":"点击会员按钮访问会员页面","STATUS":"continue"}
Long Press(长按) POINT:[x,y]、duration(≥200ms) thought、STATUS 长按指定位置,适用于弹出菜单、拖动组件等场景 {"POINT":[480,320],"duration":1000,"thought":"长按弹出更多选项"}
Swipe(滑动) POINT:[x,y](起点)、to(方向/终点坐标) duration、thought、STATUS 从起点向指定方向或终点滑动,适用于翻页、滚动列表 {"POINT":[500,200],"to":"down","thought":"向下滑动查看更多店铺"}
Press key(按键) PRESS:HOME/BACK/ENTER thought、STATUS 触发安卓系统按键,适用于返回主页、退出应用等 {"PRESS":"BACK","thought":"返回上一页面重新操作"}
Type text(输入文本) TYPE:"文本内容" thought、STATUS 在当前输入焦点处插入文本,适用于搜索框、评论区等 {"TYPE":"北京朝阳区 火锅","thought":"输入搜索关键词"}
Wait(等待) duration(毫秒) thought、STATUS 闲置指定时长,适用于加载页面、弹窗延迟等场景 {"duration":500,"thought":"等待页面加载完成"}
Task-level status(任务状态) STATUS:start/continue/finish等 thought、duration 报告任务进度,可单独输出或与动作配合 {"STATUS":"finish","thought":"已完成筛选4.5分以上火锅店铺的任务"}

坐标系统采用0-1000的相对坐标(原点为屏幕左上角),避免因设备分辨率差异导致的操作偏差。实际使用时,需通过以下公式进行相对坐标与实际坐标的转换:

  • 相对坐标 → 实际坐标:abs_x = int(rel_x / 1000 * 屏幕实际宽度);abs_y = int(rel_y / 1000 * 屏幕实际高度)

  • 实际坐标 → 相对坐标:rel_x = int(abs_x / 屏幕实际宽度 * 1000);rel_y = int(abs_y / 屏幕实际高度 * 1000)

3. 性能评估数据

模型的核心性能通过“接地基准测试”与“代理基准测试”两大维度验证,测试结果如下:

(1)接地基准测试(组件识别精度)

模型 Fun2Point(组件定位) Text2Point(文本-组件匹配) Bbox2text(组件-文本映射) 平均得分
AgentCPM-GUI-8B 79.1 76.5 58.2 71.3
Qwen2.5-VL-7B 59.8 59.3 50.0 56.4
Intern2.5-VL-8B 17.2 24.2 45.9 29.1
GPT-4o with Grounding 44.3 44.0 14.3 44.2

数据显示,AgentCPM-GUI-8B在组件定位、文本-组件匹配等核心任务上大幅领先同类模型,平均得分比第二名Qwen2.5-VL-7B高出14.9分,充分证明其GUI接地能力的优越性。

(2)代理基准测试(任务执行成功率)

数据集 评估指标 AgentCPM-GUI-8B Qwen2.5-VL-7B UI-TARS-7B
中文应用(CAGUI) Type Match(类型匹配) 96.86% 74.18% 88.62%
中文应用(CAGUI) Exact Match(精确匹配) 91.28% 55.16% 70.26%
Android Control-High(复杂任务) Exact Match 69.17% 62.90% 74.43%
GUI-Odyssey(通用场景) Type Match 90.85% 59.54% 86.06%

在中文应用专属数据集CAGUI中,AgentCPM-GUI-8B的精确匹配成功率达到91.28%,远超其他模型;在复杂任务场景(Android Control-High)中,其表现仅次于UI-TARS-7B,展现出强大的复杂任务执行能力。

四、应用场景

AgentCPM-GUI的核心价值是“自动化安卓应用交互”,适用于需要重复操作、批量处理或无人值守的场景,具体包括以下六大类:

1. 应用测试自动化

开发者在测试安卓应用时,往往需要重复执行“点击按钮→输入文本→验证结果”的流程(如测试登录功能、支付流程、页面跳转逻辑)。AgentCPM-GUI可通过自然语言指令快速生成测试脚本,自动完成多轮测试,支持夜间无人值守测试,大幅提升测试效率。例如:

  • 指令:“测试小红书的登录功能,输入手机号13800138000,点击获取验证码,输入666666,点击登录并验证是否进入首页”

  • 模型会自动识别登录界面的手机号输入框、验证码按钮、登录按钮,依次执行操作并反馈结果。

2. 办公场景自动化

对于需要在安卓应用中完成的重复性办公任务,AgentCPM-GUI可实现“一键自动化”:

  • 数据录入:在WPS、石墨文档中批量录入表格数据(如“将Excel中的100条客户信息录入到手机端CRM应用”);

  • 报表生成:自动打开企业微信、钉钉的统计模块,截图关键数据并汇总生成报表;

  • 通知处理:自动筛选手机端邮件、短信中的重要信息(如“提取今日所有工作相关的邮件主题与发件人”)。

3. 生活服务场景

普通用户可通过AgentCPM-GUI简化日常应用操作,尤其适合复杂或繁琐的流程:

  • 旅游规划:“在高德地图中搜索北京到上海的自驾路线,筛选高速优先,查看总时长与过路费”;

  • 购物比价:“在淘宝、京东中搜索‘无线耳机’,对比前5款产品的价格、评分与销量”;

  • 内容收藏:“在小红书搜索‘减脂餐做法’,收藏点赞量前10的笔记”。

4. 批量运营与推广

对于自媒体、电商从业者等需要批量操作多个账号或内容的用户,AgentCPM-GUI可大幅降低运营成本:

  • 账号维护:“登录10个抖音账号,依次查看私信并回复‘您好,请问有什么可以帮您?’”;

  • 内容发布:“在小红书发布预设的图文笔记,添加标签#美食探店 #北京朝阳,设置可见范围为公开”;

  • 数据监控:“每小时查看一次店铺在大众点评的评分与评论,记录新增负面评价”。

5. 无障碍辅助

针对行动不便或操作手机有困难的用户,AgentCPM-GUI可作为无障碍辅助工具:

  • 语音指令操作:结合语音转文字工具,将用户的语音指令转换为文本,模型自动执行操作(如“打开微信,给家人发送‘我已安全到家’”);

  • 简化复杂操作:将多步骤操作简化为单指令(如“一键打开健康码”“一键预约疫苗”)。

6. 教育与科研场景

  • 教学演示:在AI、自动化相关课程中,作为GUI自动化的案例工具,直观展示多模态模型的应用;

  • 科研实验:为自然语言处理、计算机视觉、强化学习等领域的研究提供开源数据集与基准模型,支持相关算法的对比与优化。

AgentCPM-GUI:开源多模态设备端智能体,一键实现安卓应用自动化操作

五、使用方法

1. 环境准备

(1)硬件要求

  • 推荐配置:GPU(NVIDIA RTX 3090/4090,显存≥16GB)、CPU≥8核、内存≥32GB、硬盘≥50GB(用于存储模型与数据集);

  • 最低配置:CPU≥4核、内存≥16GB、GPU(显存≥8GB),支持设备端轻量化运行,但推理速度会略有下降。

(2)软件依赖

  • 操作系统:Windows 10/11、Linux(Ubuntu 20.04+)、macOS 12+;

  • 编程语言:Python 3.11(推荐版本,其他3.8+版本可能需要适配依赖包);

  • 核心依赖库:PyTorch、Transformers、PIL(图像处理)、Requests(网络请求)、vLLM(可选,用于高并发推理)。

2. 安装步骤

(1)克隆仓库并创建环境

# 克隆GitHub仓库
git clone https://github.com/OpenBMB/AgentCPM-GUI
cd AgentCPM-GUI

# 创建conda环境(推荐,避免依赖冲突)
conda create -n gui_agent python=3.11
conda activate gui_agent

# 安装依赖包
pip install -r requirements.txt

(2)下载模型文件

从Hugging Face下载AgentCPM-GUI模型(链接:https://huggingface.co/OpenBMB/AgentCPM-GUI),将下载后的模型文件解压,放置于项目目录下的`model/AgentCPM-GUI`文件夹中,目录结构如下:

AgentCPM-GUI/
├── model/
│  └── AgentCPM-GUI/
│    ├── config.json
│    ├── model-00001-of-00002.safetensors
│    ├── model-00002-of-00002.safetensors
│    ├── tokenizer.json
│    └── ...(其他模型文件)
├── assets/
├── eval/
├── sft/
├── rft/
└── ...(其他项目文件)

3. 两种推理方式(详细教程)

(1)Hugging Face直接调用(适合快速测试)

该方式适用于单条指令测试,无需部署服务,直接通过Python脚本调用模型:

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from PIL import Image
import json

# 1. 加载模型与分词器(trust_remote_code=True启用自定义模型逻辑)
model_path = "model/AgentCPM-GUI" # 模型存放路径
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
  model_path,
  trust_remote_code=True,
  torch_dtype=torch.bfloat16 # 采用bfloat16精度,平衡速度与精度
)
model = model.to("cuda:0") # 部署到GPU(无GPU可改为"cpu",但速度较慢)

# 2. 定义输入信息(用户指令+屏幕截图)
instruction = "请点击屏幕上的‘会员’按钮" # 用户自然语言指令
image_path = "assets/test.jpeg" # 屏幕截图路径(可替换为自己的截图)
image = Image.open(image_path).convert("RGB") # 读取图像并转换为RGB格式

# 3. 图像预处理(长边缩至1120px,节省计算资源)
def __resize__(origin_img):
  resolution = origin_img.size
  w, h = resolution
  max_line_res = 1120 # 最大长边分辨率
  if h > max_line_res:
    w = int(w * max_line_res / h)
    h = max_line_res
  if w > max_line_res:
    h = int(h * max_line_res / w)
    w = max_line_res
  # 使用LANCZOS插值法 resize,保持图像清晰度
  img = origin_img.resize((w, h), resample=Image.Resampling.LANCZOS)
  return img

image = __resize__(image)

# 4. 构建对话格式(符合模型输入要求)
messages = [
  {
    "role": "user",
    "content": [
      f"<Question> {instruction} </Question> \n 当前屏幕截图:",
      image # 直接传入PIL图像对象
    ]
  }
]

# 5. 配置动作Schema(启用推理过程输出)
ACTION_SCHEMA = json.load(open('eval/utils/schema/schema.json', encoding="utf-8"))
items = list(ACTION_SCHEMA.items())
insert_index = 3
# 将"thought"设为必填项,输出模型推理过程(可改为"optional"关闭)
items.insert(insert_index, ("required", ["thought"]))
ACTION_SCHEMA = dict(items)

# 6. 定义系统提示词(指定模型角色与输出规则)
SYSTEM_PROMPT = f'''# Role
你是一名熟悉安卓系统触屏GUI操作的智能体,将根据用户的问题,分析当前界面的GUI元素和布局,生成相应的操作。

# Task
针对用户问题,根据输入的当前屏幕截图,输出下一步的操作。

# Rule
- 以紧凑JSON格式输出
- 输出操作必须遵循Schema约束

# Schema
{json.dumps(ACTION_SCHEMA, indent=None, ensure_ascii=False, separators=(',', ':'))}'''

# 7. 模型推理(设置温度参数,控制输出随机性)
outputs = model.chat(
  image=None, # 图像已包含在messages中,此处设为None
  msgs=messages,
  system_prompt=SYSTEM_PROMPT,
  tokenizer=tokenizer,
  temperature=0.1, # 0.1-0.3为宜,值越低越稳定
  top_p=0.3,
  n=1, # 输出1个结果
)

# 8. 输出结果
print("模型输出:")
print(outputs)

预期输出示例

{"thought":"任务目标是点击屏幕上的‘会员’按钮。当前界面显示了应用的推荐页面,顶部有一个导航栏。点击‘会员’按钮可以访问应用的会员相关内容。","POINT":[729,69]}

(2)vLLM服务部署(适合高并发场景)

当需要处理多条指令或提供API服务时,推荐使用vLLM部署模型,支持高并发推理,降低延迟:

第一步:启动vLLM服务
# 启动vLLM服务器(显存不足时添加--max_model_len 2048限制模型长度)
vllm serve model/AgentCPM-GUI \
--served-model-name AgentCPM-GUI \
--tensor_parallel_size 1 \ # 显卡数量(单卡设为1)
--trust-remote-code \ # 信任远程代码
--limit-mm-per-prompt image=10 # 限制每张提示词的图像数量

服务启动后,默认监听http://localhost:8000/v1/chat/completions端点。

第二步:通过API调用服务
import base64
import io
import json
import requests
from PIL import Image

# 服务端点(与启动的vLLM服务地址一致)
END_POINT = "http://localhost:8000/v1/chat/completions"

# 1. 配置动作Schema与系统提示词(与直接调用一致)
ACTION_SCHEMA = json.load(open('eval/utils/schema/schema.json', encoding="utf-8"))
items = list(ACTION_SCHEMA.items())
insert_index = 3
items.insert(insert_index, ("required", ["thought"]))
ACTION_SCHEMA = dict(items)

SYSTEM_PROMPT = f'''# Role
你是一名熟悉安卓系统触屏GUI操作的智能体,将根据用户的问题,分析当前界面的GUI元素和布局,生成相应的操作。

# Task
针对用户问题,根据输入的当前屏幕截图,输出下一步的操作。

# Rule
- 以紧凑JSON格式输出
- 输出操作必须遵循Schema约束

# Schema
{json.dumps(ACTION_SCHEMA, indent=None, ensure_ascii=False, separators=(',', ':'))}'''

# 2. 图像编码工具(将PIL图像转为base64格式,适配API传输)
def encode_image(image: Image.Image) -> str:
  with io.BytesIO() as in_mem_file:
    image.save(in_mem_file, format="JPEG")
    in_mem_file.seek(0)
    return base64.b64encode(in_mem_file.read()).decode("utf-8")

# 3. 图像预处理函数(与直接调用一致)
def __resize__(origin_img):
  resolution = origin_img.size
  w, h = resolution
  max_line_res = 1120
  if h > max_line_res:
    w = int(w * max_line_res / h)
    h = max_line_res
  if w > max_line_res:
    h = int(h * max_line_res / w)
    w = max_line_res
  img = origin_img.resize((w, h), resample=Image.Resampling.LANCZOS)
  return img

# 4. 推理函数(输入指令与图像,调用API获取结果)
def predict(text_prompt: str, image: Image.Image):
  # 构建对话消息
  messages = [
    {"role": "system", "content": SYSTEM_PROMPT},
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": f"<Question> {text_prompt} </Question> \n 当前屏幕截图:(<image>./</image>)"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": f"data:image/jpeg;base64, {encode_image(image)}" # 图像base64编码
          }
        }
      ]
    }
  ]
  
  # 构建请求参数
  payload = {
    "model": "AgentCPM-GUI", # 与服务启动时的--served-model-name一致
    "temperature": 0.1,
    "messages": messages,
    "max_tokens": 2048, # 最大输出令牌数
  }
  
  # 发送POST请求
  headers = {"Content-Type": "application/json"}
  response = requests.post(END_POINT, headers=headers, json=payload)
  # 解析响应结果
  assistant_msg = response.json()["choices"][0]["message"]["content"]
  return assistant_msg

# 5. 测试调用
if __name__ == "__main__":
  # 加载图像并预处理
  image = __resize__(Image.open("assets/test.jpeg"))
  # 用户指令
  instruction = "请点击屏幕上的‘会员’按钮"
  # 调用API获取结果
  response = predict(instruction, image)
  print("API输出:")
  print(response)

预期输出:与直接调用一致,返回包含thoughtPOINT的JSON字符串。

4. 微调方法(进阶使用)

若需适配特定应用或场景,可基于项目提供的SFT与RFT源码进行微调:

(1)SFT(监督微调)

  • 数据准备:按照项目指定格式(参考eval/utils/schema/schema.json),准备“指令+截图+正确操作”的监督数据集;

  • 训练脚本:运行sft目录下的训练脚本,配置数据集路径、学习率、训练轮数等参数;

  • 模型保存:训练完成后,模型会自动保存到指定目录,可直接用于推理。

(2)RFT(强化微调)

  • 基础模型:需先完成SFT训练,以SFT模型作为初始化模型;

  • 奖励函数配置:在rft目录下修改奖励函数,定义“任务成功”的判断标准(如是否完成指定操作、是否达到目标界面);

  • 训练启动:运行RFT训练脚本,模型会通过交互反馈不断优化。

六、常见问题解答(FAQs)

1. 模型支持哪些设备部署?

支持Windows、Linux、macOS系统,可部署在CPU、GPU(NVIDIA CUDA)设备上。推荐使用GPU部署以保证推理速度,最低要求GPU显存≥8GB;CPU部署适用于测试场景,复杂任务可能存在延迟。

2. 如何获取安卓应用的屏幕截图?

  • 手机端:直接通过安卓系统的截图功能(如电源键+音量下键)获取,保存后传输到电脑;

  • 模拟器:使用雷电模拟器、BlueStacks等安卓模拟器,在模拟器中操作应用并截图;

  • 自动化工具:结合ADB(安卓调试桥),通过命令行获取手机实时截图(命令:adb exec-out screencap -p > screenshot.jpeg)。

3. 模型输出的坐标如何在实际设备上使用?

模型输出的是0-1000的相对坐标,需根据设备实际分辨率转换为绝对坐标。例如,若手机屏幕分辨率为1080×2400(宽×高),模型输出POINT:[500, 500],则绝对坐标为:

  • 绝对宽度:500 / 1000 * 1080 = 540

  • 绝对高度:500 / 1000 * 2400 = 1200
    可通过ADB命令执行点击操作:adb shell input tap 540 1200

4. 模型支持iOS系统吗?

目前仅支持安卓系统应用的操作,暂不支持iOS。原因是iOS的GUI组件布局、交互逻辑与安卓存在差异,且iOS的截图权限、自动化控制方式与安卓不同,后续可能通过适配扩展支持。

5. 为什么模型有时会识别不到目标组件?

可能的原因及解决方案:

  • 截图模糊或分辨率过低:重新截取清晰截图,确保组件文字、图标可辨认;

  • 组件被弹窗、遮挡层覆盖:关闭弹窗后重新截图;

  • 应用界面为自定义UI,未在预训练数据中覆盖:使用SFT微调,添加该应用的标注数据;

  • 指令关键词与组件文本不一致:优化指令表述(如组件文本为“VIP会员”,指令需对应改为“点击VIP会员按钮”)。

6. 如何提高复杂任务的执行成功率?

  • 拆分复杂指令:将多步骤任务拆分为多个简单指令,逐步执行(如“搜索火锅→筛选评分→查看店铺”拆分为3条指令);

  • 启用thought输出:通过required: ["thought"]查看模型推理过程,若推理偏差,可调整指令表述;

  • 进行SFT微调:针对特定应用或任务场景,补充监督数据进行微调,优化模型对该场景的适配性。

7. 模型支持批量处理多条指令吗?

支持。可通过循环调用推理函数,依次处理多条指令。若需高并发处理,推荐使用vLLM服务部署,通过API批量提交请求,提升处理效率。

8. 项目的开源许可证是什么?

采用Apache-2.0开源许可证,允许商业使用、修改、分发,但需保留原作者版权声明,且修改后的代码需采用相同许可证开源。

七、相关链接

八、总结

AgentCPM-GUI是一款面向安卓系统的开源设备端GUI智能代理,基于80亿参数MiniCPM-V模型构建,通过多模态理解、强化推理与中文应用专项优化,实现了“自然语言指令→屏幕截图→自动化操作”的端到端解决方案。其核心优势在于高质量的GUI组件识别、深度适配中文应用场景、轻量化设备端部署能力及丰富的动作空间设计,在应用测试自动化、办公效率提升、生活服务简化、批量运营等场景中具有极高的实用价值。项目提供了完整的安装部署教程、两种推理方式与微调工具,开源的代码与数据集也为开发者提供了灵活的二次开发空间,无论是普通用户还是技术开发者,都能快速上手并发挥其自动化价值,是当前中文场景下GUI自动化领域的优秀开源工具。

打赏
THE END
作者头像
AI工具集
工具不孤岛,AI集大成——这里有你要的一切智能解法