微信自动发信 Skill
赋予智能体掌控 Windows 桌面微信直接向真实用户或群组发送文本、图片URL或本地文件的能力。本 Skill 使用同步命令行入口,执行一次命令发送一次消息,命令结束后立即退出。
只发送微信消息时,不需要启动后台 HTTP API,不需要运行 run.bat,也不需要调用 scripts/app.py。
应用场景
- 信息推送:当你作为智能体完成了某项长耗时的搜索、总结或生图任务后,可以将最终结果或报告链接直接通过微信发送给用户指定的联系人。
- 定时催办/打卡通知:结合智能体的定时任务机制,向目标群组发送通知。
- 跨平台转发:将抓取到的内容(特别如新闻图片、数据图表链接)作为微信信息直接转发。
- 任务链收尾:先完成搜索、分析、运行命令、生成报告等任务,再把最终摘要或结果通过微信发送给指定联系人或群。
- 本地文件转发:把 Agent 生成的报告、截图、表格、压缩包、本地图片等文件直接发给指定联系人或群。
典型触发语句
- “帮我给 LAVA 发个微信,就说我今天晚点到。”
- “把刚才总结的会议纪要发到工作群里。”
- “下载这个图片,用微信发给 文件传输助手。”
- “帮我通知一下 张三,让他明天带电脑。”
- “查询今天关于 AI 的最新新闻,整理成简洁总结,然后通过微信发送到联系人 文件传输助手。”
- “把这次运行结果总结整理,通过微信发送到 项目通知群。”
- “把本机上的 C:\tmp\report.xlsx 通过微信发送给 文件传输助手。”
- “把刚生成的截图发到 项目群。”
作为 Skill 调用的规范指令
本 Skill 是一个独立的同步执行脚本,调用后会直接返回结果退出,不会常驻内存。请在项目根目录中使用以下语法调用:
发送文本消息
python scripts/skill_cli.py --to "联系人或群组名称" --content "你要发送的具体文本"
发送图片消息
python scripts/skill_cli.py --to "联系人或群组名称" --content "https://example.com/image.png" --action "sendpic"
如果 sendpic 的 --content 是本地路径,则不会下载图片,会直接按本地文件复制并粘贴到微信。
发送本地文件或本地图片
python scripts/skill_cli.py --to "联系人或群组名称" --content "C:\path\to\file.zip" --action "sendfile"
本地图片、PDF、Office 文档、压缩包等都使用 sendfile。Agent 发送自己刚生成的文件时,应优先使用绝对路径。
发送测试
首次安装或接入 Agent 后,优先向“文件传输助手”发送测试消息:
python scripts/skill_cli.py --to "文件传输助手" --content "这是一条来自 Agent Skill 的测试消息"
stdout 输出 发送成功 表示任务完成。stdout 输出 发送失败 或 执行异常 时,应将错误信息原样反馈给用户。
如需更稳定地解析结果,可追加 --json:
python scripts/skill_cli.py --to "文件传输助手" --content "测试消息" --json
JSON 输出字段包含 success、code、message、to、action。success=true 表示已完成发送;success=false 表示未发送成功。
安装与运行环境
- Windows 10/11,微信 PC 客户端已启动并登录。
- 在项目根目录安装依赖:
pip install -r requirements.txt。 - Agent 执行本 Skill 时,工作目录应为本项目根目录,确保
python scripts/skill_cli.py ...可以找到scripts/wechat_controller.py。 - 不要为普通发消息任务启动后台 HTTP API;HTTP API 只用于长期服务、队列和外部系统集成。
系统辅助功能启用
若运行环境为精简版或 Ghost 系统,需确保 Windows 辅助功能正常运行。通过键盘 Win 键唤出开始菜单,输入“讲述人”并开启该功能(开启后可立即关闭),此操作可确保系统底层 UI 自动化接口处于激活状态,避免程序无法识别元素。
注意事项与约束
- 必须精确匹配名称:
--to参数指定的联系人或群组名称必须与微信内的备注或网名完全一致(区分大小写和空格),否则可能导致发送失败或发错人。 - 直接执行命令:不要试图使用视觉模型去理解或分析微信页面。直接执行上述命令行命令即可,底层脚本已封装窗体查找、联系人搜索和发送操作。
- 识别执行结果:执行后请读取 stdout 和退出码。退出码
0表示成功;退出码非0表示失败。如果输出发送失败或 JSON 中success=false,请原封不动把message和code反馈给用户,不要擅自循环重试。 - 长文本分段发送:如果要发送的文字内容超过 2000 字,Agent 应主动拆成多段,分多次调用本 Skill 发送。每段建议不超过 2000 字,并在内容开头标明序号,例如
【1/3】...、【2/3】...、【3/3】...。 - 特殊字符支持:内容中可以直接包含换行符(
\n)或表情符号文本,脚本层会自动处理转义与输入,请放心传入。 - 本地文件用绝对路径:发送本机文件或本机图片时,优先传绝对路径,例如
C:\tmp\report.pdf。相对路径会按当前工作目录解析。 - 避免重复发送:失败后不要自动多次重试,除非用户明确要求。
异常处理与反馈
CLI 会尽量给出明确失败原因,常见 code 包括:
WECHAT_WINDOW_NOT_FOUND:未找到微信窗口。请确认微信 PC 已启动并登录;精简版或 Ghost 系统可按“系统辅助功能启用”处理。CONTACT_NOT_FOUND:未找到联系人或群组。请确认--to与微信备注、联系人名或群名完全一致。SEARCH_BOX_NOT_FOUND:未找到微信搜索框。可能是微信 UI 结构变化、窗口未加载完成或系统 UI 自动化不可用。CHAT_INPUT_NOT_FOUND:未找到聊天输入框。可能未成功进入目标会话,或微信 UI 结构变化。CLIPBOARD_TEXT_FAILED:文本写入剪贴板失败。请检查系统剪贴板、pyperclip或远程桌面会话状态。IMAGE_DOWNLOAD_FAILED/IMAGE_URL_NOT_IMAGE:图片 URL 下载失败或返回内容不是图片。IMAGE_CLIPBOARD_FAILED:图片复制到剪贴板失败。LOCAL_FILE_NOT_FOUND:本地文件不存在。请检查路径是否正确,建议使用绝对路径。LOCAL_FILE_INVALID:路径不是文件,当前不支持发送目录。FILE_CLIPBOARD_FAILED:本地文件复制到剪贴板失败。请检查系统剪贴板或远程桌面会话状态。SEND_FILE_ERROR:发送本地文件异常。DEPENDENCY_MISSING:缺少 Python 依赖。请在项目根目录执行pip install -r requirements.txt。CLI_EXCEPTION:CLI 自身执行异常。
Agent 遇到失败时应停止当前发送任务,把错误原因反馈给用户,并建议用户检查对应环境或联系人名称。
开发者辅助工具
如需维护或扩展元素查找逻辑,建议使用 Visual Studio SDK 自带的 Inspect.exe 工具(或 Windows SDK 工具包),用于实时查看微信窗口的 UI 元素树结构、Name、AutomationID 及 ClassName 等关键属性,辅助编写元素查找逻辑。