ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

多模态视觉+云端真机实操:让AI助手真正动手办事

多模态视觉+云端真机实操:让AI助手真正动手办事

1. 先拆掉那层"聊天框套壳",再谈 AI 助手

这年头,市面上叫"AI 助手"的东西很多,但绝大多数你点进去,本质还是一个聊天框。你问一句,它答一句,顶多再帮你调几个 API、查个天气、生成张图片,然后就没有然后了。这样的产品,我习惯叫它"聊天框套壳"——底层塞一个大语言模型,外面包一层 UI,对话体验再顺滑,也改变不了一个事实:它只有一张嘴,没有眼睛,也没有手。

所以当我看到"多模态视觉 + 云端真机实操"这个方向时,第一反应是:这才是 AI 助手该走的路。这件事的核心不是让 AI 变得"更会聊天",而是让它真正看懂你屏幕上的内容,并且代替你在真实的 App 里把事办完。我理解中的这条新路径,就是把感知能力(多模态视觉)和执行能力(云端真机实操)拼在一起,构成一个完整的闭环:看见界面、理解任务、动手操作、确认结果。这篇文章,我想把它掰开揉碎讲清楚——它到底解决什么问题、技术链路怎么设计、落地时有哪些坑,以及为什么说它不是简单的套壳升级。

如果你在做 AI 应用产品、Agent 类工具,或者你只是一个对"AI 到底能不能帮我把事办了"感兴趣的人,这篇内容都值得看完。我会把我自己踩过的坑、验证过的做法,毫无保留地写出来。

2. 为什么"会聊天"解决不了真实问题

2.1 套壳产品缺的是"眼睛"和"手"

先明确一个前提:大语言模型本身的强项是文本理解与生成。你给它一段话,它给你一段话,这在信息获取、文案撰写、头脑风暴这类场景里已经很好用了。但现实世界的任务,绝大多数不是"说"出来的,而是"做"出来的。比如帮用户把手机里的照片整理成相册、在某个购物 App 里完成下单、把后台系统的表单逐项填写并提交——这些操作,都有着强烈的空间属性和界面属性:你要知道按钮在哪里、输入框在哪里、当前页面处于什么状态,然后才能执行点击、输入、滑动。这些信息,纯文本根本承载不了。

你可能会说:那我们可以让模型调用 API 啊,对接业务系统不就行了?这句话看起来有道理,但落到现实就尴尬了。API 本质上是系统预先开放给你的一段入口,你只能在它允许的范围内操作。一个外卖 App 如果不给你开放"自动下单"的接口,你的 AI 助手就算再聪明,也没法替用户点餐。而真机实操走的是另一条路:我不需要你开放接口,我像人一样,通过屏幕看到按钮、模拟点击,绕过"接口限制"直接在界面层完成任务。这就是"眼睛"和"手"的价值——也是它和套壳产品的第一道分水岭。

2.2 没有执行闭环,一切都是建议

聊天框套壳的另一个问题,是它永远停在"建议层"。你说"帮我处理一下这个表格",它只能回你"你可以打开 Excel,选中数据,点击排序……"但真正把表格处理完的是谁?是你自己。AI 没有参与到操作过程中,它既不知道你屏幕上的表格长什么样,也无法验证自己说的步骤是否执行成功。说白了,它就是个只会纸上谈兵的军师,发号施令,却从不上战场。

而"多模态视觉 + 云端真机实操"要做的,恰恰是把军师变成士兵。AI 通过屏幕截图理解当前状态,然后直接输出操作动作,真实地点击、输入、滑动,执行完再截图反馈给模型,让它确认"这一步是否达到预期"。整个过程形成循环:感知 → 决策 → 执行 → 校验 → 重新感知。这个闭环一旦建立,AI 才真正从"给建议的人"变成了"办事的人"。我自己在测试这类方案时,第一次看到 AI 自己去点击搜索框、输入关键词、按下搜索按钮并且真的跳出了结果页时,那种冲击感其实很强——它不再只是一个对话框,而是一个能动手的智能体在替你把事情走完了。

