X 开源 For You 算法:点赞值 0.5 分,复制链接分享值 20 分
- 点赞在这套算法里的权重是 0.5,「复制链接转出去」是 20,写在配置文件里的明文,不是猜的。
- 限流第一次有了确切形态:你的关注者照常看得到,不关注你的人的时间线里你彻底不存在。
- 文末那张对照表把三道关口拆成了能照着做的条目,每条都标着依据的那个数字。
这次公开的权重就是线上跑的数值
X 把 For You 时间线的算法源码开源了,同时上线了一个能查自己有没有被限流的页面。对靠 X 涨粉、导流、接单的人,这次给出的是一张明码标价表:一次点赞和一次「复制链接转出去」在平台内部分别值多少分,现在是配置文件里写死的具体数字,不用再猜。
此前的开源版本给的是结构:你知道有个打分环节,但不知道每个动作值多少;连模型部分放出来的也只是一个照着 Grok-1 改的示例。这次补上了三样。
这些数字凭什么当真?X 给的解法是跑 cron 脚本,定期把生产环境的主用值同步回仓库里的默认值,README 点名了权重文件就是这么维护的。配套还有两条:跑在 10% 以上流量的实验,目标是都能在仓库里看见;代码公开前请了第三方推荐系统专家先看过、压过。X 给这次发布定的目标只有一句:让人能自己回答「平台到底有没有在限我的流」。
一条帖要过三道关口才能到读者眼前
整套流程有七步,但对写东西的人来说,只需要记住它收成的三道关口。这三道是乘法关系,任何一道没过,结果就是零,后面两道再好也没用。
排序和可见性是两套分开的系统。前者决定顺序,后者决定能不能出现,两套服务、两套输入、两套规则。X 把这条单列成了设计决策,理解限流,先得理解这个分工。
你的回复进不了陌生人的时间线
打分之前有 17 道过滤。大部分是常识,自己的帖、拉黑静音的人、已经看过的、命中静音关键词的。但其中三条直接决定你的帖能不能被陌生人看到,第一条尤其反直觉。
另外两条:48 小时是硬线,超过就被扔出候选池,这是写死在配置里的常数,不是可调参数。还有一条管回复的,一条回复要留下来,被回复的那个人必须也是这个读者关注的;不过自己回自己的串不受影响,祖先全是作者本人时这道过滤直接放行。
模型预测的是你会做什么动作
老一代推荐系统给每条内容打一个「相关度」。这套换了个思路:模型不猜你喜不喜欢,而是分别猜你会对这条帖做出哪些具体动作,会点赞吗?会回复吗?会复制链接转走吗?会举报吗?然后有单独的一步,把这些概率合成一个数。
X 把这个「合成一个数」的步骤单列成一条设计决策,含义就在这里:预测归模型,估值归人。这次开源开出来的,正是人定的那一部分。
顺带两个细节能解释「为什么有些账号天然更容易被推」。一是帖子的点赞、回复、转推、引用、浏览数和帖龄,是分桶后直接喂给模型的输入特征。模型看得见这些数字,所以早期速度确实会自我强化。二是每条帖会被压成一串语义 ID把一条帖的图文内容压成代表「这条讲的是什么」的编码,6 层、每层从 256 个码里选一个。同主题的帖,开头几层是一样的,像图书馆的索书号,同一学科的书号段前缀相同。,同主题的帖共享编码前缀,所以一条零互动的新帖照样能被检索到,前提是它的主题正好是这个读者常看的。另外,生产环境的检索模型不给每个用户存一个专属向量,除了国家语言这类粗画像,一个读者在系统眼里就等于他互动过的那些东西。
点赞 0.5 分,复制链接分享 20 分
21 个正权重、5 个负权重,全在下面。
两个一眼能看出来的事实:全部正权重加起来是 43.324,光「复制链接分享」一项就占了将近一半;一个举报的绝对值,比全部正权重加起来还多 5 倍。
别拿这些数字直接做除法。这些值是「这个动作有多值钱」和「这个动作在全网多罕见」两件事混在一起的结果,负反馈本来就极少发生,权重要给得够大才平衡得过来。
所以「一次举报等于毁掉 468 次点赞」是错的读法。举报本来就极少发生,模型算出的举报概率是个极小的数,权重给到 −234 才能让它在加权和里有分量。
正确的读法是:这张表说的是模型算出的概率哪怕很低,只要不是零,乘上权重之后也会被放大进总分。换成体感就是:模型觉得你这条帖有一丝会被举报的味道,那一丝就够把你压下去;觉得它「像是会被人复制链接转走的那种」,一点点这种气味就能把你抬起来。
分数还要再调四次才定下来
加权求和只是起点。分数定下来之前还要再动四次,第一次发生在求和的过程中,改的是某一项的权重;后三次是乘在总分上的。下面四步可以自己点着走一遍。
三个条件必须同时满足,少一个都拿不到:① 这条不是回复 ② 这条不是转推 ③ 作者与读者互相关注。也就是说,加成只认原创帖。
容易漏的一点:读者关注的人发的回复和转推也吃这个折扣。所以这道折扣打的其实是「二手内容」和「陌生内容」两类,不完全等于「关注还是没关注」。
你在同一次刷新里第二次登场,就自动打了六二折;第三次只剩四折出头。
门槛:作者粉丝 ≤ 1000、这条帖曝光 < 1000、必须是原创帖,而且它本来就得排进有效候选的前 85%。另有一条「发布 24 小时内」,但那是实验组才要求的,不是所有人都适用。粉丝上限卡在 1000,稍有体量的账号就用不上这条通道了。
限流是只对不关注你的人隐身
分数排完了,还有最后一关能把你整条拿掉。这一关对每条帖、每个读者单独给出三种答案之一:放行、挡在提示后面(读者可以点穿)、丢弃。
关键在于规则分成两套。一套对所有人生效。另一套有 27 条,只在「这条帖是推荐给不关注作者的人」时才跑,而且只能判丢弃,同一条帖,对关注者是放行的。
所以 X 上的限流有一个确切形态:关注者照常看得到你,所有不关注你的人的时间线里你彻底不存在。你自己刷不出任何异常,因为你刷到的是自己关注的那批人。
12 个账号标签,现在能查了
页面在 x.com/i/under_the_hood,能看到过去一个月账号和帖子上的标签,还能把数据下载下来。这是灰度试点,资格要三条同时满足:账号满一年、前一个月发过 10 条以上、被随机抽进测试组。
这些标签不全是人工判的。有一批离线批处理任务专门看别人怎么回应你的帖,拉黑、举报、垃圾内容举报,都是相对于点赞数来衡量的,据此给账号贴标签。所以「有多少人拉黑或举报过你」是账号级判定的直接输入,不只是单条帖的事。
账号级标签一共 12 个,按性质分三类。
最后这三个判的是账号状态,跟你写了什么内容没关系,但效果和前面九个一样,对非关注者不推荐。
帖子级标签的效果分三档:最轻的只是对非关注者隐身(垃圾内容高召回、可疑链接、成人文本等);中间一档加内容警告,同时对未成年、未填年龄和未登录用户隐藏;最重的几档直接不在 X 上展示,或者把可发现性限制在作者主页,并给所有人看一个「此帖限流」的说明。
有两块明确没开源:那套内容分类器用的大模型提示词,以及一部分打标签规则。理由写在 README 里,降低被人照着钻空子的风险。X 给的补偿正是这个页面:规则不给你看,结果给你看。你能看到这些系统在你身上输出了什么,能看到有没有人工手动加的标签,还能拿着标签名回代码里对照它到底怎么影响你。
权重会变:互关加成三周从 20 调到 15
把这些参数拿去用之前,得先知道一件事:它们不是刻在石头上的。X 专门写了一份文档,把七月那次全网热议的互关加成拿出来当例子,讲以后该怎么读算法更新。
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,完全不进分 |
X 开源 For You 算法:点赞值 0.5 分,复制链接分享值 20 分
X 把决定 For You 曝光的算法源码和权重公开了,三道关口决定一条帖能不能被陌生人看到,一页带图讲完
↓ 一页读完 · 有一张会动的图
X 把决定 For You 时间线的算法源码开源了,同时上线了一个能查自己有没有被限流的页面。这次给出的是明码标价:一次点赞、一次复制链接转发,在系统里分别值多少分,写在配置文件里,不用再猜。
有打分环节,但权重数值、过滤与标签系统、真实训练代码都没给,模型部分只是一份示例代码。
权重真实数值、完整过滤与标签系统、真实训练代码全部公开。
这些数字来自 X 自己的代码仓库:cron 脚本定期把生产环境的权重值同步回默认配置,公开前还请第三方推荐系统专家压过测。少数用户可能落在实验组,拿到不一样的值。
整套流程有七步,收成三道关口:进候选池 → 打分排序 → 可见性放行。三关是乘法关系,任何一关没过,后面再高的分也没用;打分和放行还是两套分开的系统,一个管顺序,一个管能不能出现。
21 个正权重、5 个负权重,全部写在配置文件里,是可查的明文。
分数排完,还有最后一道关能把一条帖整个拿掉。规则分两套:一套对所有人生效,另一套 27 条只在推荐给不关注作者的人时才跑,而且只能判丢弃。
✘ 没关注你的人:27 条规则里任何一条命中,这条帖就从他的 For You 里彻底消失
你自己刷不出异常,因为你刷到的是自己关注的那批人。想查自己有没有被标签命中,去 x.com/i/under_the_hood 查(账号满一年、近一个月发过 10 条以上、被抽进测试组才看得到)。
刷不到我?
开源了
真实数据了
白搭
复制链接 20
才是硬通货
比全部正分加起来还多 5 倍
有没有标签
个别账号可能落在实验组
先让三道关口都放行