这不是“X 算法玄学”,而是一份源码地图
cclank/x-algorithm-wiki 是基于 xAI 开源的 x-algorithm 仓库做的深度知识库。它不是官方文档,也不是运营号式猜测,而是把开源代码里的 Rust 在线服务、Python/JAX 模型、流水线阶段、过滤器、打分器、内容理解服务逐页拆开,并给出文件与行号锚点。
它最有价值的地方,是把“X 推荐算法喜欢什么”这种模糊问题,改写成可验证的工程问题:候选从哪来?怎么过滤?模型预测什么?最终分怎么算?站外内容为什么会被折扣?广告怎么插?哪些流行说法根本对不上源码?
一眼看懂:五大组件
| 组件 | 定位 | 通俗类比 | 技术要点 |
|---|---|---|---|
| home-mixer | For You 请求的总编排层 | 厨房总管 | 外层流水线,负责帖子、广告、推荐模块等最终混排。 |
| candidate-pipeline | 通用推荐流水线框架 | 标准菜谱格式 | 定义水合、取候选、过滤、打分、选择、side effect 等阶段。 |
| Thunder | 站内帖子内存库 | 随身速记本 | 从实时流维护近期帖子,快速回答“我关注的人最近发了什么”。 |
| Phoenix | ML 召回与排序核心 | HR 海选 + 面试官精排 | 双塔召回 + Grok transformer 排序,预测多种互动行为。 |
| Grox | 后台内容理解服务 | 超市验货区 | 离线/流式分析帖子,产出安全、垃圾、质量、嵌入等信号。 |
核心路径是:用户打开 For You,home-mixer 调度内层帖子流水线;Thunder 给出站内候选,Phoenix 召回站外候选;候选被水合、过滤、打分、选择;最后外层再把广告和模块混进结果里。
两层流水线:外层混排,内层选帖
Wiki 里一个关键洞察是:系统不是一条简单链路,而是两层 CandidatePipeline 嵌套。
外层主要负责把“已经选好的帖子流”和广告、关注推荐、提示模块混起来;内层才是真正的帖子推荐系统。内层执行完整十阶段:Query 水合、依赖水合、取候选、候选水合、预打分过滤、打分、选择、选后水合、选后过滤、side effects。
推荐系统的经典两段:召回粗筛,排序精排
Phoenix 召回:双塔检索
召回要从海量语料里找出几百到上千个候选。双塔的好处是把用户和帖子分别编码成向量:帖子向量可以离线预计算,线上只需要算用户向量,再做点积相似度和 top-K。
score(user, post) = user_vec · post_vec
topK = nearest_posts(user_vec, corpus_matrix)
这一步决定你有没有资格进入候选池。没有被召回,后面的精排再强也轮不到你。
Phoenix 排序:Grok transformer
排序把用户、互动历史、候选帖子拼成一条序列:[用户 | 历史 | 候选]。模型读取用户历史中的动作、停留、产品面等信号,对每个候选预测多种行为概率。
input = [user, history_1..S, candidate_1..C]
output = P(like), P(reply), P(retweet), P(dwell), ...
排序阶段还有一个聪明设计:候选之间互相看不见,单条候选分数只取决于它自己和用户上下文,便于稳定打分和缓存。
最终分怎么算:不是“互动越多越好”
Wiki 反复强调:Phoenix 模型只是输出多种行为概率,真正把概率变成排序分的是 RankingScorer。它大致做三步。
| 机制 | 它在干什么 | 直觉解释 |
|---|---|---|
| 多行为预测 | 预测点赞、回复、转发、点击、停留、关注作者,也预测不感兴趣、拉黑、静音、举报、没停留等负向行为。 | 算法不是看“总互动”,而是看“正向概率减负向概率”。 |
| 作者多样性衰减 | 同一作者在一次信息流计算中出现越多,后面的帖子分数乘数越小。 | 刷屏不是多曝光,而是让自己的帖子互相稀释。 |
| OON 降权 | 站外候选在最终分上乘一个系数,站内候选不乘。 | 关注流是基本盘;破圈要先被召回,再扛住折扣。 |
| VMRanker | 可选的外部价值模型重排,由参数开关控制。 | 主排序之后还可以灰度加一层价值模型。 |
过滤靠规则,打分靠学习
一个很重要的边界:Wiki 认为打分侧几乎删除手工特征,但过滤侧仍然是明确规则。过滤处理的是“能不能给你看”,排序处理的是“你有多可能喜欢”。
预打分过滤
例如已经看过、拉黑/静音、不可见、太旧、屏蔽词、付费可见性等。命中过滤器,候选可能还没进排序就被移除。
选后过滤
TopK 之后还会再做可见性、去重、对话级处理。原因是选中后有些上下文才完整。
广告混排
外层把广告插进帖子流。Wiki 提到 safe-gap 与 partition-organic 两类策略,重点是广告不要紧挨品牌不安全内容。
Grox 则在后台提前做内容理解:垃圾、安全、质量、回复、嵌入等信号,不等到用户打开 For You 时才现场计算。这个旁路架构把重计算从请求路径里拿出去,换来低延迟。
六个运营迷思:源码给出的反直觉答案
| 流行说法 | Wiki 的源码级纠偏 | 真正该关注什么 |
|---|---|---|
| 多发帖 = 多曝光 | 作者多样性衰减会让同一作者后续帖子打折。 | 把好内容摊开,避免同一刷新窗口里自我竞争。 |
| 互动量越高越好 | 负向行为也被预测并给负权重。 | 避免标题党、划走、不感兴趣、举报。 |
| 泛内容容易破圈 | 站外首先要过双塔相似度 top-K;泛而浅会让向量信号变糊。 | 内容要对某个兴趣簇足够锐利。 |
| 套模板/关键词能骗算法 | 打分侧没有这类手工特征;关键词更多出现在屏蔽过滤里。 | 服务真实用户反应,而不是迎合不存在的模板规则。 |
| 会被同批大 V 挤掉 | 候选隔离掩码让候选互相看不见,分数不依赖同批是谁。 | 分数取决于“这条帖子 × 这个用户”。 |
| 有万能涨号攻略 | 打分是 per-user 的,权重是 feature switch 参数,可随时实验调整。 | 承认边界,关注内容与受众匹配。 |
必须记住的边界
开源仓库给了什么
给了推荐系统的代码骨架、Rust 在线服务、Python/JAX 模型、mini checkpoint、端到端推理脚本、召回与排序的大量机制。对学习工业推荐系统架构非常有价值。
开源仓库没给什么
没有给线上真实权重、生产模型、训练数据、完整 Grok 行为和 X 内部基础设施。home-mixer 也依赖大量内部服务,不能简单 clone 后跑成线上 X。
我的阅读建议
如果你想快速理解,按 guide/how-it-works.md → guide/the-five-components.md → guide/operating-myths.md 读。如果你想学推荐系统架构,直接看 concepts/system-architecture.md、concepts/phoenix-retrieval.md、concepts/phoenix-ranking.md、concepts/scoring-and-ranking.md。如果你做内容运营,再补 guide/posting-guide.md,但不要把它当玄学攻略。