产品发布 · 小互解读

X 开源 For You 算法:点赞值 0.5 分,复制链接分享值 20 分

21 个权重的真实数值、三道决定曝光的关口,以及一张照参数推出来的发帖对照表
一分钟速览
  • 点赞在这套算法里的权重是 0.5,「复制链接转出去」是 20,写在配置文件里的明文,不是猜的。
  • 限流第一次有了确切形态:你的关注者照常看得到,不关注你的人的时间线里你彻底不存在。
  • 文末那张对照表把三道关口拆成了能照着做的条目,每条都标着依据的那个数字。
⚑ 材料来自 X 自己开源的代码仓库与官方公告。文中所有权重和阈值取自仓库里的生产默认值,个别用户可能被分在实验组、拿到不一样的数。
这次开了什么

这次公开的权重就是线上跑的数值

X 把 For You 时间线的算法源码开源了,同时上线了一个能查自己有没有被限流的页面。对靠 X 涨粉、导流、接单的人,这次给出的是一张明码标价表:一次点赞和一次「复制链接转出去」在平台内部分别值多少分,现在是配置文件里写死的具体数字,不用再猜。

此前的开源版本给的是结构:你知道有个打分环节,但不知道每个动作值多少;连模型部分放出来的也只是一个照着 Grok-1 改的示例。这次补上了三样。

新增 01
权重的真实数值
把各动作的预测值混合成一条帖分数的那组权重,全部公开。
新增 02
过滤与标签系统
决定一条帖会不会被从 For You 里滤掉的整套代码,含打标签的规则和模型。
新增 03
真实训练代码
替换掉此前的演示模型,附合成数据生成器,一张显卡就能跑完一次完整训练。有一处差异是公开披露的:优化器用的是标准 AdamW,不是生产环境内部调优过的那版。
这次相比前几版开源补上的三样

这些数字凭什么当真?X 给的解法是跑 cron 脚本,定期把生产环境的主用值同步回仓库里的默认值,README 点名了权重文件就是这么维护的。配套还有两条:跑在 10% 以上流量的实验,目标是都能在仓库里看见;代码公开前请了第三方推荐系统专家先看过、压过。X 给这次发布定的目标只有一句:让人能自己回答「平台到底有没有在限我的流」。

骨架

一条帖要过三道关口才能到读者眼前

整套流程有七步,但对写东西的人来说,只需要记住它收成的三道关口。这三道是乘法关系,任何一道没过,结果就是零,后面两道再好也没用。

全网候选帖 第一关 · 进候选池 第二关 · 打分排序 第三关 · 可见性放行
第一关候选来自两路:你关注的人的近期帖,和两套站外检索;再过 17 道打分前过滤
第二关加权求和 → 三道调整 → 取前 K
第三关逐帖逐人判:放行 / 加提示 / 丢弃
三道关口,管道逐级收窄;两侧的箭头是每一关刷掉的帖

排序和可见性是两套分开的系统。前者决定顺序,后者决定能不能出现,两套服务、两套输入、两套规则。X 把这条单列成了设计决策,理解限流,先得理解这个分工。

第一关 · 进候选池

你的回复进不了陌生人的时间线

打分之前有 17 道过滤。大部分是常识,自己的帖、拉黑静音的人、已经看过的、命中静音关键词的。但其中三条直接决定你的帖能不能被陌生人看到,第一条尤其反直觉。

通过
你发的原创帖
正常进入候选池,参与后面的打分。这是能被站外(out-of-network)指这条帖的作者,是这个读者没有关注的人。For You 里同时混着你关注的人发的帖和没关注的人发的帖,后者就叫站外。读者看到的唯一路径。
拦下
你发的回复 / 转推
只要这个读者没关注你,整条被扔掉,连打分环节都进不去。
同一个账号发的两种内容,在第一关就分了岔

另外两条:48 小时是硬线,超过就被扔出候选池,这是写死在配置里的常数,不是可调参数。还有一条管回复的,一条回复要留下来,被回复的那个人必须也是这个读者关注的;不过自己回自己的串不受影响,祖先全是作者本人时这道过滤直接放行。

合起来一句话:想让不关注你的人看到你,只有原创帖这一条路。你在别人评论区写得再好,也只有你自己的关注者能在 For You 里刷到。
第二关 · 打分

模型预测的是你会做什么动作

老一代推荐系统给每条内容打一个「相关度」。这套换了个思路:模型不猜你喜不喜欢,而是分别猜你会对这条帖做出哪些具体动作,会点赞吗?会回复吗?会复制链接转走吗?会举报吗?然后有单独的一步,把这些概率合成一个数。

