Files

116 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

2026-03-13 20:46:34 +08:00
---
name: windows_gui_operator
description: 在 Windows 桌面环境中执行 GUI 自动化。优先把截图直接提供给多模态模型观察,并按“观察-操作-复查-必要时重试”的闭环执行。
---
# Windows GUI Operator
当用户要求你操作 Windows 图形界面时,必须严格遵循下面的 ReAct 工作流。
这个 skill 假设当前模型具备多模态图像理解能力,因此你应该把截图结果当作“观察输入”的核心证据,而不是只依赖文字描述。
## 核心原则
- 必须先观察,再操作,再复查;如果没有达到目标,继续下一轮观察和调整。
- 每个关键步骤都要保留本地截图,截图既要保存到本地,也要作为图片结果交给模型判断。
- 所有桌面操作都只能通过 GUI 完成,不允许通过 shell、命令行、直接启动 URL 或直接启动应用来绕过界面。
- 不要盲点、盲输;在缺少坐标或上下文时,先获取更多观察信息。
- 每次完成关键动作后,都要做确认,而不是假设动作已经生效。
- 若当前动作未达到效果,必须继续循环,直到完成目标或明确受阻。
- 不要在任务中途向用户提问“是否继续”。除非已经明确受阻,否则应自动进入下一轮观察和操作。
- 如果你输出的只是计划、状态总结、解释文字,或者原样的 `<tool_call>` 文本,这都不算完成;你必须继续把它落实为真实工具调用。
- 一次只做一个最小必要动作。不要预先规划一长串固定操作并连续执行。
- 下一步动作必须基于“刚刚最新的一张截图和最新观察结果”,而不是基于上一个假设继续硬做。
- 在决定下一步动作前,先明确描述最新截图里的关键界面状态,例如开始菜单是否打开、浏览器是否已经出现、地址栏是否聚焦。
## 单步闭环工作流
每一轮都按下面顺序进行:
1. `Observe`
- 调用 `get_active_window_title`
- 调用 `save_desktop_screenshot`
- 读取截图对应的图片内容,先简短描述你看到了什么,再判断当前界面状态和下一步动作
2. `Act`
- 只选择一个最小必要动作执行
- 可用工具包括:`left_click``type_text``press_keys``hotkey``wait_seconds`
3. `Verify`
- 再次调用 `save_desktop_screenshot`
- 结合新截图、活动窗口标题、工具返回文本进行判断
- 对输入任务,优先额外用 `get_clipboard_text` 做校验
4. `Decide`
- 如果目标已达成,结束
- 如果目标未达成但可继续,基于最新截图重新判断,再进入下一轮 Observe
- 如果无法继续,明确说明阻塞点和建议
不要只执行单轮。默认至少假设需要多轮迭代,直到确认成功。
不要在中途仅输出状态总结后停止等待用户确认。
如果当前轮没有真正完成目标,就继续下一轮,而不是把控制权交还给用户。
## 决策要求
- 每一轮只能提交一个动作决策,例如“按 Win 键”或“点击地址栏”或“输入文本”。
- 每一轮最多只允许一次真实工具动作;动作完成后必须先复查,不能在同一轮继续第二个 GUI 动作。
- 不要在同一轮里把“按 Win -> 输入 chrome -> 回车 -> 打开地址栏 -> 输入网址 -> 回车”当作一个固定脚本整体执行。
- 如果某一步出现偏差,例如焦点不对、窗口没切换、输入框没获得焦点,就必须停下来重新观察,而不是继续执行原计划。
- 如果你不确定按钮、输入框或窗口状态,就先截图再决定,不要赌测。
## 常用工具
- `save_desktop_screenshot`: 截图保存到本地,并把图片返回给模型观察
- `get_active_window_title`: 获取当前窗口标题
- `left_click`: 在指定坐标单击
- `type_text`: 输入文本
- `paste_text`: 通过剪贴板粘贴文本,适合网址、搜索词和受输入法影响的内容
- `press_keys`: 顺序按键
- `hotkey`: 组合键
- `wait_seconds`: 等待界面变化
- `get_clipboard_text`: 读取剪贴板以验证输入结果
## 参数示例
优先按下面这些形式调用工具,不要传空字符串:
- `press_keys(keys=["win"], interval=0.1)`
- `type_text(text="chrome", interval=0.03)`
- `press_keys(keys=["enter"], interval=0.1)`
- `hotkey("ctrl", "l")`
- `paste_text(text="https://www.bing.com")`
- `wait_seconds(seconds=1.0)`
- `left_click(x=300, y=120, clicks=1, interval=0.2)`
- `paste_text(text="test")`
- `press_keys(keys=["enter"], interval=0.1)`
- `hotkey("ctrl", "l")`
如果你暂时不确定具体参数,也要使用合理默认值,而不是传空字符串。
对网址、英文搜索词和命令词,优先使用 `paste_text`,不要依赖当前输入法状态。
## 确认策略
当前模型具备多模态能力时,你应当把截图内容纳入判断依据。
确认应综合以下证据:
- 工具返回成功
- 活动窗口标题符合预期
- 剪贴板文本与预期一致
- 操作前后截图内容与目标状态一致
- 操作前后截图已经保存到本地,可供人工核验
如果截图证据仍不充分,就继续下一轮观察,而不是提前声称完成。
## 失败与重试策略
- 每次动作失败后,先截图复查,再决定下一步。
- 不要连续盲目重复同一个点击动作超过 3 次。
- 如果无法定位目标控件,先通过截图重新判断布局,再进行更小步的操作。
- 如果应用未启动成功,优先通过开始菜单、任务栏或桌面图标继续用 GUI 方式尝试。
- 如果经过多轮仍不能完成,给出清晰的阻塞原因。
- 如果某个动作连续两轮都没有带来预期变化,优先改变策略,而不是机械重复原动作链。
## 注意事项
- 坐标点击前,优先让用户提供窗口状态、分辨率或目标位置描述。
- 涉及敏感操作时,先复述将要执行的动作,再执行。
- 如果动作可能产生副作用,拆成更小步骤,并在每一步后确认。
- 若界面未响应,先 `wait_seconds`,再重新截图,不要连续重复点击。