私信回复 DOM 自动化 · 部署指南

读客户私信回复 → 自动起草 · 把旧的「截图 + AI 视觉」换成直接读网页 DOM · 无影云电脑
已上线生产

这套是什么

poll agent 每轮自动扫私信会话列表,判断哪个客户回了,写回库触发自动起草回复。旧做法靠截图 + AI 视觉(VL)读列表、逐个点开红点会话(会把人标已读、还会读错昵称塌缩整轮);新做法用 Playwright 连一个隐形 Edge 直接读 DOM。

旧 VL 版新 DOM 版
读列表截图喂 AI 视觉直接读 conversation-item
昵称OCR 会读错精确到 emoji
标已读逐个点开会标已读全程不点、永不标已读
花费每轮烧 VL零 AI 花费

怎么判一个会话是不是客户回复

读 conversation-item ①红点闸 ②是我们 DM 过的人? ③预览≠我方/系统/噪声? record_dm_inbound

前置

部署 3 步

1装依赖
py -m pip install playwright uiautomation
2起隐形 Edge(首次用可见窗口登录抖音、点开一次私信,之后隐形起)
$edge="C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
if(!(Test-Path $edge)){$edge="C:\Program Files\Microsoft\Edge\Application\msedge.exe"}
Start-Process $edge -ArgumentList '--headless=new','--remote-debugging-port=9222','--user-data-dir=C:\akke-edge-debug','https://www.douyin.com'

验证:浏览器开 http://127.0.0.1:9222/json/version 有 JSON = 通。

3配 .env 3 个开关 + 重启 poll agent
AKKE_DM_AUTOREPLY_CAPTURE=1   # 开捕获腿(没有=根本不跑捕获)
AKKE_WEB_DM_USE_DOM=1         # 捕获走 DOM 版(不设=走旧 VL)
AKKE_WEB_DM_DOM_COMMIT=1      # 真写库(不设=只打印不写, 适合先观察)

改完必须重启 poll agentpy wuying_poll_agent.py)才生效。

云电脑关机 / 重启后 · 恢复

云电脑一关机,隐形 Edge 和 poll agent 都没了 —— 重启后必须手动拉起这两个,否则不再捕获回复。
1拉起隐形 Edge(登录态在 C:\akke-edge-debug,自动带着)
Start-Process "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" -ArgumentList '--headless=new','--remote-debugging-port=9222','--user-data-dir=C:\akke-edge-debug','https://www.douyin.com'
2等约 10 秒,验证:http://127.0.0.1:9222/json/version 有 JSON
3起 poll agent
cd C:\akke-wuying\wuying-dm
py wuying_poll_agent.py
万一登录过期(捕获一直 conversation-item 0 / 报没登录):关掉 headless Edge,用可见窗口起(去掉 --headless=new),重新登录抖音 + 点开一次私信,再切回 headless。Cookie 一般撑 15-30 天。

验证

1) 看日志走没走 DOM

重启后看 DM 黑窗,每轮出现(有 [DOM] 就对):

=== web capture[DOM]  (COMMIT 写回) ===
  conversation-item 11 个 / 有红点 X 个 / 命中客户回复 0 条

2) 验真回复能抓到

用测试号给本账号发一条消息(产生红点),下一轮日志应出现:

  [红点] 测试号昵称: 你发的内容…
  [inbound] 测试号昵称: 你发的内容…
先观察再写库:想稳妥可先只设 AKKE_WEB_DM_USE_DOM=1不设 AKKE_WEB_DM_DOM_COMMIT,日志会显示 (DRY-RUN, 不写库),确认判得对再加 COMMIT 那行重启。

排查

现象处理
日志还是旧的 web capture[红点像素检测]AKKE_WEB_DM_USE_DOM 没读到 → 确认 .env 加了 + 重启了 poll agent
连不上 CDP / 没找到 douyin 页隐形 Edge 没起/被关 → 重跑第 2 步,/json/version
conversation-item 0 + ❌ 弃权该轮面板没挂上 → 自动重开;持续 0 才需查(不会误判成全员没回复)
明明有红点回复却没抓到把那条会话样子反馈给开发,可能要调红点检测;不会静默漏报成"没回复"
传文件下坏curl.exe -o,别用 iwr

回退

删一行 + 重启即回旧 VL 版
# .env 删掉 / 改 0:  AKKE_WEB_DM_USE_DOM
# 然后重启:  py wuying_poll_agent.py