「评论抓取慢」到底是怎么回事

一页看懂 · 2026-06-25 起 · 最新更新 7-22 深夜(翻出 6/15 的旧结论后又下一层:天花板的真根因不是「巡号不够快」,是从东京 IP 根本看不到 6 天以内的新视频——近 7 天入库 3044 条视频,滞后 <2 天的 0 条 · KPI:高中意向评论 10 分钟内抓到 · 小白友好版

🎯我们的目标

有购买意向的抖音评论(高/中意向),发布后 10 分钟内抓进系统——越快私信,客户越没被别家抢走。本页跟踪这一个指标的全程。

17-27%
起点(6/25 排查启动时)
~51%
现在(7/17-7/21 定型值)
~53%
腾挪产能的天花板**
85-90%
换打法才够得着***

**7-22 新算的一格:这是发现面滞后 6-8 天不变的前提下的上限。已经贴着了——继续给巡号腾产能没用,因为墙不在产能上(见第 2 关)。
***要到 85-90% 必须把「发现」搬到国内 IP(见第 2 关与下一步 ①),不是拧配置能到的。
*当天新收编账号的历史回填评论(约 6-8%/天)天生不可能 10 分钟内抓到——7-22 复核已不成立:新收编降到 ~2-5 个/天,近 7 天它们贡献的高/中意向 ≈0 条(见第 1 关)。
⚠️ 「现在」这一格 7-22 下修过:上一版写 59-62%,是拿当时还没定型的日值报的。晚到评论会持续补进历史分母,7/14 从 55.5% 一路沉到 47.9%、7/18 从 57.0% 沉到 52.1%——沉降会持续一周不止,不是只有最后一天不准。按定型值看,7/9 跳变后就一直卡在 48-52% 的平台期,没有继续往上爬。

📈逐日趋势:每一次变化都对得上一次动作

横轴=评论发布日(北京时间归天)· 纵轴=当日高中意向评论 10 分钟内抓到的占比 · 数据逐条查库实算

0%20%40%60%80%100%85-90%:只有把「发现」搬到国内 IP 才够得着发现面滞后 6-8 天不变的前提下,天花板 ~53% —— 已经贴着未定型26.7%17%42%52.1%51.2%06-2506-2807-0107-0407-0707-1007-1307-1607-1907-22
时间发生了什么对指标的影响
6/28-29「空跑退避」豁免上线(#643):正在出客户的视频不再被冷落17% → 25%,第一次抬升
7/8-7/9三连修复:拆排队毒丸(#802)+ 水位线回看(#803,后因吞吐税全局关停)+ 钓点让道/幽灵票清扫(#810/#811)21% → 45%,跳变主力;此后逐日爬到 48-52% 的平台期就停住了(早先写「爬到 62%」是拿未定型日值报的,7-22 按定型值下修)
7/13Fix-2 冷车道回看上线(#859)——7/15 验收不合格:阀门开错车道,没起效也没花钱无影响(图上无拐点,正是验收不合格的可视证据)
7/15Fix-2 修正版上线(#876,回看改开在快车道)——7/19 验收合格:永久丢失率 11.4% → 5.2%本图刻意看不出拐点,这是设计如此:捞回的评论天生已超 10 分钟,进分母反而稀释本指标。真收益在另一本账(见下方「两本账」)
7/19A 杠杆:死视频回扫封顶 30→240 分钟(纯配置,fly v504)——3 天复盘:产能确实省出来了(快车道扫描 17710→8584 次/6h 腰斩、巡号 20.5→43 次/时翻倍)KPI 纹丝不动(7/17-18 的 50.6/52.1 → 7/20-21 的 51.4/51.2)。7-22 深夜查明真因:不是"量级不够",而是巡号再快也只能看到 6 天前的视频(见第 2 关那堵墙)——这个方向本身就顶在墙上

图注:7/4 单日 39.9% 为成分波动(当天新收编少),非动作产物;7/10 并发实验 66 分钟内回滚,对指标无残留影响。灰底「未定型」区(最后 2 天)别当结论看——晚到评论会持续补进当天分母把占比拉低。7-22 复盘发现沉降比原先以为的久得多:不是只有最后一天不准,7/14 从 55.5% 沉到 47.9%(-7.6)、7/17 从 54.3% 沉到 50.6%、7/18 从 57.0% 沉到 52.1%,四五天前的点都还在往下走。这一版图上 7/12 起的所有历史点都已按 7-22 重算值改写(老截图对不上是正常的)。沉降本身有一半是好事:Fix-2 与老视频回扫正在把晚到评论捞回来,捞回的天生超 10 分钟、进分母就把比例压低——分母变难了。

🔗一条评论要在 10 分钟内进系统,要闯 5 关——现在各关什么状态

第 1 关 · 账号在池

发视频的抖音号得先被我们收编监控。状态:供血很细——7-22 实测近 14 天新收编 69 个 = 4.9 个/天(近 7 天只有 14 个,约 2 个/天),不是早先写的「每天约 20 个」。当前活跃号源 888 个(tier-1 好号 98 / tier-0 790)。
顺带更正一条旧结论:早先说「新号的历史回填评论压天花板 ~7 个点」。7-22 复核:近 7 天高/中意向 4756 条里,来自近 7 天新收编号的 ≈0 条——新号进得太少,这个副作用现在基本不存在了,天花板不该再算这 7 个点。

第 2 关 · 视频被发现 🔴 真根因在这里:我们根本看不到新视频

号发了新视频,靠「巡号」发现它。7-22 深夜实测(近 7 天新入库 3044 条有发布时间的视频):
发布→我们入库的滞后,p10 = 6.4 天、中位 8.3 天、<2 天的 0 条(一条都没有)
这不是「巡号慢」,是抖音那个接口本身就有 6-7 天的「发布→可见」延迟——团队 2026-06-15 就已双向实测锁死过这个根因:该延迟是全局的(国内 IP 拉同一接口也照样只到 6 天前),唯一能看到当天视频的路径是国内 IP 的网页渲染;而 Fly 东京两条路都看不到(当时给东京 worker 开过 DOM 兜底,实测新入库 99 条里新鲜的 = 0,已回滚)。
所以:巡号提速最多把 8.3 天压回 6.4 天(那 2 天的差是排队排出来的),剩下的 6.4 天是墙,在东京怎么调都过不去。这才是 7/19 那刀让巡号翻倍、KPI 却纹丝不动的真正原因——不是「量级不够」,是这个方向本身就顶在墙上。
后果:一条视频我们平均在它发布 8 天后才收编,它发布初期的评论高峰我们从来没在场。这就是下面那张表里「该视频第一条 lead」只有 14% 能 10 分钟内抓到的来源(其中还有 16% 是评论早就存在、我们后来才发现这条视频,那批命中率是 0%)。

第 3 关 · 排上队被盯 🟡 快车道满分,慢车道(含巡号)严重排队

视频进池后要排进扫描队列。7/8-7/9 拆掉三颗雷(排队毒丸 / 优先级挤占 / 幽灵票堵死)。7-22 复验(入队→开抓 的等待,近 6h 完成的活)——早先写的「这一关已满分」只对快车道成立
pri=0 高意向快车道:中位 1.4 分钟、p99 5.4 分钟,基本零排队;幽灵票 0 个。这一档确实修好了。
🟡 pri=1 常规快车道:中位 8 分钟,但 p90 到 107 分钟
🔴 pri=5(巡号那条道):中位 790 分钟 ≈ 13.2 小时才轮到开抓,pending 451 个、最老 15.1 小时。这就是第 2 关那「中位 8.3 天 vs 最快 6.4 天」中间那截差的来源之一——墙之外,我们自己还压了半天多的队。

第 4 关 · 增量扫描抓到 ✅ 满分 / 伤口已缝合大半

被盯视频的新评论 84-91% 在 10 分钟内抓到(7-22 按热集合分组实测:距上条 lead 1-2h 84.5% / 2-3h 91.1% / 3-6h 91.1%。早先写的「100%」是 7/9 小样本归因,已更正——剩下的 9-16% 主要被第 5 关的审核延迟吃掉)。伤口:抖音压了 10-44 分钟才放出的客户评论会被水位线误判成老评论永久丢弃(实测 11.5%)——第一版修复开错阀门没起效(11.4%,纹丝不动);修正版 7/15 上线(每视频每小时 1 次带回看的扫描)。7/19 对账验收:永久丢失率 11.4% → 5.2%,丢失里购买意图浓度 44% → 14%。
🔴 7-22 复验:5.2% 没保住 → 6.6%(新起一批 30 个钓点、窗口 7/20 00:00–7/22 00:00 即 A 杠杆上线之后;探针拉到真实评论 1377 条,DB 捕获 1286,永久丢 91 条 = 6.6%)。丢失里的购买意图浓度也从 14% 回到 33%(15 条「求链接 / 求材料包 / 怎么买」原文已留档)。
⚠️ 不能直接读成"恶化了 1.4 个点":这是另一批视频(30 个里 6 个探测失败已剔除,实际 24 个),窗口也不同,跟 7/19 那次不是同一个样本。能确定的只有一条:「5.2%」这个数不能再当现值挂着
责任已排除 A 杠杆:91 条丢失落在 14 个视频上,其中 76% 落在「高意向注入」那批——恰恰是扫得最勤的(最狠的一个 3 天内被扫 993 次,照样丢 22 条)。扫描频率不是问题。
🎯 剩下的嫌疑收敛到一个:Fix-2 的回看窗是 60 分钟,而第 5 关刚测出抖音放出评论的延迟 p90 达 121 分钟——被压过 60 分钟才放出来的评论,结构性地落在回看窗外。这与「把回看窗 60→120 分钟」那个候选动作正好对上(见下一步)。

第 5 关 · 抖音审核放行 ⚠️ 不可控天花板

「求链接 / 多少钱」这类客户评论被抖音压一段时间才对外可见——在它可见前谁都抓不到。7-22 复验:热集合里(每 ~6 分钟就扫一次的视频)仍然超 10 分钟才被我们抓到的 lead 有 955 条,它们的时延中位 41 分钟、p75 57 分钟、p90 达 121 分钟,其中 56% 落在 10-44 分钟这个区间。
换句话说:早先写的「10-44 分钟」是对的中段,但尾巴比原先记的长得多(p90 两小时)。这批视频我们扫得足够勤,抓不到只能由"抖音何时放出"解释。这部分是真天花板,谁来都一样。

🔍为什么卡在 ~50%:一张表说清(7-22 新算)

把近 7 天每一条高/中意向评论,按「它到达的那一刻,它所在的视频在不在快车道热集合里」分组,再看各组有多少被 10 分钟内抓到。这张表解释了此前所有说不通的地方。

lead 到达时,这条视频……条数≤10min 抓到说明
在热集合里(距上条 lead 1-2 小时)36884.5%每 ~6 分钟被扫一次,基本都能抓住
在热集合里(距上条 2-3 小时)20291.1%
在热集合里(距上条 3-6 小时)29191.1%
已掉出热集合(距上条 6-24 小时)52921.6%只能等巡号扫到它那一圈——而那一圈要 18-22 小时;更要命的是扫到了也只能看见 6 天前的视频(第 2 关那堵墙)
已掉出热集合(距上条 >24 小时)25215.9%
从没进过(该视频的第一条 lead)52314.0%
三句话读懂:
① 在热集合里的 lead 占 69%、抓到率 63.3%;掉出去的占 31%、抓到率只有 17.4%热集合这条腿贡献了全部「10 分钟内抓到」成绩的 89%。
② 所以整体 ~50% ≈ 「69% × 好成绩 + 31% × 差成绩」的加权结果。要往上走,只能去救那 31%——而那 31% 全卡在「视频还没被发现」,也就是第 2 关。
③ 而第 2 关不是"加不动",是顶着一堵墙:我们平均在视频发布 8 天后才收编它(见上)。这就是 ~53% 那条天花板线的来历。
⚠️ 这张表不是新发现,是给一个 6/29 就下过的结论补上了数字。「高/中意向在产视频豁免空跑退避」是 2026-06-29 主动做的时延权衡(`HOT_FAST_LANE_HIGH_INTENT_BACKOFF=0`),当时的实测就是「退避会把正在出客户的视频踢出快车道,下一条 lead 来时扫不到、拖到 5-30 分钟,占慢尾大头」,团队记录里这一档一直标着「高危反伤 lead 视频,别动」
7-22 下午我们没先翻这条记录,从「91% 空扫来自这条车道」出发又提了一次「收窗口」,晚上这张表把它按住了——并且第一次把代价量化出来:2-3 小时、3-6 小时两组共 493 条 lead、抓到率 91%,收窗口会让它们掉进 17-22% 的池子,KPI 大约掉 8 个点(49% → 41%)
正确的读法:那 7.1% 的产出率不是浪费,是保险费。为了接住那 91% 的命中率,多扫的那些空趟是值得的——评论什么时候来没人能预知,只能一直守着。

口径:近 7 天、`comment_time` 在窗内的高/中意向评论 4206 条(剔除时延为负或 >30 天的脏数据)。「距上条 lead」按入库时刻算,与快车道判热集合的口径一致。已知瑕疵:「距上条 0-1 小时」那组(2041 条、抓到率 52.8%)混进了批量回填——一批老评论同时入库、间隔≈0 但时延很大,所以那组数偏低、未列入上表主论证;真实「热视频正常冒评论」的水平以 1-6 小时三组的 84-91% 为准。

🕐时间线:从最新到最老,每件事和它对 KPI 的影响

日期发生了什么KPI 影响
7/22 深夜
(第二批)
把页面上所有「未复验」的数逐条复验(用户要求)。结果:永久丢 5.2% → 6.6%(新钓点批次,A 杠杆之后的窗口),购买词浓度 14% → 33%;第 3 关「已满分」只对 pri=0 成立(pri=5 巡号中位等 13.2 小时才开抓);第 5 关「10-44 分钟」中段对但尾巴长得多(p90 121 分钟);附录「热视频里 ≤5min 高42%/中20%」→ 高 60.2%/中 59.0%;产能 59-130/分 → 51.9/分永久丢责任排除 A 杠杆(76% 丢失落在扫得最勤的视频上)→ 嫌疑收敛到「回看窗 60 分钟 < 审核延迟 p90 121 分钟」,已列为下一步 ②.5
7/22 深夜翻出 6/15 旧结论 + 全页审查(本次更新)。发现滞后复验:近 7d 入库 3044 条视频,p10 6.4d / 中位 8.3d / <2 天 0 条。抖音 `/aweme/post/` 端点本身 6-7 天延迟(全局),东京 API+DOM 两条路都看不到——6/15 已实测锁死并证伪过"东京开 DOM 兜底"。顺带全页审查,改掉 10 处过时/自相矛盾(新收编 20/天→4.9、第 4 关 100%→84-91%、回填压 7 点→已不成立、附录扫描频率 38→9 次等)天花板真根因换人:不是产能,是发现面滞后 6-8 天。巡号提速最多把 8.3 天压回 6.4 天。下一步 ① 换成已立项 5 周未推进的「发现搬国内 IP」
7/22 晚推演推翻了下午的方案(本次更新)。按「lead 到达时视频在不在热集合」分组算抓到率:在集内 69% 的 lead 抓到 63.3%、掉出的 31% 只有 17.4%,热集合贡献 89% 的命中。收注入窗口 = 把 493 条 91% 命中的 lead 推进 17% 的池子。同时算出巡号的物理边界:884 源半小时一轮需 19.9 机时/时,而全 worker 才 10.75下一步作废重写。新增结论:腾挪产能的天花板 ≈53%,已贴着。当时把"7/19 那刀白干"归因为巡号的阶跃函数——当晚深夜更正为更根本的原因:那堵 6 天的墙(见上一行)
7/22 下午A 杠杆 3 天复盘(本次更新):快车道扫描 17710→8584 次/6h、巡号 20.5→43 次/时、A 管得到的死视频人均 15→1.9 次/6h。但 ≤10min KPI 没动。拆开空扫来源:91% 是 pri=0 高意向注入(47 视频 × 58.7 次/6h 全空),这批 6/29 起被主动豁免退避、A 够不着产能账赢了,时效账没赢。新瓶颈换人:从「死视频空扫」变成「高意向注入空转」。同时废掉「空扫占比」这个指标(分母会动,会骗人)
7/20-7/22A 杠杆自动复测(launchd 连跑 3 天推卡)。空扫占比 17.1%→24.8%→36.2%→39.4%,一度被读成「变差了」翻案:占比涨 ≠ 变差,见上一行。副作用闸全绿——巡号不但没被拖累,还翻了倍
7/19 凌晨治空扫上线:死视频回扫间隔封顶 30 分钟 → 4 小时(纯配置,fly release v504,秒回滚)。上药前基线留档:近 6 小时 17710 次扫描 / 403 个视频,其中 201 个(50%)零产出、吃掉 17.1% 扫描量已结账(见最上面两行):省产能兑现了,换时效没兑现
7/19 凌晨Fix-2 修正版验收:合格。30 个钓点视频全量对账(探针 30/30 成功、0 截断):永久丢失率 11.4% → 5.2%(同 48 小时口径);丢失里购买意图浓度 44% → 14%;巡号未被拖累(20.5 次/时,高于修复期的 14.5);本页 KPI 表观未见退步第 4 关伤口缝合大半。本页 KPI 图上刻意无拐点(捞回评论天生超 10 分钟,进分母反稀释)——真收益在「多捞回多少 leads」那本账
7/15 午后空扫诊断:快车道 74% 被扫视频 6 小时零产出、白吃 42% 扫描量,死视频回扫间隔封顶 30 分钟太短是主因——这才是巡号饿死的真凶。顺带评估「加第 3 台机」:两台机 CPU 大量空闲,瓶颈是抢槽不是算力,结论不加。治空扫方案已备好(纯配置、秒回滚),排在 7/17 验收之后上,不跟验收抢变量尚无(等 7/17 后动手);把「下一步」从花钱加机改成免费治空扫
7/15 上午Fix-2 48h 对账验收不合格(丢失率 11.4% vs 修复前 11.5%)。根因:回看开在「冷复扫车道」,但漏失视频实际被快车道扫(48h 实测 5240 次 vs 2 次)。修正版当天改好并上线(按视频每小时 1 次带回看),7/17 下午再对账无变化(图上无拐点);教训入档:按车道定向 ≠ 按受害视频定向
7/13Fix-2 上线(#859):冷车道增量水位线放宽 60 分钟,防审核延迟评论被永久丢预期补回永久丢 → 实际无效果、无副作用(税 0.8% 因为它没干活)
7/10并发 3→4 实验:每活耗时 +39%、总吞吐持平、巡号更少 → 66 分钟内回滚无残留影响;判死「同一台机加并发」这条路(当时结论指向加机器,7/15 空扫诊断推翻:真正免费的产能在治空扫里)
7/9钓点复扫让道(#810)+ 幽灵票每日清扫(#811,一个账号源曾被静默堵 7 天)+ 优先级收养修正(#808)合力把 21% 打到 45%,跳变主力;之后逐日爬到 48-52% 就停住(早先写「爬到 62%」是未定型日值,7-22 按定型值下修)
7/8拆排队毒丸(#802:正在出客户的视频不再被低优先级任务挡一整个白天)+ 水位线回看 60min(#803,全局版因 40% 吞吐税饿死巡号、次日关停——这也是后来 Fix-2 想只给冷车道重开的由来)
6/28-29空跑退避豁免(#643):连续空扫的视频一旦出客户评论立即恢复高频扫17% → 25%,第一次抬升
6/25排查启动:意向评论平均 1 个多小时才进库,开始逐层拆基线 17-27%

下一步(拧配置的路已经走完了,剩下三条都要真做)

先说不做什么:收高意向注入窗口——已作废(会掉 8 个点,见上表);继续给巡号腾产能——已作废(巡号再快也只能看到 6 天前的视频,方向顶在墙上)。拧 env 这条路到 7/19 那刀为止就到头了。

方向具体做什么为什么值得 / 怎么算成
① 把「发现」搬到国内 IP
唯一能翻过天花板的路
已有在办项目,不用新立
这不是新提案,是 2026-06-15 就已定方向、至今没推进的那件事。视频发现从 Fly 东京搬到国内出口(国内常驻服务器 / 复用国内出口的机器),让我们能在视频发布当天就收编它,而不是第 8 天。
下一步是已经写好的一步:先别建系统,在目标国内机器上跑单号验证(已知有新视频的那个 sec_uid),带登录 cookie 渲染主页,看能否拿到 <2 天的视频且不弹滑块
命门(动手前必须先过):国内机房 IP ≠ 住宅 IP。当初的成功验证跑在住宅 IP 上,抖音对机房 IP 风控更严——机房 IP 到底能不能看到新鲜视频,至今没验过
过了 → 按反爬纪律(cookie 轮换 + jitter + 低并发 + 按号冷却,不能裸批量,会触发滑块)建发现作业;不过 → 加国内住宅代理
② 加真产能加机器 / 加并发⚠️ 先验证再花钱:7/10 并发 3→4 的实验是每活耗时 +39%、总吞吐持平,且两台机 CPU 大量空闲——说明卡的是抖音侧 IO/限频,不是算力。没验证清楚之前加机器大概率是白花钱
②.5 回看窗 60→120 分钟
7-22 复验后新证据
Fix-2 的 per-video 回看窗现在是 60 分钟。7-22 两组新数据指向同一处:① 永久丢已回到 6.6%,且 76% 落在扫得最勤的视频上(不是扫得不够);② 抖音放出评论的延迟 p90 = 121 分钟,60 分钟的窗结构性接不住成:永久丢率回落到 5% 以下且购买词浓度回落。代价:每视频每小时那次带回看的扫描要多翻一倍页,抓取成本上升——要先量成本再放,且不能和别的变量同窗
③ 改目标承认「10 分钟」只对已经在冒评论的视频成立(那部分我们做到 84-91%),对「一条冷视频的第一条 lead」另立一个诚实的 SLA不是认输,是别拿一个物理上做不到的数字长期考核自己。真要一个数:热集合内 84-91% 才是这套系统当前的真实能力

同时保持不动的:高意向注入窗口 6 小时(保险费,别省)、A 杠杆封顶 240 分钟(省下来的产能没坏处,只是不够)。原则照旧:一次只放一个变量,放完等满 24 小时再看账。

📚 附录:口径 · 名词 · 翻案记录(排查过程的历史卡片已清理,只留三张长期有用的;完整过程在 git 历史与团队 memory)

🧮每个数怎么算的(分子 ÷ 分母)

⚠️ 本卡是 6 月的口径卡(当时主线盯 ≤5min,现在盯 ≤10min)。方法说明仍然有效,但下表里的具体数值都是 6 月的,别当现值用——最新数值一律以正文为准。已知过时的:「热集合扫描频率中位 38 次/个」7-22 实测为 9 次/个(A 杠杆后扫描量腰斩);「在热视频里 ≤5min 高42%/中20%」已于 7-22 复算 → 高 60.2% / 中 59.0%(表内已标)。

共同基础——"目标评论"的定义:`comments` 表里 `intent_label ∈ {高意向, 中意向}`、`comment_time` 非空、`video_id` 非空的评论。T1 = `created_at`(入库时刻) − `comment_time`(评论发布)。主线用的 ≤10min 口径与下表 ≤5min 完全同法,只是阈值不同。

⚠️ 最重要的一句(关于分母):所有百分比的分母 = "我们已抓到入库的评论"不是"抖音上实际存在的评论"。没抓到的评论不在 `comments` 表里 → 不进任何分母、我们也看不见。所以这些 % 读作"在我们捞到的评论中,多少是 ≤5min 的"。对最新一天还有额外乐观偏差:当天发的、还没抓到的慢评论暂不在分母 → 拉高比例,满日后才稳
指标分子分母
≤5min%(目标表)T1 ≤ 5min 的目标评论数近 7 天按入库时间(`created_at`≥7d前)的目标评论数
≤5min%(by-day 每天)当天 T1 ≤ 5min 的目标评论数按发布日(`comment_time` 北京)分桶后、当天的目标评论数
物理上限 / 天花板(预测器命中率)"评论到达前 H 小时内、该视频有过对应信号(高/中 或 任意评论 的入库)"的目标评论数 = 理论上可提前预测到的近 7 天目标评论数
在热视频里 ≤5min6月:高42%/中20%7-22 复算:高 60.2% / 中 59.0%,高中差距已消失)在注入集内 且 T1 ≤ 5min 的条数在注入集内的目标评论数(注入集 = 评论到达前 6h 该视频已有高/中入库)
热集合扫描频率中位 38 次/个 → 7-22 实测 9 次/个非比例,是中位数:近 6h 产高/中意向的去重视频,各自近 60min 被完成的 `scrape_video`(按 payload.url 匹配)次数,取这组数的中位
leads / 天非比例,是计数:`created_at` 落在该天的目标评论数

两套窗口约定别混:目标表按"入库时间"取近 7d(看整体水位);by-day按"发布日"分天(看每天趋势、对齐 #643 拐点)。脚本:`_diag-le5-split` / `_diag-le5-byday` / `_diag-predictor-ceiling-5min` / `_diag-hi-vs-mid-why`(均直查生产 `comments` 表)。

📚名词参考:号的 tier 分级 & 任务的 pri 优先级

✅ 本卡 2026-07-22 已逐条对代码核过,数值全部准确:tier-0 每小时 150 个(`scrape/route.ts` SCRAPE_LIMIT=150 + cron 10 * * * *)· tier-1 每源 30min、产过高/中意向的缩到 10min(SOURCE_THROTTLE_MINUTES=30 / INTENT_THROTTLE_MINUTES=10 / 窗口 6h)· 每轮 5 新+5 回扫(queue.py:809-816)· aging 每 6 小时升一级(QUEUE_CLAIM_AGING_HOURS=6.0)· 升 tier-1 近 10 天≥10、降回 tier-0 近 7 天=0、每天 01:00 跑(cron 0 1 * * *)。唯一改过的是空跑退避封顶:30min → 240min(7/19 A 杠杆),下表已更新。

上面反复出现 tier-0/tier-1、pri=0/1/3/5。这张卡一次讲清——它俩是两套不同的东西:tier 是"号"的分级(决定多久去扫这个号)pri 是"每个抓取任务"的优先级(决定 worker 先抓谁)

① tier:号源分级(`source_accounts.tier`)

tier-0(普通号)tier-1(好号 / 在产货)
是什么大多数号,很少出 lead近 10 天「高+中意向」≥ 10 条的号
谁去扫 / 多久/api/cron/scrape每小时挑最久没抓的 150 个/api/cron/scrape-hot每源 30min(其中近 6h 产过高/中意向的缩到 10min
每轮看几条 / 抓几条看 10 条、全抓(5 新+5 回扫,刚好 10)看 20 条,但每轮只真抓其中 10 条(5 新+5 回扫,`queue.py:809-816`)→ 这就是"20≠5+5":20 是看到的清单、10 是真去抓的,剩 10 条这轮跳过
整号扫任务的 pripri=5(慢道)pri=3
升 / 降级(每天 01:00 自动)升 tier-1:近 10 天「高+中意向」≥ 10 条降回 tier-0:近 7 天「高+中」= 0 条(#365 对称 auto-demote;env 可调)

② pri:抓取任务优先级(`scrape_jobs.priority`,数字越小越优先,worker 按 pri 从小到大领)

pri谁用它含义
0
最优先
高/中意向视频注入快道、VIP 回扫、UI 手动插最前。#643 后:这批"在产货"的不再被退避踢出、每 3min 必扫
1常规 fresh-catch 单视频快道(近期产新鲜评论的视频)次优先
3tier-1 整号扫、cold-intent 老视频回扫、rescan-recent
5
最低
tier-0 每小时整号扫、hot-rotation、默认值慢道(只在 0/1/3 都空时才轮到 → 积压能到十几小时)
两者怎么配合 + 防饿死:worker 领单 = WHERE pending ORDER BY priority ASC, scheduled_at ASC(pri 小的先、同 pri 先到先得)。为防 pri=5 永远轮不到,有 aging:一个任务每多等 6 小时,优先级自动升一级(最高升到 pri=1),migration 20260615144043
所以"快慢分道"= 快活(pri 0/1 单视频,5.8s)和慢活(pri 3/5 整号扫,23-211s)分开排,快活永远先走、不被慢活堵(#363 把 tier-1 整号从 pri=1 降到 3 就是为这个)。

③ 其它高频黑话

意思
产能worker 每分钟能抓多少个视频(抓取吞吐量)。6 月实测 59-130 个/分钟7-22 实测 51.9 个/分钟(A 杠杆砍掉一半空扫后总量本就该降,不是变差)。"产能够不够"= 要扫的视频会不会多到 worker 扫不过来。
空跑去扫一个视频、结果没抓到新评论(白扫一趟)。
空跑退避省力机制:一个视频连续 3 次空跑,就判它"安静了",把它从 3min 快道暂时挂起(每多空跑一轮挂更久:9→18→36→72→144→240min 封顶2026-07-19 A 杠杆把封顶从 30min 提到 240min),免得反复白扫。副作用:正在"一阵一阵"冒评论的热视频会被误挂 → #643 对热集合关掉它。
慢尾最慢的那一小撮评论(长尾),不是平均、是极端值。
p50 / p90 / p99把所有评论按耗时从快到慢排队,第 50%/90%/99% 那条的耗时。p50=中位(一半比它快)、p90=最慢 10%p99=最慢 1%。"慢尾 p99 ~20min"=最慢的 1% 要等约 20 分钟。
整号扫 / 单视频快道整号扫=去一个号主页翻一圈、批量抓多条视频(慢,23-211s);单视频快道=只抓某一条视频的新评论(快,~6.7s)。

📌 跟本次时效的关系:这轮 #643 动的是 pri=0 高/中意向快道那一档——不改它的优先级,只是不再让它被空跑退避临时踢出快道,让"正在出客户"的视频稳定每 3min 被扫到。tier 分级、aging、其它 pri 档全没动。

⬇️ 以下为排查过程记录(6-25 → 6-29,含数次自我更正)
最终结论已在顶部三张卡。下面是"怎么一步步查出来、又怎么纠偏"的过程,想深挖再读。

D10本次排查翻过的案(一开始想错 → 最终正确)

这次最大的价值在"纠偏"——好几个直觉/旧结论被数据推翻。最终正确的点:

一开始以为✅ 最终正确
98% 空跑 = cold-intent 坏了/钓点枯了正常稳态。每天仍捞 11 真 lead、退避在转、池没枯 → 维持留观,盯错指标才虚惊
慢是"老视频被冷落"(旧 memory 框)不完整。真相是幼年期空窗——新视频头几天没扫,进了 cold 轮反而快(13m)
这些号被扫得太少证伪。每 7h 扫一次、今天都扫过;病在每轮只回扫前 5 条(`[:5]`)、没优先挑还在产货的(recent-20 窗口非瓶颈,6-29 更正)
高意向被系统怠慢(2h vs 29m)年龄混淆。同年龄段高/中一样快,高意向只是更多长在老视频上
加机器/优化队列能提速无关。②排队+③扫描 共 0-7m,延迟 100% 在①发现
给号打 VIP 标能加速无用。VIP 快道 4 天闸,出 lead 的 VIP 视频全 >4d(中位23d)全被挡外
天花板的根因是「巡号产能不够」(7-22 晚的结论)只对了一半,当晚翻出旧结论后更正。真根因是发现面本身滞后 6-8 天:近 7 天入库 3044 条视频,<2 天的 0 条。巡号提速最多把 8.3 天压回 6.4 天,剩下的 6.4 天是抖音接口的墙。2026-06-15 就已双向实测锁死过(含"给东京开 DOM 兜底"的证伪与回滚),我们又从头推了一遍
下一步该「把发现变便宜」(找便宜 10 倍的探针)方向错了。成本从来不是问题,新鲜度和访问权才是——再便宜的探针从东京也只能看到 6 天前的视频。正确的那件事(发现搬国内 IP)6/15 就立过项、写好了下一步,一直没推进
下一刀该收「高意向注入窗口」(7-22 下午提出)这条 6/29 就已经定过了,我们重走了一遍老路。该豁免是 6/29 主动的时延权衡,团队记录里一直标着「高危反伤 lead 视频,别动」。7-22 晚只是补上了代价的数字:那车道 7.1% 的产出率难看,但它扛着 89% 的 ≤10min 命中,收窗口 KPI 掉约 8 个点。教训有两层:① 低产出率 ≠ 浪费,先看它在保什么;② 提方案前先翻已有结论——这次的答案早就写在那儿了
给巡号腾出产能,KPI 就会跟着涨证伪。巡号翻倍(扫一圈 43h→18h)KPI 零变化。它是阶跃函数:要接住「第一条 lead」得压到 10-30 分钟一圈,43 小时和 18 小时是同一档「来不及」。而 30 分钟一圈需要 19.9 机时/时,是全 worker 产能的近 2 倍——物理上够不到
「空扫」是一个统一的、越少越好的东西拆开才对。快车道自派那条(19.4% 产出)和高意向注入(7.1% 产出)性质完全不同:后者是守着可能来的 lead,空趟是保险费。另外两条车道的产出记在不同字段里——快车道读 result.total_comments、worker 自派读 comments_found 列,拿错字段会把 19.4% 读成 0%(7-22 踩过)
空扫占比从 17% 涨到 39% = 治空扫治坏了证伪。分母塌了造成的错觉——活视频扫描被砍半,分子(A 管得到的死视频人均扫描)实际从 15 降到 1.9。比例型指标的分母会动,只对绝对量下结论
省下产能 = KPI 会跟着涨暂时证伪。巡号翻倍(20.5→43 次/时)而 ≤10min 纹丝不动(~51%)。产能是必要不充分——要么量级还不够,要么「第 2 关是主瓶颈」这个判断本身要复查
截图那 510 条超时是抓取慢误判。那批抓取已 1-7min 达标,卡在"发送·认错人没发",是发送问题不是抓取