无影云电脑 · 抖音私信「无人值守」自驱通道 0→1

让阿里无影云电脑自己全干、不碰本机:服务端自动出文案 → 云电脑自己领单 → GUI 自动搜人发私信 → 自动回写去重。 人零操作,机器自动按节奏发——已在真实潜客上端到端跑通并上线。
通道 阿里无影(Windows)+ 抖音 PC 客户端 架构 Vercel cron + Supabase + 无影(全云端) 绑定账号 野荞 / 小文 0→1 窗口 2026-06-05 ~ 06-06 状态 已上线 · 无人值守

此前云电脑只能「本机 claim 备料 → 传文件 → 人盯着发」(半自动)。本次目标:把本机彻底拿掉, 让整条链全在云上自转。下面按「第一个案例 → 0→1 逻辑原理 → 批量统计与 Badcase → 下一步」展开。

1 第一个案例 · 无人值守的首单

0→1 的判定不是「脚本能跑」,而是「我什么都没操作,云电脑自己把一条真私信发出去了」

无人值守首单潜客「好梦悠悠」· 新房开工要全屋定制清单
场景

Vercel 定时任务在服务端自动锁单 + 生成话术 + 入队;无影上开机自启的 agent 自己领到这条 → 搜人 → OCR 身份门核对昵称(conf 0.98) → 进私信 → SendInput 逐字键入 → 模板定位发送键 → 真发出 → 自动回写去重。 全程操作者零干预

话术(实发,服务端 LLM 现起)
你好,好梦悠悠,看到你新房开工需要准备清单的留言了。全屋定制的话原价868一平的柜子样板房专供价568一平全包……你家户型是三室还是两室?
运行日志(无影 agent 实际输出)
=== 好梦悠悠 === [focus] 抖音主窗口已置前 click_norm[搜索框/用户tab/第一条] [OCR] match=True conf=0.98 ← 身份门过 match[send_arrow.png] scale=1.00 ← 模板像素吻合 input[锚定发送↑] (2244,714) ✅ 已点发送 ✓ completed → sent (ocr=0.98) [batch done in 48.8s]
验证结论

「服务端出单 → 云电脑自己发 → 真送达 → 自动去重」一条龙成立,且操作者零操作。 DB 回写坐实:dispatch=sent / 新建会话(绑野荞)/ messages status=sent;抖音私信气泡人工确认已送达。

在此之前还有一条手动入队的验证首单(潜客「手握风云」,OCR 0.98、send_arrow 1.00、回写成功), 用来先打通「受控连库 + GUI 发送」;「好梦悠悠」则是第一条由定时任务自动派、无人值守发出的。

2 完成 0→1 的逻辑原理图

核心:出文案(烧 LLM)放服务端,云电脑只做「领单 + GUI 落地 + 回写」。整条链全在云上,本机 Mac 不参与。

Vercel
① 定时派单
cron 每 5min:锁单 + 生成 opener + 入队 dispatch_queue
Supabase
② 队列 + 去重
dispatch_queue(pending)/ lead_claims 锁 / messages 写回
无影
③ 领单
poll agent 每 60s claim_dispatch → 写 contacts.csv
无影
④ GUI 自动发
搜人 → OCR 身份门 → 私信 → SendInput → 模板定位发送
Supabase
⑤ 回写去重
complete_dispatch → mark_lead_contacted 永久去重
Vercel(服务端出文案) Supabase(队列/去重) 无影(领单 + GUI 落地) LLM(opener 服务端 / 视觉定位无影端)
关键设计 1 · 受控数据库钥匙

共享云电脑上不放「能改全库」的钥匙。自签一把受控角色 JWT:读全库、但只能跑 2 个受控操作(领单/回写), 任意表的写一律没有。实测:读 200 / 乱写表 403 / 受控 RPC 通。

网关只认 anon 当门票,故按「anon 当门票 + 受控 JWT 定角色」建连。

关键设计 2 · 发送节奏门(防风控)

陌生人私信发太快会被抖音限频封号。节奏门:批内每分钟 1 条 · 满 10 条停约 1 小时 · 当日封顶 20 条, 且只数「真成功」——被拒绝/跳过的不占配额。

日预算跨通道合并(人工 + 云电脑同号同 24h),避免叠加触发风控。

