Beginner Edition · 2026-05-18

通俗版:把推荐系统当成超市来理解

没有计算机基础也能看懂的 X 算法解读

SOURCExai-org/x-algorithm @ 2026-05-15 LEVEL零基础友好 READER苏小尤

01 · 摘要一句话先讲完

X(前 Twitter)2026 年 5 月 15 日把它现在用的推荐算法源代码开源了。我读完发现一件大事:X 把推荐系统里所有的「人工规则」都删了,让一个 AI 自己看你过去的行为,自己学出「你接下来会喜欢什么」。

这个改变意味着什么?意味着以前自媒体圈那一整套「带 hashtag、堆关键词、卡发布时间」的涨粉套路,对这套新算法基本失效了。

下面我用大白话把这套系统怎么工作的、为什么这么设计、对你刷 X 和发 X 意味着什么,一次性讲清楚。所有的英文术语都会带翻译,没有计算机基础也能看懂。

02 · 三大部门把它当成一家超市

每次你打开 X 的 For You(推荐流),背后有一套系统在忙活。把它想象成一家超市,每次你走进来,理货员就要现挑商品摆给你看。

这家超市有三个核心部门,三个部门的分工长这样:

flowchart LR U[你打开 For You] --> HM[总调度
Home Mixer] HM --> TH[关注列表近期内容
Thunder] HM --> PH[AI 大脑
Phoenix] TH --> RANK{排序与过滤} PH --> RANK RANK --> OUT[展示给你的信息流]
三个部门的分工:Home Mixer 当总调度,Thunder 管你关注的人发的新内容,Phoenix 用 AI 从全网粗筛和打分。

总调度(英文叫 Home Mixer,意思是「首页混合器」)

它是超市经理,每次你刷信息流,它指挥所有人按八步流程把货摆出来:

flowchart TD S1[1 翻你的会员档案] --> S2[2 派采购员去找货] S2 --> S3[3 给每件货贴标签] S3 --> S4[4 砍掉不合格的] S4 --> S5[5 AI 给每条打分] S5 --> S6[6 按分数排序选前 N] S6 --> S7[7 最后一道可见性检查] S7 --> S8[8 记账下次别重复]
八步流水线:每次你刷一下信息流,系统都跑一遍这八步。

这八步,每次你刷一下都跑一遍。

关注列表的近期动态库(英文叫 Thunder,意思是「闪电」)

一个超快的内存仓库。你关注的人一发新内容,几毫秒内就进了这个仓库。它存的就是「你关注的人最近发的东西」。

为什么需要这个?因为如果每次都要去数据库慢慢查,你刷一下要等几秒。Thunder 把这些东西常驻内存,闪电级响应。

Thunder 是「关注列表的免费快车道」。你关注的人发的内容几乎无门槛进入候选池。这一点对内容创作者特别重要。

AI 大脑(英文叫 Phoenix,意思是「凤凰」)

这是真正的 AI 部分。它干两件事:

第一件事,从全网几百万条内容里粗筛出几百条候选。

它怎么做?用一种叫「双塔模型」的方法。听起来玄乎,其实就是把「你」和「每一条内容」分别变成一串数字,再看谁和你的数字串最像:

flowchart LR subgraph 左塔[你这个人] L1[喜欢什么] L2[关注谁] L3[屏蔽谁] L1 & L2 & L3 --> LV[一串数字] end subgraph 右塔[全网每条内容] R1[谁发的] R2[是什么内容] R3[别人怎么反应] R1 & R2 & R3 --> RV[一串数字] end LV -- 数字越像越推荐 --> MATCH((相似度)) RV --> MATCH
双塔模型:左边把「你」编码成数字,右边把「每条内容」编码成数字,比相似度。像相亲所看谁的档案最配你。

第二件事,给每条候选打分。

这一步用的是个叫 transformer(中文译「自动学习模型」,是现在所有大模型的底层结构)的 AI。它能同时考虑:

  • 你这个人的基本画像
  • 你过去做过的所有动作(点过哪些、回过哪些、看了多久、关注了谁)
  • 这条候选内容本身

然后给每条候选打分。

03 · 多目标预测AI 在预测的 15 件事(最关键的一节,请认真看)

最有意思的来了。Phoenix 不是预测「你会喜欢这条吗」这一个问题,它同时预测 15 种你可能做的动作,分两大类:

flowchart TD AI[AI 同时预测
你会做这 15 件事] AI --> P[正向 11 种
会推上去] AI --> N[负向 4 种
会压下去] P --> P1[互动类
点赞 回复 转发
引用转发 分享] P --> P2[浏览类
点开看 点头像看主页
看视频 放大图 停留时长] P --> P3[追随类
关注作者] N --> N1[直接表达不喜欢
按不感兴趣 静音作者
拉黑作者 举报]
15 种动作分两类:正向 11 种(被预测会做,内容推上去)和负向 4 种(被预测会做,内容压下去)。
中英文动作名对照(点击展开)
中文 英文 方向
点赞favorite
回复reply
转发repost
引用转发quote
点开看详情click
点头像看主页profile_click
看视频video_view
放大图片photo_expand
分享给朋友share
停留时长dwell
关注作者follow_author
按不感兴趣not_interested
拉黑作者block_author
静音作者mute_author
举报report

总分怎么算?

总分 = 每个动作的权重 × 你做这个动作的概率,全部加起来

正向动作权重为正、负向为负。AI 预测「你会举报」概率很高的内容,分数直接被打到地下室。注意:开源仓库没有公开具体权重数值,只能确定方向(正/负)。

这个设计有几个深刻的含义:

第一,「停留时长」(dwell)和「点开看」(click)是最高频的信号。点赞转发是少数派 —— 你刷 100 条内容可能点赞 3 条,但你的「停留时长」每条都被记录。所以做让人愿意读下去的内容,比做让人想点赞的内容更重要

第二,引战内容会自爆。短期内可能 favorite 高、reply 高,但同时 mute / block / report 的概率也被拉满,最后总分被负向行为打回原形。长期看,引战内容是负资产。

第三,AI 在预测你会不会做某件事,而不是「你应该做什么」。它从你历史行为里学:你过去对这种类型内容是停留 30 秒还是 3 秒?你看到类似的人是点过关注还是按过 mute?

04 · 关键设计几个特别重要的设计决策

1. 候选互相看不见

AI 给每条候选打分的时候,每条都是被「单独审视」的。它能看你这个人、能看你过去的行为,但看不到当前 batch 里其他候选

打比方:考试时每个考生独立答卷,不能交头接耳。

对你意味着什么? 你的一条内容好不好,跟它旁边出现谁无关。它必须自己站得住 —— 不能指望「和别的内容组合起来才好看」。

2. 作者多样性会被强制打压

系统里有个组件叫 Author Diversity Scorer(作者多样性打分器)。如果同一个号短时间在你信息流里出现多次,第 2 次分数会被衰减、第 3 次衰减更多、第 4 次基本没机会。

