把「客户沉淀在微信 / 企业微信」这件不可让步的约束,落成一条能无人值守跑的 AI 自动回复链路。 本页梳理:为什么官方 API 接不了、为什么桌面 RPA 全军覆没、以及我们最终采用的 云手机 + WorkTool + 自建桥 → Hermes 现行架构。
「微信自动化」在我们的语境里至少糅了三个完全不同的场景,方案、权限、风险都不一样。先分清才不会走错路:
员工的企业微信号,和外部客户一对一聊天。客户沉淀在这里,是不可让步的约束。官方 API 覆盖不到。
现行:云手机 + WorkTool群机器人 Webhook、微信客服 kf API、客户联系 API。只能接「客服入口进来的消息」或群通知,接不了员工个人号普通会话。
部分可用 · 见 §2纯个人微信。开源工具多停更或只支持单聊、协议属灰区,主号封禁风险高。非主战场。
受限 · 见 §7这一节是「为什么不能走最省事的官方路」的依据,省得反复重新调研。
| 身份 | 能做什么 | 客户联系 API |
|---|---|---|
| 超管 / 应用管理员 | 建自建应用、调客户联系 API、开会话存档 | 可 |
| 普通员工(3.1.8 起) | 可个人授权安装第三方应用 | 不解锁 |
| 合作方 / 普通员工 | 无法建应用 | 不可 |
结论:任何「AI 代员工自动回复客户」的 API 方案,都需要应用管理员身份 + 企业认证。
认证后免费、无量上限,kf/sync_msg 拉消息、kf/send_msg 主动发。但:
企微「客服 → 接入配置 → 设置 API 接收消息」的回调 URL:
*.vercel.app / *.fly.dev / 裸 IP 全部报「Domain entity verification failed」。这正是我们选 WorkTool 的一个关键原因:WorkTool 回调走的是它自有服务器 / 我们自建桥,不受企微官方回调的 ICP 备案约束。
网上广泛流传的 ¥40–60/人/年已过时 10–30 倍。实际:办公版 ¥400/人/年(仅金融业)· 服务版 ¥900/人/年 · 企业版 ¥1800/人/年 · 免费试用 1 个月。第三方 SCRM(卫瓴 / 句子互动 / 微伴等)全是企业级合同,无个人订阅入口。
官方路走不通后,第一直觉是「在电脑上盯着企微聊天框做 RPA」。我们把这条路走到头了,两个平台都本质脆弱:
count of windows = 0),不能用 accessibility,只能截图 + OCR + cliclick。同吃「企微需前台」约束,且企微正在做 QML 迁移,现存桌面端开源 hook 工具集体失效。
| 工具 | 结论 |
|---|---|
wxauto | 只支持个人微信,2025-10 因 QML 迁移停更 |
yihleego | 企微自动化,支持发送但已停更,无接收回调 |
pywechat | 只支持个人微信 |
wecom-cs-mano | 真开源,但仅 macOS + OCR,需大量自研移植 |
vworkApi | 闭源付费跟版,排除 |
没有任何一个能同时满足「真开源 + 活跃维护 + 支持企微外部联系人单聊 + 能发消息」。RPA 是唯一解,但必须把它从桌面挪到云端。
把企微从「必须前台的桌面」搬进「云端独立运行的安卓」,根因消失。整条链路:
wecom_worktool 适配器即可接入,零改 Hermes 核心。| 组件 | 职责 | 关键点 |
|---|---|---|
| 云手机 | 运行企微小号 + WorkTool App | 独立实例、可接住宅 IP、远程命令可操作 |
| WorkTool | 无障碍读取消息 → 回调;接收指令 → 代发 | 需 robotId 绑定、开无障碍权限、配回调 URL |
| worktool-bridge | 纯 stdlib 桥:/callback 收、/messages 取、/send 发、/health 探活 | 过滤 roomType=2、去重、绕系统代理;测试 8/8 通过 |
| Hermes 适配器 | wecom_worktool 平台插件,桥接消息进 Hermes 网关 | 复用 platform 机制,已离线验证导入 |
roomType = 1 外部群 / 2 外部联系人单聊(要回的就是它) / 3 内部群 / 4 内部联系人单聊。本场景只放行 roomType=2,过滤掉群和内部会话。代码默认 WORKTOOL_ROOM_TYPES=2。云手机是这套方案的物理底座。选型结论(2026-06 核实,定价易腐烂,30 天后需重核):
| 档位 | 规格 / 价位 | 用途 |
|---|---|---|
| 推荐平台 | 阿里无影(云手机产品线) | 有远程同步命令接口,便于自动化运维 |
| 测试期 | 按量付费,约 ¥0.30/h(2C4G) | 联调、跑通用 |
| 正式 · 轻量 | 包月约 ¥65/月 | 单号常驻 |
| 正式 · 标准 | 包月约 ¥140/月 | 单号无需更高,矩阵版浪费 |
Mac 在内网(192.168.x.x),云手机在公网拨不进来。测试期用 cloudflared tunnel --url http://localhost:PORT 快速暴露本机桥,无需 ICP 备案。
Shadowrocket 等系统代理会把本地 / 国内请求也塞进代理。桥访问 WorkTool API、测试访问本地桥,都要用绕过代理的 opener(build_opener(ProxyHandler({}))),否则连不通。
Python HTTPServer.server_bind() 对 0.0.0.0 做 socket.getfqdn() 反向 DNS,在代理 / VPN 环境会卡约 30 秒。桥用自定义 server_bind 跳过 getfqdn 规避。
注册后台是 RuoYi 框架 + 图形验证码。本机走境外代理则被拒连;需用国内网络的浏览器手工操作(验证码 + 部分字段名问题无法纯接口自动化)。云手机本身可当「境内 curl 探针」做接口探查。
纯个人微信不是我们主战场,但常被问到。现状是「能接但都带硬伤」:
worktool-bridge:纯 stdlib 桥(回调 / /messages / /send / /health,过滤 roomType=2、去重、修了 getfqdn 启动阻塞),单测 8/8 通过,配实机联调 CLI verify_live.py。wecom_worktool:复用平台机制、零改核心、已验证导入。verify_live.py 四步 → 真机核对 roomType → 启用插件,即端到端联通。