sk-or-v1-…,给 AI 读消息用)。在云电脑下载安装 企业微信 PC 客户端,登录你的企微号(加了客户好友的那个)。
打开 PowerShell,输入:
python --version
显示 Python 3.x 即可 → 跳到第 3 步。若提示「找不到 python」或弹出应用商店,说明这台没装,按下面装一下(5 分钟):
winget install -e --id Python.Python.3.12 --scope machine --accept-source-agreements --accept-package-agreements
装完关掉这个 PowerShell,重新开一个(PATH 要新窗口才生效),再验 python --version。
cd $env:TEMP
iwr https://www.python.org/ftp/python/3.12.4/python-3.12.4-amd64.exe -OutFile py-setup.exe
.\py-setup.exe /quiet InstallAllUsers=1 PrependPath=1 Include_pip=1
PrependPath=1 会自动把 python 加进 PATH。装完同样新开一个 PowerShell 验 python --version。
python 弹出「Microsoft Store」=Windows 自带的假跳转。装好真 Python 后去 设置 → 应用 → 高级应用设置 → 应用执行别名,把 python.exe / python3.exe 两个开关关掉;或临时用 py --version 验证(不受别名影响)。pip --version 也应能跑(官网装已带 pip)——第 4 步 bootstrap-wecom.bat 要靠它装依赖。在 PowerShell 里整段复制粘贴运行(建文件夹 + 下载 6 个脚本):
$dir = "C:\akke-wecom"
New-Item -ItemType Directory -Force -Path $dir | Out-Null
cd $dir
iwr https://paste.rs/JFSTe -OutFile bootstrap-wecom.bat
iwr https://paste.rs/eChiN -OutFile start-wecom-reply.bat
iwr https://paste.rs/vDNBc -OutFile wecom_reply_loop.py
iwr https://paste.rs/TfLHq -OutFile .env.example
iwr https://paste.rs/r8Em4 -OutFile measure_wecom_coords.py
iwr https://paste.rs/3iNhi -OutFile test_send_wecom.py
cd C:\akke-wecom
.\bootstrap-wecom.bat
它会自动装依赖(pyautogui 等),并从模板生成一份 .env。看到 Created .env … 就对了。结束按任意键关掉。
① 把企业微信最大化,随便打开一个会话(让底部输入框露出来)。
② PowerShell 跑:
cd C:\akke-wecom
python measure_wecom_coords.py
③ 按提示,每个目标给你 6 秒倒计时,把鼠标移到那个东西上停住别动,依次量三个:
④ 跑完它会打印三行,复制下来,第 6 步填进 .env:
AKKE_WECOM_C_INPUT=145,913
AKKE_WECOM_C_SEND=919,952
AKKE_WECOM_C_SESSION1=52,56 # ← 你的值会不一样,以你量到的为准
用记事本打开 C:\akke-wecom\.env,逐行填好(等号后不要留空格、不要带引号):
ANTHROPIC_API_KEY=填你自己的 OpenRouter key(sk-or-v1-…)
WECOM_CHAT_ENDPOINT=https://akke-worker-prod.fly.dev/wecom/chat/reply # 固定,别改
WECOM_CHAT_SECRET=填统一密钥(所有云电脑同一个值,真值不写在本公开页,向团队内部取)
AKKE_WECOM_C_INPUT=填第5步量的
AKKE_WECOM_C_SEND=填第5步量的
AKKE_WECOM_C_SESSION1=填第5步量的
AKKE_WECOM_SEND_KEY=enter # 企微设置里发送键是 Ctrl+Enter 就改 ctrl+enter
AKKE_WECOM_TYPE_MODE=unicode # 逐字打字(推荐)
AKKE_WECOM_DRY_RUN=1 # 先空跑验证,不真发!
AKKE_WECOM_HOURS=9-21 # 工作时间,夜间不发
AKKE_WECOM_DAILY_LIMIT=20 # 每天最多发 20 条(灰度从严)
确保 .env 里 AKKE_WECOM_DRY_RUN=1。企微开着,并且有一个外部客户的未读消息(没有就用另一个微信号给这个企微发一条测试)。然后:
cd C:\akke-wecom
.\start-wecom-reply.bat
它会:扫未读 → 点开会话 → 读消息 → 生成回复 → 打印出来 + 把鼠标移到输入框(不真发)。盯三件事:
| 看什么 | 正常表现 |
|---|---|
| ① 读出的客户消息 | 日志里 客户[xx] 新消息: '…' 和屏幕上的一致 |
② click[顶部会话] 之后 | 屏幕上点开的是会话(不是搜索框) |
③ [DRY_RUN] 鼠标已移到输入框 | 鼠标落在输入框里 |
三样都对 → 进第 8 步。哪样不对 → 看最下面排查表。
测试期可临时把 .env 的 AKKE_WECOM_HOURS 改 0-24 方便随时测(第 9 步前务必改回 9-21)。改了 .env 要 Ctrl+C 停掉再重跑才生效。
验证「逐字打字 + 发送键」真能把消息发出去。先 Ctrl+C 停掉第 7 步的程序(免得抢鼠标),在企微打开你们自己的群,然后:
cd C:\akke-wecom
python test_send_wecom.py
按 Enter 后它会往群里发一条 自动化联调测试123,可忽略哈~。对号入座:
| 结果 | 怎么办 |
|---|---|
| ✅ 群里收到了 | 打字 + 发送都 OK,进第 9 步 |
| 字进了输入框但没发出 | 发送键不对 → .env 改 AKKE_WECOM_SEND_KEY=ctrl+enter 重试 |
| 字没进去 / 乱码 | 企微不吃逐字 → .env 改 AKKE_WECOM_TYPE_MODE=paste 重试 |
| 点歪了(没点进输入框) | 回第 5 步重量 AKKE_WECOM_C_INPUT |
第 7、8 步都过了,编辑 .env 改两行:
AKKE_WECOM_DRY_RUN=0 # 真发
AKKE_WECOM_HOURS=9-21 # 收回测试用的 0-24!夜间不发
然后重启:
cd C:\akke-wecom
.\start-wecom-reply.bat
type C:\akke-wecom\wecom_reply_status.json
ts=最后心跳时间,sent_today=今天已回条数。ts 还在更新就说明活着。
在 C:\akke-wecom\ 文件夹里新建一个空文件,名字叫 wecom_reply_STOP(没有后缀)。程序看到它会立刻停发。
cd C:\akke-wecom
ni wecom_reply_STOP # PowerShell 建空文件 = 秒停
恢复:删掉这个文件,再 .\start-wecom-reply.bat。
cd C:\akke-wecom → .\start-wecom-reply.bat。| 现象 | 原因 / 怎么修 |
|---|---|
| 未找到企微窗口 | 企微没开 / 最小化到托盘了 / 没登录 → 打开并登录、别最小化,重跑 |
| endpoint 失败:连接超时(10060) | WECOM_CHAT_ENDPOINT 填成 vercel.app 了 → 改成 https://akke-worker-prod.fly.dev/wecom/chat/reply |
| endpoint 返回 Unauthorized / 401 | WECOM_CHAT_SECRET 和服务器不一致 → 找 PM 核对,填成同一个值 |
| 点开的是搜索框不是会话 | AKKE_WECOM_C_SESSION1 量歪了 → 回第 5 步重量 |
| 鼠标没落在输入框 / 打字点歪 | AKKE_WECOM_C_INPUT 量歪 → 回第 5 步重量 |
| 字没进输入框 / 乱码 | .env 改 AKKE_WECOM_TYPE_MODE=paste |
| 字进了但没发出去 | .env 改 AKKE_WECOM_SEND_KEY=ctrl+enter(看企微发送键设置) |
| 客户消息读错 / 读不全 | VL 偶发;连发多条目前只读最新一条(已知限制,待优化)→ 个别错可人工补回 |
| 明明是客户却被「非外部客户」跳过 | VL 把外部客户误判成内部 → 截图发 PM 看,调读取 prompt |
| 改了 .env 没生效 | 程序启动时读 .env → 必须 Ctrl+C 停掉再 .\start-wecom-reply.bat 重跑 |