flowchart LR POST1[同一作者第 1 条
满分推荐] -->|衰减| POST2[第 2 条
分数 -30%] POST2 -->|继续衰减| POST3[第 3 条
分数 -60%] POST3 -->|基本无机会| POST4[第 4 条
分数趋零]
同一作者短时间内连发,分数逐条递减。具体衰减比例为示意,方向是确定的:越靠后越没机会。

打比方:饭桌上同一道菜上 3 次,第 3 次没人想吃。

对创作者意味着什么? 一天发太多条会自相残杀。同一时段你已经发过一条,再发第二条第三条,每条都在抢自己的分数。

3. 看过的不再推

每个用户都有一份「看过哪些内容」的小账本(用一种叫 Bloom Filter 的省内存数据结构,可以记几百万条内容用很少内存)。重发同一条内容给同一个用户没第二次机会。

对创作者意味着什么? 同一篇内容反复发不会让更多人看到你最在乎的那部分粉丝 —— 他们已经看过了。

4. 关注列表是创作者的免费快车道

Thunder 几乎无门槛把你关注的人发的内容丢进候选池。这意味着:让粉丝关注你的成本是值得花的 —— 一旦关注了,你的内容直接进入他们的候选池,不用走全网粗筛那道窄门。

5. 关键词加分这条路彻底死了

AI 直接从你的行为序列里学规律,不看 hashtag、不识别关键词。「在文末加 3 个相关 hashtag 涨流量」「标题里塞热词」这种做法对新算法毫无作用。

X 在自己文档里这么写:

我们已经从系统里删除了每一个人工设计的特征和大部分启发式规则。基于 Grok 改造的 AI 模型独自扛起了所有理解相关性的工作。

这是这次开源最重要的一句话。

05 · 类比一个相亲所的比喻把整套系统串起来

把 X 推荐系统想成一个相亲介绍所:

推荐系统部件相亲所对应
你的会员档案(行为历史)你过去和谁聊得来、和谁聊崩、对谁感兴趣
Thunder(关注列表近期内容)你已经在定期联系的朋友
Phoenix Retrieval(双塔检索)介绍所根据档案,从陌生人池子里挑可能合得来的
15 种动作预测不只预测「你会跟他聊得来吗」,还预测「他会主动找你?拉黑你?举报你?」
候选互不可见一个一个介绍人,不让候选人互相比较
作者多样性打压不会三天两头给你介绍同一个人
没有手工规则不用「身高 175 以上加分」这种死规则,而是从你过往反应里学你真正喜欢什么

06 · 给两类读者这套架构对你的两个含义

如果你只是刷 X 的人

你训练 AI 的方式是你每次的行为

  • 不喜欢一个号?按 mute 比单纯划过去更有效(它会被记成强负向信号)
  • 看到喜欢的内容停下来读完(dwell 时间长),比点个赞划过去对 AI 信号更强
  • 关注列表是你主动告诉 AI「这些人的内容请直接推给我」的方式,比靠它自己猜准得多

如果你发 X / 做内容

后面那个「自媒体实操」tab 详细讲。一句话:所有套路都没用了,只剩一条路 —— 让真实用户愿意停下来读完、愿意点开你的主页、愿意关注你。AI 学的就是这些行为,没有别的办法。

07 · 完整流程完整流程图(一张图记住)

flowchart TD A[你打开 For You] --> B[总调度拉你的档案] B --> C{派两路采购员} C -->|关注列表| D[Thunder 速度供货] C -->|全网粗筛| E[Phoenix 双塔检索] D --> F[汇合 贴标签] E --> F F --> G[砍一批
重复 太老 屏蔽词 看过] G --> H[AI 打 15 个分数
正向 + 负向] H --> I[加权 + 作者衰减 + 排序] I --> J[最后一道可见性检查] J --> K[呈现在你眼前]
一次完整请求的流程:从你打开 For You 到信息流呈现,所有上文讲过的部件按这个顺序串起来。

08 · 英文对照关键英文术语对照表

英文直译在这套系统里的意思
For You「为你」推荐流X 的主信息流
Home Mixer首页混合器总调度模块
Thunder闪电关注列表近期内容的内存仓库
Phoenix凤凰AI 大脑(用来检索和打分)
transformer自动学习模型现代 AI 的底层结构
GrokX 自家的 AI 模型这套推荐系统的 AI 就是基于 Grok 改的
embedding向量化 / 数字画像把人或内容变成一串数字
retrieval检索从几百万条里粗筛几百条
ranking排序给候选打分排序
candidate候选内容系统正在考虑给你看的某条 post
in-network网内你关注的人发的
out-of-network网外你没关注的人发的
engagement互动点赞、回复、转发、停留等行为的统称
dwell停留你在某条内容上待了多久
hashtag话题标签post 里的 #xxx
Bloom Filter一种数据结构用很少内存记很多东西的小账本
ML / AI机器学习 / 人工智能同一回事的不同叫法

继续读其他视角

Technical Report · 2026-05-18

X "For You" 推荐算法机制

从 Home Mixer 流水线到 Phoenix Transformer
对 xai-org/x-algorithm 2026-05-15 开源代码的一次结构化阅读
SOURCE  xai-org/x-algorithm SNAPSHOT  2026-05-15 AUDIENCE  One-person company founder, technical

00 · PREFACE引言 · 这次开源最大的变化

2026-05-15 这版 x-algorithm 仓库,最值得注意的不是某条新公式,也不是某个新指标,而是一句近乎宣言的陈述。

We have eliminated every single hand-engineered feature and most heuristics from the system. xai-org/x-algorithm, README

过去十几年的工业推荐系统,主线是特征工程:把用户行为、内容属性、社交关系等等手工压成几千甚至上万维稠密向量,喂给 GBDT 或 DNN 做点击率预估。运营和算法人力的大头都花在「想出有用的特征」上。

新版 X 把这一层基本拆掉了。User、Item、Author 各自只有一张 100 万词表的哈希嵌入表,剩下交给 transformer 自己学。这是一个相当极端的工程主张:与其相信工程师对世界的建模,不如相信注意力机制对历史序列的建模。

下面 11 节,我们按系统从外到内的顺序,把整套推荐链路拆开来看,看这种主张在代码里如何落地,以及它带来什么新的约束与新的取舍。

01 · OVERVIEW系统总览

整套推荐系统分三层。Home Mixer 是 Rust 写的编排服务,对外暴露 gRPC 接口 ScoredPostsService,每次「拉取 For You」都会进入它的八步流水线。Thunder 提供站内(in-network)实时候选;Phoenix 提供机器学习能力,包括召回和排序。