3 批量化执行 · 统计 / Badcase / 优化进展

刚上线(06-06),还是早期小样本——下面是已验证的真实数据 + 设计产能,不夸大。

100%
已发条目身份门通过
(OCR conf 0.98)
1.000
发送键模板匹配分
(搬老机模板免重校)
20 / 天
设计产能上限
(10/批 · 停1h · 当日20)
~35–49s
单条端到端耗时
(领单→发→回写)

已真发并人工确认送达的潜客:手握风云好梦悠悠 等;受控钥匙、连库、节奏门、回写去重均已逐项验证通过。 规模化产能 = 设计的 20/天/账号,随天数累积。

这一程最难的地方在哪

① 认知难点(总开关) —— 推翻「无影够不到 Supabase」这个否决了全自动 3 轮的假前提。它一测就破,但之前没人真去测; 这一步通了,整个全自动才成立。耗 ~1h。

② 架构岔路 —— 中途发现「全自动管线(队列 + 轮询 agent)其实早就建好了,只因上面那个假前提被搁置」。 及时改道复用、而不是重造,省了大半天。耗 ~1h 排查 + 决策。

③ 最大技术难点 —— 受控钥匙过网关(自定义角色钥匙被网关拒 → 改「anon 当门票 + 受控钥匙定角色」)+ 节奏门「只数真成功」(跨 2 个文件 + 部署)。合计 ~2.5h。

④ 最耗时(非智力) —— 云电脑环境搭建 + 跨机传文件:Python/依赖/repo 子目录/PATH + 传输工具过期、PowerShell 长行被终端折断, 大量慢 round-trip,~2h 耗在这种琐碎上。

Badcase / 卡点优化方式耗时进展
都以为「无影够不到 Supabase」→ 否决全自动 3 轮实测直连:Supabase/Fly/OpenRouter/GitHub/npm 全通 → 推翻假设~1h 难点已解决
发现全自动管线其实早建好,只是被搁置改道复用预建的队列+轮询 agent,不重造~1h 难点已解决
自定义角色 JWT 当门票被网关拒(401)改「anon 当门票 + 受控 JWT 定角色」建连~1h 难点已解决
云电脑 Node 20 无原生 WebSocket,建连即崩消费侧改用标准库直打 RPC,去掉重客户端依赖~0.5h已解决
项目已迁非对称签名,拿不到私钥没法自签走 Legacy 共享密钥自签(仍验签)~0.5h已解决(密钥待淘汰)
云电脑环境/依赖/repo 子目录/PATH + 跨机传文件定位真实路径、配 PATH、装 Python+依赖、paste.rs 中转(多次重传)~2h 最耗时已解决
新机分辨率 2560×1600 ≠ 老机,担心坐标全偏要重校搬老机模板,实测发送键匹配 1.000 → 直接复用免手动校准~0.5h已解决(运气+复用)
节奏门:10/批 · 停 1h · 当日 20 · 只数真成功跨「派单门 + GUI 拒绝识别」2 文件改造 + 合并部署(PR #124)~1.5h 难点已解决
「被拒绝/限频」的不该算进成功配额发后视觉核对识别拒绝提示 → 标 rejected,不计配额、槽位留下一条~0.5h已解决
静默限频(对方没收到但本地无任何提示)GUI 通道探测不到(需 API+协议解码);靠保守节奏压到罕见物理盲区
当天云电脑只发了 2 条就停非 bug:日预算跨通道合并,当天人工已发 18 条占掉额度;滚动窗口腾槽自动续~0.5h 诊断已说明(设计正确)
开机自启 agent 日志缓冲、看不到实时输出自启命令加无缓冲参数~0.2h已配 · 下次重启生效
诚实备注

① 静默限频(7911)在 GUI 通道无法检测,是固有盲区,只能靠慢节奏把它压到罕见; ② 「成功数」对显式拒绝准、对静默丢测不到;③ 自签依赖的 Legacy 密钥已是遗留态,平台哪天下线需改重方案。这些没藏。

4 下一步待做 · 与耗时

从 0 到 1 · 总计耗时
约 11.5 小时

11:11 开工(06-05) → 00:34 无人值守首单上线(06-06),净投入约 11.5 小时。

目标达成:无影自己全干、不碰本机,人零操作,云电脑按节奏自动发私信。