Desktop 用于让 AI 代理(CC)在 macOS 上完成看屏幕、移动鼠标、点击按钮、输入文字等桌面操作。其核心是不把全屏截图传给 AI,而是用 macOS 原生 OCR 作为“触觉”:鼠标移到哪里就 OCR 哪里,让代理知道当前位置与可点击元素,从而降低延迟与 token 消耗。
感知能力:通过 ocr.py 调用 OCR,支持全屏快速模式(约 240ms)、全屏精确模式带 JSON 包围盒(约 870ms)、鼠标附近局部 OCR(默认 300x200,约 250ms,可用 --size 自定义)以及指定图片 OCR。中文必须使用精确模式,快速模式会出现乱码。JSON 模式输出文字的 bbox 与 center 坐标,可直接传给点击命令。
操控与感知辅助:使用 cliclick 获取鼠标位置、移动、单击、双击、右键和输入文字;按键与快捷键通过 osascript 调 System Events 完成(Return 推荐用 key code 36,因为 cliclick kp:return 在微信等应用可能无效)。另可用 osascript 获取可见应用列表、前台窗口位置与大小、激活应用、点击菜单项;截图通过 screencapture 全屏或 -R 局部完成,用于 OCR 失败时交给 Claude 视觉兜底。
使用流程:先用全屏 OCR 找目标,再移动鼠标并用局部 OCR 触觉确认,然后点击并再次用局部 OCR 验证结果;已知坐标可直接点击。文字输入为先点输入框、全选加删除清空,再用 cliclick 输入。
附带脚本:目录下有 wechat-read.sh(OCR 聊天区域,支持 --bbox)、wechat-send.sh(发文字并 OCR 验证输入框为空)、wechat-send-file.sh(剪贴板 POSIX file 粘贴后回车并验证)。脚本假定微信已打开并停在目标聊天窗口,侧边栏 310、标题栏 50、输入框 110 为固定参数。
安全规则:截屏、OCR、读剪贴板、列窗口、移动鼠标可自动执行;点击、输入文字、切换窗口执行并告知用户;涉及密码、支付、删除、发消息须先询问。禁区包括不操控 Terminal/iTerm、不输入密码、不操作支付页面、不修改系统安全设置。
前提与限制:需 macOS、cliclick(brew install cliclick)和 OCR 环境(~/tools/ocr-env/,pyobjc + Vision Framework);操作前坐标应动态获取而非硬编码,并注意焦点抢占问题。其他平台支持情况与收费信息暂未提供。