Winds 销售机 · 内部日结 · 第三版(bug 已编号 · 状态复查至 09-22 11:00)

今天修了什么,还有什么没修

2026-09-21,销售机(个人微信自动化)合并了 13 条改动、出了新包 1.19.3,晚上又提了一条服务端修复。 这页讲清楚:每条改动修的是什么现象、首触和自动回复现在到底怎么触发、说什么、哪些坑还在。 数字全部来自数据库全量统计。

1.19.3
最新包
13
今天合并的改动
18
AI 消息(条)
2 / 33
召回发出 / 建单
4
新好友识别(未打招呼)
70%
召回卡在回读
先纠正第一版的一处错。第一版写"今天 0 条 AI 首触",那是查询口径错了(只看了"今天新建的会话")。 实际是:AI 主动开口的消息今天有 10 条(安卓手机端 8 条召回 + 销售 B销售机 2 条召回), 而个微新好友首触确实一条没发——它还在干跑阶段,只识别不发送,今天识别出了 4 位。

01首触:靠什么触发,说什么话

首触 = 我方主动对一个刚加上的陌生人开口。比被动回复危险,所以判据更严。

本段写的是 09-21 当天的状态(P2 干跑,只识别不发送)。后续已经变了: #1505(1.20.0,09-22 12:33) 把首触升成真发——认出来就问服务端要话术、就在眼前这个已打开的会话里发,走与召回同一条发送入口。 端上闸:开关 AKKE_WEIXIN_FIRST_TOUCH_SEND(默认开)、dry_run、 每天最多 10 位(SEND_DAILY_CAP,与「每天探测 40 位」是两回事: 探测预算管花多少钱去看,发送上限管主动对多少陌生人开口)。 幂等不靠端上记性,靠服务端 opener 落库(W-10)后自己回 alreadyGreeted。 三台都还没装 1.20.0,所以真机上还没开始发。
列表逐行点开每 60s 一圈→ 不是群聊硬判据→ 客户没开过口核心判据→ 是我方主动加的看提示措辞→ 24h 内没探测过成本闸→ 当前:只记日志P2 干跑

触发判据(三条同时成立)

成本闸:同一位客户 24 小时内不重复探测;每天最多探测 40 位(每探测一位要多读一次屏 = 一次视觉模型调用)。

今天识别出的 4 位(全部没打招呼)

时间客户形态结果
08:40粤A财神爷的小跟班😍我方招呼语 + 好友通过建了会话,0 条消息
08:41闽D中林PET海洋板姜至同上建了会话,0 条消息
08:41闽C戏游人生同上建了会话,0 条消息
08:41湘A逆风也绽放💋同上建了会话 + 后来裂成两条

为什么没打招呼:个微首触现在处于干跑(P2)阶段——判据认人、服务端建会话,但不取话术、不发送。 这是刻意的:先让真机证明"它认得准",再开真发。今天这 4 位就是验收材料。

话术:三条路,按优先级

优先级哪条路发什么现状
1门店工作台发布的配置版运营后台写好的固定开场白 + 一张海报表里 0 条,不生效
2活动版(样板房活动)见下方原文已应用到所有销售号
3大脑现生成的冷开场只暖场 + 问需求,禁止要微信号、禁止逼单,带抖音画像避免重复提问兜底

活动版 · 城市已知(568 档,福建/四川/天津等):

全屋定制样板房活动,ENF级多层实木板,兔宝宝、千年舟、莫干山任选,原价868元/㎡,样板房活动价568元/㎡,含量尺、设计、安装和售后,环保检测不合格全额赔付,给您发活动介绍和产品配置看一下~
+两张海报:活动介绍 · 产品配置(物料不全就退回下面那版,不发半套)

活动版 · 城市已知(598 档,上海/江苏/浙江/深圳/北京):同上,价格换成「原价898元/㎡,样板房活动价598元/㎡」。

活动版 · 城市未知:

全屋定制样板房活动,ENF级多层实木板,兔宝宝、千年舟、莫干山任选,含量尺、设计、安装和售后,环保检测不合格全额赔付~您家房子在哪个城市呀?我把您那边的活动价和产品配置发您看看。
价格永远不让模型现编。活动价分 568 / 598 两档由城市决定,城市不知道就先问城市—— 报低了签约要涨价(客户会投诉),报高了直接劝退。
今晚修的:备注名第一个字就是地区简称(闽C戏游人生138…),这个信息一直在,只是没人用。 现在能从备注判出档位就不再问城市。「粤」故意不判——深圳 598、广东其余 568,一个字分不开, 宁可多问一句也不赌。

02自动回复:从红点到发出去

看到红点列表扫描→ 点开会话抢微信窗口→ 读屏认人标题条 = 唯一身份→ 身份闸备注合不合规→ 问大脑服务端出话术→ 发前复核窗口没变、还在底部→ 粘贴 + 回车再抢一次窗口→ 发送回执肉眼核验发出去了

