企业微信好友单聊的 AI 自动代回。不走官方 API(官方客服 API 被 ICP / 可信 IP 卡住), 而是在云电脑上跑一个常驻 Python loop,用「截屏 → 视觉模型认字读消息 → 固定坐标点击打字发送」的 GUI 方式代回。
/api/wecom/chat/reply → chatReply(小艳,模型 glm-4.6)→ 回传 → GUI 打字发出先天特性:GUI 方式没有"送达回执",靠截图认字,天生比 API 脆——本次优化就是尽量把这些脆点补硬。
| 项 | 治什么问题 | 状态 |
|---|---|---|
| A 连发防抖 | 客户连发多条时,读到半截就回、剩下的下轮又回一次(拆成多条)。改:读到待回消息后先确认聊天区 2.5s 不再变化(发完)才回。 | 已上线 |
| B 读取上限 | 每次最多读 6 条 → 连发 >6 条漏前面。改为 10 条。 | 已上线 |
| C 红点不饿死 | 某会话红点卡住不消时独占 3 个处理槽,饿死其他客户。改:本轮已点过的行跳过。 | 已上线 |
| 系统消息过滤 | "XX撤回了一条消息""工作台统计(总客户N位/收款N元)"被当客户消息回。改:正则拦截,从源头跳过。 | 已上线 |
| F 红点检测修正 | 截图含最左导航栏 → "消息"图标红角标被当成 y≈58 的假未读,一直点顶部死区、点不开真新好友(野乔通过没首触)。改:裁掉导航栏 + 顶部死区过滤。 | 已上线 |
| G 发送前重抢前台 | "读→生成"隔数秒,其间焦点被抢 → 发送中止 / 打字中途丢焦。改:发前主动把企微顶到最前+最大化。 | 已上线 |
| VL 断连重试 | 视觉模型(OpenRouter)偶发掐连接 → 整轮读取作废。改:失败重试 3 次 + 退避。 | 已上线 |
| ★ 发送后回读确认 | 治"假成功"——按发送键就记成功,但字没落进输入框/坐标偏/被窗口挡,聊天里根本没有(野乔首触两次假成功、还被锁成"已招呼")。改:发完截图回读,确认文案真出现在右侧才记成功;没确认到 → 不记已发、不锁已招呼、下轮重试。 | 已上线 |
| ★ 定期全量扫会话 | 客户在【无红点、又非当前打开】的会话里回消息,两条腿都够不着(野乔发"新房"漏读)。改:每 5 轮把前 6 个会话逐个点开读一遍补漏。 | 已上线 |
| ★ @微信 硬门 | 全量扫 + 历史假成功把系统通知/内部群(客户联系/服务总结/行业资讯/企业微信团队/内部全员群)也回了、还写进台账污染去重。改:只代回标题带「@微信」的外部客户,系统/群/同事一律不碰。 | 已上线 |
wecom_replied_ledger.json / wecom_sent_texts.json,重置历史脏去重状态。| 问题 | 说明 | 性质 |
|---|---|---|
| 发送落地强依赖环境 | 字要真进企微输入框,必须:①企微在最前 ②输入框坐标准 ③没有别的窗口(尤其 PowerShell 黑窗)盖在企微上。黑窗一盖 / 焦点被抢,就发不出(回读确认会抓到并重试,但发不出还是发不出)。 | 环境/操作 |
| D 失焦发半条不记账 | 发送中途失焦中止时只发了半条却不记账,下轮重生成整条 → 客户可能收到"半条+整条"。 | 未修·下批 |
| E 身份用显示名 | 会话身份 = 销售号:显示名。客户改微信昵称 → 新建会话丢历史;同名不同人会撞车。GUI 拿不到稳定 userid,补不干净。 | 结构性 |
| 全量扫有成本 | 每 5 轮把前 6 个会话(含系统会话)各截图读一次 VL。@微信 硬门拦住了"回复",但"读"仍会烧一点视觉模型额度。可调 FULL_SCAN_EVERY / FULL_SCAN_TOP_N 权衡。 | 可调 |
| 视觉读图本身不稳 | 偶发漏读 / 误读 / 断连(已加重试,但非 100%)。 | 方案固有 |
| 🔒 根本天花板 | GUI 方案无官方送达回执,回读确认是补救不是根治。任一环(读图/坐标/前台/窗口)抖动就漏读或发不出。到不了"零故障、无人值守"。 | GUI 天花板 |
measure_wecom_coords.py 在当前窗口重新标定输入框/发送坐标。C:\akke-wecom\ 建空文件 wecom_reply_STOP 即停;排查好删掉再起。wecom_replied_ledger.json + wecom_sent_texts.json 重置。63999),别看黑窗里写死的版本号。