flowchart LR U([User Client]):::client --> HM[Home Mixer
gRPC ScoredPostsService
Rust]:::mixer TH[Thunder
In-network candidates
in-memory]:::svc --> HM PH[Phoenix
ML retrieval & ranking
JAX]:::svc --> HM KF[(Kafka
post create/delete)]:::data -.->|stream| TH HM --> R[(Ranked Feed)]:::out classDef client fill:#fff,stroke:#1d4ed8,stroke-width:2px,color:#1A1A1A classDef mixer fill:#E8EEFC,stroke:#1d4ed8,stroke-width:2px,color:#1A1A1A classDef svc fill:#fff,stroke:#3D3D3D,color:#1A1A1A classDef data fill:#F2F1EC,stroke:#6B6B6B,color:#1A1A1A classDef out fill:#FFF3C9,stroke:#92400E,color:#1A1A1A
图 1.1 三层架构:Home Mixer 居中,Thunder 与 Phoenix 各负责一类候选与打分能力。

这种分工很干净:编排和业务逻辑全部在 Rust 服务里,机器学习推理全部在 JAX 服务里,Rust 不碰 tensor、Python 不管业务。Thunder 是一个独立的内存索引服务,专门解决"几亿条新 post,秒级找出来"这个问题。

请求生命周期

flowchart LR A[1
Query
Hydration]:::s --> B[2
Candidate
Sources]:::s --> C[3
Candidate
Hydration]:::s --> D[4
Pre-Scoring
Filters]:::s --> E[5
Scoring]:::s --> F[6
Selection]:::s --> G[7
Post-Selection
Filters]:::s --> H[8
Side
Effects]:::s classDef s fill:#fff,stroke:#1d4ed8,color:#1A1A1A
图 1.2 Home Mixer 的八步流水线,一次请求依序经过这八个阶段。

02 · ORCHESTRATIONHome Mixer 八步流水线

Home Mixer 整体就是个 candidate-pipeline 的 Rust crate,pipeline 八步走,每一步是一个可组合的 trait 实现。这种写法让团队可以在不动整体的前提下,单独换掉某一步的实现。

STEP 01
Query Hydration
把请求扩充成有上下文的查询。读入行为历史、关注列表、关注的话题、starter pack、已看过的 post(用 Bloom Filter 压缩)、IP、互关图、served history。
STEP 02
Candidate Sources
并行从多个候选源拉 post:Thunder(网内)、Phoenix Retrieval(OON)、Phoenix MoE、Phoenix Topics、Prompts、Ads、Who-to-Follow。每路都是 fan-out。
STEP 03
Candidate Hydration
把上一步返回的 post id 补全为完整 post 对象,拿到作者、媒体、计数、原帖等字段,为后续 filter 和 scoring 提供素材。
STEP 04
Pre-Scoring Filters
10 个过滤器串行筛掉显然不该打分的内容:重复、过期、回帖、屏蔽词、之前已展示过的等等。降低 scoring 的算力消耗。
STEP 05
Scoring
四个 scorer 顺序作用:Phoenix Scorer 出 ML 概率 → Weighted Scorer 加权合并 → Author Diversity Scorer 衰减重复作者 → OON Scorer 调整网外内容分数。
STEP 06
Selection
按 score 排序取 Top K。这里的 K 比最终返回还要大一些,给下一步过滤留余量。
STEP 07
Post-Selection Filters
VFFilter(删除/垃圾/暴力/血腥)兜底,DedupConversationFilter 在对话树层面去重,避免连贯对话里多条 post 同时出现。
STEP 08
Side Effects
写 served history、上报埋点、广告计费、Brand Safety 记录等"非主链路但必须发生"的事情,异步触发。

这八步的本质,是把"召回 → 过滤 → 排序 → 截断 → 兜底 → 记账"这个推荐系统的经典分层显式写在 trait 上。开源代码里的 candidate-pipeline crate 是通用框架,home-mixer 只是它的一种特化。

03 · IN-NETWORKThunder · 站内候选的实时索引

Thunder 解决一个特定问题:用户打开 App,要立刻看到关注账号最新的 post。这件事不能等离线 pipeline,只能毫秒级查内存。

数据流

  • 订阅 Kafka 的 post.create / post.delete 事件流;
  • 作者 user id分桶,每个桶维护三种存储:原创 post、回复转推、视频;
  • Home Mixer 收到请求后,根据用户的关注列表去访问对应桶,拉出最近的若干条;
  • 过期 post 在后台自动淘汰,保证内存占用稳定。

这种"按作者分桶 + in-memory + Kafka 实时灌入"的设计,让 Thunder 在工程上更像一个为推荐场景特化的实时索引,而不是通用 KV。三种存储类型分开,是为了让"看视频"和"看原创"这种不同消费模式可以各自调权重。

flowchart LR K[(Kafka
post events)]:::data -->|subscribe| TH subgraph TH[Thunder · in-memory partitions] direction TB OR[Original posts]:::box RP[Replies & reposts]:::box VD[Videos]:::box end TH -.->|lookup by followed user ids| HM[Home Mixer · Candidate Sources]:::mixer classDef data fill:#F2F1EC,stroke:#6B6B6B classDef box fill:#fff,stroke:#1d4ed8 classDef mixer fill:#E8EEFC,stroke:#1d4ed8
图 3.1 Thunder 从 Kafka 消费 post 事件,按作者分桶维护三种存储,毫秒级响应 Home Mixer 的查询。

04 · RETRIEVALPhoenix 双塔检索

Thunder 解决"我关注的人",Phoenix Retrieval 解决"我没关注但我会喜欢的人"。这是典型的网外(Out-of-Network,OON)召回问题。整个候选池可能有几百万到几千万条 post,要在几十毫秒内把它压缩到几百条交给排序。

用的是经典的 双塔模型(Two-Tower)。

User Tower user_id hash emb history seq emb → u ∈ R^D request-time Candidate Tower post_id hash emb author_id hash emb → v ∈ R^D · 全量预计算 [N, D] offline batch score = u · v Top-K · ANN candidates: 数百万 (N) → Top-K: 数百
图 4.1 双塔结构。User Tower 在线计算用户向量 u,Candidate Tower 离线对全量 post 批量算 v,在线只做近似最近邻检索取 Top-K。

双塔之所以经典,是因为它把"用户侧"和"内容侧"解耦:内容向量可以离线批量算、缓存、做 ANN 索引;用户向量每次请求重算,参数不多、延迟可控。代价是两塔之间不能交叉特征,只能在最后一刻点积。所以双塔只做召回,不做排序——精细排序留给下一节的 ranking 模型。

召回漏斗

图 4.2 从全量 post 到最终展示,三道关口逐级压缩:双塔 Top-K → Pre-Scoring 过滤 → Ranking + Post-Selection 截断。

05 · RANKINGPhoenix Ranking 与候选隔离

排序模型是整套系统的技术核心。结构上是一个 transformer,但有一处不那么常规的设计:候选互不可见

输入张量

user_emb       : [B, 1, D]      # 用户向量,一次一个
history_emb    : [B, S, D]      # 历史序列:post + author + action + surface
candidate_emb  : [B, C, D]      # 候选集:本次要打分的 C 条 post

