name: computer-use
description: 为无头 Linux 服务器提供完整的桌面计算机使用功能。基于 Xvfb + XFCE 虚拟桌面,配合 xdotool 实现自动化。提供 17 种操作(点击、输入、滚动、截图、拖拽等)。与 OpenClaw 的浏览器工具不同,此工具在 X11 层面运行,网站无法检测到自动化。包含 VNC 用于实时查看。
version: 1.2.1
为无头 Linux 服务器提供完整的桌面 GUI 控制。创建一个虚拟显示器(Xvfb + XFCE),使你可以在 VPS/云实例上运行和控制桌面应用程序,无需物理显示器。
:99运行设置脚本以安装所有组件(systemd 服务、无闪烁 VNC):
./scripts/setup-vnc.sh
此脚本将安装:
- 在 :99 上运行的 Xvfb 虚拟显示器
- 极简 XFCE 桌面 (xfwm4 + 面板,无 xfdesktop)
- 带有稳定性标志的 x11vnc
- 用于浏览器访问的 noVNC
所有服务将在启动时自动运行,并在崩溃时自动重启。
| 操作 | 脚本 | 参数 | 描述 |
|---|---|---|---|
| screenshot | screenshot.sh |
— | 截取屏幕 → base64 PNG |
| cursor_position | cursor_position.sh |
— | 获取当前鼠标 X,Y 坐标 |
| mouse_move | mouse_move.sh |
x y | 移动鼠标到指定坐标 |
| left_click | click.sh |
x y left | 在坐标处左键单击 |
| right_click | click.sh |
x y right | 右键单击 |
| middle_click | click.sh |
x y middle | 中键单击 |
| double_click | click.sh |
x y double | 双击 |
| triple_click | click.sh |
x y triple | 三击 (选择行) |
| left_click_drag | drag.sh |
x1 y1 x2 y2 | 从起点拖拽到终点 |
| left_mouse_down | mouse_down.sh |
— | 按下鼠标按钮 |
| left_mouse_up | mouse_up.sh |
— | 释放鼠标按钮 |
| type | type_text.sh |
"文本" | 输入文本 (50 字符分块,12ms 延迟) |
| key | key.sh |
"组合键" | 按下按键 (回车, ctrl+c, alt+F4) |
| hold_key | hold_key.sh |
"按键" 秒数 | 按住按键指定时长 |
| scroll | scroll.sh |
方向 数量 [x y] | 上下/左右滚动 |
| wait | wait.sh |
秒数 | 等待后截图 |
| zoom | zoom.sh |
x1 y1 x2 y2 | 截取指定区域截图 |
export DISPLAY=:99
# 截图
./scripts/screenshot.sh
# 在坐标处点击
./scripts/click.sh 512 384 left
# 输入文本
./scripts/type_text.sh "Hello world"
# 按下组合键
./scripts/key.sh "ctrl+s"
# 向下滚动
./scripts/scroll.sh down 5
ctrl+End 跳转到页面底部通过浏览器或 VNC 客户端实时查看桌面。
# SSH 隧道 (在本地机器上运行)
ssh -L 6080:localhost:6080 你的服务器
# 在浏览器中打开
http://localhost:6080/vnc.html
# SSH 隧道
ssh -L 5900:localhost:5900 你的服务器
# 将 VNC 客户端连接到 localhost:5900
将以下内容添加到 ~/.ssh/config 以实现自动隧道转发:
Host 你的服务器
HostName 你的服务器IP
User 你的用户名
LocalForward 6080 127.0.0.1:6080
LocalForward 5900 127.0.0.1:5900
然后只需 ssh 你的服务器,VNC 即可用。
# 检查状态
systemctl status xvfb xfce-minimal x11vnc novnc
# 如果需要,重启
sudo systemctl restart xvfb xfce-minimal x11vnc novnc
xvfb → xfce-minimal → x11vnc → novnc
-noxdamage 标志以提升稳定性的 VNC 服务器export DISPLAY=:99
# Chrome — 仅在内核缺少用户命名空间支持时使用 --no-sandbox。
# 检查: cat /proc/sys/kernel/unprivileged_userns_clone
# 1 = 沙盒可用,请勿使用 --no-sandbox
# 0 = 沙盒失败,需要 --no-sandbox 作为后备方案
# 在不必要时使用 --no-sandbox 会导致不稳定和崩溃。
if [ "$(cat /proc/sys/kernel/unprivileged_userns_clone 2>/dev/null)" = "0" ]; then
google-chrome --no-sandbox &
else
google-chrome &
fi
xfce4-terminal & # 终端
thunar & # 文件管理器
注意:Snap 版浏览器 (Firefox, Chromium) 在无头服务器上存在沙盒问题。请改用 Chrome .deb 包:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt-get install -f
如果你更喜欢手动设置而不是运行 setup-vnc.sh:
# 安装软件包
sudo apt install -y xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify
# 运行设置脚本 (生成 systemd 服务文件,屏蔽 xfdesktop,启动所有服务)
./scripts/setup-vnc.sh
如果你更喜欢完全手动设置,setup-vnc.sh 脚本会内联生成所有 systemd 服务文件 — 请阅读该脚本以获取确切的服务定义。
pgrep xfwm4sudo systemctl restart xfce-minimal/usr/bin/xfdesktop)--heartbeat 30 标志-noxdamage 标志-noxdamage -noxfixes 标志由 setup-vnc.sh 安装:
xvfb xfce4 xfce4-terminal xdotool scrot imagemagick dbus-x11 x11vnc novnc websockify