Pipeline: 从发帖到展示的 7 步旅程

每条推文经历以下完整链路。任何一步不通过,都不会出现在用户 For You Feed 中。

1
Query Hydration — 理解"谁在刷"
系统加载查看者的完整上下文:互动历史(点赞、回复、转推记录)、关注列表屏蔽/静音列表订阅信息话题偏好地理位置设备类型已看过的帖子 Bloom Filter
home-mixer/query_hydrators/ 共 15+ 个 hydrator 并行加载
2
Candidate Sourcing — 从哪里找帖子
Thunder (In-Network) Phoenix Retrieval (OON) Phoenix Topics Phoenix MoE TweetMixer Cached Posts
Thunder:你关注的人发的帖子,亚毫秒内存检索。 Phoenix Retrieval:Two-Tower 模型 + 向量相似度搜索全站内容。
3
Hydration — 补充帖子特征
给每条候选帖子补充:核心元数据、作者信息(粉丝数、screen name)、视频时长、是否含媒体、订阅状态、被屏蔽关系、语言代码、互关 Jaccard 分数、话题分类、引用帖展开。
home-mixer/candidate_hydrators/ 共 16 个 hydrator
4
Pre-Scoring Filters — 过滤不合格候选
DropDuplicatesFilter去重复帖子 ID
CoreDataHydrationFilter移除加载失败的帖子
AgeFilter移除超过保留期的旧帖
SelfTweetFilter移除查看者自己的帖子
RetweetDeduplicationFilter同一原始内容的转推去重
IneligibleSubscriptionFilter移除无权查看的付费内容
PreviouslySeenPostsFilter移除已看过的帖子 (Bloom Filter)
PreviouslyServedPostsFilter移除本次会话已展示的帖子
MutedKeywordFilter移除含用户静音关键词的帖子
AuthorSocialgraphFilter移除被屏蔽/静音作者的帖子
VideoFilter按设置过滤视频
TopicIdsFilter话题匹配过滤
5
Scoring — 核心排名(最关键的一步)
三个 Scorer 依次运行:
① PhoenixScorer — Grok-based Transformer 预测 15+ 种互动概率
② RankingScorer — 加权合成 + Author Diversity 衰减 + OON 权重调整
③ VMRanker — Value Model 服务端重排序(可选)
6
Selection — 取 Top K
按最终得分排序,选取前 K 条候选。TopKScoreSelector
7
Post-Selection + Ads Blending
最终安全过滤(VFFilter:删除/垃圾/暴力等)、对话去重、广告安全插入。Premium+ 用户看到的广告更少。

21 个评分维度

Phoenix Transformer 模型预测每条帖子在每个维度上的互动概率,然后加权合成最终得分。

正向信号

越高越好——这些信号推高帖子在 Feed 中的排名

维度代码字段含义权重级别
P(favorite)favorite_score用户点赞的概率最高 ≈ 1.0
P(reply)reply_score用户回复的概率高 ≈ 0.5
P(retweet)retweet_score用户转推的概率高 ≈ 0.3
P(quote)quote_score用户引用转推的概率中等
P(share)share_score用户分享的概率中等
P(share_via_dm)share_via_dm_score用户通过私信分享的概率中等
P(share_via_copy_link)share_via_copy_link_score用户复制链接分享的概率中等
P(click)click_score用户点击帖子的概率中等
P(profile_click)profile_click_score用户点击作者头像的概率中等
P(dwell)dwell_score用户停留阅读的概率中等 ≈ 0.2
Dwell Timedwell_time预测停留时长(连续值)连续
Click Dwell Timeclick_dwell_time点击后停留时长连续
P(video_quality_view)vqv_score视频质量观看概率(需满足最低时长)有条件
P(photo_expand)photo_expand_score用户展开图片的概率较低
P(follow_author)follow_author_score用户关注作者的概率加分
P(quoted_click)quoted_click_score点击引用帖子的概率较低
P(quoted_vqv)quoted_vqv_score引用帖视频观看概率较低

负向信号

越高越糟糕——这些信号会直接把帖子排名拉到底部