标题识别:机器靠"备注名"认人

客户端唯一的身份来源是聊天窗口顶部那行标题,不是头像、不是列表预览。 标准格式 地区简称 + 字母 + 六位编号 + 名称 + 手机号,例如 闽C******王姐13800138000。

话术:大脑在服务端,不在这台电脑里

电脑只负责"读屏 → 把服务端给的字打进微信"。改话术不用重装客户端,改完下一条消息就生效。 语气按阶段切换:破冰期 / 培育期(比价、问材料)/ 决策期(问工期、定金)。

03召回:是不是"扫到就发"

这是今天问得最多的一条。答案:是,而且刻意不走搜索框。

从列表最顶逐行点开list_walk→ 读标题认人跳过群/公众号→ 立刻问服务端1.19.3 新增→ 会话还在眼前吗不在就让位→ 往上读历史确认客户最近说了什么→ 当场发送就在这个会话里

为什么不用搜索框找人:实测搜索方式的二次触达是 0 / 42——搜不到、搜错人、结果不唯一。 所以现在的设计是"会话就开在眼前才发":不在眼前(中间回了别人的消息、销售自己点走了)就把任务交还, 由列表扫描器回到那一行重新认准。今天 33 条任务里只有 1 条因为"不在眼前"让位,说明这条路是通的。

1.19.3 补的是最后一段等待:以前列表认出一位客户后,要等下一次轮询周期(最长 5 分钟)才去问服务端有没有他的任务; 现在认出来就立刻问,任务通常在同一拍或下一拍(约 8 秒)就到手,会话还开着。

04今天修了什么

按"现场看到的现象"排列。每条给了一个固定编号(W-01…),以后聊哪条 bug 直接报编号; 完整案例、修法、进度在 bug 合集页,编号一一对应。