三类 token 拼成一段长度为 1 + S + C 的序列,送进 transformer。关键是注意力 mask 怎么写。

注意力 mask 矩阵

UserHistoryCandidates
User
History
Candidates仅对角
图 5.1 行是 query,列是 key。绿色单元表示允许注意;红色禁止;黄色是只允许自注意(对角线)。候选可以看 user 与 history,但候选之间互相不可见。

这件事意味着什么

常规 transformer 里,每个 token 都能 attend 到序列中其他所有 token。如果候选之间互相可见,结果就是:

  • 每条候选的得分依赖于"同批一起打分的其他候选",不可复现
  • 不能缓存,因为同一条 post 在不同候选集中得分不同;
  • 不能分布式打分,因为分片会切断候选之间的注意力。

把候选之间的注意力遮掉,得到三个直接收益:

  • 分数独立。同一条 post 在任何候选集中得分相同。
  • 分数可缓存。(user, post) → score 是个稳定函数。
  • 打分可水平扩展。把 C 切成多块,分别送给多个 worker,结果一致。

这种设计上的让步换来工程上的可伸缩性,是典型的"用模型结构换系统性质"的做法。代价是候选之间可能存在的"对比信号"被牺牲掉了——但这正是为什么后续会有Author Diversity Scorer这种规则化补丁来弥补。

History 这一边带了什么

历史序列的每一个位置不是单纯一条 post 向量,而是把post + author + action 类型 + product surface拼到一起的复合 token。这意味着模型能学到「我在哪种界面(首页、搜索、个人页)下,对哪个作者的哪种内容,做过哪种交互」这种很细粒度的行为模式。

06 · OBJECTIVES15 种 Action 与加权打分

Phoenix Ranking 不是预测单一目标,而是一次性预测15 种行为概率(11 正向 + 4 负向)。模型的 proto enum 里其实定义了 19 种 action,开源的 mini 模型里实际启用了 5 种主 action 用作教学;生产模型用完整集合。

favorite reply repost quote click profile_click video_view photo_expand share dwell follow_author not_interested block_author mute_author report
图 6.1 Phoenix 一次预测 15 种 action(11 正向 + 4 负向),最终分是它们的加权和。开源仓库未公开具体权重数值,本图只表示方向。

最终得分公式

Final Score = Σᵢ  wᵢ · P(actionᵢ | user, history, candidate)

每个 action 对应一个权重 wᵢ正向 action 权重为正,负向为负,这就是为什么"被举报"或"被屏蔽"这类信号本身就是分数的减项,不需要另写一套抑制逻辑。这一步合并在 WeightedScorer 里完成,规则上很直接:先要模型把 15 个概率都打出来,再线性加权。

这种多任务(multi-action)预测的好处是:模型学到的内容表示是被多种目标同时压力测试过的,比起单独训一个"预测点击率",表示更稳健。坏处是工程上必须维护好这套权重表,并保证 mini 模型和生产模型的 action 集合对齐。

开源 mini 模型实际使用的 action

Action enum valueName意义
1favorite点赞
4reply回复
5quote引用转推
6repost转推
11dwell停留时长
13video_quality_view高质量视频观看(达到一定时长 / 比例)

07 · FILTERS过滤器系统

过滤器在系统里的位置很关键。Pre-Scoring 阶段筛掉不值得打分的东西(省算力),Post-Selection 阶段筛掉不能展示的东西(兜底安全)。两组过滤器一前一后夹住整个 scoring 阶段。

Pre-Scoring · 10 个

  1. DropDuplicatesFilter同一请求里出现的重复候选合并
  2. CoreDataHydrationFilter必填核心字段缺失的丢掉
  3. AgeFilter太老的 post 丢掉
  4. SelfpostFilter用户自己发的不再推回去
  5. RepostDeduplicationFilter同一原帖的多份转推合并
  6. IneligibleSubscriptionFilter付费/订阅条件不满足的丢掉
  7. PreviouslySeenPostsFilter之前已看过的 (Bloom Filter)
  8. PreviouslyServedPostsFilter之前推过但未点开的 (servid history)
  9. MutedKeywordFilter用户配置的屏蔽词命中
  10. AuthorSocialgraphFilter作者关系链不合规 (拉黑等)

Post-Selection · 2 个

  1. VFFilterViolence Filter,兜底审核:删除/垃圾/暴力/血腥
  2. DedupConversationFilter对话树去重:同一根对话只保留一条

设计意图

Pre 侧关注效率,每条算力都不能浪费在不会出现的内容上;Post 侧关注呈现,已经决定排到前面的内容,还要再过一道"绝对不能出现"的安全网。

值得注意的是 PreviouslyServedPostsFilter:很多推荐系统会把"曾经推过但用户没看"也算作负向信号去训练模型,X 这边的做法更直接——曝光过没消费的,下次干脆不再推。

08 · DESIGN五个关键设计决策

把这些点单独拎出来,是因为它们解释了"为什么这套系统长成这样",比任何单独模块的细节都更值得看。

No Hand-Engineered Features

"We have eliminated every single hand-engineered feature and most heuristics from the system." 全部交给 transformer 学。代价是模型变大、训练成本上升;收益是特征维护这件事消失了,团队能集中精力在数据和模型本身。

Candidate Isolation

候选互不可见。换来分数独立、可缓存、可水平扩展三个工程性质,这是整套系统能在 X 的规模下跑起来的关键。多样性问题用后置 scorer 补,不在 attention 里解决。

Hash-Based Embeddings

User、Item、Author 各自一张 100 万词表,每个实体过 2 个不同 hash function 映射到 2 个 slot,再把两个 embedding 平均。哈希碰撞带来的噪声,模型在大规模数据下能"消化掉"。这个做法让 embedding 表的尺寸成为可调超参,而不是随用户量线性增长。

Multi-Action Prediction

一次预测 15 - 19 种 action,正负向用同一头输出。负向 action 不是事后再贴补丁压分,而是天然作为目标参与学习。

Composable Pipeline

candidate-pipeline 是个通用 crate,home-mixer 只是它的一个实例。这意味着同一套抽象可以拿去做搜索、Explore、视频推荐等其他场景。八步流水线不是 For You 专属。

09 · MINI MODEL开源 Mini 模型的具体参数

仓库里给出的是一个跑得动、能复现的"教学版"模型。参数不大,但结构和生产是一致的。

项目Mini 配置备注
Embedding 维度 D128新版本默认 256,Mini 用 128 节省显存
Transformer 层数4新版本 2 层(更宽更浅)
Attention heads4
Key size32每个 head 的 key / query 维度
FFN widening factor2FFN 隐层 = D × 2
History seq length127最近 127 个行为
Candidate seq length64一次最多对 64 个候选打分
词表大小 (User/Item/Author)1,000,000每张表 100 万 slot
Hash function 数2每实体过 2 个哈希
Action 类型19proto enum 总数;mini 用其中 5 个主 action

