Files
wechat-ops/README.md
T
2026-09-27 17:20:40 +08:00

90 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# WeChat Ops
用「**截图 → 视觉识别 → 动作 → 截图验证**」的闭环操作 macOS 电脑,代替人手点按钮、输文字、切窗口、走界面流程。
适用于 Claude Code、Codex 等支持 skill 的 AI 编程助手。
## 为什么不是「录制回放」
| | 录制回放(写死坐标) | 本技能(视觉驱动) |
|---|---|---|
| 定位时机 | 录制时定一次 | **每次执行时实时定位** |
| 界面变了 | 静默点错 | 看图发现异常,改道 |
| 出错后 | 不知道,继续错 | **截图验证,立即发现** |
| 存什么 | 像素坐标 | 语义特征 + 判断方法 |
坐标是易耗品:分辨率、窗口位置、应用版本、系统语言,任何一样变了写死的坐标就失效。所以本技能存的是**「怎么找到它」**,不是「它在哪」。
## 核心原则
1. **坐标绝不落盘** —— 坐标只存在于本次任务的上下文里,任务结束即作废。该记的是语义特征和判断方法。
2. **每步都要验证** —— 视觉方案真正的价值不是"能看图",而是"点完能确认"。判断标准:如果这一步失败了你不会察觉,那这一步就该加验证。
3. **先想清楚交互方式** —— 同一个控件,单击和长按可能完全是两回事。拿不准就先试。
## 安装
```bash
git clone https://github.com/kenyanghui/wechat-ops.git
cp -r wechat-ops ~/.claude/skills/ # Claude Code
cp -r wechat-ops ~/.codex/skills/ # Codex
```
## 依赖
```bash
pip3 install pyautogui pyperclip pillow
```
并在「系统设置 → 隐私与安全性」中授权:
- **辅助功能** —— 才能模拟点击和按键
- **屏幕录制** —— 才能截图。缺这项时 `screencapture` 会**静默返回成功但只拍到壁纸**,只能靠看图发现
## 用法
```bash
python3 scripts/vision.py shot [名字] # 截图,自动缩放到逻辑分辨率
python3 scripts/vision.py grid [名字] [间距] # 叠加带刻度的坐标网格
python3 scripts/vision.py crop x1 y1 x2 y2 # 裁剪放大,看小图标/小字
python3 scripts/vision.py click X Y # 单击
python3 scripts/vision.py dclick X Y # 双击
python3 scripts/vision.py longpress X Y [秒] # 长按
python3 scripts/vision.py activate 微信 # 按窗口/进程名激活并置前
python3 scripts/vision.py type "文本" # 输入,走剪贴板,支持中文长文本
python3 scripts/vision.py key cmd+v # 按键,支持组合键
python3 scripts/vision.py scroll N [X Y] # 滚动,可指定鼠标落点
python3 scripts/vision.py pos # 打印屏幕尺寸与鼠标位置
```
截图统一存在 `/tmp/wechat_ops/`。
## 坐标系(先读这段,否则必错)
macOS Retina 屏上,**截图分辨率和点击分辨率不是一回事**:`screencapture` 输出物理像素(通常 2 倍),`pyautogui` 用逻辑像素。
`vision.py` 已自动把截图缩放到逻辑分辨率,所以:
> **图上量到的坐标 = 直接可用的点击坐标**
这也是为什么所有操作都要走 `vision.py`,而不是直接 `screencapture`——手工换算 2 倍关系是最高频的错误来源。
## 已知陷阱
实测踩过的坑,完整版见 [SKILL.md](SKILL.md):
- **中文输入法会吃掉组合键** —— `pyautogui.hotkey('command','v')` 会退化成裸字母 `v`。须用 AppleScript 发键(`vision.py` 已处理)
- **读图命令会读到旧截图** —— 图本身没错,错的是它描述的那个瞬间已经过去了(`crop`/`grid` 已默认重新截图)
- **滚动前先把鼠标移进目标区域** —— 滚轮事件发给指针所在的那个视图
- **弹窗会挡住目标** —— 动作后一定截图
## 安全边界
以下动作**先跟用户确认再执行**:对外发布(发消息、发邮件、提交表单)、破坏性操作(删除、覆盖)、花钱(下单、支付)、任何不可逆的操作。
一个实用做法:**把流程走到最后一步停住**,让用户看到完整状态,再决定要不要按下那个不可逆的按钮。
## License
[MIT](LICENSE)