夏伟「客户咨询优先」自动回复
操作逻辑与故障修复复盘
一台企业版无影云电脑存在双层会话结构:普通会话在主列表,咨询客户藏在“客户咨询”工作台。本文记录专用调度、与其他机器的隔离边界、DRY RUN 实测发现的问题,以及逐层加固后的安全策略。
1. 最终业务逻辑
1
先进入“客户咨询”
打开聚合入口,确认负责人正确,并强制选择“咨询中”。2
图二严格最高优先级
扫描红点、未读数字和当前高亮客户;只处理最后一条确认为客户发送的消息。3
咨询队列未清空时绝不下沉
识别失败、页面不确定、身份碰撞或仍有未读时,本轮停止,不处理普通会话。4
图二清空后,图一最多处理一个
点击最左侧“消息”模块返回主列表,过滤系统入口后最多处理一位普通外部客户。5
立即回查图二
普通客户处理结束后立刻重新进入“客户咨询”,确保新咨询不会被图一长队列饿死。2. 与其他企业版云电脑的隔离
默认关闭
全局默认布局仍为 standard。其他云电脑不设置特殊开关,行为完全不变。
双条件自检
只有指定 persona 与 consultation_priority 同时成立才启动特殊调度;错配直接自检失败。
独立坐标与裁剪
咨询列表、聊天区左右边界、输入框、入口和“消息”导航均使用独立 CONSULT_* 配置。
独立会话身份
图二客户以“昵称+头像感知哈希”生成身份键。同名不同头像不会串会话,也不会和图一客户混桶。
AKKE_WECOM_PERSONA=xiawei AKKE_WECOM_LAYOUT=consultation_priority AKKE_WECOM_DRY_RUN=1 # 验收完成前始终不真发
3. 身份与发送安全门
- 聚合入口硬拦截:标题包含“客户咨询+负责人”时,直接拒绝生成和发送。
- 工作台强验证:负责人可见,且“咨询中 / 全部 / 排队中”三个标签同时存在,才承认页面正确。
- 图二发送前复核:重新扫描当前高亮行,其昵称与头像身份必须和待回复目标完全一致。
- 最后消息门:最后一条必须来自客户;我方消息、系统消息、已回复内容均跳过。
- Fail closed:OCR/VL 空响应、JSON 截断、身份不明、窗口不在前台或分辨率漂移时一律不发。
- DRY RUN 也走身份门:空跑不再绕过安全验证,因此能真实预演未来真发是否会放行。
4. 实测问题与修复
| 实测现象 | 根因 | 修复 |
|---|---|---|
| 把我方历史话术读成客户消息 | 三栏界面中,截图混入左侧咨询列表和右侧服务栏 | 图二使用独立左右裁剪,只保留中间聊天区 |
| 输入框预测点落在聊天空白区 | 沿用普通布局纵坐标 | 为咨询布局设置独立输入框坐标 |
| 左上返回箭头点击后仍留在工作台 | 该箭头在此客户端不能稳定退出 | 改点最左侧“消息”模块,并验证工作台特征消失 |
| 重新进入工作台点到列表外 | 入口横坐标继承普通会话配置 | 使用夏伟左侧列表专用横坐标,纵坐标仍由视觉动态识别 |
| 聚合入口被当成客户生成回复 | 主列表与工作台页面被视觉模型误判 | 增加确定性的聚合标题硬拦截;实测被成功阻断 |
| 9 行咨询列表 JSON 在约 1400 字符截断 | 视觉模型输出预算不足 | 提高结构化输出预算,限制最多 10 行并要求单行紧凑 JSON |
| 咨询客户标题偶尔读成负责人姓名 | 顶部标题 OCR 把左侧负责人当客户 | 客户名改取左侧高亮行;发送前用昵称+头像身份再次复核 |
| 同一咨询客户复扫时身份门偶发拒绝 | 头像裁剪框轻微漂移会改变少量感知哈希位 | 姓名仍须一致,头像改用有界汉明距离匹配;大幅不同继续拒绝 |
| 图一打开后才发现会话标题不一致 | 列表短名与聊天读取名来自不同视觉区域 | 调用话术库前先读取实际标题并与列表目标核对,通过后统一采用实际标题 |
| 销售方 568 活动长话术被识别成客户新消息 | 右侧气泡被视觉模型误标为 left,且手工历史话术不在程序发送缓冲 | 增加多特征活动话术指纹,在调用话术库前强制判为我方消息;客户正常询价不受影响 |
| 客户旧话后已有我方回复,仍被底部二读翻出 | 主读明确最后一条为 self 后,旧补漏逻辑仍允许越过它扫描历史消息 | 把 customer/self 设为终态;仅主读没有可靠最后气泡时才允许二读。整读与二读统一返回 x,由代码按几何重算左右 |
| “智能文档”被当成图一未读客户 | 系统入口图标被误识别为红点 | 点击前过滤企业微信系统入口;打开后仍保留外部客户门 |
| 远程会话尺寸在多个分辨率间跳动 | 无影窗口模式、截图工具或远程画布发生变化 | 连续稳定后才换基线;漂移期间全部跳过,不进行 GUI 点击 |
| Windows 未激活水印被抄成消息 | 水印覆盖聊天截图右下角 | 加入水印样板过滤;根治仍建议激活 Windows |
5. 验收与上线规则
当前原则:未完成 DRY RUN 端到端验收,不切换真发。
- 固定无影全屏与企业微信最大化,连续确认 Python 看到的屏幕尺寸一致。
- 在
DRY_RUN=1下观察:正确进入图二、识别客户、通过选中行身份门、返回图一、最多处理一个、立即回查图二。 - 任何误点、身份不一致或页面不确定,立即创建 STOP 文件。
- 验收通过后仅修改这台机器的 DRY RUN 与工作时间;其他机器配置不动。
- 真发后先小流量观察日志与真实送达,再逐步恢复生产限额。
紧急停止机制:本机出现 STOP 标志后,启动器不再拉起循环。排查完成前不得直接删除。
6. 已验证结果
✓ 服务器发布
生产接口健康检查通过,共享企业微信话术与会话服务保持连通。
✓ 回归覆盖
决策、身份隔离、调度、分辨率保护等回归测试持续全绿。
✓ 安全拦截实测
聚合入口误识别时,代码级安全门成功阻断;DRY RUN 全程未发送。
待最终确认
需要在固定 2560×1600 画布下完成一轮“图二客户 → 图一一位 → 回查图二”的完整空跑。