读 mini 模型代码的意义不在它的精度,而在它把生产架构的结构原样保留下来。把这些参数等比放大几倍,再换上完整的 action 集合和真实数据,就是生产版的样子。

10 · PERIPHERY周边 · Grox / Ads / Who-to-Follow

Grox · 内容理解服务

Grox 是一个独立服务,不和 Phoenix 共享模型,专门做 spam 检测、post 多标签分类、PTOS(Platform Terms of Service)合规判定。它产出的标签会被 Home Mixer 在 hydration 和 filter 阶段消费,比如 VFFilter 判断"是否暴力血腥"用的就是 Grox 的标签。

把内容理解抽出来做独立服务的好处:它有自己的迭代节奏,模型升级不必和 ranking 模型耦合;坏处是 Home Mixer 多一次 RPC 调用,要么靠批量 hydration,要么靠预计算缓存来摊薄延迟。

Ads · 广告注入

home-mixer/ads/ 模块负责把广告候选注入到 candidate sources 里,同时记录 brand safety 信号——某些广告主不希望自己的广告出现在敏感内容旁边,所以系统在排序后还要做一次"广告位置周边内容是否合规"的检查。这部分逻辑跟内容推荐主链路是分开的,但共享同一个 Home Mixer 编排。

Who-to-Follow

账号推荐和 post 推荐共用同一套 candidate-pipeline 抽象,只是候选类型从 post 换成 user。这是「Composable Pipeline」决策在生产中能落地的直接证据。

11 · TAKEAWAYS结语 · 这种架构的取舍

读完这版 x-algorithm 仓库,最值得记下来的不是某一个数字或某一个模块,而是整套系统在"模型表达力"和"工程可控性"之间做的几次明确选择。

放弃了什么

  • 手工特征。过去对内容、用户、关系做的精巧建模都不再显式存在。
  • 候选间交互。同一批次内候选之间没有注意力,多样性靠后置 scorer 而不是模型自身。
  • 显式启发式规则。大部分 heuristics 从打分链路里删掉了,剩下的几条(重复作者衰减、OON 调整)是少数。

换来什么

  • 规模化能力。分数独立、可缓存、可水平扩展,让千万级候选实时打分变成可行的工程问题。
  • 统一抽象。八步流水线 + candidate-pipeline crate 让 For You、搜索、WTF 共用同一套骨架。
  • 多目标一致性。15 种 action 在同一模型里联合预测,避免了多个独立预测模型之间难以调和的问题。

对一人公司创业者,能拿走什么

不必复刻这套系统,但其中两个抽象在小规模也成立:

  • 把"召回"和"排序"分开。召回追求规模和召回率,排序追求精度。即使是从几千条素材里选 10 条,分开两层也比一锅炖好。
  • 把"打分"和"过滤"分开。能丢的提前丢,能保的最后保。打分逻辑保持纯净,让规则在两端兜住。

报告读完。源码地址:github.com/xai-org/x-algorithm。本文涉及的所有结构性描述均可在该仓库的 README、proto 定义及 candidate-pipeline / home-mixer / phoenix 三个子目录中得到对应。

继续读其他视角

Algorithmic Reverse-Engineering · For One-Person Companies

从 X 算法机制反推一人公司内容策略

当 transformer 直接读你的行为序列,旧的涨粉公式应该如何重写

SOURCExai-org/x-algorithm @ 2026-05-15 SIBLING算法机制 tab READER苏小尤

00引言 · 算法变了,自媒体打法也得变

过去十年的"涨粉公式"大致是这一套:蹭热点 + 三件套(标题/封面/钩子)+ 关键词堆砌 + hashtag。这套打法的底层假设是:算法是一台规则机器,把对的关键词、对的格式、对的时间塞进去,就能换到流量。

但 X 在 2026 年开源的这一版算法,从根上把这个假设掀翻了。

Heavy Ranker 删光了所有手工特征。模型直接读你这个用户最近的行为序列——你刷过哪些 post、每条停留了多久、点开了谁的主页、回复了谁、屏蔽了谁、关注了谁——然后让 transformer 自己学"这种行为模式的人,接下来会在哪条新 post 上做什么动作"。

这件事的后果是:

  • 没有"hashtag 加分"了。模型不读 hashtag 加权字典。
  • 没有"哪个关键词更容易爆"了。模型读的是用户行为序列,不是关键词频率表。
  • 没有"账号标签"这种你能 hack 的东西了。模型学的是"在你这条 post 出现前,那个用户做了什么"。

这听起来像是坏消息——你能操控的杠杆变少了。但反过来看,这意味着:真正能稳定起量的,是那些恰好命中"用户行为序列模式"的内容。算法不再奖励技巧,奖励的是"看完它"、"点开它"、"想回复它"、"想关注作者"这些真实行为

本文不再讲算法怎么实现(那是兄弟 tab 的内容)。本文只回答一件事:算法在用什么思路推荐内容,你作为一个一人公司创作者应该怎么发?

算法不奖励"看起来对"的内容,奖励"被读完"的内容。

01思路层 · 算法的底层意图

下面 8 条机制是这一版算法最关键的判断。每一条都给出三件事:它怎么运作、它真正想达成什么、你作为创作者应该怎么应对。

Figure 1 · 机制 → 意图 → 应对
主干对照表,下文逐条展开
机制真正的意图你应该怎么应对
删光手工特征放弃规则、用 transformer 端到端学习用户停掉一切"关键词技巧",把功夫放在让人真的看完、真的回应
15 种行为概率同预测把"被看见"拆成 15 个可被激活的细节通道每条内容预设要激活哪 2-3 个动作(点开 / 停留 / 关注 / 回复 / 收藏)
候选互不可见每条 post 独立打分,没有"系列加分"每一条都必须单独成立,不能依赖上下文
作者多样性衰减主动反对单一作者刷屏一天 1-2 条主帖足够,更多的话至少间隔 4-6 小时
Bloom Filter 去重看过的不再推同一内容重发是浪费 quota,要么改写要么扩展
负向权重 mute/block/report预测"会让人想拉黑"的内容直接压底所有引战、煽动、人身攻击类内容长期得不偿失
dwell / click 是高频信号停留和点开比点赞密度高一个数量级开头三行决定一切,长尾价值在"读完"而不是"点赞"
Thunder 网内召回你的粉丝是免费的第一阵地把"被关注"当作复利杠杆,每条内容都要给陌生人一个 follow 的理由

1.1 删光手工特征 · 算法在追求"理解你这个人"

它怎么运作。过去 Heavy Ranker 里塞过几百个特征:你过去 7 天 like 过几条、这个作者 follower 增长率、post 里有没有 link、是不是含 video……这些手工特征在新版本里全部被删除。Heavy Ranker 直接吃 user action sequence —— 一串你过去做过的事,按时间顺序排开。

它真正想达成什么。这是 X 押注 transformer scaling 的结果:与其让工程师拍脑袋猜哪个特征有用,不如把数据原样喂进去让大模型自己学。这意味着算法在追求一件事——理解"你"这个用户的状态,而不是匹配标签