09-22 22:40 复查:销售 A和销售 B都已经跟到 1.22.0(今晚 20:02 合的 #1529 那一版), 今天真的在跑:54 条客户消息 · 55 条自动回复 · 回上率 98%。 本表里所有「要装包才生效」的修复,对这两台都已经生效。 只剩销售 C还停在 1.14.54,而且是 not_ready、本来也没在干活。
这 13 条在代码里已经解决 12 条,只剩 W-12 没验成。 ⚠️ W-12 的优先级仍然高:两台已装、1.20.0 起首触是真发, 「身份键不统一」是活的风险而不只是统计失真。
今天总共新修了 16 条(W-23~W-32、W-34~W-38), 包括今晚 #1529 一口气修掉的七处静默失效(召回一关把首触也带走、语音已转好的字不肯读、 扫描预算被不花钱的动作烧光、「翻 60 页回顶部」这条保护在 100 的预算下永远够不着…), 全部记在 bug 合集页。 (安卓手机端的问题已按要求移出该页,只记电脑端。)
深夜又合了一批(#1537,09-23 00:30, 八处一起修,标 v1.22.1):真正拦住那三位新好友的那条终于找到了——「以上是打招呼的消息」 这行居中灰字被读成客户说的话,于是「客户已经说过 1 条」把首触挡掉; 还有首触不发图、读历史的预算把列表轮询饿死(才 1/100 就报到顶)、 以及两条由「首触落库」带出来的副作用(老会话零消息被当成没打过招呼 → 重复打; 没窗口还先去问话术 → 落库记成已发,这位新好友从此永远收不到)。
但 1.22.1 还没出包——代码合了, 机器上还是 1.22.0,这八条真机上一条都还没生效。 全部记在 bug 合集页(W-39~W-46)。
编号现象根因(大白话)修了没代码里(当前 main)真机上(09-22 22:40)
W-01 升级装不上,只能重启 占着安装目录的就是 start.bat 自己——它把工作目录设成了安装目录 1.18.5
#1479
✅ 已解决
start.bat 无 cd
销售 A 1.22.0 ✅ 销售 B 1.22.0 ✅
销售 C 1.14.54 ❌ 未装
W-02 升级后机器顶着别人的人设 安装器里写死了某台机的身份,且无条件执行 1.18.3✅ 已解决
身份键已不写死
销售 A 1.22.0 ✅ 销售 B 1.22.0 ✅
销售 C 1.14.54 ❌ 未装
W-03 话术生成好了却被耗掉 "没抢到微信窗口"和"大脑答不上"共用重试额度;一天抢窗口失败 1178 次 1.18.4✅ 已解决
RETRY_YIELD_REASONS
销售 A 1.22.0 ✅ 销售 B 1.22.0 ✅
销售 C 1.14.54 ❌ 未装
W-04 说了发两份协议,图一张没到 默认"一轮最多发 1 张",而话题一固定两张 → 永久卡死 1.19.2
#1494 · 打进 1.19.3 包
✅ 已解决
RECALL_MAX_POSTERS=2
销售 A 1.22.0 ✅ 销售 B 1.22.0 ✅
销售 C 1.14.54 ❌ 未装
W-05 矮柜报价少算 13% "高度不足 1 米按 1 米算"没写进计价逻辑 服务端✅ 已解决
pricing.ts:701
已生效
W-06 客户说"我另外订了"还在推销 话术策略没有识别这类终止信号 服务端✅ 已解决
churn-signals.ts
已生效
W-07 找到客户后干等几分钟 认出客户不会清掉轮询退避,要等下一个周期 1.19.3
#1492
✅ 已解决
poll_now=True + 回归测试
销售 A 1.22.0 ✅ 销售 B 1.22.0 ✅
销售 C 1.14.54 ❌ 未装
W-08 新好友一个都认不出 判据要求"一条气泡都没有",而加好友招呼语本身就是一条我方气泡 1.19.1
#1491 · 打进 1.19.3 包
✅ 已解决
customer_spoke / 侧别判定;1.20.0 起首触真发
销售 A 1.22.0 ✅ 销售 B 1.22.0 ✅
销售 C 1.14.54 ❌ 未装
W-09 召回 70% 卡在读历史 翻聊天记录两屏对不上就整条不发 已合 #1496
09-22 10:02
✅ 已解决
isNeverReplied + 日限 2
服务端已生效
W-10 同一个人被打两次招呼 首触发出去的话从不写库,而防重复闸恰恰是数消息条数的 → 闸从没生效过 已合 #1496
09-22 10:02
✅ 已解决
recordOpenerSent 落库
服务端已生效
W-11 问客户"您家在哪个城市" 备注 闽C… 里已经有地区码,没人用 已合 #1496
09-22 10:02
✅ 已解决
campaignFromRemarkProvince
服务端已生效
W-12 同一个客户裂成两条会话 首触登记用"显示名"当身份键,自动回复用"哈希"当身份键,两套 仍未修
#1502 只堵掉了"名字带编号残片"这个新入口
⚠️ 没验成
opener 已送统一 hash,但现场时间线对不上
两台已装 1.22.0
首触在真发 → 这条成了活风险
W-13 「杭A60288 小夏」服务端不认 「杭」不是车牌省简称(浙江是「浙」),编号也只有 5 位 仍未修
编号位数写错按 #1502 红线①刻意继续拒
✅ 已解决
#1508 13:17 已合 · CITY_ALIAS 杭→浙 · 等 1.20.2 出包
销售 A 1.22.0 ✅ 销售 B 1.22.0 ✅
1.20.2 已出包并装上 · 销售 C ❌

05Badcase:卡在哪、为什么

召回:33 条任务只发出 2 条

编号卡点条数为什么状态(09-22)
W-09发送前回读失败23 发召回前要从底部往上翻聊天记录,确认客户最近说的是什么(怕给说过"已经订了"的人发通用召回)。两屏之间对不上就宁可不发。 兜底已合 #1496
W-04海报发不出5默认一轮发 1 张 vs 话题一要 2 张 → 永久卡死已修 · 两台已装 1.22.0
—回读反复失败被取消2同一会话连续 3 次读不成自动放弃、交人工(保护机制)设计如此
—目标会话不在眼前1列表被新消息挤动,让位、稍后由扫描器找回设计如此

首触:识别了 4 位,一条招呼没打

新加的用户为什么没有回复

今天新建的 14 条会话里 12 条是空的——但原因分两种,别混:

所以"新加的用户没有回复"的准确说法是:他们没有先开口,而我方的主动开口(首触)还没开真发。 客户一开口,自动回复是接得上的——今天湘A逆风也绽放 11:35 说"我过些天联系你",11:36 就回了"好的,您先忙,有需要随时找我~"。

06"列表和服务端不一致",确认结果

这条今天被反复提到,逐项核过了。

07机队现状

机器在跑版本下发目标召回今天
销售 B1.18.41.19.3(已下好,等人点 start.bat)真发发出 2 条召回
销售 A1.18.5待下发演习回复 8 条 · 识别 4 位新好友

装的时候:关掉黑窗口 → 双击一次 start.bat → 别碰鼠标 → 装完别点第二次。 装完回服务端核四项:机器名、人设、版本号、召回开关。

案例拆解:闽D想家——AI 报了 1581,销售撤回改成 1817.6 →

数据来源:Supabase 全量查询(messages / conversations / windows_recall_tasks / windows_recall_customers / wecom_loop_heartbeats)+ 当日 13 条 PR。
第二版于 2026-09-21 晚更新(纠正首触口径、补首触/召回链路、补当晚三条修复与两条未修)。
第三版于 2026-09-22 11:00 更新:给 13 条 bug 编了固定号(W-01…W-13)、把三条"待合并"改成已合(#1496)、补上"三台机一台都没装 1.19.x"这个真相。每条 bug 的完整案例/修法/进度见 bug 合集页。内部页,不对外。