本页回答一个问题:
xai-org/x-algorithm的开源代码与 X 线上运行的 For You 算法,已知差距有哪些。本页只写有源码或上游文档依据的内容;仓库没有说明、代码也看不出的,写“源码未包含”。本页依据的源码版本是 commit 2e2295b。
一句话定位:生产代码,去掉了数据、模型文件和部分规则
当前仓库发布的是生产实现本身,不是演示模型。phoenix/README.md 写明:早期版本附带从 Grok-1 移植的示例 transformer;本次发布的是真实模型代码、真实训练步骤和真实 Rust 服务引擎(phoenix/README.md:9-21)。
没有发布的是三类东西:xAI 专用基础设施、训练好的模型文件、为防止被规避而保留的部分规则和阈值。下面分别列出。
旧版本页面说“公开的是 mini 模型和冻结 checkpoint”“README 与代码有 3 处出入(模型尺寸、打分器数量、掩码方向)”。这些结论基于 2026-05 的源码,已不适用:演示模型已删除,掩码现在与 README 一致。
公开了什么
| 内容 | 说明 | 出处 |
|---|---|---|
| Phoenix 训练与服务代码 | 排序与召回模型、训练步骤、Rust 服务引擎;附合成数据生成器,可单卡端到端训练和服务 | phoenix/README.md:9-21、phoenix/QUICKSTART.md:12 |
| 打分权重 | 29 个权重参数的默认值;上游说明默认值由定时脚本同步为生产主值 | home-mixer/params/param.rs:404-533、README.md:432 |
| 加权算式与调整 | 30 个加权项、作者多样性衰减、站外降权、新作者扶持 | xai-value-model/scoring.rs:79-218 |
| 可见性过滤规则 | 各安全级别的规则清单与规则定义 | visibility-filtering/rules/levels.rs:298-360 |
| 标签链路 | 打标签规则、账号评分模型、图片与视频模型、处置服务 | README.md:68 |
| Under the Hood 报告 | 生成标签透明度月报的任务与服务代码 | under-the-hood/strato/columns/underTheHoodReport.User.strato:18-19 |
标签链路指后台给帖子和账号打标签的那条路径。它包括 botmaker 规则、scarecrow、agatha、bdsm、user-cred-v2、媒体模型和 abuse-enforcement-service。旧版本页面说“可见性过滤不在开源仓库里”,现已错误。
没公开什么
上游 README 点名的
上游 README 列出两类未发布文件,理由是降低被规避的风险(README.md:444-447):
- Grox 提示词:Grox 调用大模型时使用的 j2 提示词文件。
- 部分 botmaker 规则:打标签规则的一部分。
上游 README 用 Under the Hood 报告弥补这部分透明度:用户能看到自己账号和帖子上的部分标签。
Phoenix 没发布的
- 训练好的 checkpoint:仓库没有可下载的模型文件或语料包,只有合成数据生成器(
phoenix/README.md:61-62)。 - 生产数据流与集群编排:训练文档写明,发布的路径不含生产数据流、生产 checkpoint、多机编排和生产规模配方(
phoenix/TRAINING.md:8-10)。 - 一处优化器替换:使用旧版稠密优化器槽位的配置,开源版用标准 AdamW 替代生产的内部变体。旗舰排序配置用的 Muon 配方完整发布(
phoenix/README.md:16-21)。
用占位值替换的阈值
部分阈值保留了规则结构,但数值换成了不可能触发或明显虚构的占位值:
| 位置 | 占位值 | 含义 | 出处 |
|---|---|---|---|
| bdsm 机器人检测的处置阈值 | 9.99 | 字段是 0 到 1 的概率,9.99 永远不会触发 | bdsm/runtime/sink_policy.yaml:1-12 |
| bdsm 最少行为数门槛 | 999999 | 比任何可打分序列都长,门槛永远不通过 | bdsm/README.md:104-115 |
| bdsm 申诉说明模板 | <redacted> |
模板文字被替换 | bdsm/README.md:116-125 |
| 处置服务的粉丝数与 user-cred 豁免阈值 | 12.34 | 注释写明生产使用不同的值,此处为降低被规避风险的模拟值 | abuse-enforcement-service/service-lib/rules/enforcement_user.yaml:19-33 |
bdsm 文档说明,策略结构、检测头名称和门槛逻辑是真实的,只隐藏调好的数值(bdsm/README.md:104-115)。
其他源码未包含的
- 名单内容:处置服务的账号白名单、打标签规则的
AutoExpiringTempSkipList在代码中被引用,名单内容源码未包含(abuse-enforcement-service/service-lib/rules/enforcement_user.yaml:6-10)。 - 部分上游分数:处置规则读取
llm_slop_user等分数标签(abuse-enforcement-service/service-lib/rules/enforcement_user.yaml:118-123),产生这些分数的检测器源码未包含。 - vm-ranker 的线上配置:vm-ranker 运行时从配置中心同步参数,每 30 秒重读(
vm-ranker/main.rs:69-98)。同步下来的数值源码未包含。
两套权重默认值不一致
权重默认值写在两个文件里,部分数值不同:
| 行为 | home-mixer/params/param.rs |
vm-ranker/params.rs |
|---|---|---|
| 点赞 | 0.708 | 0.5 |
| 打开视频 | 0.0 | 0.07 |
| 点击 | 0.274 | 0.3 |
| 分享 | 2.118 | 2.0 |
| post_unexplored | 0.015 | 0.02 |
| 停留时长(连续值) | 0.0075 | 0.004 |
| 点击后停留时长 | 0.385 | 0.4 |
| 不感兴趣 | -53.07 | -47.52 |
出处:home-mixer/params/param.rs:404-514、vm-ranker/params.rs:3-119。其余权重两边相同,例如回复 5.0、复制链接分享 20.0、举报 -234.0。
两套默认值的关系:
- 两个服务读取同一组配置键,例如
rust_home_mixer_favorite_weight(home-mixer/params/param.rs:404-409)。 - 最终分由 vm-ranker 计算。vm-ranker 从配置中心同步这些键,代码默认值只在配置缺少该键时生效(
vm-ranker/main.rs:69-98)。 - 上游只声明
param.rs的默认值同步自生产主值(README.md:432),没有对vm-ranker/params.rs作同样声明。 - vm-ranker 调用失败时,home-mixer 用
param.rs的权重算本地分兜底(home-mixer/scorers/vm_ranker.rs:107-113)。
本站以 param.rs 为基准引用权重。“1 次举报抵消 468 个赞”中的 468 用的是 vm-ranker 的点赞默认值 0.5;按 param.rs 算,比值约为 330.5。
作者多样性衰减、站外降权的参数只写在 vm-ranker/params.rs(vm-ranker/params.rs:175-234),上游没有声明它们与生产同步。
上游 README 与代码的出入
上游 README 有几处与 2e2295b 的代码不一致。本站一律以代码为准。
1. rules/registry.rs 不存在
README 两处说可见性规则按评估顺序列在 visibility-filtering/rules/registry.rs(README.md:330、README.md:422)。该文件在 2e2295b 中不存在。规则定义在 rules/tweet_rules.rs 与 rules/author_rules.rs,各安全级别的规则清单在 rules/levels.rs(visibility-filtering/rules/levels.rs:298-360)。
2. RankingScorer 只剩名字
README 的架构图和打分一节说 RankingScorer 把各行为概率加权求和(README.md:143、README.md:362)。代码里没有 RankingScorer。内层流水线按序运行 5 个打分器:PhoenixScorer、ImmersiveVideoScorer、VMRanker、PageDecodeRerankScorer、PageRlExplorationScorer(home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:475-481)。README 图中 RankingScorer 链接到的 home-mixer/scorers/value_model.rs 只提供读取权重和算本地分的辅助函数。
3. 过滤器表有遗漏
| README 的表 | README 写法 | 代码 |
|---|---|---|
预打分过滤器(README.md:382-405) |
18 个 | 21 个,多出 ZeroFavCodivertFilter、NewUserSoftNsfwFilter、FairShareRankingFilter(home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:429-453) |
静音词过滤器(README.md:398) |
MutedKeywordFilter |
已改名 ViewerMutedKeywordFilter(home-mixer/filters/viewer_muted_keyword_filter.rs:20-47) |
选后过滤器(README.md:409-416) |
3 个 | 5 个,多出 AncestorVideoFilter、VideoCarouselFilter(home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:511-517) |
多出的过滤器中,ZeroFavCodivertFilter 和 NewUserSoftNsfwFilter 开源默认不运行,FairShareRankingFilter 默认运行。详见 过滤流水线。
怎么使用这份理解
本站引用的数值都是开源默认值。引用时按以下规则区分:
- 可以说:“
param.rs中点赞权重的开源默认值是 0.708,上游声明它同步自生产主值。” - 可以说:“同一作者在同一次请求里的帖子按衰减 0.5、下限 0.25 打折(vm-ranker 代码默认值)。”
- 不能说:“线上点赞权重就是 0.708。”vm-ranker 的线上配置源码未包含。
- 不能说:“粉丝超过 12.34 就豁免处置。”12.34 是占位值。
线上还在持续做实验。上游 README 说,占流量较大(例如 10% 以上)的实验,目标是在仓库里可见(README.md:430)。小流量实验不一定可见。
一页速查
| 维度 | 开源仓库给了什么 | 没给什么 |
|---|---|---|
| 模型代码 | Phoenix 生产实现与训练代码(phoenix/README.md:9-21) |
checkpoint、生产数据流、集群编排 |
| 权重 | param.rs 默认值,声明同步自生产主值(README.md:432) |
vm-ranker 的线上配置值 |
| 可见性规则 | 规则定义与安全级别清单(visibility-filtering/rules/levels.rs:298-360) |
— |
| 打标签规则 | 部分 botmaker 规则 | 其余 botmaker 规则(README.md:447) |
| 内容分类 | Grox 流程代码 | Grox 提示词(README.md:446) |
| 处置阈值 | 规则结构 | 真实阈值,以 9.99、999999、12.34 占位 |
| 名单 | 名单的引用位置 | 白名单与跳过名单的内容 |
| 文档 | 上游 README | README 中的 registry.rs、RankingScorer、过滤器表已过时 |
出处
| 结论 | 主要源码 |
|---|---|
| 发布的是生产实现,不含专用基础设施 | phoenix/README.md:9-21 |
| 没有 checkpoint 和语料包 | phoenix/README.md:61-62 |
| 训练路径不含生产数据流与 checkpoint | phoenix/TRAINING.md:8-10 |
| Grox 提示词与部分 botmaker 规则未发布 | README.md:444-447 |
param.rs 默认值同步自生产主值 |
README.md:432 |
| vm-ranker 运行时同步配置 | vm-ranker/main.rs:69-98 |
| 两套权重默认值 | home-mixer/params/param.rs:404-533、vm-ranker/params.rs:3-119 |
| bdsm 阈值以 9.99 占位 | bdsm/runtime/sink_policy.yaml:1-12 |
| 处置阈值以 12.34 占位 | abuse-enforcement-service/service-lib/rules/enforcement_user.yaml:19-33 |
README 引用不存在的 registry.rs |
README.md:330 |
| 代码中的 5 个打分器 | home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:475-481 |
| 21 个预打分过滤器 | home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:429-453 |
| 5 个选后过滤器 | home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:511-517 |
相关页面
- 运营迷思 vs 源码真相 —— 用这些数值判定流行说法
- 常见疑问解答 —— “开源代码与线上是否一致”一条的展开
- Phoenix 训练 —— 可以本地运行的训练与服务路径
- 打分与排序 —— 权重表与两套默认值
- VM Ranker 重排服务 —— 最终分与配置同步
- 可见性过滤 —— 规则文件的实际位置
- 打标签规则 —— 已公开的 botmaker 规则
- 账号级信号 —— bdsm 与 user-cred
- 过滤流水线 —— 过滤器全表