Install
openclaw skills install @wgfuying/wechat-desktop-claw-automatic-control打开微信桌面端,向指定联系人发送消息、图片、文件等内容。触发词:给某人发微信、打开微信发消息、微信发送、通过微信发给。也支持被其他 Skill 调用,实现自动化推送。
openclaw skills install @wgfuying/wechat-desktop-claw-automatic-control通过 pywinauto 自动化操作微信 Windows 桌面端,实现消息/图片/文件的自动发送。
本 Skill 完全开源,源代码公开,采用 Apache-2.0 协议。
--manifest:一条命令、单个进程处理多个群聊 + 多张图,杜绝 Agent 在多次调用之间误关微信--screenshot:不关闭微信即可把聊天窗口存成 PNG,供 Agent 肉眼核验发送结果ShowWindow(SW_RESTORE) + 置前台还原,无需人工重开[SENT_OK] / [SENT_FAIL] / [RESULT] 标记,便于 Agent 解析成败,不必靠关窗判断pywinauto, pyperclip, pillow, pywin32pip install pywinauto pyperclip pillow pywin32
默认路径:C:\Program Files (x86)\Tencent\WeChat\WeChat.exe
常见安装路径也可能为 D:\Tencent\WeiXin\WeiXin.exe(注意拼写是 WeiXin 不是 WeChat)。
修改脚本第 33 行 WECHAT_PATH 变量即可适配你的安装路径。
# 发送文本
python scripts/wechat_send.py --contact "好友昵称" --message "你好,这是自动发送的消息"
# 从文件读取长文本发送
python scripts/wechat_send.py --contact "好友昵称" --message-file "report.txt"
# 发送图片
python scripts/wechat_send.py --contact "好友昵称" --image "C:\path\to\image.png"
# 发送文件
python scripts/wechat_send.py --contact "好友昵称" --file "C:\path\to\file.pdf"
# 仅启动微信
python scripts/wechat_send.py --launch-only
其他 Skill 可以通过以下方式调用本 Skill 发送消息:
import subprocess
subprocess.run([
"python",
"scripts/wechat_send.py",
"--contact", "好友昵称",
"--message", "消息内容"
])
本 Skill 常被 Codex、WorkBuddy 等自主 Agent 通过命令行驱动。以下是针对这类场景的关键约定,务必遵守,否则会出现“发完一个群微信就被关进托盘、需手动重开”的死循环:
wechat_send.py 在任何情况下都不会关闭 / 退出微信。微信由脚本启动时即作为独立进程常驻,脚本进程结束也不杀它。Agent 在批次任务中也严禁主动关闭 / 最小化微信窗口——微信的 × 按钮和 Alt+F4 默认只是“最小化到系统托盘”,不是真退出,关了反而会把下一次操作卡死。
--manifest)不要为每个群各跑一次脚本(那样 Agent 容易在两次调用之间手滑关微信)。改为一条命令、一个进程处理全部:
python scripts/wechat_send.py --manifest send_plan.json
send_plan.json 示例(两张图发两个群,且每张图前先发通用文本):
[
{
"contact": "群聊A",
"message": "xxx",
"images": ["D:/pics/a.png"]
},
{
"contact": "群聊B",
"message": "xxx",
"images": ["D:/pics/b.png"]
}
]
字段:contact(必填,群名/昵称)、message / message_file(文本)、images(图片数组)、files(文件数组)。整个批次在单个进程内顺序完成,微信全程不关。脚本结尾输出 [RESULT] total=N ok=M fail=K 供 Agent 解析。
旧版“只发送不读取”,Agent 没法确认成败,往往靠“关了重开再瞅”来核验——这正是 issues 里“不断关闭微信”的来源。v1.1.0 新增:
python scripts/wechat_send.py --manifest send_plan.json --screenshot D:/verify.png
脚本把微信窗口存成 PNG(不关闭微信),Agent 直接读图核验。每组发送都会打 [SENT_OK] / [SENT_FAIL] 标记,无需关窗判断。
若微信不慎被收进托盘,重跑脚本即可:launch_wechat() 会按标题匹配隐藏窗口,get_main_window() 会 ShowWindow(SW_RESTORE) + 置前台自动还原。批次中每组操作前也都会 ensure_window() 确认窗口在前台。
使用 pywinauto 的 uia 后端连接微信窗口,窗口标题必须为"微信"(不是 "WeChat")。
app = Application(backend='uia').connect(title_re="微信", timeout=10)
window = app.window(title_re="微信")
所有文本输入均通过 剪贴板 + Ctrl+V 实现,避免 pywinauto 直接键入中文的编码问题。
pyperclip.copy(text)
send_keys("^v") # Ctrl+V 粘贴
将图片转为 BMP 格式(去掉文件头 14 字节,取 DIB 数据),直接写入 Windows 剪贴板 CF_DIB 格式,在聊天框 Ctrl+V 粘贴即发送。
# 详见 scripts/wechat_send.py send_image() 函数
win32clipboard.SetClipboardData(win32con.CF_DIB, data)
Enter 键(微信默认设置)Ctrl+FCtrl+Alt+FShowWindow 还原到前台,无需手动重开。但仍建议 Agent 批次任务中不要主动关闭 / 最小化微信(×/Alt+F4 仅最小化到托盘,关了反而卡死后续操作)。wechat-desktop-claw-automatic-control/
├── SKILL.md # Skill 定义文件(本文件)
├── scripts/
│ └── wechat_send.py # 核心自动化脚本(完整源码见下方)
├── LICENSE # Apache-2.0 开源协议
└── README.md # 说明文档
scripts/wechat_send.py完整源码已随 Skill 打包,路径:
scripts/wechat_send.py
(源码内容较长,见 scripts/wechat_send.py 文件)
SkillHub 评论区:https://skillhub.cn/skills/wechat-desktop-claw-automatic-control