一条候选帖
复制链接 P = ?
回复 P = ?
点赞 P = ?
关注作者 P = ?
举报 P = ?
Σ 权重 × 概率一条帖的分数
模型只负责出概率,「一次回复比一次点赞值多少」是另一步的事

X 把这个「合成一个数」的步骤单列成一条设计决策,含义就在这里:预测归模型,估值归人。这次开源开出来的,正是人定的那一部分。

顺带两个细节能解释「为什么有些账号天然更容易被推」。一是帖子的点赞、回复、转推、引用、浏览数和帖龄,是分桶后直接喂给模型的输入特征。模型看得见这些数字,所以早期速度确实会自我强化。二是每条帖会被压成一串语义 ID把一条帖的图文内容压成代表「这条讲的是什么」的编码,6 层、每层从 256 个码里选一个。同主题的帖,开头几层是一样的,像图书馆的索书号,同一学科的书号段前缀相同。,同主题的帖共享编码前缀,所以一条零互动的新帖照样能被检索到,前提是它的主题正好是这个读者常看的。另外,生产环境的检索模型不给每个用户存一个专属向量,除了国家语言这类粗画像,一个读者在系统眼里就等于他互动过的那些东西。

第二关 · 权重表

点赞 0.5 分,复制链接分享 20 分

21 个正权重、5 个负权重,全在下面。

正权重合计 43.324
复制链接分享
20.0
回复
5.0
引用
5.0
私信分享
5.0
关注作者
4.0
分享
2.0
转推
1.0
点赞
0.5
点击
0.4
打开链接
0.2
图片展开
0.05
视频打开
0.05
视频有效播放
0.05
引用帖点击
0.05
未探索帖
0.02
连续停留时长
0.004
停留 · 点进主页 · 另三项
0.0
负权重另一套刻度
举报
−234
静音作者
−58.8
不感兴趣
−43.2
拉黑作者
−31.2
划过没停留
−0.02
条形长度就是权重值本身。正负两组不在同一刻度上,负的那组最长的是 234,正的那组最长的是 20

两个一眼能看出来的事实:全部正权重加起来是 43.324,光「复制链接分享」一项就占了将近一半;一个举报的绝对值,比全部正权重加起来还多 5 倍。

这张表怎么读

别拿这些数字直接做除法。这些值是「这个动作有多值钱」和「这个动作在全网多罕见」两件事混在一起的结果,负反馈本来就极少发生,权重要给得够大才平衡得过来。

所以「一次举报等于毁掉 468 次点赞」是错的读法。举报本来就极少发生,模型算出的举报概率是个极小的数,权重给到 −234 才能让它在加权和里有分量。

正确的读法是:这张表说的是模型算出的概率哪怕很低,只要不是零,乘上权重之后也会被放大进总分。换成体感就是:模型觉得你这条帖有一丝会被举报的味道,那一丝就够把你压下去;觉得它「像是会被人复制链接转走的那种」,一点点这种气味就能把你抬起来。

视频那一项还有两个附加门槛:视频得超过 10 秒才算数;而且当读者自己的粉丝数达到 1 万时,这一项权重直接归零。
第二关 · 四次调整

分数还要再调四次才定下来

加权求和只是起点。分数定下来之前还要再动四次,第一次发生在求和的过程中,改的是某一项的权重;后三次是乘在总分上的。下面四步可以自己点着走一遍。

① 发生在求和过程中 · 改的是权重
互关加成 +15
回复权重 5.0 → 20.0
如果你和这个读者互相关注,那么「预测他会回复你」这一项的权重会加上 15,从 5.0 变成 20.0。回复本来就是第二高的权重,加成之后跟复制链接分享持平。

三个条件必须同时满足,少一个都拿不到:① 这条不是回复 ② 这条不是转推 ③ 作者与读者互相关注。也就是说,加成只认原创帖。

② 乘在总分上 · 第一道
站外折扣 ×0.75
话题页更狠:×0.5
读者没关注你,你这条帖的分数打七五折。在话题页面里是打对折。

容易漏的一点:读者关注的人发的回复和转推也吃这个折扣。所以这道折扣打的其实是「二手内容」和「陌生内容」两类,不完全等于「关注还是没关注」。

③ 乘在总分上 · 第二道
同作者衰减
系数 = 0.75 × 0.5ⁿ + 0.25
一次刷新里,同一个作者的第 n 条帖要乘一个越来越小的系数:第 1 条 ×1.0,第 2 条 ×0.625,第 3 条 ×0.44,第 4 条 ×0.34,一直掉到地板 0.25 就不再往下。