3. 多模态视觉:不是"看图说话",而是"看懂界面"

3.1 从识别像素到理解布局

很多人一听到"多模态视觉",就想到"AI 能识别图片里有没有猫",或者"AI 能描述一张风景图"。这些确实属于多模态的范畴,但放到"AI 助手实操"场景里,视觉要做的事情要复杂得多。它需要回答四个层面的问题:

第一,界面里有什么。比如当前屏幕上有搜索框、返回按钮、商品卡片、广告位,这些元素分别是什么。第二步,这些东西在什么位置。一个按钮的语言描述哪怕是"右上角的搜索图标",落到执行层也需要转成具体坐标,因为你的点击动作是物理层面的,模型必须要理解空间关系。第三,当前页面处于什么状态。是在加载中、已经弹窗、还是空数据?这个判断直接影响下一步是该等等还是该返回。第四,元素之间的逻辑关系。比如"登录按钮"和"输入框"属于同一个表单模块,这种结构化的理解,才能支撑模型做出合理的操作规划。

所以对 AI 助手来说,多模态视觉不是"看图说话"这种锦上添花的能力,而是刚需——它是模型获取真实世界状态、把对话转化为行动的基础接口。没有这个能力,AI 就是瞎子在屋里乱撞,嘴上说得再好听,落到动作就是瞎猜。

我在实际搭建这类系统时,最直观的感受是:把一张屏幕截图喂给模型,比喂给它几十轮人工转述的状态描述都管用。因为界面上的信息密度太高了——控件文案、图标状态、列表内容、弹窗层级,全部浓缩在一张图里。你与其设计一堆复杂的 JSON 结构去描述界面,不如直接把截图丢给多模态模型,让它自己去理解。这也是现在 Agent 做 UI 操作任务普遍采用的技术路线之一。

3.2 光看还不够:把"看到的东西"变成"可执行的动作"

理解界面只是第一步,最终目的是生成动作。这里就涉及到模型的输出设计。以我常用的方案为例,会让多模态模型输出一个结构化的动作指令,而不是让模型直接写一句自然语言"请点击右上角那个按钮"。结构化指令长这样:

{ "action": "click", "target": "搜索框", "coordinates": [540, 320], "reason": "任务第一步需要先定位搜索入口", "completed": false }

这里有几个关键字段:action 是动作类型,包括 click(点击)、input(输入文本)、swipe(滑动)、back(返回)、wait(等待)等;target 是模型自己给目标元素命名的中文描述;coordinates 是归一化坐标;reason 是模型解释自己为什么这么做;completed 则表示是否认为这一步已经达成子目标。

我特别说一下 coordinates。同一个 App,在不同分辨率的手机上,同一个按钮的像素位置是完全不同的。所以我会统一把截图缩放到一个标准尺寸,比如 1000x2200,然后让模型输出在这个标准画布上的坐标,执行层再根据当前设备的实际分辨率做反向换算。这套设计本质上就是把"空间理解"和"物理执行"解耦——模型只需要理解标准画布,执行层负责适配具体设备。这也是整个链路里很容易被忽略但很重要的细节。

3.3 别把每帧截图都喂给大模型,要学会做减法

这里插一个成本警告。很多人初跑通多模态视觉 Agent 时,会觉得"每步截图喂给模型"这个方案很完美,然后跑几个任务之后直接被账单吓到。原因是:一张高分辨率截图的 token 消耗,通常相当于几千个文本 token,而且进入模型的图片尺寸越大、细节越多,成本越高。如果你执行一个 20 步的操作任务,每步都要上传一张完整截图,token 消耗会非常可观,响应时间也会拉长。

我自己的优化做法是在靠近数据源的地方加一个轻量的预处理模块,通常是一台本机或边缘设备上的小模型做三道工序:

  • 第一道,做感知压缩。把截图缩放、降噪,去掉状态栏等无关区域,只保留与应用内容相关的部分。
  • 第二道,做变动检测。让本机模型对比上一步和当前截图,如果界面没有任何实质变化,就不需要重新请求云端大模型,直接沿用上一步的判断。
  • 第三道,做敏感区裁剪。比如截图里出现了用户输入的私密信息,就在上传前用本地模型把它马赛克掉,只保留模型做决策必须看到的界面结构。

