
Détection et suivi automatisés des faux engagements sur GitHub — CI quotidienne, zéro infrastructure
Détection et suivi automatisés des faux engagements sur GitHub
Un projet de JS Labs —
faisant partie de l'initiative AI Slop Intelligence.
Tourne chaque jour. Attribue un score à chaque compte suspect. Détecte les campagnes de bots coordonnées.
Ouvre des issues directement sur les dépôts compromis afin que les mainteneurs puissent agir.
Soutenez ce projet
BTC 3QjWqhQbHdHgWeYHTpmorP8Pe1wgDjJy54
ETH 0x5851e6145F4773d1585b8686095FB16E368a4dA1
ZEC t1KSR5YkNPbjqRSCoLKo5AddFWdm9Kzxh1B
Les étoiles GitHub sont un signal de confiance. C'est ainsi que les développeurs décident quoi évaluer, de quoi dépendre et quoi recommander. Ce signal est en train d'être systématiquement corrompu.
Pendant le boom de l'IA de 2024-2026, une industrie de fermes de bots a émergé pour fabriquer de la crédibilité pour des dépôts de mauvaise qualité, souvent malveillants. Un projet avec 800 étoiles en 48 heures paraît légitime à un développeur qui parcourt les résultats de recherche. C'est tout l'intérêt. L'objectif des faux engagements n'est pas les étoiles en elles-mêmes ; c'est la preuve sociale que ces étoiles produisent, et les décisions en aval que cette preuve sociale influence.
Le schéma est identifiable. Des comptes créés la même semaine, sans bio, sans abonnés, sans dépôts d'origine, qui mettent une étoile aux mêmes 15 dépôts en l'espace de 2 heures. Pas une seule campagne, mais des dizaines qui tournent simultanément, chaque jour, à travers des milliers de comptes. Les données montrent des dépôts où 185 personnes sur 185 ayant interagi sont des bots. Un taux de fausseté de 100 %. Des places entières dans le classement construites sur du vide.
phantomstars a été créé parce que ce problème est traitable. Le rapport signal/bruit dans l'API publique de GitHub est, pour l'instant, encore suffisamment élevé pour que les campagnes coordonnées laissent des empreintes claires. Ce projet lit ces empreintes, publie les données brutes et notifie directement les mainteneurs de dépôts concernés.
Ce projet fait partie des travaux plus larges d'AI Slop Intelligence menés chez JS Labs, une recherche continue sur les mécanismes et les effets mesurables du contenu de mauvaise qualité généré par l'IA qui inonde les écosystèmes de développeurs. Les faux engagements ne sont pas un problème périphérique. C'est le mécanisme de distribution qui met le slop sous les yeux des vrais utilisateurs.
phantomstars exécute un job GitHub Actions quotidien qui :
r/osinttools et r/coolgithubprojects en extrayant les liens de dépôts GitHub des 2 derniers joursPas de serveurs. Pas de bases de données. Pas de facture d'infrastructure.
Oui. Lorsque le taux de fausseté d'un dépôt dépasse 40 % ou qu'une campagne coordonnée est détectée, phantomstars ouvre une issue directement sur ce dépôt. L'issue contient le tableau complet des suspects, l'appartenance à la campagne, les scores composites et les dates de création des comptes : tout ce dont un mainteneur a besoin pour enquêter et faire un signalement à GitHub.
Si les issues sont désactivées sur un dépôt ciblé, la notification est ignorée silencieusement et consignée dans le journal d'analyse.
Oui.
owner/repo et lancez une analyse ciblée.Pourquoi cette distinction :
Oui. Si votre compte apparaît dans data/suspects.jsonl et que vous pensez que la classification est incorrecte, ouvrez une issue de faux positif en utilisant le modèle fourni. Les signalements sont examinés manuellement avant toute ajout à la liste blanche. La liste blanche est stockée dans data/allowlist.txt ; les comptes qui y figurent sont exclus de toutes les analyses futures et du registre des suspects.
Un identifiant de campagne (par ex. c-a3f9b2e1) est une empreinte hexadécimale déterministe de 8 caractères dérivée du hachage SHA-256 de l'ensemble trié des identifiants des membres de cette campagne. Le même groupe de comptes produira le même identifiant de campagne lors d'analyses indépendantes, ce qui permet un suivi longitudinal. Ce n'est ni un nom de dépôt, ni un nom d'utilisateur, ni un identifiant externe.