你在同一次刷新里第二次登场,就自动打了六二折;第三次只剩四折出头。

④ 乘在总分上 · 第三道
新作者提携
抬到第 15–16 名的分数
有一条专给小号的通道,会把一条帖硬抬到第 15–16 名的位置。但每次请求只捞一条,从所有符合条件的帖里挑分数最高的那一个,只抬它。

门槛:作者粉丝 ≤ 1000、这条帖曝光 < 1000、必须是原创帖,而且它本来就得排进有效候选的前 85%。另有一条「发布 24 小时内」,但那是实验组才要求的,不是所有人都适用。粉丝上限卡在 1000,稍有体量的账号就用不上这条通道了。

调整做完、名次排定之后还有一步:一个单独的重排服务会拿候选帖的向量算一遍,牺牲一点分数,换相邻的帖之间别太像,作用范围是前 150 名。所以同一个话题的内容会被主动打散,不会连着几条都是同类。
第三关 · 可见性

限流是只对不关注你的人隐身

分数排完了,还有最后一关能把你整条拿掉。这一关对每条帖、每个读者单独给出三种答案之一:放行、挡在提示后面(读者可以点穿)、丢弃。

关键在于规则分成两套。一套对所有人生效。另一套有 27 条,只在「这条帖是推荐给不关注作者的人」时才跑,而且只能判丢弃,同一条帖,对关注者是放行的。

同一条帖 · 同一套规则 · 换个读者
第一关
进候选池
✓ 通过
第二关
打分排序
✓ 分数够高
第三关
可见性放行
✕ 丢弃✓ 放行
这条帖在他的 For You 里根本不会出现,而你自己完全看不出异常,因为你刷的是自己关注的圈子。 这条帖正常出现在他的 For You 里。同一条帖、同一个标签,对关注者不生效。

所以 X 上的限流有一个确切形态:关注者照常看得到你,所有不关注你的人的时间线里你彻底不存在。你自己刷不出任何异常,因为你刷到的是自己关注的那批人。

工具 · 查自己

12 个账号标签,现在能查了

页面在 x.com/i/under_the_hood,能看到过去一个月账号和帖子上的标签,还能把数据下载下来。这是灰度试点,资格要三条同时满足:账号满一年、前一个月发过 10 条以上、被随机抽进测试组。

这些标签不全是人工判的。有一批离线批处理任务专门看别人怎么回应你的帖,拉黑、举报、垃圾内容举报,都是相对于点赞数来衡量的,据此给账号贴标签。所以「有多少人拉黑或举报过你」是账号级判定的直接输入,不只是单条帖的事。

账号级标签一共 12 个,按性质分三类。

成人内容相关 6 个
NsfwHighRecall
自动系统判定可能发成人内容
NsfwHighPrecision
自动系统判定很可能发成人内容
NsfwNearPerfect
同上,另一档判定
NsfwAdmin
人工按举报判定主要发成人或暴力内容
NsfwAvatarImage
头像被判定不合适,账号内容干净也会中
NsfwBannerImage
封面图被判定不合适,和头像各算一个
真实性相关 3 个
SpamHighRecall
判定可能发垃圾内容
ImpersonationHighPrecision
判定很可能在冒充别人
AbusiveHighRecall
中了还要额外过一次安全验证
和你写了什么无关 3 个
Compromised
被判定账号失窃,要重置密码
ReadOnly
有违规帖没删,账号被锁成只读
DoNotAmplify
疑似违反服务条款,待进一步审查

最后这三个判的是账号状态,跟你写了什么内容没关系,但效果和前面九个一样,对非关注者不推荐。

帖子级标签的效果分三档:最轻的只是对非关注者隐身(垃圾内容高召回、可疑链接、成人文本等);中间一档加内容警告,同时对未成年、未填年龄和未登录用户隐藏;最重的几档直接不在 X 上展示,或者把可发现性限制在作者主页,并给所有人看一个「此帖限流」的说明。

有两块明确没开源:那套内容分类器用的大模型提示词,以及一部分打标签规则。理由写在 README 里,降低被人照着钻空子的风险。X 给的补偿正是这个页面:规则不给你看,结果给你看。你能看到这些系统在你身上输出了什么,能看到有没有人工手动加的标签,还能拿着标签名回代码里对照它到底怎么影响你。

🧰 上手卡 · Under the Hood 标签查询
价格免费
门槛账号满 1 年 + 前一个月发过 10 条以上 + 被随机抽进测试组,三条都满足才看得到
收尾 · 参数会变

权重会变:互关加成三周从 20 调到 15

