Case 1:自动在社交软件上发消息 / 图片 / 文件
学完本章,你将掌握如何让 GA 自动操控桌面社交软件,聪明的读者一定会触类旁通,把流程用到你想用的国民级社交软件上
🎯 学习目标
- 理解 GA 操控桌面 GUI 应用的通用思路
- 学会「激活窗口 → 搜索联系人 → 验证会话 → 发送内容 → 验证结果」的标准五步流程
- 掌握 SOP + 工具函数的封装模式,让 GA 可以自主完成复杂的多步任务
14.1 适用场景
💡 本章介绍的方法适用于 不提供命令行接口(CLI)或开放 API 的社交软件。GA 通过「看屏幕 + 点鼠标 + 敲键盘」的方式来模拟人的操作,因此无论软件是否开放接口,都能实现自动化。
如果你使用的社交软件提供了 CLI 或 API 接口(如飞书、Slack 等),推荐优先通过接口实现自动化,效率更高也更稳定。可以参考 第 3 章:CLI 工具的使用 中的方法。
14.2 整体流程概览
在开始之前,我们先理解整个自动化的流程。不管是什么社交软件,自动发消息的核心步骤都是一样的:
┌─────────────┐
│ Step 1 │ 激活窗口:把社交软件切到前台
│ 激活应用 │
└──────┬──────┘
▼
┌─────────────┐
│ Step 2 │ 搜索联系人:快捷键打开搜索框
│ 搜索联系人 │ 输入准确名称 → 回车直接跳转
└──────┬──────┘
▼
┌─────────────┐
│ Step 3 │ 点击搜索结果,OCR 标题栏验证
│ 验证会话 │ 确认当前会话就是目标联系人
└──────┬──────┘
▼
┌─────────────┐
│ Step 4 │ 文字:剪贴板粘贴 + 回车
│ 发送内容 │ 文件:剪贴板写入文件路径 + 粘贴 + 回车
└──────┬──────┘
▼
┌─────────────┐
│ Step 5 │ OCR 截图聊天区域
│ 验证结果 │ 确认消息出现在对话中
└─────────────┘⚠️ 安全原则:Step 3 验证通过之前,绝对不能执行 Step 4 的发送操作——否则可能发错人!
14.3 Step 1:激活应用窗口
第一步是把社交软件的窗口切到前台。GA 需要做三件事:
- 查找窗口:通过窗口标题关键词找到社交软件
- 恢复窗口:如果窗口被最小化,需要先恢复
- 置顶窗口:确保窗口在最前面,这样后续的点击和截图才能正常工作
激活后,记录窗口的四个边界坐标(左、上、右、下),后续所有步骤都要基于这些坐标来定位界面元素。
💡 小知识:Windows 有一个安全限制——只有当前前台进程才能调用"设为前台窗口"的 API。通常需要先模拟一次 Alt 键事件来绕过这个限制。这类细节 GA 会自动帮你处理。
14.4 Step 2:搜索联系人
窗口激活后,接下来要找到目标联系人。
🎯 搜索比直接点击更可靠
不要试图直接点击会话列表中的联系人——列表的位置会随新消息到来而变化,很容易点错人。一律走搜索流程。
操作流程
- 快捷键打开搜索框:按下
Ctrl+F(Windows)或Command+F(macOS)唤出搜索框。用快捷键比点击搜索框更可靠——不需要计算搜索框的坐标位置,也不会因为界面布局变化而失效 - 清除残留文字:先全选(Ctrl+A),防止上次搜索的文字还在
- 输入联系人名称:通过剪贴板粘贴,不要直接键盘输入——中文输入法可能导致乱码
- 回车跳转:按下 Enter 键,直接跳转到该联系人的聊天界面
⚠️ 前提:用户需要提供 准确的联系人名称,确保搜索结果能精确匹配并一步到位跳转到正确的会话。
14.5 Step 3:验证当前会话
点击搜索结果后,不要急着发消息! 必须先验证当前打开的会话确实是你要找的人。
为什么要验证?
- 点击位置可能偏移,打开了错误的会话
- 某些软件会弹出广告窗口拦截你的点击
- OCR 识别可能有误差,导致点了错误的搜索结果
验证流程
点击搜索结果
│
▼
检测广告弹窗 ──── 有弹窗 ──→ 关闭弹窗,回到 Step 2 重新搜索
│
无弹窗
│
▼
OCR 标题栏 ───── 不匹配 ──→ 回到 Step 2 重新搜索
│
匹配
│
▼
进入 Step 4 发送- 广告弹窗检测:有些社交软件搜索结果中混入了广告,点击后会弹出新窗口而不是切换会话。GA 可以通过枚举系统窗口、检查窗口类名来识别并自动关闭这些弹窗。
- OCR 标题栏验证:截取聊天窗口顶部的标题栏区域做 OCR,确认显示的名字与目标联系人一致。大模型会做模糊匹配,容忍 OCR 的形近字误差。
14.6 Step 4:发送内容
验证会话正确后,终于可以发送内容了。根据内容类型,有两种方式:
发送文字消息
- 点击输入框:根据窗口坐标计算输入框位置,点击使其获得焦点
- 粘贴消息:把要发送的文字复制到剪贴板,然后 Ctrl+V 粘贴
- 回车发送:按下 Enter 键
💡 为什么用剪贴板而不是直接输入? 直接键盘输入会受输入法干扰——如果当前是中文输入法,英文可能被转成拼音。通过剪贴板粘贴可以完美避免这个问题,而且支持任何语言和 emoji。
发送文件 / 图片
发送文件的思路非常巧妙:模拟「从资源管理器复制文件,然后在聊天窗口粘贴」的操作。
- 写入剪贴板:把文件的绝对路径以操作系统的"文件拖放"格式(CF_HDROP)写入剪贴板——这和你在资源管理器里右键复制一个文件的效果完全一样
- 点击输入框:点击聊天输入框
- 粘贴:Ctrl+V,文件会以附件或图片形式出现在输入框中
- 回车发送:按 Enter 键
社交软件会自动判断文件类型:图片以图片形式展示,其他文件以附件形式展示。
⚠️ 注意:文件路径必须是 绝对路径,相对路径会导致软件找不到文件。
14.7 Step 5:验证发送结果
消息发出后,我们需要确认它真的发送成功了。
OCR 验证法
发送完成后,对聊天区域进行截图并 OCR 识别,检查是否包含刚才发送的消息内容:
- 截取聊天区域:截取消息列表的下半部分(最新消息通常在底部)
- OCR 识别:提取截图中的所有文字
- 匹配验证:检查 OCR 结果中是否包含刚才发送的关键词
对于文件和图片,可以检查是否出现了文件名,或者通过视觉识别确认缩略图已出现在聊天区域中。
💡 GA 还可以用视觉能力(
ask_vision)直接"看"截图来判断消息是否发送成功,这在 OCR 不够准确时是一个很好的补充手段。
14.8 实战:让 GA 读本章内容并实践
理解了整个流程之后,最好的学习方式就是让 GA 亲自动手试一试。具体做法非常简单:
- 把本章内容喂给 GA:将本章的 Markdown 给 GA 看,或者直接给网址告诉 GA 去阅读这份文档
- 给 GA 一个实际任务:比如「帮我在社交软件上给张三发一条消息:下午开会别迟到」
- 观察 GA 的执行过程:GA 会参考本章的流程,逐步完成激活窗口、搜索联系人、验证会话、发送消息、验证结果
- 遇到问题一起调试:如果某个步骤失败了(比如搜索框快捷键不对、输入框坐标偏了),和 GA 一起排查原因并修正
将经验沉淀为 SOP
实践成功后,最重要的一步是 把这次成功的经验固化为一份 SOP,存入 GA 的记忆中。
你可以告诉 GA:
你:刚才发消息的流程跑通了,请把这次的经验整理成一份 SOP,保存到记忆目录里。GA 会自动把本次实践中用到的具体参数(搜索框快捷键、输入框坐标区域、等待时间等)和踩过的坑一起写入 SOP。下次再执行同样的任务时,GA 会直接读取这份 SOP,不需要重新摸索。
🎓 这就是 GA 的核心工作模式:先学习通用流程 → 实践验证 → 沉淀为专属 SOP。每一次实践都在让 GA 变得更强。
14.9 避坑指南
在实际使用中,有一些常见的坑需要注意:
🚫 绝对禁止的操作
| 操作 | 后果 | 替代方案 |
|---|---|---|
按 Esc 键(Windows) | 某些社交软件在 Windows 上按 Esc 会完全隐藏窗口,macOS 不受影响 | 点击侧栏其他会话来清除搜索状态 |
| 直接键盘输入中文 | 输入法干扰,可能输出乱码 | 剪贴板复制 + Ctrl+V 粘贴 |
| 发送前不验证会话 | 消息发错人 | 必须 OCR 标题栏确认 |
💡 实用技巧
- DPI 缩放处理:高分辨率屏幕需要处理缩放比例。窗口坐标是逻辑坐标,OCR 和点击需要物理坐标,需要做坐标转换
- 搜索框残留文字:每次搜索前先全选(Ctrl+A)再粘贴,覆盖掉上次搜索的内容
- 随机偏移:连续多次点击同一位置可能触发风控,可以给坐标加一个小范围的随机偏移
- 群聊和个人会话:发送流程完全一样,不需要区分处理
14.10 本章小结
本章我们通过「在社交软件上发消息」这个 Case,学习了 GA 操控桌面应用的完整流程:
| 核心概念 | 说明 |
|---|---|
| 五步流程 | 激活 → 搜索 → 验证 → 发送 → 验证结果 |
| SOP 模式 | 把操作流程固化为 SOP,GA 按步骤执行 |
| 工具封装 | 每个步骤封装为函数,放入 utils.py |
| 决策点介入 | 确定性步骤自动执行,模糊判断交给大模型 |
| 安全原则 | 验证前不发送、剪贴板粘贴、OCR 验证结果 |
🎓 举一反三:这套「激活 → 定位 → 验证 → 操作 → 验证」的模式不仅适用于社交软件,任何桌面应用的自动化都可以套用。在后续章节中,我们会看到更多类似的案例。
