J'ai exécuté l'algorithme de recommandation de X, open source en mai, et j'ai découvert que la partie open source n'explique que 30 % du classement réel du fil d'actualité. Les 70 % restants sont cachés dans les configurations serveur, le VM Ranker et les règles opérationnelles.
Mais ces 30 % de code public suffisent à répondre à une question : sur quoi les créateurs peuvent-ils réellement agir ?
Dépôt original : xai-org/x-algorithm (Mis à jour le 15 mai, ajout de 187 fichiers et 18 263 lignes de code)
Cet article ne répétera pas la vue d'ensemble de l'algorithme (les deux posts de Punk2898 sont déjà très complets), mais se concentrera sur trois choses :
1️⃣ Les phénomènes contre-intuitifs que j'ai observés en exécutant le pipeline
2️⃣ Les mécanismes de la mise à jour de mai qui ont le plus d'impact sur les créateurs
3️⃣ Des suggestions opérationnelles spécifiques basées sur ces observations
Observation 1 : Le classement open source et le vrai fil d'actualité n'ont presque aucune corrélation

J'ai utilisé le modèle Phoenix pour exécuter un corpus de 537 000 posts sportifs. La plage de scores finale donnée par le modèle était de 0,0000 à 0,0015, extrêmement plate. Les probabilités prédites pour les Fav, les Réponses et les RT étaient toutes proches de zéro ; le classement reposait principalement sur le Dwell (temps de consultation) comme signal pour créer un écart.
Ensuite, j'ai récupéré le vrai fil « Pour vous » pour comparer. En utilisant le tau de Kendall pour calculer la corrélation de classement, le résultat était de résultat était de -0,10.
Ce nombre signifie qu'utiliser les poids de démonstration dans le code open source (fav1.0 + reply0.5 + RT0.3 + dwell0.2) pour prédire le classement réel du fil que vous voyez est à peu près aussi précis que de deviner au hasard.
Dans le vrai fil, des posts avec zéro interaction apparaissent dans les 7 premiers, tandis que des posts avec beaucoup d'interactions sont repoussés en 9e ou 10e position. Des posts tout neufs publiés il y a moins de 3 minutes avec zéro interaction peuvent également entrer dans le fil.
Qu'est-ce que cela signifie ?
Cela signifie que le modèle Phoenix open source ne sert qu'à un « premier filtrage des candidats ». Ce qui détermine réellement votre rang dans le fil de quelqu'un d'autre, ce sont les couches de reclassement suivantes. Le code open source en mai tombe à point nommé pour compléter la logique de ces couches de reclassement.
Observation 2 : Un score de qualité de 0,4 est la ligne invisible entre la vie et la mort

Le module Grox ajouté en mai est la partie la plus critique de cette mise à jour. Il ne remplace pas Phoenix ; il est son fournisseur en amont. Après l'envoi de chaque nouveau post, Grox utilise un grand modèle VLM pour faire 5 choses :
- Attribuer un score de qualité (quality_score, de 0 à 1)
- Générer 7 étiquettes booléennes (contenu adulte, violence, discours haineux, etc.)
- Attribuer un score de « slop » (slop_score, niveaux 1 à 3)
- Générer des vecteurs d'embedding multimodaux
- Effectuer une vérification de sécurité PTOS
Le code indique clairement : quality_score >= 0,4 est nécessaire pour passer le premier filtrage. Tout ce qui est en dessous de 0,4 est étiqueté « low quality », et la diffusion ultérieure est entravée partout.
Ce seuil de 0,4 est jugé par le modèle VLM, pas par un mot-clé. Il peut comprendre le sens de votre texte, le contenu de vos images et les images vidéo. Les systèmes de règles qui pouvaient auparavant être trompés par « ajouter des images et empiler des mots-clés » ne fonctionnent plus.
slop_score est une autre nouvelle arme : le contenu modélisé, la faible densité d'information et les posts avec des traces évidentes de génération par IA recevront des scores élevés. Le niveau 1 est normal ; les niveaux 2-3 signifient que l'algorithme pense que vous « diluez » le contenu.
Observation 3 : « Swiper » est une pénalité active, pas seulement « ne pas voir »

