all articles
dev · ZH

X 推荐算法通俗解读:为什么它会把一条内容推给你?

May 17, 2026·19 min read·by Mr Panda·0 阅读
<section class="hero" id="top">
  <div class="hero-inner">
    <div>
      <div class="eyebrow"><span class="eyebrow-dot"></span>基于 xAI 开源的 x-algorithm 源码</div>
      <h1>X 为什么会把一条内容推给你?</h1>
      <p class="lead">
        最短答案:系统会先猜“你会不会喜欢、停留、回复、转发、点开、关注作者”,再把不合适、重复、已看过或风险内容挡掉,最后把帖子、广告和产品模块混排成你看到的 For You。
      </p>
      <div class="hero-note" id="answer">
        <div class="note">
          <strong>不是只看热度</strong>
          <p>点赞数和转发数会作为参考,但不是“越热越靠前”的简单榜单。</p>
        </div>
        <div class="note">
          <strong>更看个人相关性</strong>
          <p>你的近期行为会形成兴趣画像,影响圈外内容召回和最终排序。</p>
        </div>
        <div class="note">
          <strong>负反馈很重要</strong>
          <p>不感兴趣、拉黑、静音、举报这类风险预测会压低推荐分。</p>
        </div>
      </div>
    </div>

    <div class="phone-scene" aria-label="推荐流程示意">
      <div class="signal-badge one">
        <strong>模型先预测</strong>
        <span>这条内容会不会让你停留、互动或反感</span>
      </div>
      <div class="phone">
        <div class="phone-screen">
          <div class="phone-head">
            <span>For You</span>
            <span>排名中</span>
          </div>
          <div class="feed-card">
            <div class="feed-title"><span class="avatar">A</span><span>你可能会认真读完</span></div>
            <div class="feed-line"></div>
            <div class="feed-line short"></div>
            <span class="score-chip">高停留 + 高喜欢</span>
          </div>
          <div class="feed-card alt">
            <div class="feed-title"><span class="avatar" style="background:#7257c8">B</span><span>朋友也在讨论</span></div>
            <div class="feed-line"></div>
            <div class="feed-line short" style="width:72%"></div>
            <span class="score-chip">高回复概率</span>
          </div>
          <div class="feed-card">
            <div class="feed-title"><span class="avatar" style="background:#bd7b13">Ad</span><span>广告占位</span></div>
            <div class="feed-line"></div>
            <div class="feed-line short" style="width:46%"></div>
            <span class="score-chip" style="color:#72500c;background:#fff3d9">安全间隔插入</span>
          </div>
          <div class="feed-card alt">
            <div class="feed-title"><span class="avatar" style="background:#138a55">C</span><span>来自你没关注的人</span></div>
            <div class="feed-line"></div>
            <div class="feed-line short" style="width:62%"></div>
            <span class="score-chip">兴趣相似</span>
          </div>
        </div>
      </div>
      <div class="signal-badge two">
        <strong>然后再混排</strong>
        <span>帖子、广告、推荐关注、提示模块一起组成页面</span>
      </div>
    </div>
  </div>
</section>