维度代码字段含义危害级别
P(not_interested)not_interested_score用户点"不感兴趣"的概率严重
P(block_author)block_author_score用户屏蔽作者的概率致命
P(mute_author)mute_author_score用户静音作者的概率严重
P(report)report_score用户举报帖子的概率致命
P(not_dwelled)not_dwelled_score用户快速滑过不停留的概率中等
负向信号的杠杆效应
负向信号不是简单地扣分。当加权得分 < 0 时,offset 公式会将得分压缩到 [0, NEGATIVE_SCORES_OFFSET] 范围内,这意味着一条被频繁举报的帖子几乎不可能出现在任何人的 Feed 中。一次批量举报可能永久压低你的帖子在模型中的预测概率。

权重体系可视化

基于 run_pipeline.py:356 示例权重和代码分析推断的相对权重。生产权重通过 Feature Switches 动态配置。

正向互动权重

Favorite (点赞)1.00
Reply (回复)0.50
Retweet (转推)0.30
Dwell (停留)0.20
Share (分享 / DM / Copy Link)~0.15
Quote / Click / Profile Click~0.10
VQV / Photo Expand / Follow Author~0.05–0.10

后处理乘数

In-Network (关注列表) 内容×1.0
Out-of-Network 内容 (OON)×OON_WEIGHT_FACTOR
新用户 OON 加成×NEW_USER_OON_WEIGHT
Author Diversity 衰减 (同一作者第 2 条)×decay^1
Author Diversity 衰减 (同一作者第 3 条)×decay^2

核心评分公式

三段式评分:加权合成 → 多样性调整 → OON 系数

// Step 1: Phoenix Transformer 预测互动概率 P = PhoenixModel(user_context, candidate) → 15+ 维概率向量

// Step 2: 加权合成 weighted_score = 1.0×P(fav) + 0.5×P(reply) + 0.3×P(rt) + 0.2×P(dwell)

  • w_share×P(share) + w_click×P(click) + … - w_block×P(block) - w_mute×P(mute) - w_report×P(report)

// Step 3: Offset (确保负分不会跌破 0) if weighted_score < 0: score = (weighted_score + negative_sum) / total_sum × NEGATIVE_OFFSET else: score = weighted_score + NEGATIVE_OFFSET

// Step 4: Author Diversity 衰减 multiplier = (1 - floor) × decay^position + floor adjusted_score = score × multiplier // position = 同一作者已出现次数

// Step 5: OON 调整 if !in_network: final_score = adjusted_score × effective_oon_weight else: final_score = adjusted_score // 关注列表内容不打折

关键洞察
具体的权重数值不在开源代码中。它们通过 FeatureSwitches 系统在运行时注入,并且根据用户的 user_roles(订阅等级)、account_age_days(账号年龄)、country(国家)、has_phone_number(是否绑定手机)动态调整。这意味着 X 可以在不部署代码的情况下,随时改变任何用户群体的推荐策略。

DO / DON'T 操作指南

基于算法代码逻辑推导的确定性建议

DO — 一定要做

+
优化点赞触发 — 点赞权重是回复的 2 倍、转推的 3.3 倍。写能让人"随手点赞"的内容(金句、共鸣、实用信息)是 ROI 最高的策略。
+
引导回复和讨论 — 回复权重 0.5,仅次于点赞。用提问、投票、争议性话题引发评论区讨论。
+
提高停留时长 — 用 Thread、信息密度高的图文、吸引人的开头。dwell_time 是连续值预测——停留越久加分越多。
+
激励分享/私信转发 — DM 分享和复制链接分享是独立的正向信号。
+
发视频超过最低时长门槛 — 视频必须超过 MIN_VIDEO_DURATION_MS 才能获得 VQV 权重加成。太短的视频等于放弃了一个完整的正向信号维度。
+
建立互关网络mutual_follow_jaccard 是后排序信号。与目标受众互关,提高你在他们 In-Network 源中的优先级。
+
保持发帖频率适中 — Author Diversity Scorer 指数衰减同一作者的第 2、3 条帖子。3 条精品 > 10 条灌水。
+
关注 Banger 质量分 ≥ 0.4 — Grok VLM 初筛评估内容质量。有实质内容 + 相关媒体是通过门槛的基础。
+
带有媒体(图片/视频)has_media 是独立布尔信号,会被传入模型。纯文字帖少了一个维度的信号。
+
保持帖子新鲜度post_age_bucket 是模型输入特征。超过 4800 分钟(80 小时)会进入溢出桶。

