企微首触 + 自动代回 · 同事接入操作手册

每位销售在自己的无影云电脑上接入 · 脚本全员同一份,差异只在各自 .env · 2026-07-01
✅ 照着做即可,无需懂代码 每人一个销售身份壳(persona) 先 DRY_RUN 验活,再真发 主号无隔离 · 日限 20 从严
前置

开始前确认三样

企业微信PC 客户端已装、已登录你自己的销售号、窗口别最小化到托盘(GUI 自动化靠截屏)。
Python 环境云电脑已装 Python + 依赖(pyautogui pygetwindow pyperclip python-dotenv)。没有找 PM 一次性装好。
目录脚本与 .env 都放 C:\akke-wecom\(含 start-wecom-reply.bat)。
身份

先确定你的 persona(决定 AI 自称谁 + 话术身份)

AKKE_WECOM_PERSONAAI 自称性别对应同事
xiaoxia小夏夏夏
xiaofan小范饭粒
xiaowen小文野荞
xiaowu小武Gus

不在这 4 个里(新销售)→ 先找 PM 加一个身份壳,别直接用,否则会回退成默认「小艳」,跟你号对不上。

步骤

6 步接入

1

拿脚本到 C:\akke-wecom

cd C:\akke-wecom
# 用 curl.exe 下载最新脚本(别用 Invoke-WebRequest:PS5 进度条会卡死下载)
# 下面是 2026-07-01 最新版;以后有更新以 PM 群里发的链接为准
curl.exe -s -o wecom_reply_loop.py https://paste.rs/hJKZi
(Get-Item wecom_reply_loop.py).Length          # 校验下全了(约 3.6 万字节)
python -m py_compile wecom_reply_loop.py; if ($?) { "py-OK" }

脚本全员同一份(含读屏「按序抄→取最后一条」、防自回/防误读/防重复三护栏、单条首触、随机 1-3 条气泡、客户连发合并、硬前台等)。最新链接以 PM 群里发的为准(脚本会持续迭代)。

2

配 .env(红色是每人不同的)

# ===== 每人不同(按自己的号填)=====
AKKE_WECOM_PERSONA=xiaowen          # 你的销售身份壳,见下表(xiaoxia/xiaofan/xiaowen/xiaowu)
AKKE_WECOM_C_INPUT=153,915          # 你这台屏幕的输入框坐标,用下面 Step3 实测
ANTHROPIC_API_KEY=<你自己的 OpenRouter key>   # 读屏 VL 用,各自用自己的,别找 PM

# ===== 所有人相同 =====
AKKE_OCR_MODEL=qwen/qwen3-vl-30b-a3b-instruct
WECOM_CHAT_ENDPOINT=https://akke-worker-prod.fly.dev/wecom/chat/reply
WECOM_CHAT_SECRET=<问 PM 要,全员同一把>
AKKE_WECOM_DRY_RUN=1                # 先 1 验活;验好了改 0 才真发
AKKE_WECOM_HOURS=9-21
AKKE_WECOM_DAILY_LIMIT=20
AKKE_WECOM_HOURLY_LIMIT=8
AKKE_WECOM_PER_CUSTOMER_DAILY=6
AKKE_WECOM_MIN_INTERVAL=25
AKKE_WECOM_MAX_INTERVAL=70

AKKE_WECOM_PERSONA 按上表填自己;ANTHROPIC_API_KEY你自己的 OpenRouter key(各自的,别找 PM);只有 WECOM_CHAT_SECRET 问 PM 要(全员同一把、别外传)。用记事本存成 UTF-8。

3

量你这台的输入框坐标

cd C:\akke-wecom
# 手动把鼠标放到企微【底部打字输入框正中】,5 秒内别动
python -c "import pyautogui,time; time.sleep(5); x,y=pyautogui.position(); w,h=pyautogui.size(); print(f'AKKE_WECOM_C_INPUT={round(x/w*1000)},{round(y/h*1000)}')"
# 把输出那行的值填进 .env 的 AKKE_WECOM_C_INPUT

不同屏幕分辨率坐标不一样,必须各自量一次,填进 .envAKKE_WECOM_C_INPUT

