2026.08.13 · @XOpenSource · Apache 2.0

X 把 For You 的两块拼图一起摊开了

不是又发了一份「我们重视透明」的新闻稿。这次公开的是打分公式,和会让一条帖从推荐里消失的标签。代码讲规则,工具讲你身上有没有这些标签。

  • xai-org/x-algorithm
  • 权重进仓库
  • 可见性过滤
  • Under the Hood

这是什么

2026 年 8 月 13 日,X Open Source 宣布:开源「决定一条帖会不会出现在 For You、以什么顺序出现」的代码,并配套上线账号 / 帖子级标签透明度工具 Under the Hood。仓库在 github.com/xai-org/x-algorithm,许可证 Apache 2.0。

这不是第一次开源算法。仓库从 2026 年初就在更新。8 月 13 日这一版补上了此前缺的几块:把动作概率合成最终分的权重、决定一条帖是展示、遮罩还是丢掉的可见性过滤、产出这些标签的理解与规则系统、可训练的 Phoenix 真模型代码,以及第三条候选源 SimClusters。

它不是完整的线上部署栈,也不是「发什么就必火」的说明书。官方自己写明:一部分 Grox 提示词和 botmaker 规则故意没放,以免被用来绕过系统。

要解决什么

旧做法是猜。reach 掉了,创作者只能在 shadowban、限流、流量季节性之间打转。平台说「我们很公平」,外面没东西可对。

官方这回把目标写得很直:让人自己判断平台有没有限制你的传播、系统公不公平、为什么会看到某条内容。代码和工具被设计成两块咬合的拼图——

产品侧的另一层意思更 quietly 激进:排序不再假装成一个「质量分」。它公开承认自己是一张加权的行为预测表。喜欢、回复、复制链接、举报,各有各的价格。

两套管线

一次 For You 请求由 Home Mixer 编排。真正干活的是两条线:帖子管线负责找、滤、打分、挑选;混合管线再塞进广告、推荐关注和提示。帖从两个方向来,再用同一套模型排。

  • 站内 · Thunder:内存里攒着你关注的人刚发的帖。
  • 站外 · Phoenix 检索:把你和帖都编成向量,取最近邻。
  • 站外 · SimClusters:按「谁跟谁一起互动」聚类,再从簇里捞候选。这一版新写进仓库。

请求路径

一次刷新大约走完下面七步。打分发生在过滤之后、可见性终审之前。

  1. 01

    查询注水

    读观看者最近的动作序列、关注、拉黑、静音、关键词、已看过的帖、关注话题。这是模型的主输入。

  2. 02

    候选源并行

    站内 Thunder 取关注账号近帖;站外 Phoenix 检索 + SimClusters 聚类一起找未关注账号的帖。

  3. 03

    候选注水

    补正文、媒体、作者与账号标签、引用帖、语言、互动数、订阅状态。

  4. 04

    打分前过滤

    去重、超过 48 小时、自己的帖、拉黑静音、已看过、订户帖权限、静音词等。

  5. 05

    打分

    Phoenix 预测每个动作的概率;RankingScorer 加权求和,再做作者衰减、站外折扣、新作者提升;VMRanker 用 DPP 重排多样性。

  6. 06

    取 Top K

    按最终分排序,留下前 K 条。

  7. 07

    打分后过滤 + 混合

    可见性过滤决定 ALLOW / INTERSTITIAL / DROP;再混入广告、Who to Follow、提示。

打标路径

标签不是请求时现算的。内容理解一直在跑,规则往账号和帖上盖戳,请求路径只读取结果。

  1. A

    内容理解(持续跑)

    grox 给帖打垃圾 / 成人 / 暴力分类;媒体模型看图和视频;agatha、bdsm、user-cred-v2 给账号打分。

  2. B

    打标规则

    scarecrow + botmaker 按事件套规则;abuse-enforcement-service 按模型分处置账号。

  3. C

    写入存储

    标签落库。请求路径只读,不在这一刻现算。

  4. D

    可见性过滤

    对「这条帖 × 这个人」给出 ALLOW、INTERSTITIAL 或 DROP。第一条命中 DROP 的规则就停。

排序

决定先后

Phoenix 只看「这个人 × 这条帖」。候选之间互不注意,分数可缓存、可复现。

过滤

决定能不能出现

另一套服务、另一套输入、另一套规则。高分过不了标签,一样进不了推荐。

打分公式

Phoenix 不吐一个「好不好看」的分数。它预测观看者对这条帖会做每个动作的概率。合成是另一步,写在home-mixer/params/param.rs里,算术在ranking_scorer.rs

Final Score = Σ (weightᵢ × P(actionᵢ))

