Cradle:通用计算机控制代理
Cradle框架能够通过人类使用的统一界面执行复杂的计算机任务,即以屏幕截图作为输入,以键盘和鼠标操作作为输出。
项目简介
Cradle是一个模块化且灵活的 LMM 驱动框架。Cradle框架由六个关键模块组成:信息收集、自我反思、任务推断、技能策划、动作规划和记忆。这些模块协同工作,使Cradle能够理解输入的屏幕截图,并在高层次规划之后生成可执行的代码,以实现键盘和鼠标的低层次控制 。因此Cradle 可以与任何软件交互并完成长期复杂任务,而无需依赖任何内置 API。团队对框架的测试中,Cradle 在四个商业视频游戏、五个软件应用程序和一个综合基准OSWorld中表现出了显著的通用性和令人印象深刻的性能。
Demo
Cradle是第一个能够遵循主线故事情节并完成复杂3A游戏《荒野大镖客 2》中 40 分钟真实任务。Cradle还可以在《城市:天际线》中创建一座拥有一千人的城市。Cradle在《星露谷》中耕种和收获防风草。Cradle在《庄家的生活 2》中交易和讨价还价。Cradle运行 Chrome、Outlook 和飞书等日常软件。还可以使用美图秀秀和CapCut编辑图像和视频。
项目原理
Cradle能够理解和解释计算机屏幕以及来自任意软件的连续帧之间的动态变化,并能够生成合理的计算机控制操作来进行精确执行。
下面是Cradle的框架图,其中Cradle利用GPT-4o作为框架的主干模型。
下面展示了Cradle执行任务的主要流程。
首先Cradle从屏幕帧中收集有用的视觉和文本信息,像是布局、图像、动画和用户界面元素等。然后执行每个动作后Cradle会根据收集的信息自我反思。如果发现错误,Cradle会分析失败原因并尝试纠正不当决策。在反思结果的基础上,Cradle分析当前情况以推断当前最合适的任务,并决定何时停止当前任务并开始新任务。确定任务后,Cradle准备完成该任务的策略。它会从程序记忆中检索有用的技能,更新技能或生成新技能。这些新技能会存储在程序记忆中以备将来使用。Cradle并将这些技能具体化为可执行的动作序列,生成的动作序列随后由执行器模块执行,与环境进行交互。
Cradle极大地扩展了基础agent的覆盖范围,使任何软件,特别是复杂的游戏,都可以很容易地转换为评估agent各种能力的基准,并促进进一步的数据收集,从而为通用agent铺平了道路。
官网:https://baai-agents.github.io/Cradle
论文:https://arxiv.org/pdf/2403.03186
代码:https://github.com/BAAI-Agents/Cradle