说到这里,就顺带回应一下最近行业内比较热的那个说法——"AI 智能体助手加本地模型"。我自己对这句话的理解是:本地模型不是用来替代云端大模型的,而是用来当"看门人"和"预处理工"的。云端的大模型负责全局理解与复杂决策,本地的小模型负责隐私过滤、差异化裁剪、轻量 OCR、界面变动检测这类杂活。两边分工协作,既能保住决策能力,又能守住隐私和成本。别把云端和本地对立起来,它们解决的是不同层面的问题。

4. 云端真机实操:从"帮你想"到"帮你做"

4.1 真机实操和串 API 的根本差别

如果说多模态视觉解决的是"AI 怎么看世界",那云端真机实操解决的就是"AI 怎么动手改变世界"。为什么强调"真机"?因为这直接决定了 AI 能做到什么深度。

API 调用方案下,AI 能做的事完全取决于接口开放清单。接口里有"发送消息",AI 就能发消息;接口里没有"批量删除联系人",AI 就永远做不到。而真机实操方案的思路是:我给 AI 一台真实跑着的设备——它就是一台手机或者一台电脑,AI 通过屏幕截图了解状态,然后像人一样在屏幕上点击、滑动、输入。凡是人能在界面上做的事,AI 都能学着做。不需要对方开放任何专用接口,App 的界面本身就是 API,而且是一个覆盖所有功能、永远不过期的通用 API。

这让我想起一个类比:API 集成像是你去餐厅买套餐,只能点人家配好的几样;真机实操像是你直接走进后厨(窥探界面),看菜下刀,想怎么操作就怎么操作。当然,后者对技术的要求更高,因为它要处理的不是稳定的接口文档,而是每天都在变的真实界面。

4.2 云端设备池里,AI 到底是怎么"动手"的

很多人会好奇,AI 没有实体手,它怎么在真机上点击?这里其实是靠设备自动化层来完成的,这块技术在软件测试行业已经非常成熟,AI 要做的只是"接管方向盘"。

以 Android 设备为例,底层链路大致是这样:设备接入云平台后,通过 adb(Android Debug Bridge)建立连接。执行层可以调用 adb 命令模拟点击,比如adb shell input tap x y,这就是一次真实的触摸事件,App 收到的是和人类手指一模一样的信号。为了更精确地识别界面元素,我们还会结合 UIAutomator 这类系统级 UI 解析框架,拿到每个控件的 bounds 位置和控件属性。也就是说,不是单纯靠"像素坐标猜",而是有系统层面的界面结构数据做辅助;当结构数据拿不到时,再退回纯视觉方案,靠多模态模型从截图里识别目标位置。两条路互相兜底,稳定性会好很多。

iOS 设备上稍有不同,系统管控更严格,常用的思路是通过 XCTest 框架把设备包成一个可执行自动化用例的运行环境,或者使用云端真机平台提供的无障碍通道来下发操作指令。桌面端则简单一些,Windows 上可以用 WinAppDriver,macOS 上有 AppleScript 配合辅助功能接口。不管你用哪套底层执行框架,对上层 AI 助手来说逻辑都一样:发出一条"点击坐标、输入文本、滑动方向"的指令,执行框架把指令翻译成系统级动作,作用到设备上。

4.3 为什么要强调"云端",而不做纯本机方案

这里有一个方向选择问题:AI 助手也可以直接跑在用户本机上,为什么文章标题要强调"云端真机实操"?我个人的理解是,云端不是"端"的选择,而是"规模化"的选择。

首先是一个可用性问题。如果想做一款覆盖大量用户的 AI 助手产品,你不可能在每个用户的手机里都预埋一个可被 AI 自由调度的自动化框架。iOS 上个人开发者搞不定权限,企业设备又涉及繁琐的 MDM 准入流程,安卓机型更是一千台有一千个兼容性问题。但云端设备池不一样,设备在机房统一部署、统一镜像、统一控制,AI 面对的是标准化的执行环境,这比处理用户手里的杂牌真机要省心太多。

