Відкритий вихідний код · читайте з джерела

Алгоритм X, читайте з джерела

13 серпня 2026 року X опублікував числові ваги ранжування, які він приховував у січні. Більшість цифр, що циркулюють щодо «алгоритму X», є невірними — зазвичай тому, що вони стосувалися моделі 2023 року, яка більше не існує. Кожне число на цій сторінці є посиланням на рядок вихідного коду, з якого воно походить, закріплене за одним комітом.

Репозиторій xai-org/x-algorithmКоміт 76843a5 (2026-10-02)Ліцензія Apache-2.0Параметри синхронізовано 2026-10-01T16:00:46ZДані сторінки згенеровано 2026-10-02Щодня перевіряється за репозиторієм

182

активні параметри

можна змінювати без розгортання

23

скомпільовані константи

потребують зміни коду

135

компоненти конвеєра

джерела, фільтри, оцінювачі

12

перевірені твердження

кожне проти рядка його джерела

2798

акаунти, названі в коді

видалено з розділу "Для вас", якщо ви на них не підписані

Перевірити допис за кодом

Вставте посилання на будь-який публічний допис. Ви отримаєте правила, які фактично застосовуються до нього — включно з обмеженнями за країною, які можуть його приховати — зчитані з закріпленого коміту.

ПоділитисяОпублікувати в XПоділитися в LinkedIn

Ваги

Скільки насправді коштує кожна дія

X states it runs cron scripts that set the defaults in the repository's code to be the primary production values, and aims for experiments running at 10% or more of traffic to be visible in the repository. The values below are those defaults, read at the pinned commit.

Це ваги, які застосовує оцінювач — виміряні, а не обіцяні. Перед оцінюванням `perturbed()` множить 25 з 27 наведених нижче ваг на `(sigma * perturbation_sign(salt, user_id, head)).exp()` — знак фіксується для кожного глядача та для кожного заголовка. 2 ваги, які він залишає без змін, є вагами-модифікаторами: BidirectionalFollowDwellWeightBoost, BidirectionalFollowReplyWeightBoost. `WeightPerturbationSigma` та `WeightPerturbationSalt` є перемикачами функцій: X може змінити їх без випуску коду. На зафіксованому коміті `WeightPerturbationSigma` дорівнює 0.0, і умова `sigma <= 0.0` повертає їх без змін. Прочитайте це у джерелі

Кожен рядок містить код, з якого він був прочитаний — натиснітьПояснитищоб розгорнути фактичні рядки Rust, не залишаючи сторінки.

ДіяВагапроти подібногоДжерело
binaryMultiplies the predicted probability of a discrete action.
share via copy linkShareViaCopyLinkWeight2040×
param.rs
quoteQuoteWeight510×
param.rs
replyReplyWeight510×
param.rs
share via dmShareViaDmWeight510×
param.rs
follow authorFollowAuthorWeight48×
param.rs
shareShareWeight24×
param.rs
retweetRetweetWeight12×
param.rs
favoriteFavoriteWeight0.51×
param.rs
clickClickWeight0.30.6×
param.rs
open linkOpenLinkWeight0.20.4×
param.rs
video openVideoOpenWeight0.070.1×
param.rs
dwellDwellWeight0.050.1×
param.rs
photo expandPhotoExpandWeight0.050.1×
param.rs
quoted clickQuotedClickWeight0.050.1×
param.rs
post unexploredPostUnexploredWeight0.020×
param.rs
profile clickProfileClickWeight0—
param.rs
quoted vqvQuotedVqvWeight0—
param.rs
vqvVqvWeight0—
param.rs
not dwelledNotDwelledWeight-0.02−0×
param.rs
block authorBlockAuthorWeight-31.2−62×
param.rs
not interestedNotInterestedWeight-47.52−95×
param.rs
mute authorMuteAuthorWeight-58.8−118×
param.rs
reportReportWeight-234−468×
param.rs
continuousApplies to a quantity (watch or dwell seconds), not a probability.
cont click dwell timeContClickDwellTimeWeight0.4—
param.rs
cont dwell timeContDwellTimeWeight0.004—
param.rs
modifierNot a head weight: adds to another weight, or gates a branch.
bidirectional follow reply weight boostBidirectionalFollowReplyWeightBoost15—
param.rs
bidirectional follow dwell weight boostBidirectionalFollowDwellWeightBoost0—
param.rs

