소스 정보
- 저장소
- lza6/Claude-code-cli-config
- 최근 소스 활동
- 2026년 4월 13일 23:56
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 8
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/lza6/Claude-code-cli-config --skill desktop-control명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | desktop-control |
| description | 高级桌面自动化。**Auto-trigger**: 当需要桌面控制、鼠标键盘操作、截图、窗口管理时自动使用。 |
OpenClaw 最先进的高级桌面自动化技能。 提供像素级精确的鼠标控制、超快的键盘输入、屏幕捕获、窗口管理和剪贴板操作。
首先,安装所需的依赖项:
pip install pyautogui pillow opencv-python pygetwindow
from skills.desktop_control import DesktopController
# 初始化控制器
dc = DesktopController(failsafe=True)
# 鼠标操作
dc.move_mouse(500, 300) # 移动到坐标
dc.click() # 在当前位置左键点击
dc.click(100, 200, button="right") # 在指定位置右键点击
# 键盘操作
dc.type_text("Hello from OpenClaw!")
dc.hotkey("ctrl", "c") # 复制
dc.press("enter")
# 屏幕操作
screenshot = dc.screenshot()
position = dc.get_mouse_position()
move_mouse(x, y, duration=0, smooth=True)将鼠标移动到绝对屏幕坐标。
参数:
x (int): X 坐标(距左侧的像素)y (int): Y 坐标(距顶部的像素)duration (float): 移动时间(秒)(0 = 即时,0.5 = 平滑)smooth (bool): 使用贝塞尔曲线进行自然移动示例:
# 即时移动
dc.move_mouse(1000, 500)
# 平滑 1 秒移动
dc.move_mouse(1000, 500, duration=1.0)
move_relative(x_offset, y_offset, duration=0)相对于当前位置移动鼠标。
参数:
x_offset (int): 水平移动像素(正值 = 向右)y_offset (int): 垂直移动像素(正值 = 向下)duration (float): 移动时间(秒)示例:
# 向右移动 100px,向下移动 50px
dc.move_relative(100, 50, duration=0.3)
click(x=None, y=None, button='left', clicks=1, interval=0.1)执行鼠标点击。
参数:
x, y (int, 可选): 点击坐标(None = 当前位置)button (str): 'left'、'right'、'middle'clicks (int): 点击次数(1 = 单击,2 = 双击)interval (float): 多次点击之间的延迟示例:
# 简单左键点击
dc.click()
# 在特定位置双击
dc.click(500, 300, clicks=2)
# 右键点击
dc.click(button='right')
drag(start_x, start_y, end_x, end_y, duration=0.5, button='left')拖放操作。
参数:
start_x, start_y (int): 起始坐标end_x, end_y (int): 结束坐标duration (float): 拖动持续时间button (str): 使用的鼠标按钮示例:
# 将文件从桌面拖到文件夹
dc.drag(100, 100, 500, 500, duration=1.0)
scroll(clicks, direction='vertical', x=None, y=None)滚动鼠标滚轮。
参数:
clicks (int): 滚动量(正值 = 向上/向左,负值 = 向下/向右)direction (str): 'vertical' 或 'horizontal'x, y (int, 可选): 滚动位置示例:
# 向下滚动 5 格
dc.scroll(-5)
# 向上滚动 10 格
dc.scroll(10)
# 水平滚动
dc.scroll(5, direction='horizontal')
get_mouse_position()获取当前鼠标坐标。
返回: (x, y) 元组
示例:
x, y = dc.get_mouse_position()
print(f"鼠标位于: {x}, {y}")
type_text(text, interval=0, wpm=None)以可配置速度输入文本。
参数:
text (str): 要输入的文本interval (float): 按键之间的延迟(0 = 即时)wpm (int, 可选): 每分钟字数(覆盖 interval)示例:
# 即时输入
dc.type_text("Hello World")
# 以 60 WPM 的速度类似人类输入
dc.type_text("Hello World", wpm=60)
# 慢速输入,按键间隔 0.1 秒
dc.type_text("Hello World", interval=0.1)
press(key, presses=1, interval=0.1)按压并释放一个键。
参数:
key (str): 键名(参见键名参考部分)presses (int): 按压次数interval (float): 按压之间的延迟示例:
# 按 Enter
dc.press('enter')
# 按 Space 3 次
dc.press('space', presses=3)
# 按下方向键
dc.press('down')
hotkey(*keys, interval=0.05)执行键盘快捷键。
参数:
*keys (str): 一起按下的键interval (float): 按键之间的延迟示例:
# 复制 (Ctrl+C)
dc.hotkey('ctrl', 'c')
# 粘贴 (Ctrl+V)
dc.hotkey('ctrl', 'v')
# 打开运行对话框 (Win+R)
dc.hotkey('win', 'r')
# 保存 (Ctrl+S)
dc.hotkey('ctrl', 's')
# 全选 (Ctrl+A)
dc.hotkey('ctrl', 'a')
key_down(key) / key_up(key)手动控制按键状态。
示例:
# 按住 Shift
dc.key_down('shift')
dc.type_text("hello") # 输入 "HELLO"
dc.key_up('shift')
# 按住 Ctrl 并点击(用于多选)
dc.key_down('ctrl')
dc.click(100, 100)
dc.click(200, 100)
dc.key_up('ctrl')
screenshot(region=None, filename=None)捕获屏幕或区域。
参数:
region (tuple, 可选): (left, top, width, height) 用于部分捕获filename (str, 可选): 保存图片的路径返回: PIL Image 对象
示例:
# 全屏
img = dc.screenshot()
# 保存到文件
dc.screenshot(filename="screenshot.png")
# 捕获特定区域
img = dc.screenshot(region=(100, 100, 500, 300))
get_pixel_color(x, y)获取坐标处的像素颜色。
返回: RGB 元组 (r, g, b)
示例:
r, g, b = dc.get_pixel_color(500, 300)
print(f"(500, 300) 处的颜色: RGB({r}, {g}, {b})")
find_on_screen(image_path, confidence=0.8)在屏幕上查找图像(需要 OpenCV)。
参数:
image_path (str): 模板图像路径confidence (float): 匹配阈值 (0-1)返回: (x, y, width, height) 或 None
示例:
# 在屏幕上查找按钮
location = dc.find_on_screen("button.png")
if location:
x, y, w, h = location
# 点击找到图像的中心
dc.click(x + w//2, y + h//2)
get_screen_size()获取屏幕分辨率。
返回: (width, height) 元组
示例:
width, height = dc.get_screen_size()
print(f"屏幕: {width}x{height}")
get_all_windows()列出所有打开的窗口。
返回: 窗口标题列表
示例:
windows = dc.get_all_windows()
for title in windows:
print(f"窗口: {title}")
activate_window(title_substring)通过标题将窗口置于最前面。
参数:
title_substring (str): 要匹配的窗口标题的一部分示例:
# 激活 Chrome
dc.activate_window("Chrome")
# 激活 VS Code
dc.activate_window("Visual Studio Code")
get_active_window()获取当前聚焦的窗口。
返回: 窗口标题 (str)
示例:
active = dc.get_active_window()
print(f"活动窗口: {active}")
copy_to_clipboard(text)将文本复制到剪贴板。
示例:
dc.copy_to_clipboard("Hello from OpenClaw!")
get_from_clipboard()从剪贴板获取文本。
返回: str
示例:
text = dc.get_from_clipboard()
print(f"剪贴板: {text}")
'a' 到 'z'
'0' 到 '9'
'f1' 到 'f24'
'enter' / 'return''esc' / 'escape''space' / 'spacebar''tab''backspace''delete' / 'del''insert''home''end''pageup' / 'pgup''pagedown' / 'pgdn''up' / 'down' / 'left' / 'right''ctrl' / 'control''shift''alt''win' / 'winleft' / 'winright''cmd' / 'command' (Mac)'capslock''numlock''scrolllock''.' / ',' / '?' / '!' / ';' / ':''[' / ']' / '{' / '}''(' / ')''+' / '-' / '*' / '/' / '='将鼠标移动到屏幕的任意角落以中止所有自动化。
# 启用故障保护(默认启用)
dc = DesktopController(failsafe=True)
# 暂停所有自动化 2 秒
dc.pause(2.0)
# 检查自动化是否可以安全继续
if dc.is_safe():
dc.click(500, 500)
在执行操作前需要用户确认:
dc = DesktopController(require_approval=True)
# 这将请求确认
dc.click(500, 500) # 提示: "允许在 (500, 500) 点击吗? [y/n]"
dc = DesktopController()
# 点击姓名字段
dc.click(300, 200)
dc.type_text("John Doe", wpm=80)
# Tab 到下一个字段
dc.press('tab')
dc.type_text("john@example.com", wpm=80)
# Tab 到密码
dc.press('tab')
dc.type_text("SecurePassword123", wpm=60)
# 提交表单
dc.press('enter')
# 捕获特定区域
region = (100, 100, 800, 600) # 左, 上, 宽, 高
img = dc.screenshot(region=region)
# 带时间戳保存
import datetime
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
img.save(f"capture_{timestamp}.png")
# 按住 Ctrl 并点击多个文件
dc.key_down('ctrl')
dc.click(100, 200) # 第一个文件
dc.click(100, 250) # 第二个文件
dc.click(100, 300) # 第三个文件
dc.key_up('ctrl')
# 复制选中的文件
dc.hotkey('ctrl', 'c')
# 激活计算器
dc.activate_window("Calculator")
time.sleep(0.5)
# 输入计算
dc.type_text("5+3=", interval=0.2)
time.sleep(0.5)
# 截图结果
dc.screenshot(filename="calculation_result.png")
# 将文件从源位置拖到目标位置
dc.drag(
start_x=200, start_y=300, # 文件位置
end_x=800, end_y=500, # 文件夹位置
duration=1.0 # 平滑 1 秒拖动
)
duration=0get_screen_size() 确认尺寸interval 以提高可靠性DesktopController(failsafe=False)全部安装:
pip install pyautogui pillow opencv-python pygetwindow
为 OpenClaw 构建 - 终极桌面自动化伴侣 🦞