你应该怎么应对。停掉一切关键词 hack。

  • 不要为了"蹭热点"硬塞热点关键词。模型不读关键词字典,但用户会读,硬塞会让 dwell 下降。
  • 不要给自己贴标签("AI 博主"、"电商人")。模型不读 bio 加权,读的是过去看过你的人接下来做了什么。
  • 把"我这条内容会让看完的人产生什么动作"想清楚,比"我这条内容有没有命中关键词"重要 10 倍。

1.2 15 种行为概率同时预测 · 每条内容都有专属"激活通道"

它怎么运作。Heavy Ranker 对每条候选 post 输出 15 个概率:

Figure 2 · 15 种 Action 在排序公式中的方向
图示仅说明方向(正向/负向),开源仓库未公开具体权重数值。绿色为正向激励(推上去),红色为负向惩罚(压下去)。

最终分 = Σ(权重 × 概率)。正向 11 个(favorite, reply, repost, quote, click, profile_click, video_view, photo_expand, share, dwell, follow_author),负向 4 个(not_interested, block_author, mute_author, report)。

它真正想达成什么。把"这条 post 对这个用户的价值"拆成 15 个细分动作,每一个都是一种"用户表达兴趣"的方式。一个普通点赞和一个"点开主页 + 关注作者"的组合,对模型来说价值天差地别——后者证明这个用户被你勾出了好奇心,想看更多你的东西。

你应该怎么应对。从今天起,每条内容发布前先问自己:

PRE-PUBLISH QUESTION 这一条,我希望读到它的人做哪 2-3 个动作?是点开看完整版?是回复讨论?是转发给朋友?是点开我的主页看更多?还是关注我
如果答不上来,这条内容大概率会被算法判为"低价值候选"。

不要试图同时激活所有 15 个 action—— 同时讨好所有人 = 谁都不爱。锁定 2-3 个,全力让这条内容激活它们。

1.3 候选互不可见 · 每条必须单独成立

它怎么运作。Heavy Ranker 给每条 post 独立打分,不知道同一 batch 里还有哪些候选。你的"系列第 3 篇"不会因为前两篇火过而加分。

它真正想达成什么。避免"上下文耦合"导致排序不稳定。每条内容必须自带完整价值。

你应该怎么应对。

  • "前情提要在主帖里"。系列内容的每一篇都要能让一个从没看过前几篇的人读懂。
  • "开头不能依赖外部跳转"。如果第一行需要点开链接才能理解,几乎一定被压。
  • "留钩子可以,留悬念不要"。读完这一条没有结论 = dwell 不够 = 算法判低。

1.4 作者多样性衰减 · 算法主动反对刷屏

它怎么运作。Author Diversity Scorer 在候选排序后期主动衰减重复作者的分数。同一个号短时间内再次出现在同一用户的 feed 里,第二条分数 × 0.x,第三条 × 0.xx,越往后衰减越狠。

它真正想达成什么。X 希望 feed 是"多样作者的精选集",不是某个 power user 的个人时间线。这是平台健康度的基本盘。

你应该怎么应对。

Figure 3 · 发布频率 vs 单条预期得分
一天发 1-2 条主帖单条得分维持高位;一天 5 条以上单条得分快速衰减
  • 一天 1-2 条主帖是甜区。第 3 条开始衰减明显。
  • 间隔 4-6 小时是给算法"刷新"的时间窗口。早上一条、晚上一条,是默认节奏。
  • 评论和回复不受这个限制—— 它们走的是不同的流,可以高频。
  • 不要为了"占位"硬发。第 5 条的低质内容会拉低你整体的内容质量信号。

1.5 Bloom Filter 去重 · 重发不会有第二次机会

它怎么运作。PreviouslySeen / PreviouslyServed Filter 用 Bloom Filter 记录"这个用户已经被推过哪些 post"。看过的 post,下次不再出现在他的 feed 里。同一对话树多个分支只留一个,转发同一条原文只留一条。

它真正想达成什么。防止用户疲劳,让 feed 信息密度最大化。

你应该怎么应对。

  • 不要原文重发。同一条 post 在不同时间发两次,不会有第二次曝光。
  • 要复用就改写。同一个观点,换一个开头、换一个例子、换一个结构(短帖 → 长帖、图文 → 视频),等于一条新内容。
  • quote 和 reply 是合法复用通道。quote 自己旧 post 加新观点 = 给老内容第二次激活机会。

1.6 负向行为权重 · 引战短期赚互动、长期挨打

它怎么运作。4 个负向 action(not_interested, block, mute, report)权重是负的。模型预测到你的内容会让人想拉黑,最终分被直接拉到底。

它真正想达成什么。区分"高互动"和"高情绪反弹"。一条引战的 post 短期 favorite 和 reply 会暴涨,但同时 mute/block/report 的预测概率也会拉满。两者抵消后,长期账号会被压。

你应该怎么应对。

  • 区分"有立场"和"挑衅"。讲清楚自己的判断是好的;指名道姓骂同行是坏的。
  • 区分"批评观点"和"攻击人"。"我觉得这套方法论有漏洞"可以;"做这个的人都是骗子"不行。
  • 注意评论区。如果你的评论区充满 mute/block 行为,整个账号在算法眼里的"健康度"都会下降。

1.7 dwell 与 click 是高频信号 · 让人读完比让人点赞重要

它怎么运作。dwell(停留秒数)和 click(点开主帖详情)是用户最常做的动作,每天每个人都在做几百次。favorite/reply/share 是低频高价值动作,每天可能只做几十次。

它真正想达成什么。模型最爱"高频且有信息量"的信号。dwell 既高频,又能反映真实兴趣(强迫不来)。click 同样—— 决定要不要点开是 0.5 秒的判断,骗不来。

你应该怎么应对。这是整个算法时代最重要的一条

CORE PRINCIPLE 把"让一个陌生人读完这条 post"当作你内容设计的第一目标。所有的标题、开头、节奏、结构、长度选择,都围绕这个目标。
不是写得好,是被读完。

1.8 Thunder 网内召回 · 关注列表是免费的杠杆

它怎么运作。Thunder 召回是 X 的"网内"召回器,它在毫秒级把你关注的人最近发的 post 取出来作为候选。这条路径几乎没有过滤压力——你关注谁,谁的内容就有机会进你的 feed。

它真正想达成什么。用最低延迟保证你看得到你关注的人的内容,这是 X 体验的根基。

你应该怎么应对。对创作者来说,"被关注"是一个有复利的资产

  • 1000 个粉丝 = 1000 个网内召回入口。你每次发帖默认就能被这 1000 人看到(不需要通过 Phoenix 召回竞争)。
  • 每一条内容都要给路过的陌生人一个 follow 的理由。这就是为什么 profile_click 和 follow_author 是关键 action。
  • follow 漏斗:陌生人刷到 → 读完(dwell)→ 觉得有价值 → 点开主页(profile_click)→ 主页前几条也好 → 关注(follow_author)。任何一环掉都不会有结果。
