EcoAgent
论文 [] 设计了一个端云协作的闭环推理和执行算法 EcoAgent:云端大模型做规划与反思,端侧小模型做 UI 操作、结果验证和屏幕摘要.
输入是用户指令 Ins 和初始手机屏幕状态 S0,输出是最终手机状态 Sf. 算法先调用云端 Planning Agent 做初始规划:
得到一个计划 P0,每个步骤是一个二元组:$(ST_t, EX_t)$. 其中 ST_t 是第 t 步操作目标,EX_t 是该步的期望结果. 然后端侧 Execution Agent 根据当前屏幕 S_t 和步骤 ST_t 执行动作,Observation Agent 再检查执行后的屏幕 S_{t+1} 是否符合期望 EX_t. 如果失败,就把端侧压缩后的屏幕历史传回云端,由云端反思并重新规划.
Dual-ReACT
论文最核心的方法是 Dual-ReACT. 它扩展了传统 ReACT 的 “Reason + Act” 思路,把推理分成两层.
-
第一层是 Global ReACT. 云端 Planning Agent 先看用户指令和初始屏幕,生成一个全局屏幕描述,然后把任务拆成若干中间子目标.
$$ P_0 = GlReACT(Ins, S_0) $$ -
第二层是 Local ReACT. 对每个子目标,云端进一步生成具体可执行的步骤
$$ P_0 = {LoReACT(ST_1, EX_1), ..., LoReACT(ST_t, EX_t)} $$ST_t,并同时生成该步骤执行后的期望屏幕状态EX_t.
也就是说,端侧小模型不需要自己做复杂长程规划,只需要执行当前步骤,并判断“当前屏幕是否符合云端给出的期望”.
Execution Agent
Execution Agent 部署在设备端,输入当前屏幕 S_t 和当前步骤 ST_t,输出具体操作 O_t:
这里的 EA 是经过 GUI 操作能力适配的小多模态模型,例如 ShowUI 或 OS-Atlas. 它的强项不是复杂推理,而是视觉定位和具体点击/滑动/输入.
论文定义的动作空间包括两类. 第一类是输入操作:Tap(x,y) 等等;第二类是导航操作:PressBack() 和 PressHome(). 作者额外加入了 DeleteText() 的动作,用来清空输入框,解决输错后难以重新输入的问题.
Observation Agent
Observation Agent 也在设备端,但它的职责是验证. 它输入执行后的屏幕 S_{t+1} 和该步的期望结果 EX_t,输出验证结果 R_t:
如果 R_t = Success,说明当前步骤达成,继续执行下一步;如果 R_t = Fail,说明当前计划可能偏离了,需要触发云端反思与重规划. 论文强调,这样可以避免每一步都把截图传到云端让大模型检查,从而降低延迟、token 成本和隐私风险.
Pre-Understanding
为了让云端在失败时能重规划,系统仍然需要知道执行轨迹. 但论文不直接把完整截图作为 Memory,而是在 Observation Agent 里加入 Pre-Understanding 模块,把屏幕 S_{t+1} 压缩成文本表示:
作者认为,重规划通常不需要完整截图的所有细节,只需要知道屏幕状态如何变化、任务进展到哪里、失败点是什么. 论文提到,原始屏幕图像通常会消耗 1400+ token,而压缩后的文本描述只需要 50–150 token.
Memory Reflection
一旦 Observation Agent 判断某一步失败,端侧会把压缩后的屏幕文本 T_{t+1} 加入 Memory. 云端 Planning Agent 再调用 Reflection 模块,根据用户指令、上一轮计划和执行历史生成新计划:
这一步让 EcoAgent 的端云协作从开环变成了闭环.