DON'T — 千万不要做

×
不要发容易被举报的内容 — P(report) 有负权重。模型学会"你的内容容易被举报"后,这个概率会持续影响所有帖子。
×
不要让人屏蔽/静音你 — P(block_author) 和 P(mute_author) 是致命信号。被 100 人屏蔽的伤害远大于被 1000 人忽略。
×
不要刷屏发帖 — Author Diversity 使用指数衰减。第 3 条以后的帖子分数可能不到第 1 条的 25%。
×
不要发 AI 灌水内容 — Banger 初筛有 slop_score(AI 灌水检测)。批量 AI 生成的低质内容会被检测并降分。
×
不要发让人快速滑走的内容not_dwelled_score 是独立的负向信号。开头无聊 = 快速滑走 = 负分。
×
不要触发"不感兴趣" — P(not_interested) 权重极高。投喂错误的受众群体会导致大量"不感兴趣"反馈。
×
不要在付费墙后面放重要内容IneligibleSubscriptionFilter 会直接过滤非订阅者看不到的内容。
×
不要使用常见的静音关键词MutedKeywordFilter 在评分前就过滤。含有广泛被静音关键词的帖子会从很多人的候选池中直接消失。
×
不要发超短无实质视频 — 低于 MIN_VIDEO_DURATION_MS 的视频会让 VQV 权重直接为 0。
×
不要忽视帖子新鲜度 — 帖子超过 80 小时进入溢出桶,模型对旧帖的推荐概率显著下降。不要指望旧帖"慢热"。

流量池分层策略

算法对不同体量的博主有结构性的差异化处理

种子期 · Seed Stage
0 – 1,000 粉丝
In主要流量源
OON 候选池
冷启动模型状态

算法行为

  • In-Network 为主 — 你的内容主要展示给关注你的人。Thunder 源直接推送到粉丝的候选池。
  • OON 突破门槛高 — Phoenix Retrieval 需要你的帖子 embedding 与海量候选竞争。粉丝少 = 互动数据少 = embedding 向量缺乏独特性。
  • Author Embedding 弱 — 模型通过 author_hashes 编码你的身份。互动历史少的作者,其 embedding 不够"锐利"。
  • P(follow_author) 是突破点 — 当 OON 用户看到你的帖子并关注你,这直接扩大你的 In-Network 覆盖。
  • Mutual Follow Jaccard 极低 — 几乎没有共同关注网络,在排名后处理中处于劣势。

关键策略

1. 利用 Topic 系统破圈 — 发帖紧贴 Grok Topics 分类,确保帖子被 PhoenixTopicsSource 检索到。这是小号进入 OON 候选池的最可靠路径。
2. 极致单帖质量 — Author Diversity 衰减意味着你的第 2、3 条帖子分数大幅打折。用 1 条高质量帖击穿阈值,比发 5 条平庸帖效果好得多。
3. 引导关注转化 — P(follow_author) 是独立正向权重。每一个新关注者都直接扩大你的 In-Network 池。
4. 互关策略建网络 — 主动关注并与同领域创作者互动,提高 mutual_follow_jaccard 分数。
增长期 · Growth Stage
1,000+ 粉丝
In+OON双流量源
OON 候选池
成熟模型状态

算法行为

  • In-Network + OON 双引擎 — 粉丝互动为帖子提供强初始信号,Phoenix Retrieval 将高互动帖推向全站。
  • Author Embedding 成熟 — 大量互动数据让模型能准确预测"谁会喜欢你的内容",OON 检索精准度更高。
  • author_followers_count 作为 VMRanker 输入 — 粉丝数量是 VMRanker 请求中的特征字段,影响 Value Model 的重排序。
  • Author Diversity 是核心约束 — 粉丝量大后,你可能同时有多条帖子进入同一用户的候选池。衰减效应更明显。
  • 负向信号杠杆更大 — 覆盖面广意味着更多人可能触发 block/mute/report。负面信号的统计显著性更强。

