ScreenAgent
让视觉语言模型像人类一样操控真实电脑桌面,IJCAI-2024 收录的 VLM Agent 桌面控制
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让视觉语言模型像人类一样操控真实电脑桌面,IJCAI-2024 收录的 VLM Agent 桌面控制
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你对着一台电脑说"帮我打开亚马逊、搜一下笔记本电脑",然后一个 AI 助手自动接管了你的桌面——它观察屏幕截图、理解界面布局、点击正确的按钮、输入搜索词。整个过程无需调用任何特定应用的 API,而是像人类一样,用眼睛看、用鼠标点、用键盘输入。这就是 ScreenAgent 正在做的事。

图1:ScreenAgent 项目标志
让大语言模型(LLM)控制电脑,这件事的意义远超"自动化办公"。在 AI 领域,研究者面临一个根本性挑战:大多数垂直任务都有专属 API(订机票用携程 API、发邮件用 Gmail API),但这些 API 零散且不稳定,换一个平台就得重新适配。ScreenAgent 的思路是:绕过一切中间层,让 AI 直接"看见"并操控真实桌面环境。
这个项目来自论文 IJCAI-2024,作者是 niuzaisheng(牛再生?)。核心洞察是:视觉语言大模型(VLM)具备"看见屏幕"的能力,只需要一个标准化的交互协议,就能驱动它完成任何桌面任务。
ScreenAgent 的架构设计非常聪明。作者参考了 VNC(Virtual Network Computing)远程桌面协议,为 AI 智能体设计了一套标准化的"动作空间"——所有操作都归结为鼠标和键盘的基础动作:
| 动作类型 | 说明 |
|---|---|
| 鼠标移动 | 提供精确的屏幕坐标 (x, y) |
| 鼠标点击 | 左键/右键单击、双击 |
| 键盘输入 | 按键序列(ASCII + 特殊键) |
| 剪贴板粘贴 | 通过剪贴板服务传输长文本(支持 Unicode) |
这种方法天然具备跨平台能力:无论是 Windows、Linux 还是 macOS,只要运行一个 VNC Server,ScreenAgent 就能接管控制权。不同于调用特定 API 的方案,它不需要目标应用提供任何接口。
单一动作无法完成复杂任务。ScreenAgent 设计了一套"计划-执行-反思"(Planning-Execution-Reflection)的自主循环:
计划阶段:用户给出任务目标后,VLM Agent 先将任务分解为可执行的子步骤,类似人类的"先做什么、再做什么"。这一步由专门的 Planner Prompt 模板引导,支持中英文。
执行阶段:Agent 观察当前屏幕截图,理解界面状态,然后输出具体的鼠标/键盘操作指令。控制器(Controller)解析这些指令,在真实桌面上执行,并将执行结果(截图 + 状态变化)反馈给 Agent。
反思阶段:这是整个流程的灵魂。Agent 观察执行结果,判断是否成功、是否需要重试、是否需要调整计划。如果没有达成目标,它会自主决定重试或修改方案,直到任务完成。
整个循环会持续进行,直到 Agent 判定任务完成。这套机制让 AI 能够在真实、复杂的桌面环境中自我纠错,而不是一条路走到黑。

图2:ScreenAgent 在真实桌面环境中执行多步任务
项目代码组织为四个核心模块:
client/ —— 控制器客户端
整个系统的"中枢神经"。核心文件包括:
controller_core.py 和 automaton.py:状态机实现,驱动"计划-执行-反思"循环asyncvnc.py:异步 VNC 客户端,负责采集屏幕截图和发送鼠标/键盘事件run_controller.py:程序入口,启动 PyQt5 GUI 并初始化控制器clipboard_server.py:剪贴板服务,支持通过 HTTP API 传输 Unicode 文本prompt/ 目录下有 12 个模板文件,分别对应 Planner、Actor、Evaluator 三个角色的中英文版本控制器通过 Jinja2 模板动态构造 Prompt,发送给 VLM 推理 API,然后解析模型回复中的控制命令并执行。
model_workers/ —— VLM 推理器
模型推理抽象层。llava_model_worker.py 修改自 LLaVA 项目,实现了 FastAPI 推理服务,支持多模型注册和心跳机制。目前已适配的模型包括:
client/interface_api/ 目录还提供了 gpt4_client.py、llava_llm_client.py 等 API 封装,方便接入第三方服务。
train/ —— 模型训练代码
基于 SAT(SwissArmyTransformer) 框架的微调实现。使用 DeepSpeed ZeRO-3 分布式训练,支持 LoRA、QLoRA 和 P-tuning v2 多种微调策略。训练时冻结大部分参数,仅微调 encoder、cross_attention、ViT vision encoder 等关键层。
训练流程使用 CogAgent 作为基座模型,在 ScreenAgent 数据集上进行监督微调(SFT),最终得到专用于桌面控制的 ScreenAgent 模型。
data/ —— 训练数据集
包含 ScreenAgent 原始数据集(任务类型覆盖文件操作、网页浏览、游戏娱乐等场景),以及用于视觉定位研究的辅助数据集(COCO、Mind2Web、Rico)。
尽管项目提供了预制 Docker 容器 niuniushan/screenagent-env,但实际运行起来需要同时搞定四件事:
config.yml,填写 VNC 地址和 API Key最大的门槛是 GPU 需求:本地 LLaVA/CogAgent 推理至少需要 16GB 显存。如果用 GPT-4V API,则需要稳定的国际网络和 OpenAI 账户余额。
好在项目提供了 ScreenAgentWebClient,这是一个更简化的 Web 版本,适合不想折腾本地环境的用户尝鲜。
ScreenAgent 的局限性也很明显:
ScreenAgent 代表了"视觉驱动 Agent"这一趋势。不同于传统的任务自动化(IFTTT/Zapier)需要为每个平台编写接口,ScreenAgent 的方法论是:让 AI 学会使用电脑,而不是让电脑迁就 AI。一旦视觉语言模型足够强大,理论上可以用同一套逻辑操作任何应用——这对 RPA(机器人流程自动化)、无障碍辅助、智能客服等领域都有深远影响。
项目获得了 IJCAI 2024 展示认可,在 GitHub 上已积累 602 颗星、66 个 fork,说明社区对这类研究有强烈兴趣。随着 GPT-4V、LLaVA 等开源 VLM 的能力提升,"让 AI 操作电脑"会从研究演示逐步走向实用工具。