4

DRY_RUN 验活(只读不发)

cd C:\akke-wecom
python wecom_reply_loop.py
# 看启动行是否 DRY_RUN=True;有新好友时应打印“新好友…待首触”+“小艳首触:…”
# +鼠标移到输入框(不真发)。确认话术/坐标 OK 后 Ctrl+C

确认:能识别新好友、首触自称是你的 persona 名、鼠标落在输入框里。都对再进下一步。

5

话术自测(整段贴 PowerShell,不真发给客户)

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$e = Get-Content C:\akke-wecom\.env
function ev($k){ (($e|?{$_-match "^$k="}|Select -Last 1) -replace "^$k=","").Trim() }
$EP=ev "WECOM_CHAT_ENDPOINT"; $SEC=ev "WECOM_CHAT_SECRET"; $P=ev "AKKE_WECOM_PERSONA"
function post($b){ $x=[Text.Encoding]::UTF8.GetBytes(($b|ConvertTo-Json -Compress))
  $r=Invoke-WebRequest $EP -Method Post -Headers @{Authorization="Bearer $SEC"} -ContentType "application/json; charset=utf-8" -Body $x -UseBasicParsing
  ([Text.Encoding]::UTF8.GetString($r.RawContentStream.ToArray())|ConvertFrom-Json) }
"首触:"; 1..2|%{ (post @{action="opener";customerName=("测试首触{0}_{1}" -f $_,(Get-Random));persona=$P}).reply }
"代回:"; @("你们做衣柜吗多少钱","用什么板材环保吗","怎么加你们微信")|%{
  "  客户: $_"; "  回: " + (post @{action="generate";customerName=("测试{0}" -f (Get-Random));message=$_;persona=$P}).reply }

核对:首触中性招呼不要微信;代回走 568 口径、问「怎么加微信」时回「已经加上了」而不是抛微信号。

6

切真发 + 起常驻

cd C:\akke-wecom
# .env 改 AKKE_WECOM_DRY_RUN=0(真发),然后起常驻:
.\start-wecom-reply.bat

起来后盯几分钟:新好友通过→自动首触一条;客户回消息→代回。异常随时急停(见下)。

运维

日常运维 & 急停

急停 / 恢复

ni C:\akke-wecom\wecom_reply_STOP -Force        # 急停
del C:\akke-wecom\wecom_reply_STOP                      # 恢复后删掉再起
每天/重启后云电脑一关机 loop 就没了 → 确认企微登录 + 删 STOP + .\start-wecom-reply.bat 重起。
连续异常自停脚本连错 3 次会自己写 STOP 停发(防越错越糟)。先看 type wecom_reply_STOP 原因,修好再删。
登录过期日志一直读不到会话 → 重新登录企微,再重起 loop。
看状态type C:\akke-wecom\wecom_reply_status.json(ts 在更新 + sent_today 有数 = 在干活)。
排查

常见坑

现象原因 → 处理
端点 401 UnauthorizedWECOM_CHAT_SECRET 和服务器不一致 → 找 PM 核对填同值,重起。
连接超时 10060WECOM_CHAT_ENDPOINT 填成 vercel 了 → 必须是 ...fly.dev/wecom/chat/reply
缺 ANTHROPIC_API_KEY 退出.env 没这行或被编码搞坏 → 补上;改 .env 别用 Get-Content|Set-Content(会毁 UTF-8),用记事本另存 UTF-8。
鼠标点歪 / 没点到输入框坐标没量准或企微没最大化 → 重做 Step3;确认企微铺满屏在最前。
字没进输入框 / 乱码.env 加 AKKE_WECOM_TYPE_MODE=paste 重起。
字进了没发出.env 加 AKKE_WECOM_SEND_KEY=ctrl+enter 重起。
首触自称「小艳」不是你AKKE_WECOM_PERSONA 没设或拼错 → 按身份表填对,重起。
改了 .env 没生效loop 启动时才读 .env → 必须杀掉重起。

原理 / badcase / 优化进展见配套报告:upio.ai/akke/wecom-first-touch-0to1