Групування на бінарні, неперервні та модифікатори – наше — the weights struct and each field's use in vm-ranker/scoring/value_model.rs. X не публікує цю таксономію; ми розділяємо їх, тому що лише бінарні можна порівнювати між собою.

Встановіть прогнозовану ймовірність для кожної дії та спостерігайте за її внеском у бал. Тут пропонуються лише ваги, які множать ймовірність — це арифметика, яку фактично виконує код.

0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
0% → 0.000
Зважена сума0.000

Чому тут немає «еквівалента лайків»: Weights multiply a predicted probability, not an engagement count. Dividing one weight by another does not yield an exchange rate between actions.

Перевірка тверджень

Числа, які всі повторюють, перевірені за кодом

Це не вигадки. Більшість були точними цифрами для потужного ранжувальника, опублікованого Twitter у 2023 році, конвеєра Scala, який з того часу було замінено. Вони продовжували циркулювати після того, як те, що вони описували, перестало існувати.

Кожне твердження нижче містить пошукові запити, які його підтверджують — шаблон, файли, кількість — тож ви можете запустити їх самостійно проти закріпленого коміту. Ви ніколи не побачите тут того, що суперечить нам: якби це було так, ця сторінка не змогла б зібратися, а не публікувати речення, яке вона спростовує.

Contradicted by the source

“Репост коштує в 20 разів більше, ніж лайк.”

RetweetWeight становить 1.0, а FavoriteWeight – 0.5, тому репост має вдвічі більшу вагу, ніж лайк — а не в двадцять разів.

Звідки це походить: Жодна опублікована версія алгоритму ніколи не використовувала значення 20. Важкий ранжувальник 2023 року також оцінював ретвіт у 1.0 проти лайка у 0.5.

Was true, of an older version

“Відповідь коштує в 27 разів більше, ніж лайк (або в 13.5 разів).”

ReplyWeight становить 5.0 проти FavoriteWeight 0.5, тобто в десять разів — і в сорок разів між взаємними підписками, оскільки BidirectionalFollowReplyWeightBoost додає 15.0 до ваги відповіді для оригінальних дописів між акаунтами, які підписані один на одного.

Звідки це походить: Обидва показники були реальними для моделі, яка більше не існує: важкий ранжувальник 2023 року опублікував 27 31.03.2023, а потім 13.5 05.04.2023. Вони описують конвеєр Scala, замінений поточним конвеєром Rust.

Was true, of an older version

“Кліки на ваш профіль коштують у 12 разів більше, ніж лайк.”

ProfileClickWeight становить 0.0. Клік на профіль нічого не додає до зваженої оцінки.

Звідки це походить: 12.0 була вагою 2023 року для `good_profile_click` — іншого, складеного сигналу (відкриття профілю І потім лайк або відповідь). Поточна модель має просту голову кліка на профіль, зважену нулем.

No such parameter exists

“Закладка коштує 10 лайків — закладки є найсильнішим сигналом.”

У param.rs немає ваги закладки, тому закладки взагалі не входять до зваженої оцінки. Однак вони не є невидимими: bookmark_count додається до кожного кандидата як ознака моделі, а ClientTweetBookmark зараховується як позитивна взаємодія в історії глядача. Читається, але не зважується.

Звідки це походить: Оновлення Scala 2025 року дійсно оголосило параметр home_mixer_model_weight_bookmark — зі значенням за замовчуванням 0.0. Жодна опублікована версія ніколи не оцінювала його в 10.

Що ми шукали у закріпленому коміті.

  • У param.rs немає ваги закладок.

    bookmark · 2 файлів · 0 збігів

  • bookmark_count додається до кожного кандидата як ознака моделі.

    bookmark_count · 1 файл · 5 збігів

  • ClientTweetBookmark зараховується як позитивна взаємодія в історії глядача

    ClientTweetBookmark · 1 файл · 1 збіг

Right numbers, wrong reading