关键策略

1. 保护负向指标 — 避免被屏蔽/举报比追求更多点赞更重要。一次争议事件引发的批量屏蔽,可能需要数周才能恢复。
2. 利用引用推文quoted_click_scorequoted_vqv_score 是独立维度。引用其他热门帖子可以搭载其互动热度。
3. 分享驱动 — DM 分享和复制链接是独立信号。创作"值得转给朋友"的内容在这个阶段 ROI 更高。
4. 视频战略 — 发布超过最低时长门槛的视频,解锁 VQV 权重通道。大 KOL 的视频更容易被推荐给 OON 用户。
5. 订阅等级 — Premium/Premium+ 通过 Feature Switches 获得不同的排名参数。参数差异化的架构已确认存在。

流量池对比矩阵

维度种子期 (0–1K)增长期 (1K+)代码出处
主要流量源Thunder (In-Network)Thunder + Phoenix (In + OON)phoenix_candidate_pipeline.rs
OON 检索精度低 — embedding 向量模糊高 — 大量互动训练数据recsys_retrieval_model.py
Author Diversity 衰减影响小 — 候选池中很少出现多条影响大 — 频繁多条同时候选ranking_scorer.rs
负向信号风险低 — 曝光少,绝对数量少高 — 广泛曝光,批量 block 风险ranking_scorer.rs
VQV 收益基础 — 视频触达有限放大 — OON 推荐扩大视频曝光weighted_scorer.rs
Mutual Follow 影响关键 — 唯一排名加成来源辅助 — 互动信号已足够强mutual_follow_jaccard_hydrator.rs
Topic 系统价值核心 — 进入 OON 的主要通道补充 — 已有强自然检索phoenix_topics_source.rs
Feature Switch 参数标准参数(可能因新用户有特殊值)可能因 user_roles / 订阅等级获得优化参数server.rs

实操手册 — 一条帖子的完整优化

按照算法的评分公式,一条帖子的优化 Checklist

点赞优化

权重 ≈ 1.0(最高)
  • 内容是否包含可共鸣的观点/金句?
  • 是否提供了即时价值(实用、有趣、震惊)?
  • 第一行是否就能让人产生"说得好"的反应?

回复优化

权重 ≈ 0.5
  • 帖子末尾是否有明确的问题/讨论引导?
  • 话题是否有多个合理立场(引发辩论)?
  • 发布后 30 分钟内是否回复了评论?

转推优化

权重 ≈ 0.3
  • 内容是否是"必须让别人也看到"类型?
  • 是否包含原创数据/洞察/独家信息?
  • 是否适合引用转推(QT 是独立信号)?

停留优化

权重 ≈ 0.2 + 连续值
  • 开头是否足够吸引人阻止快速滑动?
  • 内容长度是否足够支撑 5+ 秒阅读?
  • 图片/视频是否值得仔细看?

视频优化

VQV 有最低时长门槛
  • 视频时长是否超过最低阈值?
  • 前 3 秒是否有足够的吸引力?
  • 引用帖中的视频也会被单独评分

负向防护

负权重 — 最优先避免
  • 内容是否可能引发举报?
  • 是否会让不感兴趣的人群看到?
  • 是否含有常见静音关键词?
  • 是否可能触发批量屏蔽?
最终总结:算法的本质
X 推荐算法的核心是一个 Grok-based Transformer,它从你的历史互动中学习模式,然后预测你会如何与每条候选帖子互动。没有手工特征、没有人工干预规则——一切都是互动数据驱动

这意味着:你的受众的行为定义了你的帖子的分数。吸引到正确的受众(高点赞、高回复、低屏蔽),比任何"黑科技"都有效。算法不是一个需要"破解"的黑箱,而是一面反映你内容质量和受众匹配度的镜子。
Discussion