Figure 4 · 创作者飞轮
每个节点都对应一个具体的算法概率
单条内容 单独成立 高 dwell 高 click 算法上分 推得更多 profile_click follow_author 粉丝增加 Thunder 入口 下条起点 更高基线

02实操层 · 具体怎么写、怎么发

下面所有建议都能追溯到上面某条机制。如果一条建议你说不出它对应哪条机制,就不要采用它。

2.1 选题 · 命中多个 action 通道

好选题的判断标准只有一个:它能不能在一条 post 里同时激活 2-3 个 action 通道。下面几类选题模板对一人公司(电商 + AI 方向)特别好用:

选题模板激活的主要 action例子
反直觉结论 + 数字证据click + dwell + reply"我把客服外包给 AI 三个月,客单价反而涨了 18%—— 不是因为 AI 更聪明"
过程拆解 + 真实账本dwell + profile_click + follow"一人公司做到月营收 50 万,雇过 0 个人。3 个分水岭决定能走多远:"
具体踩坑 + 可复用结论dwell + favorite + share"用 Claude Code 跑电商自动化 6 个月,5 个让我损失过钱的坑"
明确判断 + 邀请反对reply + quote + dwell"我认为 99% 的'AI 工作流'课程是 prompt 复读机。理由 3 条:"
对比同类 + 站队reply + share + favorite"小红书 vs 视频号做电商内容:90% 的人选错了。我用同一条内容测了 30 天"
身份认同 + 抒情repost + share + follow"一人公司不是'公司更小',是把决策权和执行权重新合并"
陷阱 不要做"教学清单"型选题("AI 工具 10 大推荐")。这种内容 click 容易但 dwell 极差—— 用户点开后一眼扫完就走,dwell 概率被压低,整体得分不高。

2.2 标题(开头第一行)· 决定 click 和 dwell 的入口

X 上没有独立的"标题字段",但 post 的第一行就是标题。它一个人扛三件事:

  1. 让人决定要不要停下滑动(影响 dwell 起步)
  2. 让人决定要不要点"展开"(直接对应 P(click))
  3. 让人决定要不要点开主页看你是谁(profile_click)
第一行的结构对照
DON'T
分享一些关于一人公司的思考
没有信息量、没有钩子、没有数字、没有反差。算法不读"分享思考"四个字加分,用户也不会停。
DO
做一人公司 3 年,最反直觉的一条:雇人不会让你更轻松,会让你更不自由
有数字(3 年)、有反差(反直觉)、有冲突命题(雇人 vs 自由)。三件事同时勾住眼睛。
关于问号
DON'T
为什么大家都在做 AI Agent?
空泛的设问,没有立场,读完反而不知道要往下读什么。dwell 不会起来。
DO
AI Agent 现在的状态像 2007 年的 iPhone:90% 的应用还没被发明
有判断、有类比、有时间锚。读完第一行已经形成态度,dwell 自然延续。
关于数字
DON'T
最近做了个项目效果还不错
"还不错"是软的。算法不学软,用户也不停。
DO
用 Claude Code 替代 3 个外包,月成本从 1.2 万降到 600 块。账本在下面
三个数字(3 / 1.2 万 / 600)+ 一句"账本在下面"= 强烈的"我要点开看"信号。

2.3 正文 · 把 dwell 拉满

X 已经支持长 post(最长 25000 字符)。这是这一版算法时代最被低估的工具——长 post 是 dwell 收割机

  • 长 vs 短的决策标准:能不能撑住 dwell。如果一条内容需要读者花 20 秒以上才能消化完,写长帖;如果 5 秒就能讲完,写短帖,不要硬撑。
  • 开头三行决定剩下的命运。如果前三行没把读者勾住,再长也是浪费。
  • 节奏要有"小波峰"。每隔 3-5 行制造一次"信息密度爆点"——一个数字、一个反转、一个具体例子——让读者觉得"再往下还有"。
  • 结尾不要空话。不要写"以上就是我的思考,欢迎讨论"。要写一句让人想 reply 或 quote 的话:一个明确的判断、一个开放的问题、一个邀请反驳的立场。

2.4 多媒体 · 激活专属通道

P(video_view) 和 P(photo_expand) 是独立的 action。这意味着多媒体内容拿到的不是"加分",是额外的激活通道。但每种媒体的最佳使用场景不一样:

媒体类型主要激活的 action什么时候用
纯文本(短帖)favorite, reply, quote一句话能讲完的金句、判断、问题
纯文本(长帖)dwell, click, profile_click, follow方法论、过程拆解、深度复盘
单图photo_expand, dwell需要"先看图再读字"的截图、对比、数据图
多图(2-4 张)photo_expand × N, dwell步骤分解、前后对比、产品多角度
视频(<1 分钟)video_view, dwell, share过程演示、产品 demo、操作录屏
视频(1-3 分钟)video_view, follow_author讲解、观点输出、个人 vlog
GIF / 短动图video_view, share情绪表达、操作演示节选
组合策略 长帖 + 单图是 X 上最稳的组合。长帖拉满 dwell,单图激活 photo_expand,两个独立的高权重通道同时点亮。比单纯发长帖再多吃一份分。

2.5 发布频率与时间间隔

已经在前面讲过作者多样性衰减。这里给具体的执行节奏:

  • 主帖:一天 1-2 条,间隔至少 4 小时。电商方向(白领/创业者读者)的最佳时段是早 7-9 点、午 12-14 点、晚 21-23 点。
  • 回复/评论:不限。评论自己的主帖给二楼是合法的"补充信息"通道,不受多样性衰减影响,长贴拆短发到评论区也可以。
  • quote 转发:一天 0-2 条。quote 别人的内容算你自己的主帖,会占多样性配额。
  • 纯转发:一天 1-3 条无害。主要是给关注的人撑场,对自己曝光帮助有限。

2.6 互动管理 · 评论区是账号的第二个内容资产

很多人不知道:你 post 下面的评论质量,会反过来影响这条 post 的算法得分。原因:

  1. 评论区被举报/拉黑 → 这条 post 的 mute/block 预测概率上升 → 得分被压。
  2. 评论区有高质量讨论 → reply 概率上升、dwell 上升(用户会停下来读评论)→ 得分上升。
  3. 你回复评论 → 那个评论作者的下一条互动概率上升 → 长期关系沉淀。

所以:

  • 前 10 条评论必须亲自回。这一波回复决定了评论区的基调。
  • 遇到有人挑衅,不要正面对线。要么 mute 不理,要么用一条新主帖回应(拉到自己主场)。绝不在评论区互骂——评论区只要有一次互骂,整条 post 的"健康度信号"全废。
  • 把最有价值的评论 pin 起来。把"优质讨论"做成内容资产的一部分。

2.7 关注列表维护 · 你 follow 谁会被算法学到

