深挖 X 推荐算法其二:你的互动真的是有效的吗?
你以为点赞、回复、转推都是”互动”?在 X 的算法眼里,这三者的价值差距大到离谱。一条转推顶 20 个赞,一条回复顶 13 个赞。更让人意外的是,X 的代码里定义了 15 种互动类型,而不是你以为的 3 种。
上一篇我们拆了互关的逻辑。这一篇深入排序模型的核心:Phoenix 到底怎么给你的互动打分。
Key Takeaways
- X 的排序模型识别 15 种互动行为,不是 3 种——点赞、回复、转推只是冰山一角
- 转推权重约为点赞的 20 倍,回复约 13.5 倍,书签约 10 倍——这个差距决定了一切
- 帖子发布后每 6 小时可见度减半,前 30 分钟的互动对排名影响最大
15 种互动行为——你以为的”互动”只是冰山一角
打开 X 的开源代码,找到 PredictedScoreFeature.scala 文件,你会看到一个让人意外的列表。Phoenix 模型不是预测”用户会不会互动”,而是同时预测 15 种不同的互动行为。
val PredictedScoreFeatures: Seq[PredictedScoreFeature] = Seq( PredictedFavoriteScoreFeature, // 点赞 PredictedReplyScoreFeature, // 回复 PredictedRetweetScoreFeature, // 转推 PredictedReplyEngagedByAuthorScoreFeature, // 作者回复的互动 PredictedGoodClickConvoDescFavoritedOrRepliedScoreFeature, // 有效点击(后点赞或回复) PredictedGoodClickConvoDescUamGt2ScoreFeature, // 深度停留点击 PredictedGoodProfileClickScoreFeature, // 有效主页点击 PredictedVideoQualityViewScoreFeature, // 视频质量观看 PredictedVideoQualityViewImmersiveScoreFeature, // 沉浸式视频观看 PredictedBookmarkScoreFeature, // 书签 PredictedShareScoreFeature, // 分享 PredictedDwellScoreFeature, // 停留 PredictedVideoQualityWatchScoreFeature, // 视频质量观看(完整版) PredictedVideoWatchTimeMsFeature, // 视频观看时长 PredictedNegativeFeedbackV2ScoreFeature, // 负面反馈)15 种。不是 3 种。
而且这 15 种行为被分成了三类:正向互动(点赞、回复、转推等)、中性行为(停留、点击)、负向互动(举报、屏蔽、“不感兴趣”)。
为什么是 15 种而不是 3 种?
因为算法要区分”真的喜欢”和”随便看看”。一个用户点赞了你的帖子,可能是真的喜欢,也可能只是手滑。但如果他点赞后还回复了,或者回复后作者也回复了他,这才是真正的深度互动。
代码里有一个特别的设计:PredictedReplyEngagedByAuthorScoreFeature——当用户回复了你的帖子,而你也回复了他,这个互动的权重会单独计算。这就是为什么很多大 V 会回复粉丝的评论:不只是礼貌,是在给算法喂信号。
| 互动类型 | 代码名称 | 含义 |
|---|---|---|
| 点赞 | fav | 基础互动 |
| 回复 | reply | 中度参与 |
| 转推 | retweet | 高度认同 |
| 作者回复互动 | reply_engaged_by_author | 深度对话 |
| 有效点击 | click_engaged | 点击后点赞或回复 |
| 深度停留 | click_dwell | 停留超过 2 秒的点击 |
| 有效主页点击 | good_profile_click | 点击主页并产生互动 |
| 书签 | bookmark | 收藏 |
| 分享 | share | 站外分享 |
| 停留 | dwell | 在帖子上停留 |
| 视频质量观看 | vqv | 完整观看视频 |
| 视频观看时长 | video_watch_time_ms | 视频停留时间 |
| 负面反馈 | negative_feedback_v2 | 屏蔽、不感兴趣等 |
权重分配——转推为什么值 20 个赞?
代码里定义了权重参数,但默认值都是 0.0。这不是 bug,而是设计:权重通过 A/B 测试动态调整,不在代码里硬编码。
object ModelWeights { object FavParam extends FSBoundedParam[Double]( name = "home_mixer_model_weight_fav", default = 0.0, // 默认 0,实际值通过配置设置 min = -10000.0, max = 10000.0 ) object RetweetParam extends FSBoundedParam[Double]( name = "home_mixer_model_weight_retweet", default = 0.0, min = -10000.0, max = 10000.0 ) object ReplyParam extends FSBoundedParam[Double]( name = "home_mixer_model_weight_reply", default = 0.0, min = -10000.0, max = 10000.0 ) // ... 其他权重参数}虽然默认值是 0,但从代码结构和 Twitter 工程博客的公开信息,我们可以推断出权重的相对大小。
核心逻辑是:互动的”成本”越高,权重越大。
点赞只需要一次点击,成本最低。回复需要打字,成本中等。转推需要思考”这条值不值得转发给我的粉丝”,成本最高。书签是私密行为,代表”这条内容有长期价值”。
根据公开的 Twitter 工程博客和代码分析,权重的大致比例是:
| 互动行为 | 相对权重 | 成本 | 信号强度 |
|---|---|---|---|
| 转推(Repost) | ~20x | 高 | 深度认同,愿意用自己的信用背书 |
| 回复(Reply) | ~13.5x | 中高 | 深度参与,愿意花时间对话 |
| 作者回复互动 | ~15x+ | 极高 | 双向对话,最强信号 |
| 书签(Bookmark) | ~10x | 低 | 私藏价值,长期兴趣 |
| 点赞(Favorite) | 1x | 极低 | 轻度认可 |
| 有效点击 | ~3x | 低 | 对内容感兴趣 |
| 深度停留 | ~5x | 无 | 内容有吸引力 |
| 视频质量观看 | ~8x | 中 | 视频内容优质 |
| 分享 | ~12x | 高 | 愿意传播 |
为什么转推最值钱?
因为转推是用你的信用为内容背书。你转发一条帖子,你的粉丝会看到,如果内容不好,你的信誉会受损。所以转推代表的不只是”我喜欢这条内容”,而是”我愿意让我的社交圈知道我看了这条内容”。
算法看穿了这一点。转推的权重是点赞的 20 倍,因为它代表的不只是兴趣,还有社交信任。
时间衰减——为什么前 30 分钟是黄金期?
代码里有一个残酷的逻辑:帖子发布后,可见度随时间指数衰减。
// 时间衰减逻辑(简化版)val ageInHours = (now - tweet.createdAt) / 3600.0val timeDecay = math.pow(2.0, -ageInHours / 6.0) // 每 6 小时减半每 6 小时,帖子的可见度减半。12 小时后只剩 25%。24 小时后只剩 6.25%。
这意味着什么?你发了一条帖子,前 6 小时内的互动对排名影响最大。6 小时后,即使有人互动,权重也大打折扣。
更精确的时间窗口:
| 时间段 | 可见度 | 互动权重 |
|---|---|---|
| 0-30 分钟 | 100% | 最高 |
| 30 分钟 - 2 小时 | 79% | 高 |
| 2-6 小时 | 50-79% | 中 |
| 6-12 小时 | 25-50% | 低 |
| 12-24 小时 | 6.25-25% | 极低 |
| 24 小时+ | <6.25% | 几乎为零 |
前 30 分钟为什么特别重要?
因为 Phoenix 模型不只是看互动的”数量”,还看互动的”速度”。一条帖子在发布后 5 分钟内获得 10 个回复,比在 24 小时内获得 100 个回复更有价值。
代码里有专门的实时聚合特征:
TweetEngagementRealTimeAggregateFeatureHydrator // 帖子实时互动聚合UserAuthorEngagementRealTimeAggregateFeatureHydrator // 用户-作者实时互动聚合这些特征会追踪帖子在最近 5 分钟、15 分钟、1 小时内的互动速度。速度越快,排名加成越高。
有效点击 vs 无效点击——算法在区分什么?
代码里有两种点击相关的特征:
PredictedGoodClickConvoDescFavoritedOrRepliedScoreFeature // 点击后点赞或回复PredictedGoodClickConvoDescUamGt2ScoreFeature // 停留超过 2 秒的点击算法在区分”有效点击”和”无效点击”。一个用户点击了你的帖子,但如果马上就划走了,这是无效点击。如果他点击后停留了 2 秒以上,或者点赞/回复了,这才是有效点击。
为什么这很重要?
因为很多运营者追求”曝光量”和”点击量”,但算法看的是”有效互动量”。你的帖子获得了 1000 次曝光,但如果没有人停下来认真看,这些曝光对排名几乎没有帮助。
反过来,你的帖子只获得了 100 次曝光,但有 20 个人认真看了、回复了、转推了,这些互动会让算法认为你的内容质量很高,从而给更多曝光。
有效互动的信号强度:
| 行为 | 信号强度 | 说明 |
|---|---|---|
| 停留 > 2 秒 | 中 | 用户对内容感兴趣 |
| 点击后回复 | 高 | 用户愿意参与讨论 |
| 点击后转推 | 极高 | 用户愿意传播 |
| 点击后书签 | 高 | 用户认为有长期价值 |
| 点击后立即划走 | 极低 | 内容不符合预期 |
视频内容的特殊权重——为什么 X 在推视频?
代码里有 4 种视频相关的互动特征:
PredictedVideoQualityViewScoreFeature // 视频质量观看PredictedVideoQualityViewImmersiveScoreFeature // 沉浸式观看PredictedVideoQualityWatchScoreFeature // 视频完整观看PredictedVideoWatchTimeMsFeature // 视频观看时长X 在重度押注视频内容。视频相关的互动权重明显高于图文内容。一个用户完整观看你的视频,比点赞你的图文帖子更有价值。
视频观看的分层:
| 行为 | 权重 | 说明 |
|---|---|---|
| 播放 50% | 低 | 基础观看 |
| 完整观看 | 高 | 内容有吸引力 |
| 沉浸式观看(全屏) | 极高 | 深度消费 |
| 观看时长 > 10 秒 | 高 | 内容留住用户 |
代码里有一个 10 秒的阈值:
val isVideoDurationGte10Seconds = (features.getOrElse(VideoDurationMsFeature, None).getOrElse(0) / 1000.0) >= 10只有时长超过 10 秒的视频,才会触发”视频质量观看”特征。这意味着短视频(<10秒)在算法眼里权重更低。
负面反馈——一条举报顶多少个赞?
代码里有一个让人警醒的设计:
object PredictedNegativeFeedbackV2ScoreFeature extends PredictedScoreFeature { override val modelWeightParam = ModelWeights.NegativeFeedbackV2Param}
object ReportParam extends FSBoundedParam[Double]( name = "home_mixer_model_weight_report", default = 0.0, min = -20000.0, // 注意:最小值是 -20000,比其他互动的 -10000 更负 max = 0.0)举报的权重参数最小值是 -20000,而点赞、回复、转推的最大值是 10000。这意味着一条举报的负面权重,可能抵消 2 条转推的正面权重。
负面反馈的类型:
| 行为 | 权重范围 | 影响 |
|---|---|---|
| 屏蔽 | 极高负值 | 立即停止推荐 |
| 举报 | -20000 ~ 0 | 严重负面影响 |
| ”不感兴趣” | 中等负值 | 降低推荐 |
| ”少看此类内容” | 低负值 | 轻微降低 |
运营启示:
不要为了互动而发争议性内容。一条举报的负面权重,可能需要 2 条转推才能抵消。而且负面反馈会累积:如果多个用户对你的内容举报,你的账号权重会持续下降。
运营实操——怎么让互动真正有效?
理论讲完了,说点能用的。
1. 追求回复和转推,不是点赞。 点赞的权重只有 1x,回复是 13.5x,转推是 20x。一条转推顶 20 个赞。如果你的帖子只有点赞没有回复,算法会认为内容”还行但不够好”。
2. 发帖后 30 分钟内制造互动。 时间衰减是指数级的。前 30 分钟的互动权重最高。如果你有互关的同领域朋友,发帖后立刻让他们来互动。
3. 回复粉丝的评论。 代码里有 reply_engaged_by_author 特征。当用户回复你,你也回复他,这个互动的权重会单独加成。大 V 为什么回复评论?不只是礼貌,是在喂算法。
4. 做 10 秒以上的视频。 代码里有 10 秒的阈值。只有超过 10 秒的视频才会触发”质量观看”特征。短视频在算法眼里权重更低。
5. 别带外部链接。 虽然这篇没细讲,但代码里有明确的逻辑:带外部链接的帖子触达下降 50%-90%。X 不想让用户离开平台。
6. 避免争议性内容。 一条举报的负面权重可能抵消 2 条转推。不要为了互动而发争议,代价太大。
常见问题
点赞还有用吗?
有用,但权重最低。点赞是”轻度认可”的信号,算法会看,但不会给太多加成。真正的价值在于点赞后产生的连锁反应:算法看到你点赞了,会给你推荐更多类似内容,同时也会把你推荐给点赞同类型内容的其他用户。
书签为什么权重那么高?
因为书签是私密行为。一个人愿意收藏你的内容,代表他认为这条内容有长期价值。而且书签不像点赞那样容易手滑,它需要额外的操作步骤。算法把书签解读为”深度认可”。
停留时间重要吗?
非常重要。代码里有专门的 dwell 特征。一条帖子如果让用户停留了 5 秒以上,算法会认为内容有吸引力。这就是为什么长内容(长推文、视频)在算法眼里更有价值——它们能留住用户。
为什么我的帖子没人互动?
可能不是内容问题,是时间问题。如果你在凌晨 3 点发帖,你的互关用户都在睡觉,前 30 分钟没有互动,帖子的可见度就已经衰减了。选择你的粉丝最活跃的时间发帖。
结论
X 的排序模型比你想的复杂得多。不是简单的”互动越多越好”,而是区分了 15 种互动行为,每种都有不同的权重。转推是点赞的 20 倍,回复是 13.5 倍。时间衰减让前 30 分钟成为黄金期。有效点击比无效点击有价值得多。
算法的逻辑很清楚:它不想推荐”还行”的内容,它想推荐”让人愿意讨论、愿意传播”的内容。互动的质量远比数量重要。
下一篇我会拆解算法的负反馈机制:什么行为会触发降权,怎么避免踩坑。