安全扫描
OpenClaw
安全
medium confidence代码与说明与声明用途(桌面自动化)一致,但存在轻微实现差异,并合法授予截图、键鼠、剪贴板等强大本地权限,安装前请权衡。
评估建议
该技能确实提供本地桌面自动化,但授予截图、击键、剪贴板等高权限。安装前:1) 仅信任作者或自行审码;2) 缺失 Windows setup.ps1 与 pygetwindow 依赖,需补全;3) 不确定时在 VM 运行;4) 检查无网络上传(当前未发现);5) 若允许自主调用,将能执行 CLI 控制桌面,建议限制或需逐次确认。...详细分析 ▾
✓ 用途与能力
名称/描述(桌面自动化:截图、鼠标、键盘、窗口、剪贴板)与 Python 脚本及 README 一致。脚本实现所列功能,未请求无关云凭据或外部服务。
ℹ 指令范围
SKILL.md 明确指示代理在 venv 运行技能 Python CLI 并提供示例 exec 调用,使代理可在技能目录执行任意命令并控制主机桌面(截图、读写剪贴板、发送击键)。符合用途但权限强大敏感。另 SKILL.md/README 引用缺失的 Windows setup.ps1,需核实。
ℹ 安装机制
无注册级安装规范,但包含 setup.sh 通过 pip 安装 PyPI 包(pyautogui、pillow、pyperclip)。PyPI 安装常见但有供应链风险。setup.sh 未安装窗口命令所需的 pygetwindow,且 Windows setup.ps1 缺失,安装脚本不完整。
✓ 凭证需求
技能未声明环境变量、凭据,代码未使用网络库,不请求机密或无关环境访问。
✓ 持久化与权限
always 为 false,技能不请求持久或跨技能配置变更,仅在调用时运行,未声明常驻行为。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/3/26
首次发布:完整 Windows 桌面自动化——截图、鼠标、键盘、窗口管理、剪贴板、屏幕信息。干净、安全、无网络请求,已启用故障保护。
● 可疑
安装命令
点击复制官方npx clawhub@latest install atu-desktop-control
镜像加速npx clawhub@latest install atu-desktop-control --registry https://cn.longxiaskill.com
技能文档
自动化桌面:截图、鼠标、键盘、窗口管理、剪贴板及屏幕信息。
所有命令均以 JSON 输出"ok": true/false,便于 agent 可靠解析。
安装
运行安装脚本以创建 Python 虚拟环境并安装依赖。技能目录即本 SKILL.md 所在位置 —— 下文所有路径均相对于技能根目录。Windows (PowerShell):
powershell -ExecutionPolicy Bypass -File scripts\setup.ps1
Linux / macOS:
bash scripts/setup.sh
如何运行
Python 可执行文件位于 venv 中。按技能目录解析路径:| 操作系统 | Python 路径 |
|---|---|
| Windows | .venv\Scripts\python.exe |
| Linux/Mac | .venv/bin/python |
scripts/desktop.py [subcommand] [args]
Agent 简写 —— 将工作目录设为技能根目录,然后:
exec({
command: ".venv\\Scripts\\python.exe scripts\\desktop.py [args]",
workdir: ""
})
其中 为本技能目录(包含本 SKILL.md 的文件夹)的绝对路径。命令
截图
# 全屏截图(保存到 captures/ 目录,带时间戳文件名)
python scripts/desktop.py screenshot
# 保存到指定路径
python scripts/desktop.py screenshot -o C:\tmp\shot.png
# 区域截图(left top width height)
python scripts/desktop.py screenshot --region 0 0 800 600
输出:{"ok": true, "path": "...", "width": 1920, "height": 1080}鼠标
# 当前位置
python scripts/desktop.py mouse pos
# 移动到坐标
python scripts/desktop.py mouse move 500 300
python scripts/desktop.py mouse move 500 300 --duration 0.5
# 点击(left/right/middle,single/double/triple)
python scripts/desktop.py mouse click 500 300
python scripts/desktop.py mouse click 500 300 --button right
python scripts/desktop.py mouse click --clicks 2
# 从 (100,100) 拖到 (400,400)
python scripts/desktop.py mouse drag 100 100 400 400 --duration 1.0
# 滚动(正数=上,负数=下)
python scripts/desktop.py mouse scroll 3
python scripts/desktop.py mouse scroll -5
python scripts/desktop.py mouse scroll 3 --direction horizontal
键盘
# 输入 ASCII 文本
python scripts/desktop.py key type "hello world"
# 带间隔输入
python scripts/desktop.py key type "slow typing" --interval 0.1
# 输入 Unicode / CJK 文本(自动使用剪贴板粘贴)
python scripts/desktop.py key type "你好世界"
# 单键按压(用 --times 重复)
python scripts/desktop.py key press enter
python scripts/desktop.py key press tab --times 3
# 组合键
python scripts/desktop.py key hotkey ctrl c
python scripts/desktop.py key hotkey ctrl shift s
python scripts/desktop.py key hotkey alt f4
注意: 非 ASCII 文本(CJK、emoji 等)key type 会自动通过 Ctrl+V 粘贴。窗口
# 列出所有窗口(标题 + hwnd)
python scripts/desktop.py window list
# 激活(前置)—— 按标题子串匹配,不区分大小写
python scripts/desktop.py window activate "Chrome"
python scripts/desktop.py window activate 1234567 # 按 hwnd
# 最小化 / 最大化
python scripts/desktop.py window minimize "Notepad"
python scripts/desktop.py window maximize "Code"
# 关闭窗口
python scripts/desktop.py window close "Notepad"
# 获取窗口信息(位置、大小、状态)
python scripts/desktop.py window info "Chrome"
# 调整窗口大小(宽 高,单位像素)
python scripts/desktop.py window resize "Notepad" 800 600
# 移动窗口(x y 坐标)
python scripts/desktop.py window move "Notepad" 100 100
剪贴板
# 读取剪贴板
python scripts/desktop.py clipboard get
# 写入剪贴板
python scripts/desktop.py clipboard set "copied text"
屏幕
# 获取屏幕分辨率
python scripts/desktop.py screen size
# 获取 (x, y) 处像素颜色
python scripts/desktop.py screen pixel 100 200
像素输出:{"ok": true, "x": 100, "y": 200, "r": 255, "g": 128, "b": 0, "hex": "#ff8000"}等待
# 等待 N 秒(自动化序列中常用)
python scripts/desktop.py wait 2.5
版本
python scripts/desktop.py --version
场景示例
“截一张全屏图并展示桌面”
exec: .venv\Scripts\python.exe scripts\desktop.py screenshot
→ 返回 JSON 含路径 → 用图像工具展示截图
“打开记事本并输入文本”
exec: .venv\Scripts\python.exe scripts\desktop.py key hotkey win r
exec: .venv\Scripts\python.exe scripts\desktop.py wait 0.5
exec: .venv\Scripts\python.exe scripts\desktop.py key type "notepad"
exec: .venv\Scripts\python.exe scripts\desktop.py key press enter
exec: .venv\Scripts\python.exe scripts\desktop.py wait 1
exec: .venv\Scripts\python.exe scripts\desktop.py key type "Hello from desktop-control!"
“最大化 Chrome 窗口”
exec: .venv\Scripts\python.exe scripts\desktop.py window maximize "Chrome"
“读取剪贴板内容”
exec: .venv\Scripts\python.exe scripts\desktop.py clipboard get
“移动并调整窗口大小”
exec: .venv\Scripts\python.exe scripts\desktop.py window move "Notepad" 0 0
exec: .venv\Scripts\python.exe scripts\desktop.py window resize "Notepad" 1024 768
安全
- 默认启用防呆模式:将鼠标移到左上角 (0,0) 可中止任何 pyautogui 操作。
- 使用
--no-failsafe可禁用(不推荐)。 - 所有动作返回结构化 JSON 以供审计。
- 截图仅本地保存 —— 无网络请求。
- 截图目录:
captures/(相对于技能根目录)。
可选依赖
如需高级工作流,可手动安装:| 包 | 用途 |
|---|---|
openpyxl | 读写 Excel |
python-docx | 读写 Word |
pywin32 | Windows COM 高级自动化 |
.venv\Scripts\pip install openpyxl python-docx pywin32
故障排除
| 问题 | 解决 |
|---|---|
pyautogui not installed | 运行 scripts/setup.ps1(Windows)或 scripts/setup.sh(Linux/Mac) |
Window not found | 用 window list 查看可用窗口;匹配为不区分大小写的子串 |
Failed to activate | 窗口可能已最小化 —— 脚本先尝试 restore(),但部分应用会抗拒 |
| 截图为黑 | 常见于 GPU 加速应用;尝试区域截图 |
key type 输入 CJK 乱码 | 应自动使用剪贴板粘贴;确认已安装 pyperclip |
FAILSAFE 触发 | 鼠标触及 (0,0) 角;此为有意安全机制 —— 移开鼠标重试 |
| Linux 权限被拒 | pyautogui 需 X11/Wayland 访问;请在 GUI 会话运行,勿用纯 SSH |
限制
- 以 Windows 为主:完整功能(窗口管理、所有快捷键)在 Windows 上最佳。Linux/macOS 通过 pyautogui 部分支持,
pygetwindow行为可能不同。 - 需 GUI 会话:必须在带显示的桌面会话运行。无头服务器或未转发的 SSH 会失败。
- 单显示器:
screenshot默认仅捕获主屏。多屏需用--region。 - 管理员窗口:非管理员 Python 进程无法操作以管理员身份运行的窗口(Windows UAC)。
- 屏幕缩放:125%、150% 等 DPI 缩放可能导致坐标偏差。用
screen size验证实际分辨率。