Computer Use:让 Agent 在无头 Linux 服务器上操作桌面

前言

在没有显示器的服务器上跑桌面软件自动化,常见做法是装个浏览器驱动,让脚本点页面。这条路有两个限制:只能覆盖浏览器里的东西,原生桌面应用(终端、文件管理器、行业软件)碰不到;页面一旦检测自动化特征,脚本就失效。

下面介绍的 Computer Use Skill 换了个层次:它在服务器里虚拟出一套 X11 桌面,Agent 直接在 X11 层面操作窗口、鼠标和键盘。

这是什么

Computer Use 是一个面向无头 Linux 服务器的桌面 GUI 自动化 Skill,由 ClawHub 上的 ram-raghav-s 发布并维护,上游仓库地址是 https://clawhub.ai/ram-raghav-s/computer-use ,当前版本 v1.2.1,许可为 MIT-0。

它解决的问题是:在 VPS / 云主机上运行并控制桌面应用程序,不需要物理显示器。实现方式是 Xvfb 虚拟显示 + 精简 XFCE4 桌面 + xdotool 自动化,共提供 17 个动作(点击、输入、滚动、截图、拖拽等)。按照上游说明,由于它在 X11 层操作而不是浏览器层,网站无法检测到自动化。配套还提供 x11vnc + noVNC,可实时查看虚拟桌面。

SkillHub 镜像同样收录了该 Skill(坐标 @clawhub_ram-raghav-s/computer-use,分类 ai-agent,来源 clawhub,标签 requires_api_key=false)。镜像页面未能打开核实,因此正文不引用镜像侧的评分和下载数据。

核心功能

运行时环境固定为:

  • 显示::99
  • 分辨率:1024x768(XGA)
  • 桌面:精简 XFCE4(只装 xfwm4 + panel,不装 xfdesktop)

17 个动作与对应脚本如下(引自上游 Actions Reference):

  • screenshot:截图,输出 base64 PNG
  • cursor_position:获取当前鼠标 X, Y
  • mouse_move:移动鼠标到坐标
  • left_click / right_click / middle_click / double_click / triple_click:左键、右键、中键、双击、三击
  • left_click_drag:从起点拖到终点
  • left_mouse_down / left_mouse_up:按下 / 松开鼠标左键
  • type:输入文本(按 50 字符分块,每块间隔 12ms)
  • key:按键组合(如 Return、ctrl+c、alt+F4)
  • hold_key:按住键持续指定秒数
  • scroll:上下左右滚动
  • wait:等待指定秒数后截图
  • zoom:截取指定区域的局部截图

安装与启用

上游给出的安装命令基于 OpenClaw 的 skills CLI:

openclaw skills install @ram-raghav-s/computer-use

安装后运行一次环境搭建脚本,会生成 systemd 服务并装好无闪烁的 VNC:

bash ./scripts/setup-vnc.sh

该脚本会安装以下组件:Xvfb(:99 虚拟显示)、精简 XFCE 桌面、带稳定性参数的 x11vnc、noVNC 浏览器访问入口。所有服务开机自启、崩溃自动重启,服务链为 xvfb → xfce-minimal → x11vnc → novnc。

想手动装包而不是跑脚本的话,用:

sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify
./scripts/setup-vnc.sh

脚本内部会用内联的方式生成全部 systemd 服务文件,需要精确的服务定义可直接读该脚本。

关于编辑器侧的接入:上游资料只提供了 OpenClaw skills CLI 这一条安装路径,没有说明 Cursor、Codex CLI、Claude Code 下的安装方式,本文不做推测。该 Skill 是通用 SKILL.md 格式,能否在其他 Agent 中使用需要自行验证。

典型用法

上游推荐的使用循环是:截图 → 分析界面与坐标 → 执行动作 → 再截图验证 → 循环。

脚本调用前要先导出 DISPLAY:

export DISPLAY=:99

截图并查看画面:

./scripts/screenshot.sh

在坐标 512,384 处左键单击:

./scripts/click.sh 512 384 left

在文本框里输入内容(文本框需先点击获得焦点):

./scripts/type_text.sh "Hello world"

按键组合和滚动:

./scripts/key.sh "ctrl+s"
./scripts/scroll.sh down 5

想实时看桌面在干什么,可以开 VNC。本地机器上先建隧道:

ssh -L 6080:localhost:6080 your-server

然后浏览器打开 http://localhost:6080/vnc.html 。用 VNC 客户端的话,隧道换成 ssh -L 5900:localhost:5900 your-server,客户端连 localhost:5900 。

服务状态查询与重启:

systemctl status xvfb xfce-minimal x11vnc novnc
sudo systemctl restart xvfb xfce-minimal x11vnc novnc

适用场景与注意

适合的场景:云主机上需要操作原生桌面应用、批量填表、跨软件录入、需要截图留证的自动化任务。Agent 拿到这套动作后,就有能力在服务器端完成”看屏幕—点鼠标—敲键盘—验证”的闭环。

需要注意的限制和坑(多数来自上游 troubleshooting 部分):

  • 分辨率固定 1024x768,原点在左上角,点击前要确认坐标在这个范围内。
  • 输入文本前必须先点击目标框获得焦点。
  • Chrome 的沙箱要按内核参数判断:cat /proc/sys/kernel/unprivileged_userns_clone 为 1 时正常启动,为 0 时才需要 --no-sandbox。官方明确提醒,无必要地加 --no-sandbox 会导致不稳定和崩溃。
  • Snap 打包的浏览器(Firefox、Chromium)在无头服务器上有沙箱问题,官方建议改用 Chrome 的 .deb 包安装。
  • 常见故障与对应处理:VNC 黑屏先检查 xfwm4 是否在跑(pgrep xfwm4);画面闪烁通常是 xfdesktop 没被 mask 住,它在 Xvfb 上会产生 clear→draw 循环;VNC 频繁断线要确认 noVNC 带 --heartbeat 30、x11vnc 带 -noxdamage;x11vnc 崩溃(SIGSEGV)需加 -noxdamage -noxfixes,DAMAGE 扩展在 Xvfb 上会触发崩溃。

结尾

Computer Use 的价值在于把桌面级自动化从”有显示器的机器”搬到了无头服务器:一套虚拟显示加 17 个动作脚本,配合截图—操作—验证的循环,Agent 就能完成点击、填表、跨软件录入这类GUI 任务。如果你正在服务器上搭建这类能力,可以从 openclaw skills install @ram-raghav-s/computer-use 开始。

官方地址:https://clawhub.ai/ram-raghav-s/computer-use

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