---
title: "开源版 vs 线上真实算法：已知差异清单"
description: "xai-org/x-algorithm 2e2295b 公开了什么、没公开什么、两套权重默认值的出入，以及上游 README 与代码不一致的地方"
---

> Documentation Index
> Fetch the complete documentation index at: https://x-algorithm.vergego.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# 开源版 vs 线上真实算法：已知差异清单

> 本页回答一个问题：`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。

两套默认值的关系：

1. 两个服务读取同一组配置键，例如 `rust_home_mixer_favorite_weight`（`home-mixer/params/param.rs:404-409`）。
2. 最终分由 vm-ranker 计算。vm-ranker 从配置中心同步这些键，代码默认值只在配置缺少该键时生效（`vm-ranker/main.rs:69-98`）。
3. 上游只声明 `param.rs` 的默认值同步自生产主值（`README.md:432`），没有对 `vm-ranker/params.rs` 作同样声明。
4. 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` 默认运行。详见 [过滤流水线](https://x-algorithm.vergego.ai/concepts/filtering-pipeline/)。

## 怎么使用这份理解

本站引用的数值都是开源默认值。引用时按以下规则区分：

- **可以说**：“`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 源码真相](https://x-algorithm.vergego.ai/guide/operating-myths/) —— 用这些数值判定流行说法
- [常见疑问解答](https://x-algorithm.vergego.ai/guide/faq/) —— “开源代码与线上是否一致”一条的展开
- [Phoenix 训练](https://x-algorithm.vergego.ai/concepts/phoenix-training/) —— 可以本地运行的训练与服务路径
- [打分与排序](https://x-algorithm.vergego.ai/concepts/scoring-and-ranking/) —— 权重表与两套默认值
- [VM Ranker 重排服务](https://x-algorithm.vergego.ai/concepts/vm-ranker/) —— 最终分与配置同步
- [可见性过滤](https://x-algorithm.vergego.ai/concepts/visibility-filtering/) —— 规则文件的实际位置
- [打标签规则](https://x-algorithm.vergego.ai/concepts/labeling-rules/) —— 已公开的 botmaker 规则
- [账号级信号](https://x-algorithm.vergego.ai/concepts/account-signals/) —— bdsm 与 user-cred
- [过滤流水线](https://x-algorithm.vergego.ai/concepts/filtering-pipeline/) —— 过滤器全表

Source: https://x-algorithm.vergego.ai/guide/open-source-vs-production/index.mdx