“Один звіт скасовує 468 лайків (−234.0 ÷ 0.5).”

Арифметика правильна, але висновок все ще хибний. Ваги множать ПЕРЕДБАЧЕНУ ЙМОВІРНІСТЬ, а не кількість дій. X стверджує, що базова ймовірність звіту більш ніж у тисячу разів нижча, ніж у лайка, тому ділення однієї ваги на іншу не дає курсу обміну між діями.

Звідки це походить: Цей не застарів — це неправильне тлумачення правильних чисел, і він з'являється навіть на сторінках, які публікують правильну таблицю. X додав явне попередження про це до свого README 14.08.2026.

No such parameter exists

“Швидкість залучення враховується в 1000 разів, авторитет автора в 50 разів, актуальність в 22 рази.”

У param.rs не існує параметрів для швидкості, авторитету чи актуальності. Вік взагалі не є ваговим коефіцієнтом — це жорстке обмеження: AgeFilter відкидає будь-який допис старше MAX_POST_AGE, скомпільованої константи в 48 годин. Ніщо не множить оцінку допису на його свіжість.

Що ми шукали у закріпленому коміті.

  • У param.rs не існує параметра для швидкості, авторитетності чи актуальності.

    velocity|authority|recency · 1 файл · 0 збігів

  • AgeFilter відкидає будь-який допис, старший за MAX_POST_AGE.

    AgeFilter::new\(.*MAX_POST_AGE · 1 файл · 1 збіг

Contradicted by the source

“Скоординована група може приховати ваш допис шляхом масового скарження або масового блокування.”

X безпосередньо розглядає це в коментарях param.rs, і описаний механізм можна перевірити: модель прогнозує ВАШУ ймовірність дії, тому рекомендації персоналізовані — скарги від групи переважно впливають на те, що рекомендується людям, схожим на цю групу. І залучення враховується лише тоді, якщо воно відбувається на дописі, поданому в Домашній стрічці: перехід безпосередньо до допису, наприклад, з групового чату, не має впливу на ранжування.

Звідки це походить: Обґрунтований висновок з дуже великих негативних вагових коефіцієнтів, які самі по собі вагові коефіцієнти не підтверджують.

Що ми шукали у закріпленому коміті.

  • X безпосередньо розглядає це в коментарях param.rs.

    recommendations are personalized · 1 файл · 1 збіг

Was true, of an older version

“X опублікував код, але приховав вагові коефіцієнти ранжування з міркувань безпеки.”

Вірно для релізу січня 2026 року, невірно з 13.08.2026. Числові значення за замовчуванням тепер знаходяться в param.rs, і X заявляє, що cron-скрипти підтримують їх рівними основним виробничим значенням.

Звідки це походить: Точне повідомлення про випуск січня 2026 року, ніколи не оновлювалося після серпня.

Що ми шукали у закріпленому коміті.

  • X стверджує, що cron-скрипти підтримують їх рівними основним виробничим значенням.

    cron scripts that set the defaults · 1 файл · 1 збіг

Contradicted by the source

“Дописи, що містять зовнішні посилання, знижуються в рангуванні.”

В опублікованому коді ранжування OpenLinkWeight є ПОЗИТИВНИМ зі значенням 0.2 і застосовується безумовно — відкриття посилання винагороджується. Посилання караються лише через мітки безпеки, такі як MALICIOUS_URL та DO_NOT_AMPLIFY, які стосуються призначення, а не самого факту посилання.

Що ми шукали у закріпленому коміті.

  • Посилання караються лише за допомогою міток безпеки, таких як MALICIOUS_URL.

    MALICIOUS_URL · 7 файлів · 1 збіг

  • … і DO_NOT_AMPLIFY.

    DO_NOT_AMPLIFY · 7 файлів · 1 збіг

Contradicted by the source

“Платна галочка забезпечує підвищення рангування.”

У param.rs не існує множника для преміум, верифікованих або підписних акаунтів, і жоден такий переоцінювач не з'являється в опублікованих оцінювачах. Код 2023 року містив такий — множники 4.0 у мережі та 2.0 поза мережею для авторів з синьою галочкою — і він зник з поточного дерева. Чесне обмеження: Phoenix — це навчена модель, чиї вагові коефіцієнти не публікуються, тому навчену кореляцію не можна виключити, читаючи код.

Звідки це походить: Конвеєр Scala 2023 року дійсно застосовував множник 4.0 / 2.0 для синьої галочки.

Що ми шукали у закріпленому коміті.

  • У param.rs не існує множника для преміум, верифікованих або підписних облікових записів.

    premium|verified|subscription · 1 файл · 0 збігів

  • такий переоцінювач не з'являється в опублікованих оцінювачах.

    premium|verified|subscription · 8 файлів · 0 збігів

Contradicted by the source

“X тепер публікує запити уряду на видалення контенту у своєму репозиторії з відкритим вихідним кодом, і Бразилія є єдиною країною, що там зазначена.”

Репозиторій публікує МЕХАНІЗМ примусового виконання, а не запит. Правила, які видаляють допис для глядачів у країні, що не розголошується — LegalTakedown та LocalLawsTakedown — зчитують причину, яка містить код країни, але ця причина отримується під час виконання з неопублікованого сервісу, а тип, який її містить (TakedownReason), визначений у крейті, відсутньому в репозиторії. X також публікує внутрішню структуру навколо цього типу, у Scala: фільтр читання gizmoduck, який видаляє невиконані видалення до повернення читання, стовпець і перетворення Tweet Entity Service, які отримують причини видалення допису, та внутрішні завдання, які перетворюють ці причини на мітки, що відображаються обліковому запису про себе. Отже, структури Thrift, які її несуть — Takedowns { country_codes, takedown_country_reasons } — зчитуються опублікованим кодом у 3 файлах: `takedowns/gizmoduck/RedactUnenforcedTakedownsFilter.scala`, `takedowns/tweet-entity-service/TakedownReasonsTransform.scala`, `under-the-hood/scalding/UthPctdAccountTakedownEventsJob.scala`. Це додає більше МЕХАНІЗМУ, а не один запит: на зафіксованому коміті жоден код країни не записаний поруч із причиною видалення поза тестовими фікстурами — єдині дволітерні коди, які містить код видалення, це `xx`, `xy`, глобальні сторожові, які джерело називає самостійно, що означає «скрізь» і є протилежністю країни. А метод, який би запитував Tweet Entity Service ці коди під своїм власним ім'ям, get_takedown_country_codes, взагалі не з'являється в репозиторії. Бразилія — це зовсім інша річ: жорстко закодований список із 2795 облікових записів, про які повідомлено Виборчий суд, отриманий з публічного набору даних кандидатів, видалений з «Для вас» для кожного глядача по всьому світу, якщо вони не підписані на обліковий запис — без жодної умови щодо країни, що є протилежністю того, як тут працює законне видалення. Чесне обмеження: репозиторій без жорстко закодованої країни не є платформою без видалень за країною. Запити існують; вони живуть поза репозиторієм, агреговані, у Центрі прозорості та звіті DSA.

Звідки це походить: Власний допис X від 14 серпня анонсував дві речі: вагові коефіцієнти ранжування та фільтр виборів у Бразилії. Маск репостнув його наступного дня у 61 символі — “Будь-яка цензура, вимагана урядами, тепер чітко видима” — не згадуючи ані репозиторію, ані запитів, ані країн; преса пов'язала це з повідомленням для користувачів, яке було анонсовано, але не випущено. Слова “запити” та “в алгоритмі з відкритим вихідним кодом” вперше з'являються разом в обліковому записі агрегатора.

Що ми шукали у закріпленому коміті.

  • Опублікований допоміжний код Scala зчитує структури Thrift для видалення — Takedowns { country_codes, takedown_country_reasons }

    \bTakedowns\b|\btakedownCountryReasons\b · 43 файлів · 15 збігів

Contradicted by the source

“Вимкнення ключового слова приховує кожен допис, що його містить.”

Заглушене ключове слово — це не одне правило. Опублікований сервіс хроніки застосовує його за допомогою 2 фільтрів, які не зчитують один і той же текст: ViewerMutedKeywordFilter, зареєстрований у phoenix_candidate_pipeline.rs, порівнює його з tweet_text; FollowingViewerMutedKeywordFilter, зареєстрований у reverse_chron_posts_pipeline.rs, порівнює його з ancestor_texts, quoted_tweet_text та tweet_text. Поля, які зчитують лише деякі з них — ancestor_texts та quoted_tweet_text — записуються conversation_gap_ancestor_hydrator.rs, quote_hydrator.rs та quoted_post_text_hydrator.rs, зареєстрованими у phoenix_candidate_pipeline.rs, phoenix_scores_pipeline.rs та reverse_chron_posts_pipeline.rs. Конвеєр, який не запускає ці гідратори, ніколи їх не заповнює: там текст цитованого або попереднього допису не просто не зчитується, він відсутній. За межами хроніки, механізм правил фільтрації видимості — шар, який може приховати допис, де б він не з'явився — містить ViewerMutesAuthor (Mutes) та ViewerMutesRetweets (MuteRetweets), і жодного правила, рішення якого зчитує ключове слово. Єдиний результат заглушеного ключового слова, який називає цей репозиторій, MatchesMutedKeyword, з'являється рівно 1 раз — у graphql_results.rs — і лише ліворуч від гілки відповідності, що відображає його на проміжну мітку. Ніщо тут не вирішує це; те, що вирішує, не публікується. Два чесних обмеження. Цей репозиторій — це сервіс, який створює хроніку: те, що робить заглушення в сповіщеннях або в пошуку, вирішується в іншому місці, у коді, який X не публікує, і відсутність тут — це відсутність у репозиторії, а не в продукті. І ми не повідомляємо вам, яку вкладку обслуговує кожен конвеєр — це підключення проходить через кілька шарів, і відображення, яке ми не можемо чисто витягти, є відображенням, яке ми не публікуємо.

Звідки це походить: Вимкнення — це єдина настройка в продукті, тому воно сприймається як єдине правило, що застосовується скрізь. Опублікований код показує щось вужче: вимкнене ключове слово застосовується під час збирання хроніки, і фільтри, які його застосовують, не всі зчитують один і той же текст — тому допис може містити слово в місці, на яке жоден фільтр на цьому шляху ніколи не дивиться.

Пайплайн

Що відбувається з дописом, по порядку

Джерела-кандидати створюють дописи, гідратори додають функції, фільтри можуть повністю видалити допис, а скорери можуть лише перемістити його. Кожен вузол посилається на свій файл. Зв'язки вказують, як ми їх отримали — зчитані з коду, надані структурою каталогу або, у найслабшому випадку, зіставлені за назвою.

За країною

Що змінюється залежно від місця читання

Два списки країн визначають, що змінюється залежно від того, звідки ви читаєте, і вони не означають одне й те саме. Один приховує конфіденційний медіаконтент від глядачів, які не вказали свій вік. Інший просто вирішує, які країни модель може розрізняти — кожна інша країна стає «іншою», що є не обмеженням, а лише сліпою зоною. Кожна картка нижче вказує, звідки зчитується її власний список: константа, яку застосовує код, або резервний варіант, який може замінити параметр часу виконання.

…

Натисніть на країну, виділену рожевим, щоб по черзі прочитати облікові записи, які цей код там називає. У всьому репозиторії лише одна країна має такий список.

Як це перевіряється: «весь репозиторій» перевіряється на всьому репозиторії, а не на одній мові: кожен файл під закріпленим комітом зчитується, і список іменованих облікових записів знаходиться за його ФОРМОЮ — @handle, записаний у рядку коментаря, за яким одразу слідує числовий ідентифікатор облікового запису. Ця форма не залежить від Rust, тому в день публікації того ж списку іншою мовою, збірка повідомляє про це, замість того, щоб сторінка замовкла.

2798 облікових записів названі безпосередньо у вихідному коді, за числовим ідентифікатором та за дескриптором. Усе інше в шляху примусового виконання діє на мітку, прикріплену під час виконання, і це маркування не публікується.

Brazil — 2795 облікових записів, зазначених у коді
Brazil2026ElectionFilterhome-mixer/filters/brazil_2026_election_filter.rs:73

Ідентифікатори користувачів, про які повідомлено Виборчу комісію для виборів у Бразилії 2026 року.

Фільтр виборів у Бразилії 2026 року. Ст. 28 § 1º-A Виборчої резолюції № 23.610: Постачальники додатків, які використовують систему рекомендацій для користувачів, повинні виключати з результатів канали та профілі, про які повідомлено Виборчу комісію відповідно до § 1º цієї статті, та, за винятком випадків платного просування, контент, розміщений на них. https://dadosabertos.tse.jus.br/dataset/candidatos-2026
2795
облікові записи, записані у вихідний код, за ідентифікатором та за дескриптором
якщо ви не підписані
їхні дописи, репости, цитати та предки гілок видаляються з розділу «Для вас» — якщо тільки глядач вже не підписаний на обліковий запис
без перевірки країни
жодна умова країни, ринку чи локалі не відображається у фільтрі або там, де вона зареєстрована

⚠ Жодна умова щодо країни, ринку чи локалі не з'являється у файлі фільтра або навколо рядка, який його реєструє. Це твердження стосується опублікованого коду — який конвеєр обслуговує який ринок, може бути вирішено на рівні, який X не публікує.

У цьому файлі названо ще 52 облікові записи, і вони НЕ фільтруються — код пояснює, чому кожен з них був залишений без змін: 44 × «@… активний обліковий запис не знайдено.»; 8 × «Ми вважаємо, що обліковий запис @…, про який повідомив кандидат, не є фактичним обліковим записом кандидата, тому ми наразі його не фільтруємо.» Отже, тут враховано 2847 названих облікових записів, 2795 з яких фактично відфільтровано.

Зареєстровано в конвеєрі home-mixer/candidate_pipeline/phoenix_candidate_pipeline.rs:391

  • @madeleinelacsko
  • @nanacachen
  • @renildo
  • @VladimirAlves
  • @renatoroseno
  • @pedro_lupion
  • @erasintetica
  • @soninhafrancine
  • @AecioNeves
  • @tatyanavaleria
  • @ClariceChacon
  • @rosilenedf
  • @raulchristiano
  • @Rafael_Parente
  • @RicardoFabrizio
  • @marlonluz
  • @eduardopinheiro
  • @falcaopatos
  • @diegotavares
  • @RubinhoDivi
  • @depmariomotta
  • @depchinaglia
  • @Sen_Cristovam
  • @marcelvanhattem
  • @lgmbrasilia
  • @nilvanferreira
  • @DelioPinheiro
  • @RafaellMilas
  • @chagasvieira
  • @GabrielSouza_RS
  • @Pimenta13Br
  • @fabriziomeller
  • @rigotto
  • @gustavotutuca
  • @camasao50
  • @radiovaldo
  • @euserafimcorrea
  • @merisio
  • @rafangeli
  • @pauloteixeira13
  • @crismonteirosp
  • @ManuelaDavila
  • @tomioyano
  • @CintyaMuniz
  • @rodrigolimamdh
  • @Biango
  • @samiabomfim
  • @profsta
  • @Jfelippeneto
  • @depguibismarck

2745 більше акаунтів є в цьому списку

Залиште електронну пошту, щоб відкрити повний список тут, і ми повідомимо вам, коли він зміниться — щоденний моніторинг вже порівнює наш закріплений коміт з їхнім.

Щоб було зрозуміло: цей список є публічним. Він знаходиться в репозиторії Apache-2.0, і ви можете прочитати той самий файл безкоштовно — home-mixer/filters/brazil_2026_election_filter.rs. Електронна пошта тут купує зручність, а не доступ.

Числові ідентифікатори у файлі обфусковані — про це заявляє сам репозиторій. Імена користувачів — ні.

Названо ще 3 облікових записів без прив'язки до країни.
ThunderServiceImplthunder/thunder_service.rs:30
3
облікові записи, записані у вихідний код, за ідентифікатором та за дескриптором
якщо ви не підписані
їхні дописи, репости, цитати та предки гілок видаляються з розділу «Для вас» — якщо тільки глядач вже не підписаний на обліковий запис
без перевірки країни
жодна умова країни, ринку чи локалі не відображається у фільтрі або там, де вона зареєстрована

⚠ У файлі фільтра або навколо рядка, який його реєструє, не вказано жодної умови щодо країни, ринку чи локалі. Це стосується опублікованого коду — який конвеєр обслуговує який ринок, може бути вирішено на рівні, який X не публікує.

Усі 3 облікових записів, у порядку джерела

  • @grok
  • @gork
  • @products

Числові ідентифікатори у файлі обфусковані — про це заявляє сам репозиторій. Імена користувачів — ні.

Цей список відтворено з публічного репозиторію Apache-2.0, де зазначено, що дескриптори включені для прозорості. Ми повідомляємо, що робить код. Ми не підтримуємо, не перевіряємо і не оцінюємо звіти, які розмістили будь-який обліковий запис тут.

Урядові видалення

Механізм опубліковано. Запити — ні.

Репозиторій містить правила, які приховують допис від читачів у країні, що цього вимагала. Він не містить запитів і не містить країн: причина, яка несе код країни, отримується під час виконання з сервісу, який X не публікує.

0

запитів на видалення, опублікованих у репозиторії

0

країн, прив'язаних до одного

2

правил, що діють на підставі причини видалення

Як це рахується: Кожен файл у репозиторії сканується під час збірки — не тільки Rust-файли, оскільки допоміжний код для видалення також знаходиться в Scala, і відсутність, виміряна там, де речі вже немає, не є відсутністю. Тестовий код видаляється на двох рівнях — файли, які батьківський елемент оголошує `#[cfg(test)] mod …;`, виключаються, а в решті тіло `#[cfg(test)]` вирізається — і шукається код країни, записаний поруч із причиною видалення. Дволітерні коди, які саме джерело називає глобальними (`xx`, `xy`), означають «скрізь», а не країну: вони відкладаються та публікуються. Збірка завершується помилкою, якщо це число перестає бути нулем — вищезгадана заява не може застаріти сама по собі.

Звідки походить країна: тип, який його несе, TakedownReason, не визначений у жодному файлі цього репозиторію — він імпортується з xai_core_entities, крейту, який тут не опубліковано.

А метод, який би отримував країни видалення, get_takedown_country_codes, зовсім не зустрічається в репозиторії. Інтерфейс існує на стороні X; опублікований код ніколи його не викликає.

Прочитайте це правильно: репозиторій без жорстко закодованої країни не є платформою без видалень за запитом країни. Запити існують — вони знаходяться за межами цього репозиторію, агреговані за країнами та за півріччями у звітах X про прозорість, ніколи не повідомлення за повідомленням. Те, що вимірюється тут, — це те, що говорить код, а не те, що робить компанія.

Метод та обмеження

Чого ця сторінка не може вам сказати

Модель — це не код

Наведені вище ваги застосовуються до ймовірностей, створених Phoenix, навченим трансформером, чиї навчені параметри не публікуються. Читання коду не може виключити кореляцію, яку модель вивчила самостійно.

Деякі речі приховані

X заявляє, що приховує шаблони підказок Grox LLM та деякі правила примусового виконання, щоб зменшити маніпуляції. Код класифікатора та механізм правил опубліковані; текст підказок — ні.

Ніхто не може перевірити, що працює

X стверджує, що cron-скрипти підтримують ці значення за замовчуванням рівними виробничим, і що експерименти, що перевищують приблизно 10% трафіку, повинні бути тут видимими. Обидва є твердженнями про систему, яку ніхто за межами X не може спостерігати.

Назви параметрів та уривки коду залишаються англійською: вони цитують вихідний код, і перекладений ідентифікатор перестає відповідати рядку, на який він посилається. Перевірки тверджень перекладаються — ідентифікатори всередині них залишаються без змін.

Чому компанія з обробки даних створила це

Це метод, який ми продаємо, застосований до джерела, про яке всі сперечаються: взяти щось непрозоре, перетворити це на графік, де кожне значення містить лінію, з якої воно походить, і відмовитися публікувати число, яке ми не можемо процитувати. Те саме ми робимо для державних закупівель, фінансування досліджень та даних компаній.