Windows RPA 自动化
这个 skill 让 OpenClaw 能够直接操作 Windows 桌面,包括鼠标、键盘、窗口和应用程序。
核心能力
1. 鼠标操作
CODEBLOCK0
2. 键盘操作
CODEBLOCK1
3. 屏幕操作
CODEBLOCK2
4. 窗口管理
CODEBLOCK3
5. 应用程序启动
CODEBLOCK4
6. Shell 命令
CODEBLOCK5
7. 剪贴板
CODEBLOCK6
8. 桌面状态
CODEBLOCK7
使用示例
示例 1: 自动填写表单
CODEBLOCK8
示例 2: 图像识别点击
CODEBLOCK9
示例 3: 操作特定窗口
CODEBLOCK10
安全注意事项
权限要求
本技能需要以下系统权限:
- - 屏幕捕获: 用于截图功能
- 键盘输入: 用于文本输入和快捷键
- 鼠标输入: 用于点击、移动等操作
- 剪贴板访问: 用于读写剪贴板
- Shell 执行: 用于运行命令(可选)
敏感操作
以下操作建议开启用户确认:
- -
desktop_shell - 执行任意 Shell 命令 - INLINECODE1 - 读取剪贴板(可能包含敏感信息)
- INLINECODE2 - 屏幕截图(可能包含隐私内容)
用户批准机制
建议在 OpenClaw 配置中启用审批模式:
- 1. 敏感操作执行前会请求用户确认
- 用户可以选择批准、拒绝或修改参数
- 可设置白名单跳过审批
沙箱支持
- - 建议在不包含敏感数据的测试环境中首次运行
- Shell 命令可在受限环境中执行
- 截图功能可限制截取区域
安全最佳实践
- 1. 审批模式: 建议开启命令审批,每次执行前确认
- 坐标依赖: 屏幕坐标可能因分辨率不同而变化,优先使用图像识别
- 窗口标题: 使用模糊匹配而非精确匹配,提高鲁棒性
- 超时处理: 复杂操作应设置合理的等待时间
- 最小权限: 仅请求必要的权限,避免过度授权
后端选择
系统支持两种后端:
- - pyautogui (默认): 纯坐标操作,简单可靠
- pywinauto (备用): Windows UI Automation,支持控件级操作
切换后端:
CODEBLOCK11
错误处理
所有操作返回 JSON 格式结果:
CODEBLOCK12
建议检查 status 字段确认操作是否成功。
常见问题
Q: 为什么鼠标移动不准确?
A: 可能是分辨率缩放问题,尝试使用 desktop_screen_size() 检查实际分辨率。
Q: 图像识别找不到目标?
A: 降低 confidence 参数值,或确保图像与屏幕显示一致。
Q: 中文输入乱码?
A: 确保系统编码正确,或使用剪贴板方式输入。
Q: pywinauto 无法找到控件?
A: 部分应用使用自定义 UI,无法被 UI Automation 识别,改用坐标或图像方式。
Windows RPA 自动化
这个技能让 OpenClaw 能够直接操作 Windows 桌面,包括鼠标、键盘、窗口和应用程序。
核心能力
1. 鼠标操作
移动鼠标到坐标 (x, y)
desktop
mousemove(x=500, y=300)
鼠标点击
desktop
mouseclick(x=500, y=300, button=left, clicks=1)
鼠标拖拽
desktop
mousedrag(start
x=100, starty=100, end
x=500, endy=500)
鼠标滚轮
desktop
mousescroll(clicks=3) # 正数向上,负数向下
获取鼠标位置
desktop
mouseposition()
2. 键盘操作
输入文本
desktop
keyboardtype(text=Hello World)
按键
desktop
keyboardpress(key=enter)
desktop
keyboardpress(key=tab)
desktop
keyboardpress(key=escape)
组合键
desktop
keyboardhotkey(keys=[ctrl, c]) # 复制
desktop
keyboardhotkey(keys=[ctrl, v]) # 粘贴
desktop
keyboardhotkey(keys=[ctrl, a]) # 全选
desktop
keyboardhotkey(keys=[alt, f4]) # 关闭窗口
3. 屏幕操作
截取全屏
desktop_screenshot()
截取指定区域
desktop_screenshot(region={x: 0, y: 0, width: 800, height: 600})
获取屏幕尺寸
desktop
screensize()
图像定位(在屏幕上找图)
desktop
locateon
screen(imagepath=button.png, confidence=0.9)
4. 窗口管理
列出所有窗口
desktop
windowlist()
激活窗口
desktop
windowactivate(title_pattern=记事本)
查找窗口
desktop
findwindow(title_contains=Chrome)
点击窗口控件
desktop
clickwindow(
title_contains=记事本,
control_type=Edit,
action=set_text,
control_name=Hello
)
5. 应用程序启动
启动常用应用(支持别名)
desktop
launchapp(app_name=notepad)
desktop
launchapp(app_name=chrome)
desktop
launchapp(app_name=excel)
desktop
launchapp(app_name=word)
启动自定义程序
desktop
launchapp(app_name=C:\\Program Files\\MyApp\\app.exe)
带参数启动
desktop
launchapp(app_name=chrome, args=--incognito)
6. Shell 命令
PowerShell 命令
desktop_shell(command=Get-Process | Select-Object -First 5)
CMD 命令
desktop
shell(command=dir C:\\, shelltype=cmd)
7. 剪贴板
获取剪贴板内容
desktop
clipboardget()
设置剪贴板内容
desktop
clipboardset(text=要复制的内容)
8. 桌面状态
获取完整桌面状态(鼠标位置、活动窗口、截图等)
desktop
getstate(capture_screenshot=True)
检查环境
desktop_check()
使用示例
示例 1: 自动填写表单
1. 启动应用程序
desktop
launchapp(app_name=notepad)
2. 等待窗口出现
time.sleep(1)
3. 输入内容
desktop
keyboardtype(text=这是一段自动输入的文字)
4. 保存文件
desktop
keyboardhotkey(keys=[ctrl, s])
desktop
keyboardtype(text=auto_saved.txt)
desktop
keyboardpress(key=enter)
示例 2: 图像识别点击
1. 先截图保存按钮图像
desktop
screenshot(savepath=screen.png)
2. 用户手动截取按钮区域保存为 button.png
3. 在屏幕上定位并点击
result = desktop
locateon
screen(imagepath=button.png, confidence=0.9)
如果找到,会返回中心坐标,然后点击
示例 3: 操作特定窗口
1. 查找目标窗口
windows = desktop
findwindow(title_contains=计算器)
2. 激活窗口
desktop
windowactivate(title_pattern=计算器)
3. 点击窗口中的按钮
desktop
clickwindow(
title_contains=计算器,
control_type=Button,
control_name=1
)
安全注意事项
权限要求
本技能需要以下系统权限:
- - 屏幕捕获: 用于截图功能
- 键盘输入: 用于文本输入和快捷键
- 鼠标输入: 用于点击、移动等操作
- 剪贴板访问: 用于读写剪贴板
- Shell 执行: 用于运行命令(可选)
敏感操作
以下操作建议开启用户确认:
- - desktopshell - 执行任意 Shell 命令
- desktopclipboardget - 读取剪贴板(可能包含敏感信息)
- desktopscreenshot - 屏幕截图(可能包含隐私内容)
用户批准机制
建议在 OpenClaw 配置中启用审批模式:
- 1. 敏感操作执行前会请求用户确认
- 用户可以选择批准、拒绝或修改参数
- 可设置白名单跳过审批
沙箱支持
- - 建议在不包含敏感数据的测试环境中首次运行
- Shell 命令可在受限环境中执行
- 截图功能可限制截取区域
安全最佳实践
- 1. 审批模式: 建议开启命令审批,每次执行前确认
- 坐标依赖: 屏幕坐标可能因分辨率不同而变化,优先使用图像识别
- 窗口标题: 使用模糊匹配而非精确匹配,提高鲁棒性
- 超时处理: 复杂操作应设置合理的等待时间
- 最小权限: 仅请求必要的权限,避免过度授权
后端选择
系统支持两种后端:
- - pyautogui (默认): 纯坐标操作,简单可靠
- pywinauto (备用): Windows UI Automation,支持控件级操作
切换后端:
desktopsetbackend(backend=pywinauto)
错误处理
所有操作返回 JSON 格式结果:
json
{
status: ok, // 或 error
message: 操作描述,
// 其他字段...
}
建议检查 status 字段确认操作是否成功。
常见问题
问: 为什么鼠标移动不准确?
答: 可能是分辨率缩放问题,尝试使用 desktopscreensize() 检查实际分辨率。
问: 图像识别找不到目标?
答: 降低 confidence 参数值,或确保图像与屏幕显示一致。
问: 中文输入乱码?
答: 确保系统编码正确,或使用剪贴板方式输入。
问: pywinauto 无法找到控件?
答: 部分应用使用自定义 UI,无法被 UI Automation 识别,改用坐标或图像方式。