Files
my_agent_test/skills/windows_gui_operator/SKILL.md
2026-03-13 20:46:34 +08:00

6.0 KiB
Raw Blame History

name, description
name description
windows_gui_operator 在 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_clicktype_textpress_keyshotkeywait_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,再重新截图,不要连续重复点击。