X'in Çok Adımlı Yanıt Spam Filtresi: Kodu Ne Gösteriyor (2026)
X, 4 Eylül 2026'da 1.000+ takipçili hesapların altındaki kendi yanıt zincirleri için bir filtre ekledi. Kodu neye bakıyor, neyi muaf tutuyor, ne yapıyor.
Yazar: Shadowban Radar
Yayım tarihi: · Güncelleme: · 7 dk okuma

X'in açık kaynaklı kodunda, 4 Eylül 2026'da eklenmiş, en az 1.000 takipçili hesapların gönderileri altındaki kendi yanıt zincirlerini hedef alan bir filtre var. Bir yapay zeka modeli böyle bir zincirde aynı yazarın en az 2 gönderisini işaretlediğinde, X'in kodu işaretlenen her gönderiye bir yanıt spam etiketi ve 0 yanıt sıralama puanı verir.
X, 4 Eylül 2026'da açık kaynaklı koduna ne ekledi?
X'in herkese açık deposu xai-org/x-algorithm, 4 Eylül 2026'da multi_step_reply_spam adlı yeni bir yanıt spam akışı kazandı. Commit, grox/flows/reply_spam/ içine dört dosya ekledi:
plan_multi_step_reply_spam.py4 adımı zincirler: bir uygunluk filtresi, medya doldurma, spam tespiti ve bir yazma adımı.task_multi_step_reply_spam.pyfiltreyi, tespit adımını ve yazma adımını içerir.classifier_multi_step_reply_spam.pymodelin okuduğu konuşmayı kurar, cevabını ayrıştırır ve 3 koruma adımı uygular.state_multi_step_reply_spam.pysonucu saklar: işaretlenen gönderi kimliklerinin bir listesi ve bir gerekçe.
X'in README dosyası grox/ klasörünü, gönderiler yayımlanırken çalışan ve spam gibi kategoriler için sınıflandırıcılar içeren kod olarak tanımlar. Yeni plan, X'in diğer yanıt sıralama akışlarıyla aynı akış üreteçlerine kaydedilmiştir.
Görev dosyası 8 Eylül 2026'da yeniden düzenlendi: yazma adımı artık iki ayrı yazma yerine tek bir yayımlama işlevi çağırıyor. Yazdığı değer hâlâ 0,0.
Çok adımlı yanıt spam filtresi hangi yanıtları hedef alabilir?
Ücretsiz, giriş yok, sonuçlar saniyeler içinde.
Filtre (TaskMultiStepReplySpamFilter), bir yanıtı yalnızca aşağıdakilerin hepsi doğruysa seçer:
- Gönderi, üst gönderileri olan bir yanıttır ve bunlardan hiçbiri silinmemiştir.
- Doğrudan üst gönderisi aynı yazara aittir: hesap kendine yanıt vermektedir.
- Kök gönderinin en az 2 seviye altındadır.
- Yazarı, kök gönderinin yazarı değildir.
- Kök gönderinin yazarının en az 1.000 takipçisi vardır (
FOLLOWER_COUNT_THRESHOLD_FOR_SPAM_DETECTION = 1000). Bunun altında kod yanıtılow_blast_radiusgerekçesiyle atlar.
Koşulları sağlayan en küçük biçim şudur: başka bir hesabın gönderisi, değerlendirilen hesaptan bir yanıt ve aynı hesabın kendi ilk yanıtına verdiği ikinci bir yanıt. Filtre, yanıt verenin kendi takipçi sayısına hiç bakmaz.
Doğrudan üst gönderisi başka birine ait olan bir yanıt atlanır (parent_not_same_author). Yanıt verenin kendi gönderisi altındaki herhangi bir yanıt da atlanır (same_user_reply_as_root).
Filtre hangi hesapları muaf tutar?
X'in çok adımlı yanıt spam filtresi, herhangi bir model çalışmadan önce 5 tür durumu atlar:
- Grok ya da Gork hesapları tarafından yazılan yanıtlar.
is_high_page_rank_v2_userile kontrol edilen, yüksek page rank (sürüm 2) olarak işaretlenmiş yazarlar.is_grey_badge_userile kontrol edilen, gri rozet taşıyan yazarlar.- 1.000'den az takipçisi olan bir kök yazarın altındaki yanıtlar.
- Bir üst gönderisinin silindiği ya da bir gönderinin yazar kaydının bulunmadığı konuşmalar.
Bu dosyalar "yüksek page rank" ya da "gri rozet" ifadelerini tanımlamaz.
Model neyin spam olduğuna nasıl karar verir?
X'in kodu modele ne verildiğini ve cevabından sonra ne olduğunu gösterir, ama uyguladığı ölçütleri göstermez. Puanlayıcı, constants.py içinde belirlenen oai-gemma4-26b-2 model tanımlayıcısına bağlıdır.
Model şunları okur:
- yanıt yazarının profilini (ad, kullanıcı adı, biyografi ve profil konumu);
- konuşmayı numaralı gönderiler olarak; burada Gönderi 0 kök gönderidir ve "asla işaretleme" etiketi taşır, son gönderi ise "değerlendirilen yanıt" etiketi taşır;
- her gönderi için kullanıcı adını, takipçi sayısını, görünen adı, metni, bağlantıları ve en çok 2 medya öğesini;
- kök yazarın, kök gönderiye eklenen biyografisini.
10'dan fazla üst gönderisi olan bir konuşma, ilk 5 ve son 5 gönderiye kesilir (MAX_THREAD_SIZE = 10). Model JSON ile cevap verir: spam saydığı gönderilerin sıra numaraları ve bir gerekçe.
İstemin kendisi herkese açık değildir. prompts.py, depoda bulunmayan multi_step_reply_spam_system.j2 adlı bir şablonu yükler ve dosyanın kendi yorumu, istemlerin kötüye kullanılabilirliği azaltmak için dışarıda bırakıldığını söyler. X'in README dosyası, yayımlamadığı dosyalar arasında Grox istemlerini sayar.
Modelin cevabından sonra hangi koruma adımları gelir?
Üç kontrol bu sırayla çalışır ve her biri işaretleri silebilir:
- En yeni yanıt işaretlenen gönderiler arasında değilse, tüm işaretler düşürülür.
- Başka yazarlara ait işaretlenmiş gönderiler çıkarılır.
- Tam olarak 1 işaretli gönderi kalırsa, o da düşürülür.
Bu yüzden bir cezanın uygulanması için, en yeni yanıt dahil, aynı yazarın en az 2 işaretli gönderisi gerekir.
Filtrenin işaretlediği bir yanıta ne olur?
X'in kodu, konuşmadaki her işaretli gönderi için bir yanıt spam güvenlik etiketi uygular ve 0,0 yanıt sıralama puanı yayımlar. Yazma adımı (TaskWriteMultiStepReplySpamReplyRanking), DisableTaskForNonProd ile üretim ortamı dışında devre dışıdır.
Kod, her işaretli gönderi için şunları yapar:
RiskyHighVizReplygüvenlik etiketini uygular; yazar yüksek page rank ise, gri rozet taşıyorsa ya da bir test kullanıcısıysa uygulamaz (puan varsa 66 ya da daha yüksek bir güvenilirlik puanı yüksek page rank sayılır);- modelin gerekçesiyle, gerekçenin son 500 karakterine kesilmiş olarak 0,0 yanıt sıralama puanı yayımlar.
Aynı klasördeki ana yanıt sıralama puanlayıcısı, 0 ile 3 arasındaki ölçeğin dışındaki her puanı reddeder; yani 0, o ölçekteki en düşük değerdir. Bir gönderi 0 aldıktan sonra, standart yanıt sıralama yazma adımı, saklanandan daha düşük olmayan her yeni puanı atlar.
Bu dosyalar tek tek gönderilere etki eder. Hesabı askıya almaz ya da bir bütün olarak etiketlemez.
Yayımlanan dosyaların göstermedikleri
Depo, bir konuşma görünümünün puanı ya da etiketi nasıl kullandığını göstermez: puanın adı aranınca yalnızca reply_spam klasöründe bulunur. Ancak bir gönderinin altındaki yanıtları sıralayan bir model, reply_two_tower_v2, vardır ve grox_score adlı bir girdi alanı taşır; fakat hiçbir dosya bu alanı bu puana bağlamaz ve modelin öğrenilmiş ağırlıkları yayımlanmamıştır.
RiskyHighVizReply etiket adı, etiket listesi dahil, deponun under-the-hood klasöründe hiçbir yerde geçmez; bu yüzden yayımlanan kod onun için bir Under the Hood girdisi göstermez. X'in uygulama servisi bu etiketi, 23 Ekim 2026'da eklenen bir HideReply eylemiyle de bir gönderiye 7 gün, 30 gün ya da kalıcı olarak koyabilir. Dosyalar bunu neyin tetiklediğini söylemez.
Yanıtlarınızın etkilenip etkilenmediğini nasıl anlarsınız?
Yanıtlarınızın etkilenip etkilenmediğini anlamak için, konuşmada nerede durduklarına bakın. Reply deboosting (yanıtların geri düşürülmesi), yanıtlarınızın bir konuşmanın en altına itilmesi ya da "Daha fazla yanıt göster" altında gizlenmesi demektir.
Shadowban Radar testi dışarıdan tanımlar. Reply deboosting, X bir yanıtı konuşmanın kronolojik okunan görünümünde sunup aynı konuşmanın varsayılan görünümünün dışında bıraktığında tespit edilir. Reply deboosting sayfası elle nasıl kontrol edileceğini açıklar.
Shadowban Radar üzerindeki ücretsiz bir kontrol, bu testi herkese açık herhangi bir kullanıcı adında, giriş yapmadan çalıştırır. Bir yanıtın konumunu gösterir, nedenini değil. Düşük sıralanan bir yanıt birkaç sinyalden gelebilir; bu yüzden kontrol, bu filtrenin onu işaretleyip işaretlemediğini söyleyemez.
Konuşmadan tamamen kaybolan bir yanıt farklı bir kısıtlamadır: ghost ban.
Başka sistemler de bir yanıtı gizleyebilir: yanıtlar X'te neden gizleniyor ve X'in kodunun erişim hakkında söyledikleri yazılarına bakın.
Kod bu konuda ne yapmayı öneriyor?
Filtrenin koşulları üç alışkanlığa işaret eder: birkaç yanıt yerine tek yanıt, ek ayrıntıyı kendi gönderinize koymak ve yanıtları başkalarına yöneltmek. X modelin ölçütlerini yayımlamadı.
- Bir kez söyleyin. Filtre yalnızca aynı yazarın en az 2 gönderisi işaretlendiğinde harekete geçer ve başkasının gönderisi altındaki tek bir yanıt koşulu sağlayamaz. Birkaç kısa yanıtı tek bir yanıtta birleştirmek, filtrenin aradığı zincirden kaçınır.
- Ek ayrıntıyı kendi gönderinize koyun. Bir devam yanıtı, bir bağlantı ya da daha uzun bir açıklama kendi gönderinize ya da thread'inize konabilir: kendi gönderinizin altındaki yanıtlar hiçbir zaman değerlendirilmez (
same_user_reply_as_root). - Kendinize değil, insanlara yanıt verin. Doğrudan üst gönderisi başka bir hesabın gönderisi olan yanıt filtrenin dışındadır (
parent_not_same_author). - Bir zincir birlikte değerlendirilir. Model tüm konuşmayı bir kerede okur ve aynı yazarın her işaretli gönderisi kendi 0 puanını alır.
reply_spam dosyalarında, bir kez yazılmış bir etiketi kaldıran ya da bir 0'ı yükselten hiçbir adım yoktur.
Kaynaklar
5 Kasım 2026'da, xai-org/x-algorithm deposunda 021afa4 commit'inde okundu. 4 filtre dosyası 4 Eylül 2026'da 9b0dc31 commit'inde eklendi.
- plan_multi_step_reply_spam.py: 4 adım ve sıraları.
- task_multi_step_reply_spam.py: uygunluk, tespit ve yazma adımları.
- classifier_multi_step_reply_spam.py: model tanımlayıcısı, modele verilen konuşma ve 3 koruma adımı.
- state_multi_step_reply_spam.py: saklanan sonuç.
- constants.py: model tanımlayıcısı ve 66'lık itibar eşiği.
- prompts.py: eksik istem şablonu ve istemlerin dışarıda bırakıldığı notu.
- task_write.py: etiket işlevi ve standart yanıt sıralama yazma adımı.
- README.md:
grox/açıklaması. - README.md: X'in yayımlamadığı dosyaların listesi, Grox istemleri dahil.
- recsys_reply_two_tower_v2_model.py ve reply_features.py: yanıtları sıralayan modelin girdileri.
- action_control.rs (service) ve action_control.rs (types):
HideReplyeylemi, etiketi ve 7 günlük, 30 günlük ve kalıcı süreleri. - Commit 9b0dc31: 4 Eylül 2026.
Shadowban Radar, X Corp ile bağlantılı değildir. X'in kendi raporunun canlı bir kontrolle nasıl ilişkili olduğu için X'in Under the Hood sayfasına bakın.
Güncelleme geçmişi
- 021afa4 commit'inde yeniden okundu: filtre dosyaları değişmedi. Yanıt sıralama modelinin girdileri ve HideReply eylemi eklendi.