仓库里有一句容易被滑过去的注释:这些权重同时反映「动作有多值钱」和「这个动作在全网有多稀有」。负反馈本身就少,所以绝对值被拉得很大;复制链接也少,所以 +20 并不等于「复制链接比点赞金贵四十倍」这种口语算法。先看倾向,再看权重。

动作权重备注
复制链接互动+20稀有动作,权重被放大
回复互动+5
引用互动+5
私信分享互动+5
关注作者作者+4
分享互动+2
转发互动+1
点赞互动+0.5
点击帖子点击+0.4
打开外链点击+0.2
展开图片点击+0.05
打开视频点击+0.05
视频优质完播注意力+0.05
点击被引帖点击+0.05
未探索帖加分作者+0.02
连续停留(每单位)注意力+0.004
离散停留标记注意力0当前默认关闭
点击主页点击0
未停留负反馈-0.02
拉黑作者负反馈-31.2
不感兴趣负反馈-43.2
静音作者负反馈-58.8
举报负反馈-234

互关之间的回复另有 +15 加成,叠上回复本身的 +5,等价于 20。离散的「停留过」标记权重是 0;连续停留时间有一个很小的 +0.004。社区里「阅读时长完全不算」和「停留才是王」两种说法,对 8 月 13 日这份默认值来说都不精确。

三个后处理

  1. 作者多样性:同一作者从第二条起乘衰减 0.5,下限 0.25。刷屏会被自己压住。
  2. 站外折扣:未关注账号的帖乘 0.75。你关注的人发的回复、转发,也会按站外再打一次折。话题向的站外更狠,0.5
  3. 低曝光作者:印象数低于阈值的作者,会被往大约第 15–16 位附近抬一抬。这是位置提升,不是把分数乘一个很大的系数。

之后 VMRanker 用行列式点过程按 embedding 重排,用一点点分数换邻居不那么像。再往后还有 48 小时年龄墙:更老的帖在打分前就被滤掉。

分数实验室

不用懂公式也能玩。点一种帖,再改「每 100 个看到的人里有几个人会动手」。分数是示意,不是线上校准值——用来感受数量级:几条认真回复,能抵过一大堆赞;一次举报,能把前面抹掉。

先点一种帖。滑条表示:每 100 个看到的人里,大约几个人会动手。右边的分是仓库权重乘上去之后的排序分,不是点赞数。

回复和复制链接把分拉上去。

下一步:点「只赚赞」,看同样曝光下分会矮多少。

这条帖的下场

2.17

会往前排

这类帖更容易被推到前面。

同样 100 个看见的人,「只赚赞」大约是 0.38 分。 现在是它的 5.8 倍。

每 100 个看到的人里

分从哪来

  • 回复8+1.60
  • 引用4+0.20
  • 复制链接1+0.20
  • 点赞18+0.09
  • 关注作者2+0.08

谁在看

看的人关注了你吗?

回复来自互关吗?

这一刷里,你已经出了几条?

标签与限流

可见性过滤对「这条帖 × 这个观看者」只回答三件事:ALLOW 正常展示,INTERSTITIAL 加遮罩,DROP 丢掉。第一条给出 DROP 的规则会终止评估。被丢掉的帖,它的祖先、引用对象、被转发对象也会被连带拿掉。

更关键的产品事实:有一整组规则只对「推荐给非粉丝」生效,而且只能 DROP。高召回垃圾、宽网成人内容、Do Not Amplify 都落在这里。同一条帖,粉丝时间线可以过,For You 对陌生人可以不过。这不是都市传说,是visibility-filtering/rules/registry.rs里的分支。

标签范围动作白话
SPAM全局DROP被标成垃圾信息,粉丝时间线也会丢。
SPAM_HIGH_RECALL帖 / 账号仅推荐DROP宽网垃圾:宁可误伤。粉丝仍可见,非粉丝推荐直接拿掉。
DO_NOT_AMPLIFY帖 / 账号仅推荐DROP不要放大。不进非粉丝 For You,粉丝关系不受影响。
NSFW_HIGH_PRECISION全局 / 仅推荐INTERSTITIAL高精度成人内容:对粉丝可加遮罩;对非粉丝推荐则可能直接 DROP。
NSFW_HIGH_RECALL帖 / 账号仅推荐DROP宽网成人内容,只挡推荐。
GORE_AND_VIOLENCE全局 / 仅推荐INTERSTITIAL血腥暴力:遮罩展示;高精度标签在推荐里会 DROP。
FOSNR_HATEFUL_CONDUCT全局DROP仇恨言论相关标签,直接丢弃。
FOSNR_VIOLENT_SPEECH全局DROP暴力言论相关标签。
FOSNR_ABUSE全局DROP辱骂虐待。另有「仅站外」版本专门挡非粉丝。
FOSNR_CIVIC_INTEGRITY全局DROP公民诚信 / 选举相关违规。
MALICIOUS_URL仅推荐DROP恶意链接,不进推荐。
COMPROMISED_USER账号仅推荐DROP账号被判定失陷。
IMPERSONATION_HIGH_PRECISION账号仅推荐DROP高精度假冒账号。
SUSPENDED / DEACTIVATED作者状态全局DROP封禁、注销、被擦除、被下架——整账号不可见。
PDNA / BOUNCE / LEGAL全局DROP权利人通知、退回、法律下架、本地法下架。

