Git’in `--author` bayrağıyla GitHub deposundaki yapay zeka bot spam’i nasıl engellendi
(archestra.ai)- Archestra deposu, yapay zeka tabanlı katkılar arttıkça anlamsız yorum ve PR’ların akınına uğradı; gerçek tartışmalar görünmez hale geldi ve bakım yükü büyüdü
- 900 dolarlık ödüllü issue, aslında gerçek katkıcıların tartışma alanıydı; ancak yapay zeka bot yorumlarıyla 253 yoruma kadar şişti ve saldırgan tavırlar da ortaya çıktı
- x.ai provider desteği issue’suna kapatılmış ve birleştirilmemiş 27 PR geldi; bunların çoğu katkıcılar tarafından test bile edilmemişti
- GitHub’ın prior contributor kısıtı, yeni gelen gerçek geliştiriciler ile yapay zeka botlarını ayıramadığı için Git
--authorile onaylı kullanıcılarmaincommit’lerinin author alanına eklendi - Onboarding sürecinde etik yapay zeka kuralları ve CAPTCHA’nın ardından GitHub Action ile bir whitelist commit’i oluşturuluyor; şişirilmiş etkinlik metrikleri yerine kaliteye öncelik veriliyor
Yapay zeka bot spam’i açık kaynak depolarını nasıl ele geçirdi
- Archestra deposunda, GitHub’ın yapay zeka tabanlı katkı metriklerindeki büyümenin aksine, sahada katkı kalitesi düşerken bakım yükü arttı
- 900 dolarlık ödül konulan issue, gerçek katkıcıların plan önerdiği, soru sorduğu ve işi denediği bir alandı; ancak yapay zeka botları üşüşünce toplam 253 yoruma çıktı
- Yapay zeka hesapları anlamsız uygulama planları bıraktı ve hatta bakımcılara karşı saldırgan tavırlar sergileyerek tartışmayı kirletti
- Depoyu izleyen ekip üyeleri her yapay zeka yorumunda bildirim aldı; @ethanwater, @developerfred, @Geetk172 gibi gerçek katkıcıların konuşmaları arada kayboldu
- x.ai provider desteği issue’suna kapatılmış ve merge edilmemiş 27 pull request geldi; bunların çoğunda katkıcılar test bile yapmamıştı
- Ekipten bir kişi, test edilmemiş PR’ları ve halüsinasyon ürünü issue’ları temizlemek için her hafta yarım gününü harcamak zorunda kaldı; bu temizlik aksadığında depo gerçek katkıcılar için hızla elverişsiz bir yere dönüşüyordu
GitHub kısıtlarını aşan whitelist yöntemi
-
İlk önlemlerin sınırları
- Archestra önce katkıcı itibarını hesaplamak için London-Cat adlı küçük bir bot geliştirdi
- London-Cat, merge edilen PR’lar ve bazı sinyallere dayanarak katkıcı itibarını hesaplıyordu; örnekte görüldüğü gibi katkıcıları ayırt etmede yardımcı oldu
- Ancak bu yaklaşım spam engelleme konusunda başarısız oldu
- Sonraki adım olarak geliştirilen AI sheriff ise örnekte görüldüğü gibi bazı gerçek PR’ları da kapattı
-
Onboarding olmadan etkinliği engelleme
- Anlamsız yapay zeka yorumları ve önerileri sürerken gerçek katkıcılar uzaklaştı; bunun üzerine ödülle katkı teşvik etme yöntemi ve iş adaylarına test görevi verme yaklaşımı bile yeniden değerlendirildi
- Archestra, gerçek katkıcılar, sorumlu yapay zeka kullanıcıları, yeni başlayanlar ve deneyimli mühendislerin hepsi için rahat ve güvenli bir depo oluşturmak amacıyla önlemleri sıkılaştırdı
- Artık onboarding’den geçmeyen kullanıcıların issue oluşturması, PR açması ve yorum yazması engelleniyor
- VC yatırımı almış bir startup için GitHub etkinlik metrikleri hassas bir konu olsa da Archestra, yapay zeka slop ile şişirilmiş metriklerden çok kaliteyi önemsiyor
-
GitHub ayarlarının sınırları
- GitHub’da açık kaynak depolar için yorum yazanları veya PR açanları doğrudan whitelist’e almanın basit bir yolu yok
- “Limit to prior contributors” ayarı, daha önce
main’e commit yapmamış kullanıcıların issue ve PR yorumları yazmasını engelliyor - Bu ayar, yapay zeka botları ile ödüllü işler için yeni gelen gerçek geliştiricileri ayıramıyor; ikisini de mevcut katkıcı olmayan kullanıcılar olarak görüyor
-
--authorbayrağıyla whitelist oluşturma- GitHub,
mainbranch’teki commit’in author alanına bağlı GitHub hesabını prior contributor olarak değerlendiriyor - Git commit’lerinde author ve committer olmak üzere iki kimlik alanı bulunur ve bu iki değer farklı olabilir
- Git’in
--authorbayrağı kullanılarak başka bir kişiye atfedilmiş bir commit oluşturulabilir; e-posta ilgili GitHub hesabıyla eşleşirse GitHub bu commit’i o profile bağlar ve katkıcı statüsü verir - Her GitHub hesabının
<id>+<username>@users.noreply.github.combiçiminde bir noreply e-postası vardır - Kullanıcının ID’si API ile sorgulandıktan sonra commit author olarak bu e-posta biçimi atanır
gh api users/their-username --jq '.id' git commit \ --author="their-username <ID+their-username@users.noreply.github.com>" \ -m "chore: add their-username to external contributors"- Bu commit
main’e push edildiğinde dış kullanıcı author, Archestra hesabı ise committer olarak görünür; GitHub da bu kullanıcıyı prior contributor sayarak anında yorum yetkisi verir
- GitHub,
-
Gerçek onboarding akışı
- https://archestra.ai/contributor-onboard - Web sitesinde etik yapay zeka kuralları ve CAPTCHA içeren onboarding yapılıyor
- GitHub Action - Gönderim sırasında kullanıcının GitHub ID’si sorgulanıyor,
EXTERNAL_CONTRIBUTORS.mddosyasına handle ekleniyor ve author alanı ilgili kullanıcı hesabı olan bir commitmain’e push ediliyor - Kullanıcı - whitelist’e alınarak depoya erişim yetkisi kazanıyor
- GitHub, yapay zeka üretimli etkinlikleri de içeren büyük ölçekli metrik artışları raporlarken açık kaynak proje ekipleri depodaki AI slop’u bizzat temizlemek ve gerçek katılımcı seviyesini korumak için geçici çözümler üretmek zorunda kalıyor
- AI slop, iyi katkı yapmak isteyen insanları gürültünün içine iterek motivasyonlarını düşürmekle kalmıyor; LiteLLM repo örneğinde olduğu gibi, saldırganların yapay zeka botlarıyla konuşma başlatmaya çalıştığı güvenlik risklerini de beraberinde getiriyor
1 yorum
Hacker News yorumları
Depo katkıcıları daha yüksek yetkilere sahip olduğundan, örneğin fork PR çalıştırmalarında onay gereksinimini atlayabildiklerinden, bu yaklaşımın gözden kaçan güvenlik etkileri var
GitHub belgeleri de, “yalnızca ilk kez katkı yapanlardan onay iste” ayarında, depoya daha önce commit’i ya da PR’ı merge edilmiş bir kullanıcının artık onaya ihtiyaç duymayacağını ve kötü niyetli bir kullanıcının basit bir yazım hatası düzeltmesi gibi zararsız bir değişikliği kabul ettirerek bu koşulu sağlayabileceğini söylüyor
Sırf birinin tamamen zararsız tek bir PR’ı depoya merge edildi diye güvensiz hale geliyorsa, o depo zaten baştan güvensizdir
Sorun, GitHub’ın buna izin vermiş olması. Yorum yazma ve PR oluşturma için çok temel gereksinimler koymuş olsaydı iş buraya gelmezdi
Ayrıca issue’lar silinebildiği gibi PR’lar da silinebilmeli
Amaç, bakımcıların depo katkılarını nasıl yönettikleri üzerinde daha iyi kontrol sahibi olması. Arşivlenen PR’lar yalnızca yöneticilere görünecek, ancak denetim ya da kurumsal/uyumluluk gereksinimleri için katkıcı kaydına bakımcılar erişmeye devam edebilecek. Böyle bir özellik yararlı olur mu merak ediyoruz
PR spam’i, ödül veren depolar için büyük bir sorun. PR’larının %95’inden fazlası reddedilen hesapların GitHub tarafından geçici olarak PR açması engellenmeli olabilir
Biri anlamlı bir tartışmaya katılır ve bir issue’yu ya da özelliği çözmek için iyi fikirler gösterirse, başta ona bir PR token’ı verirsin; PR kalitesi iyiyse birkaç tane daha verirsin; sonunda da serbestçe PR açabilen bir katkıcıya yükseltirsin. Issue’lar için de benzer bir sistem iyi olurdu ama issue bir PR katkısının başlangıç noktası olduğunda nasıl görünmesi gerektiğinden emin değilim. Yine de GitHub/MS’in Copilot abonelikleri ve token satmak istediğini, LLM üretimi PR’ların da bunun iş modelinin bir parçası olduğunu düşünürsek, bunun gerçekten gelmesi pek olası görünmüyor
Bunun gibi sorunları azaltmak için Elo tabanlı bir puan sistemi işe yarar mı diye merak ediyorum
Belirli bir projeye PR’ı başarıyla merge edilmiş kişiler, gerçek issue’ları kabul edilmiş kişiler ya da diğer kullanıcıların tepkileriyle yanıt kalitesi ölçülen kişiler puanlanabilir; hatta bunun üzerine, etkinliğin geçtiği projenin önem katsayısı da eklenebilir. Bu, insan ile AI ayrımı değil; gerçekten yararlı ve etkili katkılarla düşük çabalı/spam katkıları ayırmanın bir yolu olabilir. Issue’lar ve PR’lar Elo puanına göre sıralanabilir ya da filtrelenebilir. Burada Elo, bağlama dayalı bir puanın mecazı; gerçek Elo sistemini bire bir kopyalamayı önermiyorum
Negatif puanlar spam içerik ya da kabul görmemiş issue’ların diğer kullanıcılar tarafından işaretlenmesinden gelebilir; açıkça iyi niyetli ama merge edilmiş PR’a dönüşmeyen, doğru depo için olmayan ya da önce başka uygulama/altyapı gerektiren iyi PR’lar gibi durumlar içinse nötr ya da hafif pozitif puan veren bir ara bölge gerekli görünüyor
Örneğin, hapishanede gerçekten epey iyi satranç oyuncuları vardı ve bunlardan biri, kendisini yenerek yüksek Elo alan bir oyuncu havuzu oluşturdu; sonra da onları kullanarak kendi puanını daha da yükseltti. Bu süreç tekrar tekrar yapılabilir
Manipüle edilebilen her sistemin yolunu AI bulacaktır. Asıl yazıdaki yaklaşımda da bir AI katkıcı statüsünü kazanırsa diğer AI’ları da katkıcı yapabilir ve aynı sorun yeniden başlar. Bunun için bir amacı olması bile gerekmez. Troller trollük yapar ve AI botu olan troller sonsuz enerji harcayabilir. Onları durdurmaya ne kadar uğraşırsan, onlar için o kadar eğlenceli olur. Keşke bu sorunun bir cevabı olsa ama bilmiyorum
https://en.wikipedia.org/wiki/Elo_rating_system
Frontier users: 527,865
Light indexed: 527,865
Ready to queue: 9,083
Fast scores ready: 0
Activity events 24h: 30,266
Fast scores completed 24h: 19,123
Deep jobs completed 24h: 3,043
Fast-score ETA: n/a
Deep-hydrate ETA: 69h
Stale running jobs: 0
GitHub backpressure jobs: 19,113
High automation signals: 4,608
Medium automation signals: 1,327
Completed jobs: 74,714
En büyük engel GitHub hız limiti. Bu hızla %98 kapsama ulaşmak iki ay daha sürecek gibi görünüyor ama sonrasında bakımın oldukça basit olması gerekir
AI’nin ne kadar iyi kod yazdığını herkese anlata anlata gelinen nokta bu
Bunu AI satanlar başlattı; tuhaf bir şekilde bağımsız geliştiriciler de, hatta sektörde epey saygı gören bazıları da buna topluca atladı. Facebook’un şimdi insanları işten çıkarırken sebebin AI’nin çok iyi olması olduğunu söylemesi de yangına körükle gidiyor. Artık AI arkadaşının müthiş kod ürettiğine ikna olmuş insanlar var ve bu kodu tamamen yönetilemez hale gelmiş projelere gönderiyorlar
Saygın olup olmamasından bağımsız olarak, tek kişilik geliştiricilerin her zaman kovboylaşmamayı sağlayacak temel yetkinliklere sahip olduğunu sanmıyorum. Bu bazen deneyim eksikliği, bazen de doğuştan gelen yetersizlik olabilir. Ama bu anlatıya da tamamen inanmıyorum; çünkü daha “erken” dönemde güçlü bir tepeden inme itiş vardı
.ai alan adı olması ironik
Her şeyin çözümü sonunda daha fazla catgirl mü? [1] Proof of work aslında e-posta spam’ine karşı geliştirilmişti ve PR spam’i de bu uzun geleneğin son örneği sadece
1- https://anubis.techaro.lol
Geçerli bir proof of work üretmenin maliyeti, hangi uygulama olursa olsun, her zaman normal kullanıcıya daha fazla yük bindirir. Spam atmak için teşviki olan kişi ise bunu her zaman daha hızlı ve daha verimli yapabilir
Dizüstü bilgisayarın çok yavaş olduğu için PR gönderemiyor musun? O zaman birinden hash gücü kiralarsın ve sonuçta GitHub deposuna yazım hatası düzeltmesi gönderebilmek için botnet sahibine para ödenen bir sistem kurmuş olursun. HashCash’in gerçek dünyada kullanılmamasının bir sebebi var. Kulağa sevimli geliyor ama ancak herkesin hile yapmadığı bir vakumu varsayarsan çalışabilecek kadar teşvik yapısı saçma
Onboarding belgesinin üslubunda tipik bir AI izi var. Alıntılarda em dash ve “A değil, B” türü cümleler görünüyor
Ateşi ateşle söndürmeye çalışıyor olabilirler ya da daha önce dendiği gibi vakitleri yoktur, bunu anlıyorum. Yine de genel olarak eksik, yarım kalmış bir tepki gibi hissettiriyor
Bir insanın düşüncelerini toparlayıp koyduğu belli ama LLM’e “bunu bir blog yazısına dönüştür” demek bana HN’ye uygun olmayan düşük çabalı içerik gibi geliyor. Yine de temel yaklaşım olan “katkıcılara sınırla” fikrinin güvenlik açısından kötü bir fikir olabileceği yönünde bir tartışma üretmiş oldu
“E-posta GitHub hesabıyla eşleşirse GitHub commit’i profile bağlar ve katkıcı statüsü verir” kısmını görünce, katkıcının e-posta adresi değişirse bunun bozulup bozulmayacağını merak ettim
Çünkü yıllar boyunca artık var olmayan e-posta adresleriyle çeşitli projelere katkıda bulundum
Ama anladığım kadarıyla, yazarın asıl git commit’ine kaydedilmiş e-posta adresi kullanılmıyor; onun yerine GitHub kullanıcı kimliği ve kullanıcı adını benzersiz kısım olarak içeren GitHub tarafından üretilmiş bir adres kullanılıyor gibi. Böyleyse yazar e-posta adresini değiştirse bile bu korunabilir. Yine de katkıcı hesap erişimini kaybedip yeni bir hesap açmak zorunda kalırsa bozulabilir ama bu muhtemelen daha nadirdir
“Adaylara eğlenceli test ödevleri vermeyi bırakmalı mıyız?” sorusunun cevabı evet
Yine geliştiriciler: insanlara gerçek sorun çözdürmeyin