AgentCPM-GUI:开源多模态设备端智能体,一键实现安卓应用自动化操作
一、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两种推理方式,适配不同部署场景(快速测试、高并发服务);
动作空间支持扩展,可根据需求新增自定义动作类型(如“双指缩放”“滑动解锁”等)。

三、技术细节
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实现复杂任务规划的核心技术,其流程如下:
任务拆解:模型将用户的复杂指令拆解为多个子步骤(如“搜索火锅→筛选评分→查看店铺”拆解为3个子步骤);
动作生成:针对每个子步骤,生成候选操作指令(如“点击搜索框”“输入关键词”);
效果预测:模型预测当前操作执行后的界面状态(如“输入关键词后会显示搜索结果页”);
奖励反馈:根据实际执行结果(任务是否推进、是否出现错误界面)给予奖励或惩罚;
模型更新:通过强化学习算法调整模型参数,优化后续步骤的动作选择。
通过这一机制,模型能够逐步学会“先做什么、再做什么”,避免无效操作,提升复杂任务的成功率。
(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自动化的案例工具,直观展示多模态模型的应用;
科研实验:为自然语言处理、计算机视觉、强化学习等领域的研究提供开源数据集与基准模型,支持相关算法的对比与优化。

五、使用方法
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)预期输出:与直接调用一致,返回包含thought与POINT的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开源许可证,允许商业使用、修改、分发,但需保留原作者版权声明,且修改后的代码需采用相同许可证开源。
七、相关链接
模型下载(Hugging Face):https://huggingface.co/OpenBMB/AgentCPM-GUI
中文应用评估数据集CAGUI:https://huggingface.co/datasets/OpenBMB/CAGUI
八、总结
AgentCPM-GUI是一款面向安卓系统的开源设备端GUI智能代理,基于80亿参数MiniCPM-V模型构建,通过多模态理解、强化推理与中文应用专项优化,实现了“自然语言指令→屏幕截图→自动化操作”的端到端解决方案。其核心优势在于高质量的GUI组件识别、深度适配中文应用场景、轻量化设备端部署能力及丰富的动作空间设计,在应用测试自动化、办公效率提升、生活服务简化、批量运营等场景中具有极高的实用价值。项目提供了完整的安装部署教程、两种推理方式与微调工具,开源的代码与数据集也为开发者提供了灵活的二次开发空间,无论是普通用户还是技术开发者,都能快速上手并发挥其自动化价值,是当前中文场景下GUI自动化领域的优秀开源工具。
版权及免责申明:本文由@AI工具集原创发布。该文章观点仅代表作者本人,不代表本站立场。本站不承担任何相关法律责任。
如若转载,请注明出处:https://www.aipuzi.cn/ai-news/agentcpm-gui.html