<main>
  <section>
    <div class="section-head">
      <h2>普通用户最该知道的 4 件事</h2>
      <p>源码里有很多服务和模型名,但落到体验上,其实可以压缩成这四句话。</p>
    </div>
    <div class="summary-grid">
      <article class="summary">
        <span class="num">1</span>
        <h3>系统先找候选</h3>
        <p>一部分来自你关注的人,一部分来自全站里和你兴趣相近的内容。</p>
      </article>
      <article class="summary">
        <span class="num">2</span>
        <h3>模型预测行为</h3>
        <p>它不是只问“这条热不热”,而是问“这个用户会不会对它有反应”。</p>
      </article>
      <article class="summary">
        <span class="num">3</span>
        <h3>过滤器先挡风险</h3>
        <p>已看过、重复、太旧、屏蔽关系、静音词、安全问题都可能被拿掉。</p>
      </article>
      <article class="summary">
        <span class="num">4</span>
        <h3>最终页面还会混排</h3>
        <p>广告、关注推荐和产品提示会插入,所以你看到的不只是帖子排序榜。</p>
      </article>
    </div>
  </section>

  <section id="funnel">
    <div class="section-head">
      <h2>一条帖子到你面前,要过 5 道关</h2>
      <p>可以把 X 推荐理解成漏斗:越往后,留下来的内容越少,也越贴近这次请求。</p>
    </div>
    <div class="band funnel">
      <div class="funnel-row">
        <div class="funnel-label">全站内容<span>海量新帖、旧帖、视频、转帖、回复</span></div>
        <div class="lane"><div class="lane-fill blue">很多</div></div>
        <p class="funnel-explain">系统不会把所有内容逐条精排,成本太高。</p>
      </div>
      <div class="funnel-row">
        <div class="funnel-label">候选召回<span>关注内 + 兴趣相似 + 话题来源</span></div>
        <div class="lane"><div class="lane-fill green">一批</div></div>
        <p class="funnel-explain">Thunder 找关注内新鲜内容,Phoenix 找圈外相似内容。</p>
      </div>
      <div class="funnel-row">
        <div class="funnel-label">模型打分<span>预测喜欢、停留、回复、反感等</span></div>
        <div class="lane"><div class="lane-fill gold">更少</div></div>
        <p class="funnel-explain">不是一个分数拍脑袋,而是很多行为预测合成。</p>
      </div>
      <div class="funnel-row">
        <div class="funnel-label">过滤和去重<span>已看过、屏蔽、静音、安全、重复</span></div>
        <div class="lane"><div class="lane-fill red">少量</div></div>
        <p class="funnel-explain">模型喜欢也不一定能过硬规则。</p>
      </div>
    </div>
  </section>

  <section id="score">
    <div class="section-head">
      <h2>推荐分像一份配方,不是一个按钮</h2>
      <p>源码中的 RankingScorer 会把很多行为预测乘上权重,再考虑作者多样性和圈外内容比例。</p>
    </div>
    <div class="two-col">
      <div class="band recipe">
        <div class="recipe-row">
          <strong>喜欢</strong>
          <div class="bar"><i class="good1"></i></div>
          <span>加分</span>
        </div>
        <div class="recipe-row">
          <strong>停留</strong>
          <div class="bar"><i class="good2"></i></div>
          <span>加分</span>
        </div>
        <div class="recipe-row">
          <strong>回复/转发</strong>
          <div class="bar"><i class="good3"></i></div>
          <span>加分</span>
        </div>
        <div class="recipe-row">
          <strong>点开作者</strong>
          <div class="bar"><i class="good4"></i></div>
          <span>加分</span>
        </div>
        <div class="recipe-row">
          <strong>不感兴趣</strong>
          <div class="bar"><i class="bad"></i></div>
          <span>减分</span>
        </div>
      </div>
      <aside class="band plain-list">
        <h3>用白话说</h3>
        <ul>
          <li>你越可能认真看完、点开、互动,内容越可能靠前。</li>
          <li>你越可能拉黑、静音、举报、快速划走,内容越会被压低。</li>
          <li>同一个作者的多条内容不会无限霸屏,后面的会被衰减。</li>
          <li>关注外内容会有单独调节,避免 feed 全是陌生人或全是关注内。</li>
        </ul>
      </aside>
    </div>
  </section>

  <section>
    <div class="section-head">
      <h2>从工程角度看,它大致这样运转</h2>
      <p>下面这张图省略了内部服务名,只保留用户能感受到的关键步骤。</p>
    </div>
    <div class="band flow">
      <article class="flow-step">
        <div class="flow-icon">1</div>
        <h3>读懂你最近的动作</h3>
        <p>你喜欢、回复、转发、停留、视频观看等行为会变成一段历史。</p>
      </article>
      <article class="flow-step">
        <div class="flow-icon">2</div>
        <h3>找一批可能相关的帖子</h3>
        <p>关注的人提供新鲜内容,全站向量检索提供兴趣相近内容。</p>
      </article>
      <article class="flow-step">
        <div class="flow-icon">3</div>
        <h3>逐条预测你的反应</h3>
        <p>模型分别预测喜欢、停留、回复、转发、负反馈等概率。</p>
      </article>
      <article class="flow-step">
        <div class="flow-icon">4</div>
        <h3>挡掉不该出现的内容</h3>
        <p>重复、已看、屏蔽、静音、安全风险和话题不匹配会被过滤。</p>
      </article>
      <article class="flow-step">
        <div class="flow-icon">5</div>
        <h3>组成最终页面</h3>
        <p>帖子排序后,还会插入广告、关注推荐、提示和置顶模块。</p>
      </article>
    </div>
  </section>

  <section>
    <div class="section-head">
      <h2>它为什么会推荐“没关注的人”?</h2>
      <p>这部分来自 out-of-network 召回。系统会从全站找与你历史行为相似的内容。</p>
    </div>
    <div class="story">
      <article class="story-card">
        <div class="story-visual">
          <div class="mini-network">
            <span class="wire w1"></span><span class="wire w2"></span>
            <span class="node n1"></span><span class="node n2"></span><span class="node n3"></span>
          </div>
        </div>
        <div class="story-body">
          <h3>不是只看你关注谁</h3>
          <p>关注列表负责一部分供给,但 For You 还会从全站找你可能感兴趣的内容。</p>
        </div>
      </article>
      <article class="story-card">
        <div class="story-visual green">
          <div class="mini-network">
            <span class="wire w1"></span><span class="wire w2"></span>
            <span class="node n1" style="background:#138a55"></span>
            <span class="node n2" style="background:#087ea4"></span>
            <span class="node n3" style="background:#7257c8"></span>
          </div>
        </div>
        <div class="story-body">
          <h3>相似兴趣会连起来</h3>
          <p>你最近互动过的内容会形成向量表示,系统找距离近的帖子。</p>
        </div>
      </article>
      <article class="story-card">
        <div class="story-visual gold">
          <div class="mini-network">
            <span class="wire w1"></span><span class="wire w2"></span>
            <span class="node n1" style="background:#bd7b13"></span>
            <span class="node n2" style="background:#1769e0"></span>
            <span class="node n3" style="background:#c9413a"></span>
          </div>
        </div>
        <div class="story-body">
          <h3>比例会被调节</h3>
          <p>圈外内容不是无限制涌入,代码里有单独的 OON 权重因子。</p>
        </div>
      </article>
    </div>
  </section>

  <section id="control">
    <div class="band control-panel">
      <div class="control-copy">
        <h2>你能影响推荐,但不是立刻“重置宇宙”</h2>
        <p>系统看的是一段行为历史。单次点击会有影响,但连续、明确、一致的动作更有信号强度。</p>
      </div>
      <div class="control-actions">
        <div class="control-action">
          <b>多给正反馈</b>
          <p>喜欢、回复、转发、停留、点开作者,会告诉系统这类内容值得更多出现。</p>
        </div>
        <div class="control-action">
          <b>明确负反馈</b>
          <p>不感兴趣、静音、屏蔽,比快速划走更明确。</p>
        </div>
        <div class="control-action">
          <b>清理关注关系</b>
          <p>关注列表会影响 in-network 候选,也影响系统对你兴趣的理解。</p>
        </div>
        <div class="control-action">
          <b>避免误点误停留</b>
          <p>长时间停留和频繁点开会被当作兴趣信号,即使你只是围观。</p>
        </div>
      </div>
    </div>
  </section>

  <section>
    <div class="section-head">
      <h2>哪些内容会被挡掉或压低?</h2>
      <p>推荐不是模型一票决定,很多硬规则会保护体验和安全。</p>
    </div>
    <div class="rule-grid">
      <article class="rule-box">
        <h3>直接过滤</h3>
        <p>这类内容可能在排序前后被移除,不再进入最终 feed。</p>
        <div class="rule-strip">
          <span class="pill">重复内容</span>
          <span class="pill">已经看过</span>
          <span class="pill">太旧</span>
          <span class="pill">屏蔽关系</span>
          <span class="pill">静音词</span>
          <span class="pill">安全风险</span>
        </div>
      </article>
      <article class="rule-box">
        <h3>降低排序</h3>
        <p>这类内容不一定消失,但会因为预测不佳或体验约束被放到后面。</p>
        <div class="rule-strip">
          <span class="pill">可能不感兴趣</span>
          <span class="pill">可能被举报</span>
          <span class="pill">同作者太多</span>
          <span class="pill">视频不符合条件</span>
          <span class="pill">圈外比例调节</span>
        </div>
      </article>
    </div>
  </section>

  <section id="myths">
    <div class="section-head">
      <h2>三个常见误解</h2>
      <p>用源码能确认的部分,反而能帮我们避开很多玄学解释。</p>
    </div>
    <div class="myth-grid">
      <article class="myth">
        <span class="tag">误解</span>
        <h3>“点赞越多越推荐”</h3>
        <p>公开互动数只是候选特征之一。更关键的是模型预测“你这个人”会不会互动。</p>
      </article>
      <article class="myth">
        <span class="tag">误解</span>
        <h3>“只要我关注就一定看到”</h3>
        <p>关注内内容会进入候选池,但仍要和其他内容一起过滤、打分、排序。</p>
      </article>
      <article class="myth">
        <span class="tag">误解</span>
        <h3>“模型喜欢就一定出现”</h3>
        <p>安全、社交关系、已看历史、去重、广告混排都会改变最终页面。</p>
      </article>
    </div>
  </section>

  <footer class="footer">
    <p>
      本页基于 xAI 开源仓库 x-algorithm 的代码阅读整理,重点解释用户体验相关逻辑。生产环境的模型规模、实时参数和内部服务实现可能与开源示例不同。
    </p>
  </footer>
</main>
━━━ fin ━━━

If you read this far — thank you.
Come tell me what you thought on X.