Contradicted by the source
“转发的价值是点赞的20倍。”
转发权重(RetweetWeight)为1.0,点赞权重(FavoriteWeight)为0.5,因此转发的权重是点赞的两倍——而不是二十倍。
来源: 算法的任何已发布版本都从未采用过20。2023年的重型排名器也将转发权重设为1.0,点赞权重设为0.5。
开源 · 源头解读
2026年8月13日,X 公布了其在一月份未公开的数字排名权重。大多数关于“X 算法”的流传数据都是错误的——通常是因为它们对2023年模型是正确的,而该模型已不复存在。此页面上的每个数字都是指向其来源代码行(固定到某个提交)的链接。
粘贴任何公开帖子的链接。您将获得实际适用于该帖子的规则——包括可能隐藏它的国家/地区限制——这些规则从固定提交中读取。
权重
X states it runs cron scripts that set the defaults in the repository's code to be the primary production values, and aims for experiments running at 10% or more of traffic to be visible in the repository. The values below are those defaults, read at the pinned commit.
这些是评分器应用的权重——已测量,而非承诺。在评分之前,`perturbed()` 将以下 27 个权重中的 25 个乘以 `(sigma * perturbation_sign(salt, user_id, head)).exp()`——每个观看者和每个头部(head)的符号是固定的。它保留的 2 个是修饰符权重:BidirectionalFollowDwellWeightBoost, BidirectionalFollowReplyWeightBoost。`WeightPerturbationSigma` 和 `WeightPerturbationSalt` 是功能开关:X 无需发布代码即可更改它们。在固定提交中,`WeightPerturbationSigma` 为 0.0,并且 `sigma <= 0.0` 的守卫条件使它们保持不变。 在源头阅读
每一行都带有其读取的代码 — 按解释以展开实际的 Rust 代码行,无需离开页面。
| 操作 | 权重 | 对比同类 | 来源 |
|---|---|---|---|
| binaryMultiplies the predicted probability of a discrete action. | |||
| share via copy linkShareViaCopyLinkWeight | 20 | 40× | |
| quoteQuoteWeight | 5 | 10× | |
| replyReplyWeight | 5 | 10× | |
| share via dmShareViaDmWeight | 5 | 10× | |
| follow authorFollowAuthorWeight | 4 | 8× | |
| shareShareWeight | 2 | 4× | |
| retweetRetweetWeight | 1 | 2× | |
| favoriteFavoriteWeight | 0.5 | 1× | |
| clickClickWeight | 0.3 | 0.6× | |
| open linkOpenLinkWeight | 0.2 | 0.4× | |
| video openVideoOpenWeight | 0.07 | 0.1× | |
| dwellDwellWeight | 0.05 | 0.1× | |
| photo expandPhotoExpandWeight | 0.05 | 0.1× | |
| quoted clickQuotedClickWeight | 0.05 | 0.1× | |
| post unexploredPostUnexploredWeight | 0.02 | 0× | |
| profile clickProfileClickWeight | 0 | — | |
| quoted vqvQuotedVqvWeight | 0 | — | |
| vqvVqvWeight | 0 | — | |
| not dwelledNotDwelledWeight | -0.02 | −0× | |
| block authorBlockAuthorWeight | -31.2 | −62× | |
| not interestedNotInterestedWeight | -47.52 | −95× | |
| mute authorMuteAuthorWeight | -58.8 | −118× | |
| reportReportWeight | -234 | −468× | |
| continuousApplies to a quantity (watch or dwell seconds), not a probability. | |||
| cont click dwell timeContClickDwellTimeWeight | 0.4 | — | |
| cont dwell timeContDwellTimeWeight | 0.004 | — | |
| modifierNot a head weight: adds to another weight, or gates a branch. | |||
| bidirectional follow reply weight boostBidirectionalFollowReplyWeightBoost | 15 | — | |
| bidirectional follow dwell weight boostBidirectionalFollowDwellWeightBoost | 0 | — | |
将其分为二元、连续和修饰符是我们的分类方式 — the weights struct and each field's use in vm-ranker/scoring/value_model.rs. X 未发布该分类法;我们将其分开,因为只有二元类型可以相互比较。
为每个操作设置一个预测概率,并观察其对分数的贡献。这里只提供乘以概率的权重——这是代码实际执行的算术。
为什么这里没有“点赞等价物”: Weights multiply a predicted probability, not an engagement count. Dividing one weight by another does not yield an exchange rate between actions.
声明核查
这些并非凭空捏造。其中大部分是 Twitter 在 2023 年发布的重度排名器(一个后来被替换的 Scala 管道)的准确数据。在它们所描述的事物不复存在后,这些数据仍在流传。
下面的每个声明都附带了支持它的搜索——模式、文件、计数——因此您可以针对固定的提交自行运行它们。您在这里永远不会看到与我们矛盾的声明:如果出现,此页面将无法构建,而不是发布它所反驳的句子。
Contradicted by the source
“转发的价值是点赞的20倍。”
转发权重(RetweetWeight)为1.0,点赞权重(FavoriteWeight)为0.5,因此转发的权重是点赞的两倍——而不是二十倍。
来源: 算法的任何已发布版本都从未采用过20。2023年的重型排名器也将转发权重设为1.0,点赞权重设为0.5。
Was true, of an older version
“回复的价值是点赞的27倍(或13.5倍)。”
回复权重(ReplyWeight)为5.0,点赞权重(FavoriteWeight)为0.5,因此是十倍——在互相关注的用户之间则是四十倍,因为双向关注回复权重提升(BidirectionalFollowReplyWeightBoost)会为互相关注账户之间的原创帖子回复权重增加15.0。
来源: 这两个数字都曾真实存在,但属于一个已不再使用的模型:2023年的重型排名器在2023年3月31日发布了27,随后在2023年4月5日发布了13.5。它们描述的是一个已被当前Rust版本取代的Scala管道。
Was true, of an older version
“个人资料点击的价值是点赞的12倍。”
个人资料点击权重(ProfileClickWeight)为0.0。个人资料点击对加权分数没有任何贡献。
来源: 12.0是2023年“良好个人资料点击”(`good_profile_click`)的权重——这是一个不同的复合信号(打开个人资料然后点赞或回复)。当前模型有一个普通的个人资料点击头部,权重为零。
No such parameter exists
“书签的价值是10个点赞——书签是最强的信号。”
param.rs中没有书签权重,因此书签根本不计入加权分数。然而,它们并非不可见:`bookmark_count`作为模型特征被注入到每个候选对象中,并且`ClientTweetBookmark`计为查看者历史记录中的一次正向互动。已读取,但未加权。
来源: 2025年的Scala更新确实声明了一个`home_mixer_model_weight_bookmark`参数——默认值为0.0。任何已发布版本都从未将其权重设为10。
我们在固定提交中搜索的内容
param.rs 中没有书签权重
bookmark · 2 个文件 · 0 个匹配项
bookmark_count 作为模型特征注入到每个候选对象中
bookmark_count · 1 个文件 · 5 个匹配项
ClientTweetBookmark 计为查看者历史记录中的一次正向互动
ClientTweetBookmark · 1 个文件 · 1 个匹配项
Right numbers, wrong reading
“一次举报抵消468个点赞(−234.0 ÷ 0.5)。”
算术是正确的,但结论仍然是错误的。权重乘以的是“预测概率”,而不是行动计数。X指出,举报的基线概率比点赞低一千多倍,因此将一个权重除以另一个权重并不能得出行动之间的兑换率。
来源: 这个说法并非过时——它是对正确数字的误读,甚至出现在发布正确表格的页面上。X在2026年8月14日将其README中添加了关于此的明确警告。
No such parameter exists
“互动速度权重为1000倍,作者权威权重为50倍,时效性权重为22倍。”
在param.rs中不存在名为速度、权威或时效性的参数。年龄根本不是权重——它是一个硬性截止条件:AgeFilter会删除任何早于MAX_POST_AGE(一个编译常量,即48小时)的帖子。没有任何因素会根据帖子的新鲜度来倍增其分数。
我们在固定提交中搜索的内容
param.rs 中不存在名为速度、权威或时效性的参数
velocity|authority|recency · 1 个文件 · 0 个匹配项
AgeFilter 会删除任何早于 MAX_POST_AGE 的帖子
AgeFilter::new\(.*MAX_POST_AGE · 1 个文件 · 1 个匹配项
Contradicted by the source
“一个有组织的群体可以通过大规模举报或大规模屏蔽来埋没你的帖子。”
X在param.rs的注释中直接解决了这个问题,其描述的机制是可验证的:模型预测你采取行动的可能性,因此推荐是个性化的——来自某个群体的举报主要影响推荐给与该群体相似的人的内容。而且,互动只有在主时间线上显示的帖子中发生才算数:例如,直接从群聊导航到帖子,对排名没有影响。
来源: 这是从非常大的负权重中得出的合理推断,但仅凭这些权重并不能支持此结论。
我们在固定提交中搜索的内容
X 在 param.rs 的注释中直接解决了这个问题
recommendations are personalized · 1 个文件 · 1 个匹配项
Was true, of an older version
“X发布了代码,但出于安全原因保留了排名权重。”
2026年1月发布时属实,但自2026年8月13日起不再属实。数值默认值现在位于param.rs中,X声明cron脚本使其与主要生产值保持一致。
来源: 对2026年1月发布情况的准确报道,但8月之后从未更新。
我们在固定提交中搜索的内容
X 表示 cron 脚本使其与主要生产值保持一致
cron scripts that set the defaults · 1 个文件 · 1 个匹配项
Contradicted by the source
“包含外部链接的帖子会被降权。”
在已发布的排名代码中,OpenLinkWeight为正值0.2并无条件应用——点击链接会获得奖励。链接仅通过MALICIOUS_URL和DO_NOT_AMPLIFY等安全标签受到惩罚,这些标签是关于目标地址的,而非关于外部链接本身。
我们在固定提交中搜索的内容
链接仅通过 MALICIOUS_URL 等安全标签进行惩罚
MALICIOUS_URL · 7 个文件 · 1 个匹配项
… 以及 DO_NOT_AMPLIFY
DO_NOT_AMPLIFY · 7 个文件 · 1 个匹配项
Contradicted by the source
“付费认证标志可获得排名提升。”
param.rs中不存在高级、已验证或订阅乘数,已发布的评分器中也没有此类重新评分器。2023年的代码确实包含一个——针对蓝色认证作者的站内4.0倍和站外2.0倍乘数——但它已从当前代码树中移除。诚实限制:Phoenix是一个学习模型,其权重未公开,因此无法通过阅读代码排除学习到的相关性。
来源: 2023年的Scala管道确实应用了4.0 / 2.0的蓝色认证乘数。
我们在固定提交中搜索的内容
param.rs 中不存在高级、已验证或订阅乘数
premium|verified|subscription · 1 个文件 · 0 个匹配项
已发布的评分器中没有此类重新评分器
premium|verified|subscription · 8 个文件 · 0 个匹配项
Contradicted by the source
“X 现在在其开源存储库中发布政府下架请求,巴西是其中唯一列出的国家。”
该仓库发布的是执行机制,而非请求。对受限国家/地区的用户隐藏帖子的规则——LegalTakedown 和 LocalLawsTakedown——会读取一个带有国家/地区代码的原因,但该原因是在运行时从一个未公开的服务中获取的,并且包含它的类型 (TakedownReason) 定义在一个仓库中不存在的 crate 中。X 还发布了围绕该类型在 Scala 中的实现细节:一个 gizmoduck 读取过滤器,在读取返回之前剥离未强制执行的下架;一个 Tweet 实体服务列和转换,用于获取帖子的下架原因;以及将这些原因转换为账户自身所显示标签的幕后作业。因此,承载它的 Thrift 结构——Takedowns { country_codes, takedown_country_reasons }——由已发布的代码在 3 个文件中读取:`takedowns/gizmoduck/RedactUnenforcedTakedownsFilter.scala`、`takedowns/tweet-entity-service/TakedownReasonsTransform.scala`、`under-the-hood/scalding/UthPctdAccountTakedownEventsJob.scala`。这增加的是更多机制,而非单个请求:在固定提交中,除了测试夹具之外,没有一个国家/地区代码被写入下架原因旁边——下架代码持有的唯一两个字母代码是 `xx`、`xy`,这是源代码自身命名的全球哨兵,它们意味着全球各地,与特定国家/地区相反。而且,以其自身名称向 Tweet 实体服务请求这些代码的方法 get_takedown_country_codes 根本没有出现在仓库中的任何地方。巴西的情况完全不同:一份硬编码的 2795 个账户列表,这些账户被报告给选举法院,来源于公开的候选人数据集,除非用户关注这些账户,否则它们将对全球所有用户从“为你推荐”中移除——完全没有国家/地区条件,这与此处法律下架的工作方式相反。诚实限制:一个没有硬编码国家/地区的仓库并不意味着一个没有国家/地区下架的平台。这些请求确实存在;它们独立于仓库,在透明度中心和 DSA 报告中汇总。
来源: X 自己在 8 月 14 日的帖子中宣布了两件事:排名权重和巴西选举过滤器。马斯克第二天以 61 个字符引用转发了该帖子——“政府要求的任何审查现在都清晰可见”——但没有提及存储库、请求或国家;媒体将其与一个已宣布但未发布的面向用户的通知联系起来。“请求”和“在开源算法中”这两个词首次同时出现在一个聚合器账户上。
我们在固定提交中搜索的内容
已发布的 Scala 底层机制读取 Thrift 删除结构——Takedowns { country_codes, takedown_country_reasons }
\bTakedowns\b|\btakedownCountryReasons\b · 43 个文件 · 15 个匹配项
Contradicted by the source
“屏蔽关键词会隐藏所有包含该关键词的帖子。”
静音关键词并非单一规则。已发布的 timeline 服务通过 2 个不读取相同文本的过滤器应用它:ViewerMutedKeywordFilter,注册在 phoenix_candidate_pipeline.rs 中,将其与 tweet_text 进行比较;FollowingViewerMutedKeywordFilter,注册在 reverse_chron_posts_pipeline.rs 中,将其与 ancestor_texts、quoted_tweet_text 和 tweet_text 进行比较。其中一些过滤器读取的字段——ancestor_texts 和 quoted_tweet_text——由 conversation_gap_ancestor_hydrator.rs、quote_hydrator.rs 和 quoted_post_text_hydrator.rs 写入,这些文件注册在 phoenix_candidate_pipeline.rs、phoenix_scores_pipeline.rs 和 reverse_chron_posts_pipeline.rs 中。不运行这些 hydrator 的管道永远不会填充它们:在这种情况下,引用或祖先帖子的文本不仅未被读取,而且根本不存在。在 timeline 之外,可见性过滤规则引擎——无论帖子出现在何处都能隐藏它的层——包含 ViewerMutesAuthor (Mutes) 和 ViewerMutesRetweets (MuteRetweets),并且没有规则的决策会读取关键词。此仓库中唯一命名的静音关键词结果 MatchesMutedKeyword 仅出现 1 次——在 graphql_results.rs 中——并且仅出现在将其映射到插页式标签的匹配分支的左侧。这里没有任何东西决定它;任何决定它的东西都未公开。两个诚实限制。此仓库是构建 timeline 的服务:静音在通知或搜索中的作用是在其他地方决定的,在 X 未发布的代码中,因此这里的缺失是仓库的缺失,而非产品的缺失。我们也不会告诉您每个管道服务于哪个选项卡——这种连接通过多个层运行,我们无法清晰提取的映射是不会发布的映射。
来源: 屏蔽是产品中的一个单一设置,因此它被理解为适用于所有地方的单一规则。已发布的代码显示的情况更为狭窄:屏蔽关键词在动态时间线组装时应用,并且应用它的过滤器并非都读取相同的文本——因此,帖子可能在某个位置包含该词,而该路径上的任何过滤器都从未查看过该位置。
处理流程
候选来源生成帖子,数据填充器附加特征,过滤器可以直接删除帖子,评分器只能移动帖子。每个节点都链接到其文件。边说明了它们的来源——从代码中读取,由目录布局提供,或者,最弱的情况下,通过名称匹配。
按国家/地区
两个国家列表决定了您阅读来源的变化,它们含义不同。一个列表对未声明年龄的观看者隐藏敏感媒体内容。另一个列表仅决定模型可以区分哪些国家——所有其他国家都变为“其他”,这并非限制,而是一个盲点。下方每张卡片都说明了其列表的来源:代码应用的常量,或运行时参数可替换的备用值。
点击玫瑰色国家,逐一查看此代码在该国命名的账户。 在整个存储库中,只有一个国家拥有此类列表。
检查方式: “整个仓库”是在整个仓库中进行检查的,而非针对单一语言:读取固定提交下的每个文件,并通过其“形状”找到一个命名账户列表 — 即注释行中写入的@句柄,紧随其后的是账户的数字ID。这种形状不依赖于Rust,因此,当同一列表以另一种语言发布时,构建会指出这一点,而不是页面保持静默。
2798 个账户在源代码中通过数字 ID 和句柄直接命名。执行路径中的其他所有内容都作用于运行时附加的标签,并且该标签未公开。
Brazil2026ElectionFilterhome-mixer/filters/brazil_2026_election_filter.rs:73向选举法院报告的巴西2026年选举用户ID。
巴西2026年选举过滤器 第23.610号选举决议第28条第1º-A款:使用推荐系统的应用程序提供商必须根据本条第1款的规定,从结果中排除向选举法院报告的频道和个人资料,并且,除付费推广情况外,还需排除其上发布的内容。https://dadosabertos.tse.jus.br/dataset/candidatos-2026
⚠ 过滤器文件或注册该文件的代码行附近没有出现国家、市场或地区条件。这是关于已发布代码的声明——哪个管道服务哪个市场可能由X未发布的层级决定。
此文件中还命名了 52 个账户,但它们未被过滤——代码说明了每个账户被保留的原因:44 个:“@… 未找到活跃账户。”;8 个:“我们认为候选人报告的账户 @… 并非候选人实际账户,因此我们目前未对其进行过滤。”因此,此处共计 2847 个命名账户,其中 2795 个实际被过滤。
在管道中注册于 home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:391
文件中的数字ID已混淆 — 存储库本身如此说明。句柄则没有。
ThunderServiceImplthunder/thunder_service.rs:30⚠ 在过滤器文件或其注册行附近,未出现国家、市场或地区条件。这是对已发布代码的说明——哪个管道服务哪个市场可能由X未发布的层级决定。
所有 3 个账户,按来源顺序
文件中的数字ID已混淆 — 存储库本身如此说明。句柄则没有。
此列表转载自一个公共的Apache-2.0存储库,该存储库声明包含句柄是为了透明度。我们报告代码的功能。我们不认可、验证或评判将任何账户列入此处的报告。
政府下架
该存储库发布了在请求国隐藏帖子不让读者看到的规则。它不发布任何请求,也不发布任何国家:携带国家代码的原因是在运行时从X未发布的服务中获取的。
0
存储库中发布的下架请求
0
附属于请求的国家
2
基于下架原因的规则
计数方式: 存储库中的每个文件都在构建时被扫描——不仅仅是 Rust 文件,因为删除的底层机制也存在于 Scala 中,并且在事物不再存在的地方测量的缺失并非真正的缺失。测试代码在两个层面被移除——父级声明 `#[cfg(test)] mod …;` 的文件被排除,其余部分则剪切 `#[cfg(test)]` 主体——所寻找的是删除原因旁边写入的国家/地区代码。源代码自身命名的全球性两位字母代码 (`xx`, `xy`) 意味着“无处不在”而非某个国家/地区:它们被单独列出并公开。如果这个数字不再是零,构建就会失败——上述声明不会自行失效。
reads a DMCA flag on the media
该规则委托给别处:字段实际读取于 TweetPredicate::HasDmcaMedia · rule_spec.rs:661, has_dmca_media() · tweet.rs:34
reads allow/deny country lists carried by the media — not a takedown reason
该规则委托给别处:字段实际读取于 media_restricted_in() · tweet.rs:68
reads the takedown reasons attached to the post at runtime — Dmca, LegalRequest, UnspecifiedReason
该规则委托给别处:字段实际读取于 takedown_in() · tweet.rs:58
reads the takedown reasons attached to the post at runtime — BystanderReport
该规则委托给别处:字段实际读取于 takedown_in() · tweet.rs:58
国家来源: 承载它的类型 TakedownReason 未在此存储库的任何文件中定义——它是从 xai_core_entities,一个未在此处发布的crate中导入的。
而用于获取下架国家的方法, get_takedown_country_codes, 在整个存储库中均未出现. 接口存在于X方;已发布的代码从未调用它。
正确理解这一点:一个没有硬编码国家的存储库并不意味着一个没有国家下架的平台。请求是存在的——它们存在于此存储库之外,在X的透明度报告中按国家和半年汇总,而非逐条通知。这里衡量的是代码所言,而非公司所为。
方法与限制
上述权重应用于由 Phoenix 生成的概率,Phoenix 是一种学习型转换器,其训练参数未公开。阅读代码无法排除模型自行学习到的关联性。
X 声明其保留 Grox LLM 提示模板和部分执行规则,以减少滥用。分类器代码和规则引擎已发布;提示文本未发布。
X 表示 cron 脚本使这些默认值与生产值保持一致,并且流量超过约 10% 的实验应在此处可见。这两者都是关于一个 X 外部无人能观察到的系统的声明。
参数名称和代码摘录保留英文:因为它们引用源代码,翻译后的标识符将不再与引用的行匹配。声明检查已翻译 — 其中的标识符保持不变。
这是我们销售的方法,应用于一个备受争议的数据源:我们将不透明的数据转化为图谱,其中每个数值都可追溯其来源,并且拒绝发布任何无法引证的数字。对于公共采购、研究资助和公司数据,我们也采用同样的方法。