标签从哪来:grox 看文本和媒体,media-model-proxy / clip 看图和视频,agatha 看别人对你的拉黑与举报相对点赞的比例,bdsm 看账号动作序列里的不真实行为,user-cred-v2 在关注图和互动边上跑 PageRank。scarecrow 把规则套到事件上;一部分规则没进仓库。

引擎盖下

Under the Hood 是这次发布的另一半。入口在 x.com/i/under_the_hood。服务端聚合逻辑在仓库的under-the-hood/,按日收集账号和帖上的可见性标签,再按周期汇总。

  • 近一个月发帖不少于 10 条。
  • 账号至少满一年。
  • 先对符合条件的账号做随机试点,再按反馈扩大。
  • 可看账号级、帖子级标签,并可下载数据。

官方强调三个好处:能看见这些系统的结果,而不是只看见代码;能分辨标签是自动打的还是人工打的;能拿自己身上的标签去对仓库里的规则,判断它有没有压你的可见性。

设计选择

  1. 多动作预测,而不是一个质量分。合成权重是显式的、可改的、可被审计的。这让「回复比赞贵」不再是口播。
  2. 候选隔离。推理时帖与帖不能互相注意,只注意观看者上下文。同一条帖的分数不取决于它和谁被放进同一个 batch,所以可缓存、可复现。
  3. 哈希嵌入。检索和排序都用多哈希查表,没有词表要维护,新帖立刻可表示。
  4. 排序和可见性拆开。不同服务、不同输入、不同规则。高分过不了闸门,照样没有推荐。
  5. 可组合管线。candidate-pipeline 把源、注水、过滤、打分、选择、副作用拆成阶段,能并行的并行。

实验方面,官方说会把占流量足够大(例如 10% 以上)的实验反映进仓库;生产默认值由 cron 回写到这份代码里。一份docs/BIDIRECTIONAL_BOOST_CHANGE.md专门记录了互关加成如何随时间改动——这才是「持续开源」该长成的样子。

没开源的

仓库自己列了清单:Grox 里具体的 LLM 提示词(j2 文件)、部分 botmaker 规则、部署与基础设施(如 xai_service_runnerxai_kafka)。Phoenix 是少数被做成可端到端跑的部分:有 Cargo 工作区、pyproject、QUICKSTART 和合成数据,能训练并侍奉一个小模型。

产品副总裁 Keith Coleman 对媒体说,这版代码量大约是此前开源的 10 到 15 倍。数字以官方后续说明为准;能确定的是,8 月 13 日这一刀切在「影响可见性的逻辑」,不是「能在笔记本上复现整站 X」。

社区怎么读

主帖发出后,读得比较有用的不是庆祝,而是三件事:把公式读短、指出激励扭曲、问创作者接下来该怎么做。

  • 打分好的帖仍可能被安全规则拿掉。同一条帖可以对粉丝可见,却被拦在非粉丝推荐之外。

    Rohan Paul · @rohanpaul_ai
  • 举报把一条帖几乎直接打穿,会激励「看不顺眼就举报」——哪怕并不违规。

    Tarro ζ · @hereforthezoo
  • 创作者真正需要的是一条清楚的「怎么发才不被限流」路径:把想说的话,装进不会触发限流的框架。

    Autism Capital · @AutismCapital
  • 最大的实用变化:可以不再猜 shadowban,改去对标签和排序逻辑。

    Niakris · @13_niakris
  • 手机里装了哪些应用会进排序特征。Threads 在代码里叫 barcelona;Twitter 旧客户端不再计分。

    giulio · @giuliosmall
  • hey grok, read the algo. How do i make a banger?

    vittorio · @IterIntellectus

若把这些声音压成一句可执行的话:原帖、让人想回复或引用或复制链接的原帖,比攒赞有效;互关小圈的认真回复被系统额外加价;负反馈贵得不成比例,所以滥报会成为真实的攻击面;标签透明度把「是不是影子封禁」从玄学改成对表。

来源