其次是并发和隔离。云端设备池可以同时扩张到几十上百台设备,同一个任务可以并行分发到多个设备上测、跑、比对;每台设备之间又是完全隔离的,这台任务跑崩了不影响另一台。这对于需要批量处理的任务非常友好。比如做一个批量巡检任务,AI 每天自动登录 80 个不同账号检查一遍主页状态,如果靠单本机方案,光是排队就要耗一整夜;云端设备池可以开 80 台设备并行跑,几分钟就完事。

最后是隐私边界的考量。本机方案要读用户屏幕、模拟用户触控,数据在用户设备上过水,敏感度高,而且一旦误操作,影响的是用户的真实账号和真实数据。云端方案可以把这些操作隔离在专用测试设备和测试账号里,即使出了错,遭殃的也只是云端沙盒,不会波及用户的主设备和主账号。

5. 完整链路复盘:从一张截图到一次成功执行

5.1 整条链路四个层,我一般这么划分

我自己在搭建这类系统时,习惯把"多模态视觉 + 云端真机实操"拆成四个逻辑层:感知层、理解层、执行层、校验层。感知层负责从设备拿到图像快照和控件结构树;理解层由云端多模态模型消化这些信息,结合任务目标输出下一步动作指令;执行层收到指令后调用自动化框架,在真实设备上完成点击、输入等物理操作;最后回到校验层,重新截图让模型判断执行是否产生了预期变化。四个层循环往复地跑,直到任务到达终态。

听起来像流水线,但这个流水线不是死的。真正跑起来你会发现,每个环节都可能失败,所以校验层才是整个闭环的灵魂。没有校验的 Agent 是盲目的,它点了按钮就算完成任务,至于按钮点没点进去、弹窗有没有挡住内容,一概不管。加入校验层之后,AI 才有机会在错的时候自我修正——发现这一步没效果,就换一个坐标再点一次,或者改一种操作策略。

5.2 "AI 智能体助手 + 本地模型"的在链路里的落位

这个架构落到实际操作里,怎么编排本地模型和云端模型的分工?我举个具体例子,就拿"AI 帮我在某 App 里查询并记录电费账单"这个任务来说。

第一步,云端 Agent 先接收用户的自然语言任务,通过一个规划模块拆成子任务,比如"打开电费 App → 进入账单页 → 滑动到出账月份 → 截图读取金额 → 填入表单"。然后感知层把当前屏幕截图发到本地小模型,本地模型先做一件事:批量裁剪+隐私处理,比如把账号信息、头像区域打码,再把界面缩小。接着云端大模型拿到处理完的图,看清楚当前页面结构,输出第一步动作"点击 App 图标"。

第二步,执行层在云端设备上真的点击了图标,App 开始启动。这时候我故意做了个反直觉的设置:不让系统立刻截图,而是让本地小模型等待一秒并监听屏幕变化。当屏幕出现了"首页加载完成"的特征后,才触发新一轮截图。这一步很关键,它可以明显减少无效截图和误判次数,也是"本地模型看门人"最典型的应用场景。

第三步,进入业务操作后,任务的每一步几乎都是上面循环的重复。遇到需要输入的场景,云端大模型生成文本,执行层用输入法注入;遇到需要滑动的场景,云端模型输出方向和距离,执行层用 adb 手势模拟。直到最后填完表单,云端模型对比最终截图,发现"保存成功"文案出现,给整个任务打上终态标记。

这套"本地小模型管杂活,云端大模型做决策"的搭配,是我目前跑下来体验最稳的组合。你当然也可以让云端大模型直接处理原始截图,但等你看到响应延迟和账单数字的时候,大概率会回头把本地模型加回来。

5.3 指令协议统一:别让每一层说不同的语言

