C:\akke-wuying\wuying-dm,拉 8 脚本 + 监控池 + 话术表 + cookie + .env(账号/坐标/scoped JWT)
卡点早期脚本手抄 + 换 SHA;摆渡文件走境外站全被墙
解脚本族纳入 git → 合 main 自动镜像公共源,双击 .bat 自更新,免 token 免换 SHA(Step 0 加 404 就绪闸防覆盖坏副本)
一个人(饭粒/fanny)把「关注的人一发新视频(≤20min)→ 自动点赞 + 评论1(评视频) + 评论2(搬当初 DM)」这条无影常驻通道, 从自己的号 一筑 跑通 → 接管夏夏的 零星 号也整台修活 → 操作说明发群,待 小文(野荞) 自己把 3 台云电脑照单部署。 按号分列、按部署生命周期分阶段,标清每个号 做了什么 / 卡在哪 / 怎么解。 数据为 DB 实查 + 会话实锤 · 截至 2026-06-28。
这个周末(6-26→6-28)route-B 的活基本都在堵「动作做了、库里却记不全」的洞,让 pt-summary 的数能信:
①分步状态/评论文字根治——二触三连结果改走确定性 --result-out JSON sidecar,不再隔着带日期、多写入方的 comment_log 二次回读(文件丢/跨午夜/键漂移任一就 NULL),_aweme_id 主键也补回;
②完成时刻改写 UTC(commit bd24d009)——无影是北京时间、裸 datetime.now() 进 Supabase 被当 UTC 早存 8h,曾让「我们处理了」显示成次日凌晨,存量 3 行历史双移已 backfill;
③关注/点赞状态也落 sent_log(003e5c88,本周末新分支 feat/wuying-routeb-auto-sync)——根治「关注结果只 print 到窗口、库里捞不回」;
④派单 + 漏斗取数统一收紧到高意向(#619 / #622),剔中意向、口径对齐。
⚠️ ①②③ 改的都是无影本地脚本,必须手动拉新 + 重启常驻 agent 才生效(见 周末冲刺时间线 与交接文档)。
想看本周末全方向(含 DM 自动回复根治 / 战况页复审弧 / 抓取时延 P0 等)的归类时间线 → 周末冲刺时间线 06-26→06-28。
把潜在触达漏斗按 fanny 拍定口径重塑为 ①关注 → ②监控池 → ③今日feed刷到 → ④当天发新视频 → ⑤当天触达 五跳;
新建 pt_feed_coverage 表 + RPC(③,PR #566)让 watch 把「当天 feed 真刷到几个池内人」落库;
pt-summary 每号 pill 重做 + 加折叠口径定义;本页新增下方 ②.5 漏斗每个数 · 说人话(大白话表格 + 折叠技术细节)。
③ 真数需无影重部署 watch 后攒一天。
一筑凌晨 01:00 DM agent 卡死 8.5h(早上发现一夜没发 DM)→ 定位根因 → 根治补丁 + 心跳告警上线 → 一筑 / 零星两台都升级重启 → Mac 改 24h 常开。route-B(潜在触达)全程没断。
douyin_dm_autoreply.py 的 subprocess.run 无 timeout,某轮收件箱进了乱状态把它挂死 → 整个 poll 循环永久阻塞 → 心跳停 + DM 全停。判活只能看 DB 心跳 last_poll_at,不能看窗口。
timeout=AKKE_DM_AUTOREPLY_TIMEOUT_SEC(默认 240s)+ 超时杀子进程跳过本轮、循环继续转 → 捕获挂死再也冻不死整个循环。(PR #551 已合并部署)/api/cron/wuying-heartbeat-watch 每 5min 读心跳,盯一筑 + 零星两台,停 >20min 推饭粒个人私有群。补现有看门狗抓不到的「崩在两批之间 / 卡死无 claimed 行」缺口。com.akke.wuying-close),两台云电脑不再每天被关(两个无影都在同一台 Mac,一改覆盖两台)。akke-autostart.bat(开机自动 cd + start-dm-routeb.bat 起齐 3 个 agent)。云电脑无论怎么重启,DM + route-B 都自己回来,无需人工拉起。3 个常驻 agent:DM(wuying_poll_agent.py) + route-B 监控(watch) + route-B 消费(consume),一次用 start-dm-routeb.bat 起齐(带窗口锁串行)。前提:抖音 PC 登录 + 最大化 + 输入法英文;3 个黑窗口别关。Mac 一台跑两个无影、已设 24h 常开;云电脑已设开机自启(Startup 放 akke-autostart.bat),重启自动拉回 3 个 agent,平时不用手动启动。
update.bat 常不在机器上 → 直接 curl.exe -fSL -o wuying_poll_agent.py <镜像URL> 覆盖(必须 curl.exe,不是 PowerShell 的 curl 别名,别名=IWR 会坏文件)。先 Copy-Item …bak 备份、Select-String 验新版。换完文件必须重启 DM 腿才生效。
Get-CimInstance …|fl 认出 wuying_poll_agent.py 的 pid → Stop-Process 只杀 DM → Remove-Item .douyin-win.lock,.douyin-dm-want → 设 AKKE_WINDOW_LOCK=1 后 Start-Process cmd '/k python wuying_poll_agent.py'。watch / consume 一个不碰。banner 核 account= + rc=off。
判活只认 DB 心跳(<5min=活),不看窗口。收到「agent 没在轮询」告警 → 上机重启 DM 腿。DM 一直 skip「非主页」→ 查抖音前台输入法是不是英文。窗口认法:还在冒新行=活留,停在 wuying-dm> 不动=死关。
起因:今早夏夏号有用户回复(爱财爱己 / 风生水起),但数据群没 @ 到夏夏。顺着查到真因并修好两台。
wuying_poll_agent.py 都是旧版、压根没有「收件箱捕获」route-D 那段代码 → 客户回复根本没进库、数据群也就 @ 不出运营。6-23 修的是坐标 / cookie / consume,连续入站捕获其实从没真跑(今早那两条没 @ 到夏夏 = 这个,不是 @ 配置或 owner 的问题)。
iwr 到含 capture 支线的新版(≈50521B)。验版本用英文词 findstr "DM_AUTOREPLY_CAPTURE_ENABLED"(中文 findstr 在 GBK 控制台假阴性、会误判「没这段」)。1993,178 / 1890,157(>1000 必被 click_norm 又乘屏宽点到屏外)→ 换算成千分比 778,111 / 738,98。夏夏坐标本就对(884,7 / 719,104)。Startup\akke_wuying_agent.bat 拉「窗口锁 + DM + route-B」(用 py 不用 python、ASCII 防编码坑)→ 重启自动全起。dm-notify-watch(每 3min) 自动推数据群 @ 对应运营。两台 DM + capture + route-B 全活 + 重启自起。今早已发生的两条(已读)不会回补,需手动补。
纵轴 = route-B 一台机从零到产出的部署生命周期;每格 = 该号在该阶段 做了什么(蓝) / 卡点(红) / 怎么解或现状(绿)。
C:\akke-wuying\wuying-dm,拉 8 脚本 + 监控池 + 话术表 + cookie + .env(账号/坐标/scoped JWT)
卡点早期脚本手抄 + 换 SHA;摆渡文件走境外站全被墙
解脚本族纳入 git → 合 main 自动镜像公共源,双击 .bat 自更新,免 token 免换 SHA(Step 0 加 404 就绪闸防覆盖坏副本)
wuying-routeb-deploy-xiaowen.md 9 步在 3 台各自接入(说明已发群);数据文件按账号单独生成摆渡
待野荞自部署
douyin_dm_grounded 已「搜→身份门→关注→点赞→发 DM」一条龙,发那刻多已关注
卡点曾误判「覆盖只 12%」要盲关 200;关注【写】raw API 吃 403
解盲关已否决(500+ 关注够用);follow-init 基本可跳,覆盖低再针对性补关(GUI 原生点)
lead池 450
现状发 DM 已顺带关注,覆盖够即可;触达前本机重扫回复剔已回(铁律·跨机 read_status=unknown)
_realtime_touch_watch_wuying.py 常驻,逮到 ≤20min 新视频 🔥 入队
卡点6-15→6-22 整 7 天「捞 0」
解真因 = watch 进程那 7 天没开(不是池子脏)。一开 1 小时逮 2 个。铁律:watch 7×24 常开,窗口开着≠进程活
dy_cookie.txt,每 10s 崩重启
解改成从库直接拉本号 cookie(2155 字节)写文件 → 监控 450 lead 起来(别用会回退别号的 _load_cookie_str)
douyin_comment_grounded.py:开对视频→点赞→评论1(qwen3 现生成)→评论2(逐字搬当初 DM)→VL 验证
卡点连播打偏 / focus_fail / 搜索点空 / 固定坐标点空 / 执行器冻 10h / 评论假失败
解逐一拆通(详见知识库)。三连已在真视频落地
second_touch=off rc=off)
待首批真触达验「点赞坐标在本机也对」
--confirm 验坐标wuying_worker scoped JWT(到期 2027-06-05)直连库;consume 改 auto-DB(.env 有 key 自动开、免 --db);6-22 起 e2e 两列实时回写
second_touch_log 真在涨,作为同步给野荞的「跑通证据」
昨天(6-23)重新对齐了「号源 / 怎么取数」,并已落代码上线——这里是最新口径 + 截至 6-24 的 DB 实查。
second-touch-worklist.ts + 摆渡 special-follow.json 快照」,
改成 DB 实时表 monitored_targets:
refresh-monitored-targets(每小时 0 * * * *)重算 + UPSERT + reconcile + 在途防双触达;新 lead 一符合条件自动进池。auto-DB 读这张表(本地文件兜底),不再人工摆渡。reason 分 sent_no_reply / dm_failed;CHECK 强制「失败 DM 只收高意向」(中意向不为失败的补触达)。account_follows(①关注明细):已入库——饭粒 624 / 小星 402(真实关注名单 + following_count)。攻破 following/list status_code=8(根因 cookie 太旧、非端点锁死)后抓通。monitored_targets(②监控池):cron 实时维护中,监控池量级 318/462(高+中意向)。pt_feed_coverage(③feed刷到):表/RPC 刚建(PR #566 · 2026-06-26),需无影重部署 watch 才开始灌数——之前/当前 pt-summary 显示「待无影」即此。pt_target_video_sightings(④发新视频)/ second_touch_log(⑤触达):watch 直写已通,随关注的人发新视频 going-forward 自然涨;历史不回填(只接今天起新产生的)。mark-second-touch --from-comment-log」那套——靠 cron + 实时直连让 second_touch_log 自然涨起来。
潜在触达漏斗(每个号一条):①关注 → ②监控池 → ③今日刷到 → ④当天发新视频 → ⑤当天触达。 一格比一格小(关注的人最多,真触达的最少)。下面用大白话讲每个数是啥、怎么来、多久更新一次。
| 漏斗这一格 | 这个数是啥(大白话) | 怎么来 · 多久更新一次 |
|---|---|---|
| ①关注 | 这个号在抖音总共关注了多少人(短剧号、同行、自然关注、客户线索全算)。关注了,对方发新视频才会出现在我们刷的视频流里——所以这是最大的来源池。 | 人工抓:在云电脑登录抖音网页版,把关注名单导出来入库。cookie 约半个月过期,过期了重导一次(系统会提前提醒)。现已入库:饭粒 624 / 小星 402。 |
| ②监控池 | 关注的人里,挑出"高/中意向、值得再勾一次"的名单。两种人:① 发过私信但 1 天以上没回的;② 想发私信却没发成的(这种只收高意向)。 | 系统全自动:每小时重算一次。新符合的自动进,回复了 / 谈崩了 / 已成交的自动出。云电脑直接读这张名单,不用人工搬。 |
| ③今日刷到 ★新 | 今天我们刷视频流时,真的刷到了监控池里几个人(去重)。抖音随机推,关注 600 人不代表今天都刷得到,所以这个数总比监控池小。 | 云电脑挂机自动数,每天零点清零重数。⚠️ 现在还显示"待无影"——要先把云电脑脚本更新一版(饭粒+小星)才开始有数。 |
| ④当天发新视频 | 今天刷到的这些人里,有几个真发了新视频、一共几条。 | 云电脑挂机自动记,刷到一条记一条。 |
| ⑤当天触达 | 今天我们真给几条新视频做了动作(点赞 + 评论1 评视频 + 评论2 搬当初的私信)。从视频发出到我们做完 ≤20 分钟算达标。 | 云电脑自动做完自动记。同一个人每天最多勾 1 次,累计勾满 7 次还不回就停(出库)。 |
accounts.following_count+account_follows。无影 Edge 登录 → _grab_cookie.py(browser_cookie3) → _probe_following_list_wuying.py 翻 following/list → mac 剥代理(NO_PROXY=*)paste.rs 回传 → sync-account-follows.ts。status_code=8 根因=cookie 太旧。cookie-expiry-watch cron 按年龄≥25天预警(PR#565)。monitored_targets。cron refresh-monitored-targets 每小时(0 * * * *)从 conversations/messages/comments/lead_claims/message_queue 重算 UPSERT + reconcile(置 dropped) + 在途豁免防双触。reason=sent_no_reply/dm_failed(后者 CHECK 只收高意向)。watch 直接读。pt_feed_coverage(org,account,date,distinct_authors) ★PR#566。watch(_realtime_touch_watch_wuying.py)每轮拉 feed,命中 pool 并入当日去重集合(北京时归日·跨天重置),每轮经 RPC log_feed_coverage UPSERT 高水位(GREATEST 防重启回退)。需无影 update.bat 重部署 watch 才有数。pt_target_video_sightings。同一 watch 每条新视频(aweme_id 去重)经 RPC log_sighting 直写,标 gate=actionable/expired。pt-summary 按 detected_at 聚合。second_touch_log。consume 脚本对 actionable sighting GUI 点赞+双评论,经 RPC log_second_touch/mark_second_touch 写流水(含 e2e + 三步 status);claim_second_touch 原子去重防双触。这些坑在一筑(探路号)和接管小星时花真金白银踩出来并修好;铺到野荞时直接照单避开,不用重踩。
AKKE_C_DM_INBOX/DM_FIRST 是千分比(0-1000),填成原始像素(如 2361/2153 >1000) → 被 click_norm 又乘屏幕 → 点到 (6941,401) 飞出屏幕 → 私信列表 0 行、入站一条抓不到click_norm -> (x,y) 超屏宽 + 列表 N 行;_capture_pos.py 重量(改成 884,7 / 719,104)→ 列表 1→13 行、库里入站 1→2。DM_FIRST 是关键、别漏。6-24 晚发现饭粒同坑(1993,178 / 1890,157 >1000,÷2560×1600×1000 改 778,111 / 738,98)wuying_poll_agent.py 是旧版、压根没有「收件箱捕获」route-D 那段代码,.env 的 AKKE_DM_AUTOREPLY_CAPTURE=1 没人读。6-23「capture 实锤 列表1→13」是手动单跑 douyin_dm_autoreply.py capture 的一次性结果,不是常驻支线在跑(连续捕获其实没起)。findstr "DM_AUTOREPLY_CAPTURE_ENABLED" wuying_poll_agent.py(英文词,中文 findstr 在 GBK 控制台假阴性、别误判「没这段」);空=旧版 → 从镜像 iwr 更新(≈50521 字节)。起来后 DM 窗口每轮滚 收件箱捕获 mode=capture + capture: 列表 N 行 才算真在抓。6-24 晚饭粒+夏夏两台都重更,capture 实跑(11/13 行)。akke_wuying_agent.bat(138B) 只裸跑 DM(没窗口锁、没 route-B、没 capture 续命)%APPDATA%\…\Startup\akke_wuying_agent.bat 覆成 ASCII 纯英文版:set AKKE_WINDOW_LOCK=1 + start "Akke DM" cmd /k py wuying_poll_agent.py + start "Akke route-B" cmd /k _start-realtime-touch.bat(用 py 不用 python,纯英文防 cmd GBK 编码坑)。6-24 晚饭粒+夏夏都配。前提:抖音保持登录+最大化+前台special-follow.json 快照,新 lead 进不去、还得人工搬monitored_targets 表 + cron 每小时重算 + watch auto-DB 读(PR #503)。失败 DM 高意向也由 cron(reason=dm_failed)自动纳入dy_cookie.txt → 每 10s 崩重启、监控起不来;用 _load_cookie_str() 在本号没 cookie 时会回退任意活跃号 → watch 读错号关注流accounts.cookie_data 写 dy_cookie.txt(专号专 cookie、拉不到报错不回退)→ 监控 450 lead 起来pause_video 改 VL 定位暂停键双保险'抖音' in t or 'douyin' in t.lower()(#380)。别脑补「窗口抢前台」AKKE_C_LIKE/AKKE_C_WORK_FIRST → 回落 VL 分支。会动的元素用 VLAKKE_EXEC_TIMEOUT_SEC(默认 300s)硬超时 + kill + 跳过 + 落盘AKKE_COMMENT_VERIFY_LENIENT=1(仍真验);绝不无脑 TRUST_SEND(假阳性最危险,标了 touched 永不重触)AKKE_WINDOW_LOCK=1 窗口层串行+DM优先;start-dm-routeb.bat 一条龙。判别:rc=off≈开了锁claim_second_touch 原子去重 RPC(发前查 DB next_eligible,#360)+ 停派单二触 cronraw.githubusercontent.com、数据走 Supabase 直连,别走境外文件站second_touch_log 真在涨。refresh-monitored-targets 每小时跑出 monitored_targets 数据 + watch auto-DB 真读到;失败 DM 高意向(reason=dm_failed)自动纳入。wuying-routeb-deploy-xiaowen.md「拉 .bat + 双击」;3 台共用同一把 wuying_worker scoped JWT。DB 实查 + 会话实锤 · 截至 2026-06-28 | 源:project_akke_potential_touch_route_b / project_akke_dm_autoreply_cloudpc 记忆 + 6-23~6-28 会话实锤 + PR #503 / #566 / #567 / #619 / #622 + commits 22147797(分步状态)/bd24d009(UTC)/003e5c88(关注落库) + wuying-routeb-deploy-xiaowen 部署清单 | 全方向周末时间线见 06-26→06-28 冲刺线