微信助手
微信助手
结论先行
检测未读 → 打开会话(校验切换成功)→ 读最近消息 → 生成建议 → 用户确认 → 发送
任何情况下都不允许跳过"用户确认"这一步。 个人微信自动化属于外挂行为,出了问题(封号、发错话)代价远高于省下的时间。
一、命令
$NODE = "C:\Program Files\sanshan-kaiwu\resources\runtime\node.exe"
$P = "<产品仓库>\tools\wechat-assistant.mjs"
# 只看和建议,不发送
& $NODE $P --dry-run --once
# 交互式:每条建议按 y 发送、n 跳过、直接输入则改后发送
& $NODE $P
# 只跑一轮就退出
& $NODE $P --once
底层脚本:tools/wechat.ps1
-Action state:只读,返回会话列表(含未读标记)、当前聊天标题、最近消息-Action open -Index N:把微信提到前台并点开第 N 个会话-Action send -Text "...":点输入框、粘贴、回车发送
二、已经踩过的两个坑
| 坑 | 现象 | 修法 |
| --- | --- | --- |
| 微信在后台 | 点击打到了别的窗口,会话没切过去 | open 前先 SetForegroundWindow + ShowWindow |
| 标题带未读数 | 切过去了但标题是 某某群(8),校验误判 | 比对前去掉 (数字) 后缀 |
校验切换成功是必须的:切不过去还继续回复,就会把 A 客户的话发到 B 客户那里。
三、红线
| 不做 | 原因 |
| --- | --- |
| 未经用户确认发送 | 一句话说错就是纠纷 |
| 群发、营销、主动加人 | 封号高风险 |
| 回复价格、交期、承诺 | 必须人来定 |
| 同时操作多个账号 | 风控 |
| 在用户不知情时后台常驻 | 信任问题 |
四、已验证记录(2026-11-07)
| 动作 | 结果 |
| --- | --- |
| 读会话列表 | ✅ 11 个会话,正确标出 2 个未读 |
| 读当前聊天 | ✅ 标题与最近 8 条消息 |
| 切换会话 | ✅ 点击后标题变为目标群(含未读数后缀) |
| 生成建议 | ✅ 模型输出口语化回复(不含价格承诺) |
| 发送 | ⏳ 待真实场景验证(需用户确认一条) |
验收清单
- [ ] 发送前把建议原文念给用户,得到明确同意
- [ ] 确认当前聊天标题与目标联系人一致
- [ ] 发送后回读消息列表,确认文字真的发出去了
- [ ] 每次只发一条,不做连发
- [ ] 记录发了什么、给谁
五、发文件(两段式,2026-11-07 验证通过)
发文件必须走"先卡片、后确认",不允许一句话直接发:
# 第一步:只出确认卡片,不动微信
node tools/wechat-send.mjs --to "小王" --file "C:\work\报价单.xlsx"
# 第二步:用户明确说"确认"后,才真正发送
node tools/wechat-send.mjs --to "小王" --file "C:\work\报价单.xlsx" --confirm
确认卡片包含:收件人 + 找到的会话、文件名、类型、大小、修改时间、完整路径、内容预览(文本前 5 行)。
发送后会回读聊天记录,确认文件名真的出现在消息里,否则报"可能没发出去"。
已验证:给「文件传输助手」发 三山测试文件.txt(45B),发送成功且回读确认。
发文件踩过的四个坑
| 坑 | 现象 | 修法 |
| --- | --- | --- |
| 中文路径 SendKeys | 路径丢字变成 .txt | 用剪贴板粘贴 |
| 剪贴板被占用 | Set-Clipboard 抛错,脚本谎报成功 | 重试 6 次 + 发完回读校验 |
| 微信窗口跑到屏幕外 | 点击落空 | 先把窗口挪回可视区 |
| 选完文件≠已发送 | 文件只挂在输入框 | 再点一次「发送」按钮 |