La version de mai a fait passer les signaux comportementaux de 18 têtes discrètes à 19 têtes discrètes + 8 têtes auxiliaires continues. Les nouvelles têtes continues prédisent des métriques fines comme « combien de temps est resté » et « taux de complétion de la lecture ».
Mais le signal qui a le plus d'impact sur les créateurs est : not_dwelled.
Auparavant, nous pensions que « aucune interaction utilisateur » était neutre, équivalent à ne pas être vu. Faux. Un utilisateur qui passe rapidement sur votre post est un signal négatif actif, et l'algorithme vous pénalisera pour cela.
Cela signifie :
- Ne pas capter l'attention dans la première seconde d'une vidéo = pénalité active
- Une première phrase peu intéressante dans un long post = pénalité active
- Des images sans impact visuel = pénalité active
En observant le vrai fil, j'ai remarqué un phénomène : certains posts sans interaction pouvaient entrer dans le Top 7, tandis que certains posts avec beaucoup d'interactions étaient repoussés. Une explication raisonnable est que ces posts sans interaction, bien que non likés, ont en fait été consultés par les utilisateurs (générant un signal dwell), alors que certains posts qui semblent avoir de bonnes données ont en fait subi un grand nombre de passages rapides.
Observation 4 : Qui vous suivez détermine dans quel cercle l'algorithme vous place

Le code de mai a ajouté mutual_follow_jaccard_hydrator, qui calcule la « similarité du cercle d'abonnements mutuels entre vous et un certain auteur ».
Si vous et un auteur suivez beaucoup des mêmes personnes (coefficient de Jaccard élevé), l'algorithme considère que vous êtes dans le même « cercle d'information » et est plus enclin à pousser son contenu vers vous.
Ce mécanisme change une hypothèse fondamentale : auparavant, c'était « la qualité du contenu détermine la distribution » ; maintenant, c'est « la qualité du contenu + l'appartenance au cercle déterminent conjointement la distribution ».
Plus précisément :
- Chaque compte que vous suivez calcule votre identité de cercle
- Suivre au hasard revient à diluer vos étiquettes de cercle
- Les suivis mutuels avec des KOLs dans le même domaine sont bien plus efficaces que des suivis unilatéraux de 100 comptes aléatoires
- Les commentaires de qualité sous les posts de grands comptes entrent dans la chaîne de signaux following_replied_users, et votre avatar peut apparaître dans l'invite « les personnes que vous suivez ont aussi commenté ici »
Mon propre fil « Pour vous » le confirme : plus de 60 % du contenu recommandé provient de créateurs du cercle IA chinois, car ma liste d'abonnements est concentrée dans ce cercle.
Observation 5 : La section des commentaires est désormais une piste indépendante

Le code de mai a révélé un système de notation indépendant pour la section des commentaires. Chaque commentaire est noté de 0 à 3 par Grok :
- 3 points : Commentaires avec un apport d'information pouvant déclencher une discussion
- 2 points : Interaction normale
- 1 point : Court mais pas spam
- 0 points : Déclenche l'étiquette spam, affectant le crédit du compte
Un commentaire avec 0 point n'est pas seulement réduit ; il laisse une trace sur votre compte que vous avez « posté un commentaire spam ». Une accumulation à long terme peut affecter le poids global de votre compte.
En même temps, les spams sous votre post affectent également le poids du post principal. Les commentaires comme « follow for follow », « first » ou « +1 » — l'algorithme ne les aime pas seulement ; il réduit la distribution de votre post principal à cause d'eux.
À l'inverse, la valeur d'exposition d'un commentaire de qualité peut être supérieure à celle de poster vous-même 10 posts ordinaires. Laisser un commentaire étayé par des données et déclenchant une discussion sous le post d'un grand compte revient à emprunter l'entrée de trafic du grand compte.
Observation 6 : Les stratégies de cache rendent le « moment de poster » plus subtil que le « quoi poster »

Il y a un détail dans le code : lorsque le nombre de posts dans le cache est >= 500, le système ignore toute la logique de récupération de posts en temps réel depuis Thunder/Phoenix/TweetMixer et renvoie directement le contenu mis en cache.
Cela signifie que pour les utilisateurs intensifs qui ouvrent X des dizaines de fois par jour, bon nombre de leurs requêtes ne passent même pas par l'algorithme de recommandation ; ils voient une ancienne liste dans le cache Redis.
Un post que vous venez d'envoyer pourrait être totalement invisible pour ces utilisateurs intensifs. Votre contenu n'a une chance d'entrer que lorsque le cache se rafraîchit la prochaine fois.
Cela explique aussi un phénomène contre-intuitif : certains comptes publient des dizaines de fois par jour, et leur trafic n'est pas mauvais. C'est parce que publier à haute fréquence augmente la probabilité d'être « sélectionné lors d'un certain rafraîchissement du cache ». Cependant, Punk2898 prédit que cette stratégie sera ajustée plus tard.
Pour les créateurs ordinaires, le conseil est de poster 10 à 30 minutes avant le pic d'activité de votre public cible, afin que votre post ait plus de chances d'être inclus lors du rafraîchissement du cache.
Observation 7 : MediumRisk est la réduction de poids cachée que vous ne connaissez pas

