xai-org/x-algorithm
Algorithm powering the For You feed on X
X 的 For‑You 推荐算法 (x‑ai‑org/x‑algorithm)
是什么 – 本仓库包含驱动 X(原 Twitter)「For‑You」时间线的生产级代码。它将用户关注的账号内容(in‑network 路径)与外部发现的内容(out‑of‑network 路径)两条流合并,再通过基于 Transformer 的模型进行过滤和排序。
为何重要 – 该推荐流是 X 平台的核心用户体验。理解其工作原理对研究大规模推荐系统、实时机器学习流水线或算法化内容编排的社会影响具有重要价值。
核心概念
| 概念 | 说明 |
|---|---|
| In‑network 源 | thunder/ – 内存中存储用户关注账号的最新推文。 |
| Out‑of‑network 源 | phoenix/ – 用于预测用户未关注账号推文相关性的检索模型。 simclusters/ – 基于相似性的聚类,用于挖掘额外的外部推文。 |
| 评分模型 | 一个名为 Phoenix 的 Transformer 模型,利用用户近期互动历史,预测 Like、Retweet、Reply、Dwell‑time、Report 等行为的概率。 |
| 加权 | 预测的行为概率乘以人工调优的权重(见 home-mixer/params/param.rs),求和后生成单一相关性得分。 |
| 可见性过滤 | visibility-filtering/ 根据丰富信号(用户屏蔽、静音、账号标签、国家、订阅状态等)决定每条推文是 ALLOW(显示)、INTERSTITIAL(如成人内容警告)还是 DROP(隐藏)。 |
| 混合流水线 | 排序后,非推文内容(广告、"关注建议"、提示等)通过 Blender(home-mixer/candidate_pipeline/for_you_candidate_pipeline.rs)进行交错插入。 |
| 标签路径 | 持续后台任务使用一系列分类器(agatha/、bdsm/、clip/、media‑model‑proxy/)和规则引擎(scarecrow/、botmaker/)为推文和账号打标签,这些标签用于可见性过滤。 |
仓库结构(概览)
home-mixer/– 请求时流水线,负责候选内容的填充、预评分过滤、使用 Phoenix 评分、应用后选择过滤,并选出前 K 名内容。visibility-filtering/– 将标签 + 用户行为映射为 ALLOW/INTERSTITIAL/DROP 决策的逻辑。phoenix/– 排名 Transformer 的训练代码、推理封装和合成数据生成代码。simclusters/– 基于聚类的外部推文检索模块。thunder/– 关注账号最新推文的内存缓存。botmaker/、botmaker-rules/、scarecrow/– 为可见性过滤提供标签的规则引擎基础设施。agatha/、bdsm/、user-cred-v2/、clip/、media-model-proxy/– 用于评分账号、媒体和文本的 ML 模型。abuse-enforcement-service/– 基于模型评分执行账号封禁或内容隐藏的执行逻辑。under‑the‑hood‑label‑transparency‑tool/– 一个 UI 工具,允许用户查看影响其时间线的标签汇总统计信息。
工作流程(请求流)
- 查询填充 – 获取用户近期行为、关注列表、屏蔽/静音等信息。
- 候选源 – 并行从
thunder/(in‑network)和phoenix/+simclusters/(out‑of‑network)获取内容。 - 候选填充 – 为每条推文补充文本、媒体嵌入、作者标签、语言、互动数等信息。
- 预评分过滤 – 移除过时推文、重复内容、自发内容、订阅专属内容等。
- 评分 –
PhoenixScorer预测各行为概率。RankingScorer应用加权求和、作者衰减、外部内容折扣、新作者激励等逻辑。VMRanker可选地调用外部重排序服务。
- 选择 –
TopKScoreSelector保留得分最高的候选内容。 - 后选择过滤 – 可见性过滤器对每条内容进行标签库检查;被丢弃的内容移除,插播内容保留但标记。
- 混合 – 非推文内容(广告、关注建议、提示等)进行交错插入。
- 副作用 – 记录曝光、刷新缓存、记录广告点击等。
最近重要更新(截至 2026 年 8 月)
- 权重文档化 – 在
home-mixer/params/param.rs和home-mixer/scorers/ranking_scorer.rs中添加注释,明确权重作用于 预测 的行为概率,而非原始互动数据。 - 巴西 2026 选举过滤器 – 新增
Brazil2026ElectionFilter,移除巴西选举法院标记账号的推文,除非用户关注了该账号。 - 合成训练流水线 –
phoenix/现在包含合成数据生成代码和概念验证训练运行代码,取代了早期的“Phoenix 演示模型”占位符。 - 可见性过滤扩展 – 新增模块(
visibility-filtering/)和相关标签源,提升过滤器的透明度与可配置性。
本仓库不包含的内容
本仓库有意排除:
- 实时生产数据存储(如推文数据库、用户资料库)。
- X 平台使用的全规模训练基础设施(大规模 Spark/TF 流水线)。
- 请求路径代码之外的实时服务基础设施(负载均衡器、API 网关等)。
许可证
本项目采用 Apache 2.0 许可证 发布,允许在注明出处的前提下进行使用、修改和分发。
非专业人士速览(TL;DR)
- 此代码是 X 平台上你看到的个性化时间线的核心引擎。
- 它将你关注的内容与算法精选内容混合,用现代 AI 模型评分,再应用一系列安全与相关性规则后才展示。
- 这是一个罕见的、真实世界生产级推荐系统的内部视图,融合了大规模机器学习、规则化内容治理与工程优化,以确保时间线快速且安全。
相关
- Dispatch
- 项目
- 项目
- 项目
- 项目