process_web 已实测 100% 发出;web 捕获已部署到 agent、`capture` 只读模式跑起来了——
红点检测准、固定坐标自动开私信、点开会话读消息通路打通,剩"点开后读对【对方昵称+对方那条回复】"这一个读取精度收尾点。
| 派单 ≤10min 新鲜窗口 | 账号设 fresh_window_minutes=10:只 claim「评论入库 ≤10min」的新鲜 lead,超窗不发("不满足时效性的不发送")。✅已设 |
| agent 版本根因 | 云电脑跑的是旧版 agent(横幅无 v=)→ 没有自动回复分支,CAPTURE=1 配了也不读私信。已更新到 v=2026-06-24+captcha-char-sample。✅已修 |
| 自动回复部署到 agent | .env 配齐 CAPTURE=1 / MODE=capture / AUTOOPEN=1 / C_DM_ICON / LIST_X·Y,agent 每 15s 自驱开私信→红点检测→点开会话读。✅运行中 |
| 固定坐标自动开私信 | 私信是焦点敏感右侧浮层,手动跑会失焦收起;改用固定坐标 (0.939,0.109) 程序自开自截,无人值守成立。✅已修 |
| 滚动落点 / 滚回顶部 | 滚轮要落在【会话行内容】(x≈0.64)才滚列表、不穿透到背景抖音页;每轮开跑先滚回列表顶部,避免接着上轮位置往下漂漏掉最新;刷屏数 5→3。🚧调试中 |
| 切 both 全自动发 | 读取通路跑起来后,MODE 由 capture 切 both:新捕获到客户回复 → 生成草稿 → 直接自动发出,不再经人工审。靠 Lark 回执卡监控、发错随时改回 capture 急停。⚙️已开·监控中 |
| 恢复派单 | 账号 dispatch_paused_until 之前被设到 2030(无限期暂停)→ 首触派单实际停了;已清回 null 解除暂停,保留 fresh_window_minutes=10(只发评论→触达 ≤10min 的新鲜 lead)。✅已恢复 |
| 公开报告上线 | 本页发布到 upio.ai,团队/客户可直接看。✅已上线 |
CHAT_L)与提示。
both 同轮"捕获→即发→红点消"可缓解,但仍需 record_dm_inbound 去重加固。
MODE=both 全自动发(已开)。新捕获到的回复会直接发给客户、不再经人工审。
因读取精度卡点未完全收尾,偶尔可能自动发出答非所问/重复的回复(收不回)——务必盯 Lark 回执卡,发错立刻改回 MODE=capture 重启急停。
客户在首触私信下追问「什么材料」→ 系统捕获写库 → chatReply 结合对话上下文生成话术 → 置信度门放行 → web 就地发出 + 气泡核对。
[红点像素检测] 右侧面板找到 1 个红点 → [点开会话] 读聊天窗 →
record_dm_inbound(写 role=customer)→ cron chatReply 生成草稿(approved) →
claim_dm_replies → process_web(sec_uid 直达主页 → 身份门 0.98 → 私信面板 → 发 → ✅气泡核对)→
complete_dm_reply(写 role=ai sent)。全程零搜号、零人工。
同批 1507971106 / 917 同样捕获→生成→发出;发送侧实测 4/4 全通,证明发送机器在 web 上稳定可靠。
两层:宏观自动管线(客户回复 → 发出,全 cron + 公告板驱动)+ 微观 web 捕获/发送流程(脚本在 Edge 里逐步点)。
dm_reply_drafts,云电脑 agent 主动来认领 claim_dm_replies,
没有任何节点持有云电脑的直连。与首触完全独立的队列(首触走 dispatch_queue,回复走 dm_reply_drafts),互不抢。
# 文件(worker/scripts/wuying-dm/) douyin_dm_web_capture.py # 新建:红点像素检测 + 点开会话读消息 + 写库 douyin_dm_web_reply.py # 新建:web 就地回复(复用 process_web,关注/点赞关) douyin_dm_autoreply.py # 改:capture/send 按 AKKE_DM_SCRIPT 走 web 分支 wuying_poll_agent.py # 零改动:subprocess 调 autoreply,自动走 web
0→1 过程踩到的 Bad Case(按"现象 / 根因 / 优化 / 进展"):
| 现象 | 根因 | 优化方式 | 进展 |
|---|---|---|---|
| VL 把没回复的会话(青山不归客/童)判成"未读"→ 给没回的人误发 | 让 VL 对整列判 unread 布尔不可靠,把"我们自己的开场白"当客户回复 | ① 改红点像素检测(只认 #FE2C55 小圆点)② we_sent_last 指纹兜底:预览=我们最后发的就排除(短回复不误伤) | ✅已修 |
| 草稿开头"你好,昨天。"——把时间戳当成称呼 | 列表预览带时间尾巴"你好 · 昨天"被当客户消息写库 | _strip_ts 剥掉尾部「· 时间」再写库 | ✅已修 |
| 读到的全是"抖音精选/小红书/页面标题",不是会话 | 假设会话列表在屏幕左侧,实际在右侧浮层,扫错了区域 | 锁定 PANEL_L/R 只扫右侧私信面板,排除背景主页 | ✅已修 |
| 截图截到的是个人主页、不是私信 | focus_douyin 抢到了"主页"那个标签页 | 手动模式不抢焦点;自动模式自开浮层后立刻截 | ✅已修 |
| 手动跑永远读不到私信 | 私信是焦点敏感浮层,切到 PowerShell 就收起 | AUTOOPEN+固定坐标(0.939,0.109):程序自己 focus→点开→立刻截,全程不失焦 | ✅已修 |
| 红点抓到了,但读成隔壁行的"什么材料的板材" | 列表小条裁剪串到上一行 / 串进右边聊天窗 | 大方向改为点开会话进聊天窗读(字大清楚),并收窄扫描区排除聊天窗 | 🚧收尾 |
| 点开会话读到"律公约》"(页脚) / 滚动太快误点别的会话 | 聊天窗裁剪左界偏 / 多红点时连续点击节奏太快 | 调 CHAT_L 裁准聊天窗;点击间加确认+间隔,只点红点那一行 | 🚧进行中 |
| 同一客户生成多条草稿 | 反复手动跑捕获,VL 每次 OCR 略不同→多条客户消息→多草稿 | 正式 both 模式同轮"捕获→即发→红点消",同会话不重抓;DB 去重加固 | 🚧监控 |
| 本机查库/传脚本间歇失败(ECONNRESET/SSL) | 运营本机到 Supabase/paste.rs 的 fake-IP 间歇抽风 | 查询加重试+空读重试;传脚本多服务+循环重试 | ⚠️环境 |
.env 配了 CAPTURE=1 但 agent 不读私信 | 云电脑跑的是旧版 agent(横幅无 v=),没有自动回复分支去读这个开关 | 更新 agent 到 v=2026-06-24+...(含自动回复分支);横幅有 v= 才算更新成功 | ✅已修 |
| 点开会话后 nick 读成"有/大云"、preview 读成我方开场白 | 聊天窗读取区读到了我们自己账号名(头部)+我方开场白,不是对方昵称+对方回复 | 调 CHAT_L 读取区到对方那条气泡;昵称读对才能匹配 by_name(需真回复样本验证) | 🚧头号卡点 |
| 滚的是抖音背景页、不是私信列表 / 每轮接着往下漂 | 滚轮落点在徽标/缝隙处穿透到背景页;上轮停在下面本轮接着滚漏掉最新 | 滚动落点改到【会话行内容】(x≈0.64);每轮开跑先滚回列表顶部;刷屏 5→3 | 🚧调试中 |
规律:web 自动化的坑几乎都在"定位对区域 + 读对那一行"——红点像素检测解决了"哪些行要处理","点开会话读聊天窗"解决了"读什么内容",剩两个收尾点都在后者。
CHAT_L 读取区MODE=both 全自动发,Lark 回执监控record_dm_inbound 去重加固(防 VL 抖动产重复草稿/重复发)生成于 2026-06-24 · 账号 有大有小(shawsnk) · 代码 worker/scripts/wuying-dm/ · 首触自动发已上线运行,自动回复发送已实测通、捕获收尾中。