Le système publicitaire a révélé pour la première fois la variable brand_safety_verdict. Elle a quatre niveaux : Safe / LowRisk / MediumRisk / HighRisk.
Découverte clé : La valeur par défaut est MediumRisk.
En d'autres termes, si votre post n'a pas été complètement examiné par Grox (ou si les étiquettes manquent), le système vous traite comme « Risque moyen » par défaut. Les posts à risque moyen ne sont pas directement bloqués, mais ils sont évités à côté des publicités. Et les positions autour des publicités sont souvent des zones à forte exposition (zones de focalisation visuelle de l'utilisateur).
Le résultat : vous ne recevez jamais d'avis de violation, mais votre exposition est déjà réduite. C'est le « shadowban caché » le plus facilement négligé dans l'algorithme v2.
Comment l'éviter ? Les posts avec des thèmes clairs et sans contenu « limite » ont plus de chances d'être rapidement classés comme Safe. Après avoir posté un message important, attendez 30 à 60 minutes que l'examen soit terminé avant de faire une promotion lourde.
Liste de contrôle pour les créateurs

Basé sur les 7 observations ci-dessus, voici des actions concrètes :
Concernant la qualité du contenu
Les 10 premiers mots de chaque post déterminent le dwell ou le not_dwelled. Vous devez créer un écart cognitif ou un impact de données dans la première phrase. Commencer par « J'ai appris une petite astuce aujourd'hui » déclenche directement un swipe.
Le contenu doit avoir des arguments clairs, une densité d'information et un sens de la structure. Le seuil de 0,4 pour le score de qualité n'est pas élevé, mais les posts de remplissage « modélisés + faible info + quelques mots avec une image » ne passeront certainement pas.
Évitez le style IA : structures de phrases uniformes, ouvertures fixes (« D'abord… Ensuite… Enfin »), et conclusions grandiloquentes seront détectées par slop_score.
Concernant les opérations de cercle
Auditez votre liste d'abonnements. Désabonnez-vous des comptes aléatoires qui ne sont pas dans votre cercle cible. Chaque abonnement façonne votre coefficient de Jaccard.
Suivez mutuellement 5 à 10 comptes centraux dans votre cercle cible. Le poids du suivi mutuel est bien plus élevé que les suivis unilatéraux.
Sous les posts des grands comptes du cercle, laissez des commentaires avec un apport d'information. Pas « appris », mais complétez par une donnée, partagez un contre-exemple, ou posez une question d'extension.
Concernant la gestion des commentaires
Nettoyez régulièrement les spams sous vos posts. Les publicités et réponses sans signification réduiront le poids du post principal.
Ne spammez pas votre présence sous des posts non pertinents. Les commentaires 0 point laissent une trace de spam sur votre compte.
Concernant le moment de publication
Postez 10 à 30 minutes avant le pic d'activité de votre public cible. Laissez une fenêtre pour que le rafraîchissement du cache vous inclue.
Attendez 30 à 60 minutes après un post important avant de le promouvoir. Laissez l'examen Grox se terminer pour passer de MediumRisk par défaut à Safe.
Concernant les retweets avec citation
Soyez prudent en citant du contenu marginal. Le mécanisme de responsabilité conjointe v2 fera que la réduction de poids des posts pénalisés se propagera à vous le long de la chaîne de citation.
Utilisez des captures d'écran + vos propres commentaires pour uniques pour les contenus controversés au lieu de citations directes.
Concernant les hashtags
Identifiez 1 à 2 sujets Grok centraux et créez systématiquement autour d'eux. Les flux de découverte des nouveaux utilisateurs sont strictement filtrés par sujet ; si vous n'êtes pas dans leur ensemble de sujets, vous n'existez pas pour eux.
Utilisez occasionnellement des tags explicites # pour renforcer la classification thématique de l'algorithme.
Concernant la vidéo
La première seconde d'une vidéo est la ligne entre la vie et la mort. Le signal not_dwelled est le plus évident dans les vidéos.
Le contenu important doit avoir une version texte uniquement. Certains utilisateurs ont activé des filtres « voir moins de vidéos », et les posts avec un champ de durée vidéo seront entièrement supprimés.
Liens de référence :
https://github.com/xai-org/x-algorithm