这是 90% 创作者忽略的一条。你的关注列表不光是"你想看谁"——它还是算法用来理解"你这种用户喜欢什么"的训练数据

从读者侧看:你关注的人决定了 Thunder 召回给你推什么。
从创作者侧看更关键:关注你的那批人的整体画像,决定了 Phoenix Retrieval 会把你的内容召回给哪类陌生人。

具体做法:

  • 关注列表保持"主题集中"。如果你的内容主线是电商 + AI,关注列表的主体也应该是这两个圈子里的人。不要乱关注无关明星、政治账号——这些会拉偏算法对"你是谁"的判断。
  • 不要互关求粉。互关大量低质账号 = 你的"用户画像"被这些账号污染 = 算法给你推的也跟着跑偏。
  • 主动 mute / unfollow 已经不读的账号。清理关注列表是一种"主动信号"。

2.8 规避负向信号 · 这些动作会让你长期挨打

把这条当作"内容的红线清单"。每条 post 发布前对一遍:

高风险动作 1
指名道姓骂同行 / 竞品 / 公众人物
短期会有围观式互动,但被对方粉丝集中 mute/report 会让账号在算法眼里"标记"。一旦标记,恢复要 2-4 周。
替代做法 1
点名"现象",不点名"人"
"现在有一类 AI 教程把 prompt 拼图当核心方法论,这套路存在 3 个问题——"。同样有立场,但所有 mute/block 概率都低得多。
高风险动作 2
煽动性话术("震惊"、"颠覆"、"99% 的人不知道")
短期 click 可能上去,但点开后内容兑现不了承诺 → dwell 严重下降 → 模型学到"这个账号是标题党" → 后续每条 click 概率都被压。
替代做法 2
具体钩子(数字、时间、对比)
"做电商 3 年,从月亏 5 万到月赚 8 万。一个分水岭"。承诺具体、可兑现,dwell 跟得上 click。
高风险动作 3
大量 @ 不相关账号求曝光
大概率被 @ 的人 mute 你或屏蔽提及。这是 mute_author 概率的快速通道。
替代做法 3
只 @ 内容真正相关的人,并附理由
"这个观点我从 @某某 的 thread 里抓到的,原贴写得更全"。这样的 @ 大概率被对方 quote 回应——双向受益。
高风险动作 4
情绪发泄帖(吐槽客户、吐槽生活)
会吸引一群同情你的人短期点赞,但也会让本来对你内容感兴趣的潜在粉丝判断"这个号不是我想关注的方向" → not_interested 上涨。
替代做法 4
把吐槽转成方法论
"前阵子被一个客户搞到失眠,复盘下来发现是签合同时少做了一件事——"。从情绪转向具体经验,反而能激活 dwell 和 share。

2.9 冷启动 · 新账号从 0 开始

这一版算法对新账号其实不算苛刻,因为它不依赖账号历史特征。但有一个隐形门槛:你的内容能不能被 Phoenix Retrieval 召回,取决于"内容 embedding 落在哪个用户行为模式附近"。

冷启动具体做法:

  1. 第一周:定位密度。主页前 10 条内容必须主题高度集中。陌生人点开主页 3 秒就要能判断"这个号在讲什么"。
  2. 第二周:找网内入口。主动去 reply 你这个领域的中部账号(5000-50000 粉丝那种),写有内容的 reply,不要彩虹屁。这是免费的 profile_click 流量。
  3. 第三周:跨账号引流。把你已有的微信公众号 / 小红书 / 视频号粉丝里"也用 X 的人"引过来——这是最快的 Thunder 入口。
  4. 第四周:观察 Phoenix 召回是否起来。看后台分析:如果有越来越多的陌生人 impression,说明 embedding 已经落到对的位置。
冷启动核心心态 新账号前 30 条内容是给算法和未来粉丝看的"作品集",不是给当前 0 个粉丝看的。每条都要能让陌生人点开主页时觉得"这个号值得关注"。

03跨平台 · 这套思路怎么平移

X 的这一版架构(删特征 + transformer + 双塔召回 + 多 action 预测)几乎可以确定是当代主流推荐系统的"目标态"。抖音、小红书、视频号、TikTok 走的路径大同小异。下表是合理推测下的横向对照。

Figure 5 · 跨平台机制对照
基于公开论文、技术博客与逆向工程社区的合理推测
X抖音小红书视频号TikTok
是否端到端 transformer是(已开源)大概率是大概率是追赶中是(更激进)
核心高频信号dwell / click完播率 / 复播停留 / 截图完播 / 关注转化完播率
关键负向信号mute / block / report快速划走 / 举报不感兴趣 / 屏蔽不感兴趣跳过 / 举报
作者多样性有衰减有衰减有衰减较弱有衰减
网内召回杠杆Thunder · 高低(关注页弱)高(朋友圈式)
对引战的态度长期压短期奖、长期压长期压较敏感长期压
开头三秒重要性★★★★★★★★★★★★★★★★★★★★★

三条可以放心平移的原则:

  1. 把"完播 / 读完 / 看到底"作为第一目标—— 所有这些平台都用某种形式的 dwell 或完播率作为高频核心信号。
  2. 停掉关键词 hack—— 越是端到端的平台,关键词技巧越无效。把功夫放在内容本身能不能勾住人。
  3. 负向信号在所有平台都是负的—— mute / 不感兴趣 / 举报这一类,在任何平台都是账号长期健康的红线。

不能完全平移的部分:抖音和 TikTok 对"完播率"的权重比 X 对 dwell 的权重更极端,因为短视频天然有"完播"这个清晰的二元事件。所以在那些平台上,视频前 1.5 秒的钩子设计是最大杠杆。X 上长 post 同样的位置叫"开头三行"。


04发布前自检清单

每次发主帖前,把这份清单走一遍。点击勾选,全勾上才发。

  • 这条内容单独看能否成立?陌生人不读我其他内容也能懂吗?候选互不可见
  • 第一行有没有钩子?数字、反差、判断、对比,至少占一个。P(click)
  • 开头三行能不能让陌生人停下来读完整条?P(dwell)
  • 这条最想触发哪一个动作?点开、回复、转发、看视频,明确一个。15-action 模型
  • 有没有不必要的引战或人身攻击?规避 P(mute/block/report)
  • 结尾有没有让人想接话的钩子?(提问、反直觉收尾、留一个能 quote 的金句)P(reply) P(quote)
  • 今天发过几条主帖了?第 3 条以上明天再发。作者多样性衰减
  • 跟上一条主帖间隔 ≥ 4 小时了吗?作者多样性衰减
  • 是旧观点改写吗?如果是,换没换开头、例子或结构?Bloom Filter 去重
  • 配了图、视频或表格吗?没有的话能不能顺手加一个?P(photo_expand) P(video_view)
  • 有没有堆 hashtag 或关键词?有就删掉。删光手工特征
所有的算法机制最终汇成一句话:让一个原本不认识你的人,读完它、记住它、关注你。剩下的全是技巧。

继续读其他视角