这里还有一个容易被新手忽略,但做系统时必须提前规划的问题:链路里每个模块的数据格式必须统一。比如感知层拿到的是图片和 XML 结构树,理解层输出的是 JSON 动作指令,执行层要求的是 adb 命令,校验层又需要图片对比结果。如果每一步都单独设计数据结构,整个系统很快就会变成一团乱麻。

我建议从第一天就定一套统一的任务描述协议。核心字段至少包括:task_id(任务标识)、step_index(步骤序号)、action(动作类型)、payload(动作参数)、expectation(预期结果描述)、status(当前状态)。说白了,每个环节的输入输出都是"同一张工单",只是在不同环节填充不同的字段。这样出问题时,你能很快定位是感知层给的数据不对,还是理解层生成的坐标偏了,还是执行层根本没执行成功。

6. 实操现场:我踩过的四个高频坑

6.1 时序坑:页面还没加载完就截图,模型只能瞎猜

如果一个任务失败,八成以上的原因可以追溯到"截图时机不对"。App 的页面是有加载过程的,从点击图标到页面完全渲染,快的零点几秒,慢的几秒钟。如果在加载中途截了图,模型看到的是一半白屏一半骨架屏,它再聪明也无法判断页面结构,只能靠记忆猜。可问题是:不同网络环境下,加载时间完全不可控,死等固定秒数又大大拖慢效率。

我的解决方案是引入"预期状态等待"机制。在执行每次点击前,让上游模型顺便输出一句对点击后画面的预期特征,比如"预计出现灰色加载动画,2 秒后变成账单列表"。执行层点完之后,本地小模型持续监听新截图,一旦识别到"账单列表"出现,立刻触发下一步;如果超过 10 秒还没出现,就上报超时,让 Agent 决定是重试还是放弃。这个方法实测下来,能把无效截图率从三成压到一成以内。

6.2 坐标坑:分辨率不一致,模型点到了空气上

我用多模态模型输出坐标的时候,一开始直接让它输出原始屏幕像素坐标。结果换了一台不同分辨率的测试设备后,同样的任务在旧设备上运行顺畅,在新设备上疯狂点错位置。原因不难理解:同一个按钮,在 1080P 屏和 2K 屏上的像素位置不一样,模型训练时看到的界面比例可能也不一样。

后来我把整个流程改成:所有截图先缩放成统一的 1000x2200 标准画布,模型只输出标准画布上的坐标,执行层拿到坐标后乘以一个比例系数,换算到目标设备的实际分辨率再执行。项目里我会在设备初始化时算好这个系数,并且每次点击前再做一次边界检查,防止坐标超出屏幕范围。这一改之后,跨设备迁移的稳定性提升非常明显。

6.3 假成功坑:模型以为点到了,其实屏幕毫无反应

这是最容易让 AI 助手看起来"很聪明但其实没用"的坑。模型在思考链里写了"已点击搜索框",执行层也确实执行了一次 tap 命令,逻辑上一切正常,但真实设备上那个 tap 没起任何作用。原因可能是:App 实际弹了一个蒙层拦截了触摸事件;或者 tap 坐标落在了控件之外的点击死区;或者 App 未响应,界面卡死。

我的排查策略是"三步验证法":第一步,对比点击前后的截图,用基础像素差来判断界面是否发生变化,如果一模一样说明点击动作大概率没生效;第二步,如果画面变了,再查看变化是否符合预期的状态变化,比如是否进入了下一页、是否出现了键盘;第三步,极少数情况下,画面变了但参数不对,这时候就需要让模型再读一次截图,判断当前页面是否符合"预期状态",而不是只看"有无变化"。记住一个原则:动作执行不等于动作生效,只有校验层确认了才叫成功。

6.4 成本坑:截图比你想的贵得多

最后说钱的事。我早期跑一个 30 步的任务,全程使用完整截图喂云端多模态模型,一轮跑下来光视觉 token 的费用就抵得上几十万字文本。尤其在遇到"页面没变化"的重复轮次时,每次都上传一张几乎一样的截图,纯粹是烧钱。

