wechat-sender
# WeChat Sender
## 准备工作
### 1. 依赖项目
**Agent-Eye** - 屏幕捕获服务
- 仓库:https://github.com/noir-hedgehog/Agent-eye
- 功能:实时屏幕截图、100px 网格叠加、鼠标坐标显示
- 启动方式:
```bash
# 服务端
eye-server --port 8080 --region 0,0,1200,900
# Python Agent(需要配置 image key)
cd crates/eye
python -c "
from agent import Agent
agent = Agent(server_url='http://localhost:8080', interval=1.5, grid_size=100, show_mouse=True, region='0,0,1200,900')
agent.run()
"
```
### 2. 启动检查清单
- [ ] 确认微信已登录且保持后台运行
- [ ] 启动 Agent-Eye 服务端:`eye-server --port 8080`
- [ ] 启动 Python Agent(无需额外配置)
- [ ] 验证截图功能:`curl http://localhost:8080/snapshot.png -o test.png`
- [ ] 验证图像理解:使用 OpenClaw 内置的 image tool 分析截图
### 3. 图像理解说明
图像理解功能由 OpenClaw 内置的 `image` 工具提供,无需额外配置 Agent-Eye。Agent-Eye 负责捕获屏幕截图,`image` 工具负责理解图像内容。
微信消息自动发送技能。可以灵活组合以下能力,但执行前需要先思考流程(checklist)。
## 原子能力
| 能力 | 命令 | 说明 |
|------|------|------|
| 聚焦窗口 | `peekaboo window focus --app "微信"` | 聚焦微信窗口(某些app有防录屏限制,需要先聚焦) |
| 调整窗口 | `peekaboo window set-bounds --app "微信" --x 0 --y 0 --width 1200 --height 900` | 调整窗口位置和大小,避免防录屏限制 |
| 截图 | The-Eye: `curl http://localhost:8080/snapshot.png` 或 `/usr/sbin/screencapture -R0,0,1200,900` | 建议用 The-Eye 获取实时截图 |
| 图像理解 | `image` tool | 分析截图内容,查找联系人位置 |
| 切换联系人 | `peekaboo hotkey --keys "shift,down" --app "微信"` | 模拟 shift+↓ 切换选中联系人 |
| 粘贴文字 | `peekaboo paste --text "{message}" --app "微信"` | 复制文字到剪贴板并粘贴 |
| 发送消息 | `peekaboo hotkey --keys "cmd,return" --app "微信"` | 模拟 cmd+return 发送消息 |
| **搜索联系人** | `peekaboo hotkey --keys "cmd,f" --app "微信"` | **推荐!** 激活搜索框,比滑动列表快 |
## 视觉上下文说明
**使用 The-Eye 截图时:**
- 100px 网格:帮助定位界面元素的精确坐标。每个格子是 100x100 像素
- 鼠标准星坐标 (x, y):当前鼠标位置,十字准星+坐标标签
- 截图分辨率:默认捕获整个屏幕,可在 The-Eye 启动时用 `--region` 参数指定区域
**图像理解时的参考信息:**
- 网格坐标可以帮助定位按钮、联系人等元素的具体位置
- 鼠标坐标指示当前关注的区域
- 微信界面特征:左侧联系人列表、右侧聊天窗口、底部输入框
## 微信 UI 探索发现
### 左侧边栏图标(从到到下)
1. 个人头像
2. 聊天(消息)- 绿色选中
3. 通讯录 - 小人头图标
4. 收藏 - 立方体图标
5. 朋友圈 - 圆环快门图标
6. 视频号 - 漏斗图标
7. 搜一搜/看一看 - 地球仪图标
8. 小程序 - 层级点图标
9. 手机连接 - 手机图标
10. 更多(设置)- 三横线图标
### 推荐联系人查找方式
**方式1:搜索(推荐)**
1. `peekaboo hotkey --keys "cmd,f" --app "微信"` 激活搜索框
2. `peekaboo paste --text "联系人名字" --app "微信"` 输入搜索词
3. 点击搜索结果进入聊天
**方式2:滑动列表**
- 使用 `shift+up/down` 切换联系人
- 适合联系人顺序已知的情况
## 执行流程(Checklist 思考模式)
**在执行每个操作前,先思考:**
1. 当前状态是什么?
2. 下一步需要做什么?
3. 需要什么工具/能力?
4. 可能的风险是什么?
### 推荐流程
```
1. [ ] 聚焦微信窗口 + 调整大小
→ peekaboo window focus --app "微信"
→ peekaboo window set-bounds --app "微信" --x 0 --y 0 --width 1200 --height 900
2. [ ] 选择找联系人方式
→ 搜索(推荐):Cmd+F → 输入名字 → 点击结果
→ 滑动列表:shift+up/down
3. [ ] 获取截图(优先用 The-Eye)
→ curl http://localhost:8080/snapshot.png -o /tmp/wechat.png
4. [ ] 分析截图(视觉理解)
→ 使用 image tool,询问:
- 当前选中的联系人是谁?
- 目标联系人在列表第几个?
- 界面是否有异常?
5. [ ] 发送消息
→ peekaboo paste --text "消息内容" --app "微信"
→ peekaboo hotkey --keys "cmd,return" --app "微信"
6. [ ] 确认发送成功
→ 截图 + image tool 确认消息气泡出现
```
## 灵活运用原则
- **搜索是最高效的**:用 Cmd+F 搜索,比滑动列表快很多
- **不必完全按顺序**:如果已经知道联系人名字,直接搜索
- **选择合适的截图方式**:
- The-Eye 实时流:适合需要鼠标坐标的场景
- 直接截图:适合只需要静态界面的场景
- **遇到问题灵活处理**:
- 如果搜索没结果,尝试滑动列表
- 如果切换失败,可以重新截图确认状态
- 如果发送失败,尝试重新聚焦窗口
## 示例
发送"最近怎么样"给"宝宝星":
**方式1:搜索(推荐)**
1. 聚焦 + 调整窗口
2. Cmd+F 激活搜索
3. paste "宝宝星"
4. 点击搜索结果
5. paste 消息 + Cmd+Return
6. 确认
**方式2:滑动列表**
1. 聚焦 + 调整窗口
2. 截图确认位置
3. shift+down × 7
4. paste 消息 + Cmd+Return
5. 确认
## 注意事项
- 某些 app(微信、企业微信等)有防录屏限制,聚焦窗口+调整大小可以绕过
- 窗口调整到 1200x900 后,截图只需截取该区域
- The-Eye 服务需要先启动:`eye-server --port 8080` + `eye agent start`
- 每次按键操作间隔 0.3 秒更稳定
- 遇到错误可以尝试重新聚焦窗口,不要盲目重试
标签
skill
ai