---
title: "推荐系统工作原理"
description: "一条帖子进入 For You 推荐流的完整链路：凑候选、补资料、过滤、打分、选择、可见性检查、混排。"
---

> Documentation Index
> Fetch the complete documentation index at: https://x-algorithm.vergego.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 推荐系统工作原理

> 本页面向产品、运营和创作者，介绍 For You 推荐流从请求到展示的完整流程。本页不贴代码；每节末尾链接到对应的技术页。

## 核心流程概述

用户打开 X 的 For You 时，[home-mixer](https://x-algorithm.vergego.ai/concepts/home-mixer-orchestration/) 实时组装一份推荐流。它从多个来源取出候选帖子，过滤掉不能看的，用 [Phoenix 排序模型](https://x-algorithm.vergego.ai/concepts/phoenix-ranking/) 给每条帖子打分，选出前 35 条，再检查每条能不能展示给这位用户，最后插入广告和推荐关注等模块。

另一条路径在后台持续运行：内容理解模型和规则给帖子、账号打标签。请求路径在“可见性检查”这一步读取这些标签。详见 [系统架构总览](https://x-algorithm.vergego.ai/concepts/system-architecture/)。

## 排序靠模型预测，不靠人工加分规则

排序不靠“带图加分、粉丝多加分”这类人工规则。[Phoenix 排序模型](https://x-algorithm.vergego.ai/concepts/phoenix-ranking/) 读取用户最近的互动序列，预测用户对每条候选帖子做出各种行为的概率。

模型的输入也包括帖子的公开互动数：点赞、回复、转发、引用、浏览 5 个计数。帖子发布超过约 14 天后，这些计数不再输入模型（`phoenix/xrex/data/recsys/feature_config.py:87-88`）。

## 一条帖子进入推荐流的七个步骤

```mermaid
flowchart TB
    A["① 凑候选<br/>关注的人发的 + 站外来源"] --> B["② 补资料<br/>正文 / 作者 / 媒体 / 互动数"]
    B --> C["③ 预打分过滤<br/>拉黑 / 看过 / 超过 48 小时"]
    C --> D["④ 模型打分<br/>预测每种行为的概率并加权"]
    D --> E["⑤ 选择<br/>先取 50 条，最终留 35 条"]
    E --> F["⑥ 可见性检查<br/>按标签决定展示、遮罩或丢弃"]
    F --> G["⑦ 混排<br/>插入广告、推荐关注等模块"]
```

### 1. 凑候选：多个来源同时取帖

home-mixer 同时向多个候选源取帖（`home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:380-390`）。主要来源有四个：

- **站内帖子（你关注的人发的）**：由 [Thunder](https://x-algorithm.vergego.ai/concepts/thunder-in-network-store/) 提供。Thunder 在内存里保存最近 2 天发布的帖子。
- **Phoenix 召回（站外）**：[Phoenix 召回](https://x-algorithm.vergego.ai/concepts/phoenix-retrieval/) 用双塔模型从全网找出与你兴趣接近的帖子。用户会刷到未关注的人，主要来自这一路。
- **SimClusters（站外）**：[SimClusters](https://x-algorithm.vergego.ai/concepts/simclusters/) 用你最近互动过的帖子做种子，找相似的帖子。开源默认开启。
- **热门帖子（站外）**：一份全站共享的热门列表。离线任务按粉丝数从高到低选作者，人数为近 7 天活跃发帖人数的 0.005%，每人最多 5 条、共 500 条（`home-mixer/util/popular_authors.rs:11,25-30`、`home-mixer/util/popular_posts.rs:39-40`）。

全部来源见 [home-mixer 编排层](https://x-algorithm.vergego.ai/concepts/home-mixer-orchestration/)。

### 2. 补资料（水合）

候选源返回的通常只有帖子 ID。水合（hydration）指按 ID 补齐帖子的正文、作者资料、媒体信息、互动数等字段。详见 [home-mixer 编排层](https://x-algorithm.vergego.ai/concepts/home-mixer-orchestration/)。

### 3. 预打分过滤：先去掉不该出现的帖子

打分之前，21 个过滤器依次去掉不合格的候选（`home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:285-543`）。例如：

- 发布超过 48 小时的帖子（`home-mixer/params/config.rs:39`）。
- 你拉黑或静音的作者的帖子。
- 命中你屏蔽词的帖子。
- 你已经看过、或本次会话已经推给你的帖子。
- 你无权查看的订阅专属帖子。

完整清单见 [过滤流水线](https://x-algorithm.vergego.ai/concepts/filtering-pipeline/)。

### 4. 模型打分：预测行为概率，再加权求和

[Phoenix 排序模型](https://x-algorithm.vergego.ai/concepts/phoenix-ranking/) 对每条候选预测多种行为的概率，包括点赞、回复、转发、停留、点开主页，以及“不感兴趣”、拉黑、举报等负向行为。

[vm-ranker](https://x-algorithm.vergego.ai/concepts/vm-ranker/) 把每个概率乘以对应权重，再求和，得到帖子的最终分（`xai-value-model/scoring.rs:79-218`）。正向行为的权重为正，负向行为的权重为负。

权重乘的是“你做出这个行为的预测概率”，不是帖子收到的互动次数（`xai-value-model/scoring.rs:28-56`）。权重数值、作者多样性衰减、站外降权和新作者扶持，见 [打分与排序](https://x-algorithm.vergego.ai/concepts/scoring-and-ranking/)。

### 5. 选择：先取 50 条，最终留 35 条

系统按最终分从高到低取前 50 条，再经过选后检查，最终保留 35 条（`home-mixer/params/config.rs:17-18`，开源默认值）。详见 [选帖过程](https://x-algorithm.vergego.ai/guide/how-posts-are-picked/)。

### 6. 可见性检查：按标签决定能不能展示

排序决定先后，[可见性过滤](https://x-algorithm.vergego.ai/concepts/visibility-filtering/) 决定能不能展示。home-mixer 对选中的每条帖子询问可见性过滤服务（`home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:487`）。服务读取后台打好的标签，给出四种答复之一：

| 答复 | 结果 |
|------|------|
| ALLOW | 正常展示 |
| NOTICE | 展示，并附一条提示 |
| INTERSTITIAL | 展示，但加一层遮罩，用户点开才能看 |
| DROP | 不展示 |

对未关注的作者，有些规则更严格：同一条帖子可以推给关注者，却不推给非关注者。详见 [限流与 shadowban](https://x-algorithm.vergego.ai/guide/visibility-and-shadowban/)。

### 7. 混排：插入广告和其他模块

外层流水线把排好的帖子与广告、推荐关注、提示卡片等模块组装在一起。广告混排开源默认使用 `multi_risk` 策略，按品牌安全等级决定广告能挨着哪些帖子。详见 [广告混排](https://x-algorithm.vergego.ai/concepts/ads-blending/)。

## 为什么分成召回和排序两阶段

全网每时每刻都有大量新帖子，系统无法对每一条都运行大模型。因此分两阶段：

| 阶段 | 做什么 | 特点 |
|------|--------|------|
| **召回（Retrieval）** | 用计算量小的双塔模型，从全网帖子里找出一批候选 | 快，覆盖面广 |
| **排序（Ranking）** | 用计算量大的 Transformer 模型，对候选逐条精细打分 | 慢，但准 |

## 候选隔离：一条帖子的分数不受同批帖子影响

排序模型一次读入很多条候选，但注意力掩码让候选之间互相看不见。所以一条帖子的分数只取决于用户和这条帖子本身，不受同一批里其他帖子的影响。

这样同一条帖子在不同请求里得分一致，分数也可以缓存复用。详见 [候选隔离注意力掩码](https://x-algorithm.vergego.ai/concepts/candidate-isolation-masking/)。

## 后台的内容理解：给帖子和账号打标签

[Grox](https://x-algorithm.vergego.ai/concepts/grox-architecture/) 在帖子发布后异步运行一组分类器，判断垃圾内容、成人内容、暴力媒体等，并生成帖子的文本和图片嵌入。[媒体模型](https://x-algorithm.vergego.ai/concepts/media-models/) 处理图片和视频。账号层面，[账号信号](https://x-algorithm.vergego.ai/concepts/account-signals/) 从拉黑、举报和行为序列给账号打分。

这些分数经 [打标签规则](https://x-algorithm.vergego.ai/concepts/labeling-rules/) 和 [处置服务](https://x-algorithm.vergego.ai/concepts/enforcement/) 变成标签，最终由可见性过滤读取。

## 深入阅读

- [系统架构总览](https://x-algorithm.vergego.ai/concepts/system-architecture/)
- [五大组件速览](https://x-algorithm.vergego.ai/guide/the-five-components/)
- [术语速查表](https://x-algorithm.vergego.ai/guide/glossary/)
- [常见疑问 FAQ](https://x-algorithm.vergego.ai/guide/faq/)

## 出处

本页结论均来自技术页，不引入新结论。精确行号见各技术页的“源码锚点”。

| 结论 | 技术页 | 主要源码 |
|------|--------|----------|
| 9 个候选源同时取帖 | [home-mixer 编排层](https://x-algorithm.vergego.ai/concepts/home-mixer-orchestration/) | `home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:380-390` |
| 帖子公开互动数是模型输入，约 14 天后不再输入 | [Phoenix 排序模型](https://x-algorithm.vergego.ai/concepts/phoenix-ranking/) | `phoenix/xrex/data/recsys/feature_config.py:87-88` |
| 超过 48 小时的帖子被过滤 | [过滤流水线](https://x-algorithm.vergego.ai/concepts/filtering-pipeline/) | `home-mixer/params/config.rs:39` |
| 最终分是行为概率的加权和 | [打分与排序](https://x-algorithm.vergego.ai/concepts/scoring-and-ranking/) | `xai-value-model/scoring.rs:79-218` |
| 先取 50 条，最终留 35 条 | [选择与成型](https://x-algorithm.vergego.ai/concepts/candidate-selection/) | `home-mixer/params/config.rs:17-18` |
| 可见性检查在选择之后 | [可见性过滤](https://x-algorithm.vergego.ai/concepts/visibility-filtering/) | `home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:487` |
| 候选之间互相看不见 | [候选隔离注意力掩码](https://x-algorithm.vergego.ai/concepts/candidate-isolation-masking/) | `phoenix/xrex/models/attention.py:26` |

## 相关页面

- [选帖过程](https://x-algorithm.vergego.ai/guide/how-posts-are-picked/)
- [运营迷思 vs 源码真相](https://x-algorithm.vergego.ai/guide/operating-myths/)
- [发帖指南](https://x-algorithm.vergego.ai/guide/posting-guide/)
- [限流与 shadowban](https://x-algorithm.vergego.ai/guide/visibility-and-shadowban/)
- [算法用了你的哪些数据](https://x-algorithm.vergego.ai/guide/your-data/)
- [端到端数据流](https://x-algorithm.vergego.ai/concepts/end-to-end-dataflow/)

Source: https://x-algorithm.vergego.ai/guide/how-it-works/index.mdx