应对办法有三条:本机做相似度去重,截图没变就不请求;对截图做区域裁剪,只上传与任务相关的那一块;降低截图分辨率,让模型在够识别的前提下使用更小的图。三条叠起来,成本至少降一半,响应也快很多。

7. 新路径适合做什么,以及现在的边界在哪

7.1 这几个场景,我建议优先尝试

把"多模态视觉 + 云端真机实操"落到产业里,有几个场景是我认为当下最值得投入的:

  • App 自动化回归测试:测试是这套技术最成熟的应用方向。AI 读取 UI 界面并自动生成测试步骤,改动界面后自动回归,确实能省下大量人力和时间。
  • 复杂表单与业务流程代办:比如财务系统里重复录入报销单、后台系统里批量修改配置。这些业务 API 往往老旧或不全,人又不得不天天在界面里点来点去,正好是 AI 真机操作的用武之地。
  • 适老化和无障碍辅助:很多老年人不会操作智能手机,AI 助手可以变成一双无形的"手",根据视觉理解替他们完成操作,比如拨号、调大字体、打开健康码。这类场景温暖且刚需。
  • RPA 升级:传统 RPA 依赖界面选择器,界面一变脚本就废。用多模态视觉替代选择器后,抗界面变化的能力会有质的提升。

7.2 现在还没解决好的硬边界

先别把这条路吹上天,我和它缠斗了小半年,深知它还有几个让人头疼的短板。

第一是长任务的记忆一致性。一个 50 步的任务,跑到第 30 步时,模型很容易忘记最初的目标,或者被中间的干扰信息带偏。目前业界的主流方案是外挂独立的记忆模块或任务清单,让它随时回顾目标,但效果并不稳定,尤其当任务中出现了计划外的弹窗时,模型经常不知所措。

第二是错误恢复能力。人类操作时误点了一个页面,会看一眼然后返回继续操作。AI 做真机实操时,一旦执行了一个与预期不符的操作,整个链条就会开始连锁出错。如果要让 AI 学会"发现走错路之后,自己导航回正确的路径",这需要非常强的环境理解能力和规划能力,现在的模型还远远谈不上可靠。

第三是跨 App 连续协作。虽然单 App 内的操作已经能跑通不少,但现实中的复杂任务往往要跨多个 App:从短信里复制验证码、跳到银行 App 转账、再回到记账 App 记录,每一步都是体系和权限的跨越。目前的自动化底层对这种跨 App 任务支持得并不顺滑,需要额外的系统级权限和状态管理。

7.3 给准备上手的团队一个建议:从最小可闭环开始

我在跟不少朋友聊这套方案时,经常听到一句"我们想做一个全能的 AI 手机管家"。我的反应都是:先别。把一个具体场景、一个具体 App、一个 10 步以内的任务跑通闭环,远比一开始就想覆盖所有 App 要重要得多。因为这个领域真正的复杂度不来自模型本身,而是来自真实世界的长尾情况。每处理一种异常分支,你的系统就会变厚一点,而这些经验是通用的——今天你在 A 场景里踩过的坑,明天在 B 场景里会原样回报给你。

不妨从这样一个任务开始:让 AI 自动登录一个 Web 后台,找到昨天的销售报表,把关键几个数字填入一个固定的表单,点击提交,再截图确认提交成功。这个任务小,但它覆盖了感知、动作、校验、异常处理全链路,做完之后你自然知道下一步该补哪块能力。我自己迭代这套架构的节奏,就是从这类"有点用但还不复杂"的小任务起步,一点点把边界往外推的。

真要说个人体会,我现在最深的感受是:多模态视觉 + 云端真机实操这条路最大的价值,不是造出一个"什么都会"的终极助手,而是让 AI 第一次真正承担起了"执行人"的角色。它不再是给你出主意的那种"军师",而是那个帮你把事跑完的"同事"。在这个角色转变里,技术难点很多,方向却很清晰——让 AI 能看得见真实界面、能动手操作真实设备、能在出错时自我纠正,这三件事,每往前推进一寸,都意味着 AI 应用又往深处走了一步。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进