把这些参数拿去用之前,得先知道一件事:它们不是刻在石头上的。X 专门写了一份文档,把七月那次全网热议的互关加成拿出来当例子,讲以后该怎么读算法更新。

0–20
7 / 10
开 A/B 测试,多数人是 0
20
7 / 13
铺开到多数用户
15
7 / 24
按反馈回调
互关加成值的三周变化。7 月 10 日多数人还是 0,等于没有这个加成

7 月 10 日开 A/B 测试,用户被随机分到 5、10、15、20 四个档,绝大多数人是 0。7 月 13 日初步结果好,给很多用户铺开到 20。7 月 24 日拿到完整实验结果,加上 X 上的真实反馈,文档里举的例子是:世界杯期间有人想看更多球赛讨论,但相关的帖大多来自他们没关注的账号,于是把 20 调回了 15。

这条因果链是完整的:加成开太大,互关圈子的内容就把站外内容挤没了;正好撞上世界杯这种热闹在圈外的场景,用户体感立刻变差,所以往回收了五个点。

文档同时贴出了当时的完整代码改动,用意写在开头:往后的算法更新都会发到这个仓库,看 diff 就能知道改了什么。对靠 X 吃饭的人来说,参数变了你能当天看见,用不着等一个月后从数据下滑里往回猜。

带走 · 对照表与速查卡

按三道关口,发帖该怎么调

数字会变,关口不会。照当前这一版的参数,三关合起来就是一句话:

被陌生人看到
=
进候选池
×
分数够高
×
没被限流
三项是乘法,任何一项归零,结果就是零
先说清这张表是什么

下面这些做法,是照着代码里的参数推出来的,X 从来没有给过发帖建议。每一条都标了依据的那个参数和数值,你可以自己回仓库里核。参数变了,这张表就得跟着变。

第一关先让帖子进得了候选池
做法依据分量
想触达陌生人,只指望原创帖非关注者的回复和转推在打分前被整条扔掉出局线
时效内容当天发完超过 48 小时直接扔出候选池,写死的常数出局线
回复要挑对象一条回复要留下,被回复的人必须也是这读者关注的出局线
自己回自己的串不受影响祖先全是作者本人时,这道过滤直接放行
第二关再把分数做高
做法依据分量
做值得被复制链接转走的东西该项权重 20.0,占全部正权重 43.324 的近一半单项最高
和核心读者互相关注互关加成 +15,回复权重 5.0 → 20.0翻两番
但加成只认原创帖是回复或转推就拿不到,三个条件写死在代码里
写能引出回复的内容回复权重 5.0,是点赞 0.5 的十倍10× 点赞
让人想点关注关注作者权重 4.0,是点赞的八倍8× 点赞
一次刷新里别连发同作者第 2 条 ×0.625、第 3 条 ×0.44,地板 0.25六二折起
粉丝没过千:发原创新作者通道要求粉丝 ≤1000、该帖曝光 <1000、原创帖;另有「24 小时内」一条,但只在实验组生效抬到 15–16 位
第三关最后别踩限流
做法依据分量
先去查一遍有没有标签27 条规则中任一条,就是对所有陌生人完全隐身前置条件
头像和封面图也会被单独判NsfwAvatarImage、NsfwBannerImage 是两个独立的账号标签账号级
别发带可疑链接的帖可疑链接是帖子级标签,效果是对非关注者不推荐帖子级
引战的代价按参数算最重举报 −234、静音 −58.8、不感兴趣 −43.2、拉黑 −31.2,而全部正权重合计才 43.324最重
别做三件不用花力气的事
别做依据
别为涨曝光买会员在打分参数、重排服务、模型特征三处检索 subscription / premium / verified,零命中;候选帖的数据结构里也没有会员或蓝标字段,只有一个用来控制订阅者专属帖访问权限的字段。这份排序代码里没有付费加成。
别指望视频本身加权视频有效播放权重 0.05,还要求视频超过 10 秒;读者自己粉丝达到 1 万时该项直接归零。视频的价值在停留时长和被分享,不在这一项
别刷停留和主页点击停留权重 0.0、点进主页权重 0.0,完全不进分
下面这张卡可以逐条勾选、导出成速查表,每条都带着依据的那个参数,哪天参数变了你能自己回来对。
✅ 照参数调发帖 · 17 条速查卡
来源
X For You Feed Algorithmxai-org·GitHub 仓库·2026-08-13
本站说明
文中图表均为本站所画。权重、阈值、过滤规则和标签清单取自仓库源码与官方公告;「照着这三关,发帖该怎么调」一节的做法是按这些参数推出来的,X 未给过发帖建议。