夏伟企微自动化 · 部署与触发全景

一台阿里无影 Windows 云电脑承载三条业务腿:自动回复 → 首触 → 召回。核心原则是严格串行、真实客户优先、聚合入口永不操作。
交互端
企业微信 PC
消息主列表、服务群、搜索框。
不进入“客户咨询·夏伟”
执行端
阿里无影云电脑
wecom_reply_loop.py
截屏、VL 读屏、身份复核、点击、打字、发送
网络桥
Fly Relay
akke-wecom-relay
国内云电脑无法直连 Vercel/OpenRouter,由它透传
大脑
Vercel / wecom-chat
/api/wecom/chat/reply
opener / generate / confirm / claim_recall
状态与智能
Supabase + LLM
会话、消息、召回队列、客户画像;Langfuse prompt 与链路追踪
1

自动回复

先扫当前会话与所有真实未读红点。只要存在待回客户消息、扫描失败或身份不确定,本轮就不下沉。

2

首触

自动回复明确清空后,扫描新好友与夏伟新服务群;空会话且身份核验通过才发第一句话。

3

召回

自动回复和首触都明确清空后,才从服务端领一条召回任务,搜索客户并通过标题身份门后发送。

调度不变式:同一时刻只有一个 GUI loop 操作鼠标键盘,优先级只能从 1 → 2 → 3 单向下沉;任何上级“不确定”都视为“可能有客户待处理”。
① 自动回复 · generate
触发
当前打开会话出现新客户气泡,或消息主列表出现真实客户红点。
必须同时满足
工作时间内;真发模式;未超日/时/单客限额;标题与候选身份匹配;最后一条确为客户;未重复回复。
不会触发
“客户咨询·夏伟”、系统号、内部号、我方末尾消息、系统验证文案、读屏不确定、窗口失焦。
② 首触 · opener
触发 A:新好友
不需要 @。好友刚通过且会话没有红点:列表变化后定时扫描;识别“已添加/通过验证”,打开后确认没有真人聊天记录。
触发 B:新服务群
需要一条来自左侧的纯 @ 激活消息。可 @夏伟、@当前客户,或 @群内另一位成员。群标题须为“7/8位编号 + 全屋定制 + 城市 + 服务群”,并核验正好 3 人、其中 2 位外部联系人。
推荐建群动作
让客户只发一条 纯 @夏伟,不要附带正文;这是最稳定、最容易识别的触发方式。
不会触发
@所有人;我方右侧发出的 @;@ 后附带正文;出现两条或更多 @ 消息;已有历史聊天;成员数量不符;识别不稳;自动回复尚未清空。服务端再次检查会话,保证幂等。
③ 7天召回 · claim_recall
服务端触发
Vercel cron 每分钟运行;全局真派开关为 true、账号在 allowlist、候选到期、无 backlog、未超日限/合并小时限,才入队。
云电脑触发
本机召回开关开启且有 Account ID;上两级明确清空后,每 tick 最多 claim 1 条,搜索目标、标题复核、发送并回执。
终止召回
客户已回复、对方删除、完成 7 个话题、身份门失败、超限或人工急停。
特别边界:“客户咨询·夏伟”即使有红点也永远不看、不点、不操作;像 26080303 全屋定… 的真实服务群红点则允许进入完整标题与成员身份复核。
准备云电脑与企微阿里无影 Windows 保持运行;登录夏伟企微;窗口可见、非最小化;固定显示缩放与分辨率。
安装运行环境cloudpc/wecom-chat/ 放到 C:\akke-wecom,运行 bootstrap-wecom.bat 安装 Python GUI/VL 依赖并生成 .env
填写身份、端点与坐标配置 PERSONA=xiawei、Fly relay 端点/secret、输入框/发送键/搜索框/群信息按钮坐标。坐标必须在本机实测,不能照抄别人。
先空跑三条腿DRY_RUN=1;召回另设 RECALL_DRY_RUN=1。分别造一个客户未读、新服务群和测试召回任务,核对点击对象与生成内容,不发送。
开启严格调度与首触启用 STRICT_PRIORITY=1NEW_SERVICE_GROUP_ENABLED=1;确认日志严格按 自动回复 → 首触 → 召回。
灰度真发先把被动/首触切 DRY_RUN=0;召回需服务端 WECOM_RECALL_AUTOSEND_ENABLED=true 与云电脑 RECALL_ENABLED=1 双开关,首批人工盯盘。
常驻与验活运行 start-wecom-reply.bat;launcher 负责崩溃重启和脚本 MD5 自更新。检查 wecom_reply_status.json_loop.log 与 15 分钟心跳。

夏伟机关键配置

配置
建议
作用
AKKE_WECOM_PERSONA
xiawei
绑定夏伟身份,并强制 messages-only
AKKE_WECOM_LAYOUT
standard
禁止 consultation_priority
AKKE_WECOM_STRICT_PRIORITY
1
自动回复 > 首触 > 召回
AKKE_WECOM_NEW_SERVICE_GROUP_ENABLED
1
启用夏伟新服务群首触
AKKE_WECOM_RECALL_ENABLED
1
启用本机召回执行腿
AKKE_ACCOUNT_ID
夏伟账号 UUID
只领取本账号的召回任务
AKKE_WECOM_HOURS
9-21
限定运营时段
AKKE_WECOM_DRY_RUN
验收后 0
被动回复与首触总真发开关
AKKE_WECOM_RECALL_DRY_RUN
验收后 0
召回独立真发开关

每日开工检查

  • 企微已登录、窗口可见且铺满屏幕
  • wecom_reply_STOP
  • wecom_reply_status.json 时间持续更新
  • 日志显示 messages-only:开、严格优先级开启
  • DRY_RUN 与工作时间符合当天运营计划

三条腿的观察日志

  • 自动回复:[待回客户消息][send-confirm]
  • 首触:[新好友扫描] / service_group_opener
  • 召回:[recall] claim 到 → 搜索 → 身份门 → complete
  • 聚合入口:应看到“不点击”,不应出现 click

急停顺序

  • 最快:创建 C:\akke-wecom\wecom_reply_STOP
  • 只停召回:云电脑关闭 RECALL_ENABLED
  • 服务端停派:设 WECOM_RECALL_AUTOSEND_ENABLED=false
  • 修复后删除 STOP,杀旧进程并重启 launcher

常见故障定位

  • 不点击:看窗口前台、分辨率、预检是否读空
  • 401:云电脑 secret 与服务端不一致
  • 无召回:检查双开关、allowlist、Account ID、队列 backlog
  • 坐标偏:重新运行测量脚本,禁止复制其他机器坐标
  • 脚本旧:看 launcher sync MD5 与自更新日志
上线验收必须看到的闭环:识别正确对象 → 打开后再次核身份 → 生成内容 → 草稿完整性确认 → 点击发送 → 可视发送确认 → confirm/complete 回写数据库。只看到“脚本在跑”不算部署完成。