返回文章

工程实践

X Algorithm Deep Dive — For You Feed 推荐算法全景解析

基于 X 开源推荐算法代码库的逐行深度分析。覆盖完整 Pipeline、21 个评分维度、权重体系、流量池分层策略,以及面向不同体量博主的实操指南。

2026年5月16日10 分钟阅读StometaStometa

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 — 过滤不合格候选

Filter 作用
DropDuplicatesFilter 去重复帖子 ID
CoreDataHydrationFilter 移除加载失败的帖子
AgeFilter 移除超过保留期的旧帖
SelfTweetFilter 移除查看者自己的帖子
RetweetDeduplicationFilter 同一原始内容的转推去重
IneligibleSubscriptionFilter 移除无权查看的付费内容
PreviouslySeenPostsFilter 移除已看过的帖子(Bloom Filter)
PreviouslyServedPostsFilter 移除本次会话已展示的帖子
MutedKeywordFilter 移除含用户静音关键词的帖子
AuthorSocialgraphFilter 移除被屏蔽/静音作者的帖子
VideoFilter 按设置过滤视频
TopicIdsFilter 话题匹配过滤

5. Scoring — 核心排名(最关键的一步)

三个 Scorer 依次运行:

  1. PhoenixScorer — Grok-based Transformer 预测 15+ 种互动概率。
  2. RankingScorer — 加权合成 + Author Diversity 衰减 + OON 权重调整。
  3. 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 Time dwell_time 预测停留时长(连续值) 连续
Click Dwell Time click_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 系数。

步骤 公式或行为
1. Phoenix Transformer 预测互动概率 P = PhoenixModel(user_context, candidate) → 15+ 维概率向量
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)
3. Offset(确保负分不会跌破 0):if weighted_score < 0 score = (weighted_score + negative_sum) / total_sum × NEGATIVE_OFFSET
3. Offset:else score = weighted_score + NEGATIVE_OFFSET
4. Author Diversity 衰减 multiplier = (1 - floor) × decay^position + flooradjusted_score = score × multiplier;position = 同一作者已出现次数
5. OON 调整:if !in_network final_score = adjusted_score × effective_oon_weight
5. OON 调整:else final_score = adjusted_score;关注列表内容不打折

关键洞察

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

DO / DON'T 操作指南

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

DO — 一定要做

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

DON'T — 千万不要做

  1. 不要发容易被举报的内容 — P(report) 有负权重。模型学会“你的内容容易被举报”后,这个概率会持续影响所有帖子。
  2. 不要让人屏蔽/静音你 — P(block_author) 和 P(mute_author) 是致命信号。被 100 人屏蔽的伤害远大于被 1000 人忽略。
  3. 不要刷屏发帖 — Author Diversity 使用指数衰减。第 3 条以后的帖子分数可能不到第 1 条的 25%。
  4. 不要发 AI 灌水内容 — Banger 初筛有 slop_score(AI 灌水检测)。批量 AI 生成的低质内容会被检测并降分。
  5. 不要发让人快速滑走的内容not_dwelled_score 是独立的负向信号。开头无聊 = 快速滑走 = 负分。
  6. 不要触发“不感兴趣” — P(not_interested) 权重极高。投喂错误的受众群体会导致大量“不感兴趣”反馈。
  7. 不要在付费墙后面放重要内容IneligibleSubscriptionFilter 会直接过滤非订阅者看不到的内容。
  8. 不要使用常见的静音关键词MutedKeywordFilter 在评分前就过滤。含有广泛被静音关键词的帖子会从很多人的候选池中直接消失。
  9. 不要发超短无实质视频 — 低于 MIN_VIDEO_DURATION_MS 的视频会让 VQV 权重直接为 0。
  10. 不要忽视帖子新鲜度 — 帖子超过 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,它从你的历史互动中学习模式,然后预测你会如何与每条候选帖子互动。没有手工特征、没有人工干预规则——一切都是互动数据驱动

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


基于 X Algorithm 开源代码的技术分析。

Commit 0bfc279 · 2026-05-15

By @stometaverse · Builder of claude-review-loop & Invoice-Manager

Design reference: Airbnb Design System

评论

欢迎提出问题、纠正疏漏,或留下有思考的回应。请在下方发表评论;首次评论审核后显示。

不会公开显示。