Yapay Zeka / AI

Beş Ajana Aynı Sınav: Cevap Anahtarı Mühürlü Zarfta

Beş kodlama ajanına aynı eski PHP deposunu ve aynı görevi vereceğim. Bu yazı sonucu değil, sonuçlardan önce mühürlenen kuralları, puanlamayı ve gizli test ilkesini anlatıyor.

7 dk okuma

Bu yazının İngilizcesi de var →
Sıra masasında yan yana beş boş sınav kâğıdı ve önlerinde kırmızı mühürlü zarf; AI kodlama ajanı karşılaştırması için sınav düzeni

Bu hafta LinkedIn'den bir mesaj geldi. Gönderen Atlantic'in kurucu ortağı ve CTO'su Rüzgar İmren. Ürünleri Factory'yi kısaca şöyle anlatıyordu: işi tarif ediyorsunuz, kendi izole makinesinde kodu yazıp çalıştırıyor, test edip PR açıyor, merge kararı ekipte kalıyor. Ekiple bakıp ne düşündüğümü yazmamı istiyordu.

Tek bir ürünü deneyip "beğendim" ya da "beğenmedim" demek kolay. Daha faydalısı aynı işi beş ajana vermek: Claude Code, Codex, Antigravity, Qwen Code ve Atlantic Factory. Ama bir AI kodlama ajanı karşılaştırması sonuç tablosuyla değil, kurallarla başlar. Bu yazıda sonuç yok. Sınavın kurallarını, puanlamasını ve hile kapılarını sonuçları görmeden yazıyorum ki sonra kimse, ben de dahil, kuralları kazanana göre eğemesin.

Neden önce kurallar?#

Okulda sınav kâğıdını kim hazırlıyorsa cevap anahtarını mühürlü zarfa koyar. Zarf sınavdan sonra açılır. Sebep öğretmenin dürüstlüğünden şüphe değil; sınav bittikten sonra hangi sorunun "aslında kolay" olduğunu, hangi cevabın "yarım puanı hak ettiğini" tartışmak çok kolay.

Benchmark yazılarında en sık gördüğüm sorun da bu. Testi yapan sonuçları görüyor, sonra ölçütleri kuruyor. Kazananın iyi olduğu konu ağırlık kazanıyor, kaybedenin iyi olduğu konu "kapsam dışı" oluyor. Kötü niyet gerekmiyor; insan beyni bunu kendiliğinden yapıyor. Çözüm de eski: puanlamayı önceden ilan etmek.

Sınava girenler#

Beşi aynı tür araç değil, ilk sorun burada. Dördü sizin sürdüğünüz terminal ajanları. Biri issue'dan PR'a kadar kendi kendine yürüyen bir boru hattı.

Aday Kimden Tür Nasıl başlatılır
Claude Code Anthropic Terminal ajanı claude -p "<görev>"
Codex OpenAI Terminal ajanı codex exec --sandbox workspace-write "<görev>"
Antigravity CLI Google Terminal ajanı Google'ın önerdiği headless yüzey
Qwen Code QwenLM, Apache-2.0 Açık kaynak terminal ajanı qwen -p "<görev>"
Atlantic Factory Atlantic AI Inc. Issue'dan PR'a boru hattı GitHub Issue + GitHub App

Kendi dokümanlarından birkaç ayrıntı (15 Ekim 2026), çünkü her biri protokolde bir satıra dönüşüyor:

  • Codex: codex exec bayraksız çalışınca salt okuma kum havuzunda başlıyor. Dosya yazabilmesi için --sandbox workspace-write şart. Eski betiklerdeki --full-auto artık desteklenmiyor.
  • Claude Code: --output-format json çıktısında total_cost_usd alanı var, ama dokümanın kendisi bunun istemci tarafında bir tahmin olduğunu, faturayla ayrışabileceğini söylüyor.
  • Antigravity: Google Cloud blogundaki 10 Haziran 2026 yazısına göre Go ile yazılmış CLI, SSH ya da uzak konteyner gibi headless işler için önerilen yüzey. Kullanılan model test günü kaydedilecek.
  • Qwen Code: Google'ın Gemini CLI'ının v0.8.2 sürümünden uyarlanmış; OpenAI, Anthropic, Gemini ve Qwen API'leriyle, lokal modellerle de çalışıyor. Acı Gerçek: Qwen Code'u başka bir firmanın modeline bağlarsanız Qwen'i değil, o modeli Qwen'in kabuğunda test etmiş olursunuz. Protokolde bir Qwen modeli sabitleniyor.
  • Atlantic Factory: Ürün sayfasına göre bir GitHub App kuruluyor, iş bir ticket ile başlıyor, dal ayrı bir makinede factory.deploy.yml tanımıyla ayağa kalkıyor, bir tarayıcı ajanı uygulamayı deniyor (sayfadaki örnekte "23 of 40 steps"), Factory kendi diff'ini en fazla iki turda gözden geçiriyor ve PR açıyor. Default dala hiç push etmiyor. Model adı verilmiyor; Low'dan Max'e katmanlar var, güvenlik sayfasına göre çağrılar Amazon Bedrock üzerinden Anthropic Claude ve OpenAI GPT modellerine gidiyor.

Buradan çıkan karar: Atlantic'i terminal ajanlarıyla aynı terazide tartmak elmayla armudu tartmak olur. O yüzden iki ayrı sonuç tutuyorum. Birincisi kodun kendisi; beşi için aynı puanlama. İkincisi süreç: görevden incelemeye hazır PR'a kadar kaç kez insan eline dokundu. Bu ikincisi puana girmiyor, ayrı yazılıyor.

Soru kitapçığı: hangi depo, hangi görev?#

Fikri tartışırken ChatGPT bana sıfırdan küçük bir e-ticaret uygulaması kurup stok rezervasyonu yazdırmayı önerdi. Mantıklı bir öneri, ama yapmayacağım. Sınav için kendi yazdığım bir depo benim beklentilerimle şekillenir; hatalar oraya ekilmiş olur, kendiliğinden büyümüş değil.

Bunun yerine gerçek bir eski bina kullanıyorum: 2020'de yazdığım Altınkaynak döviz kuru kütüphanesi (github.com/HalitYesil/altinkaynak). On PHP dosyası, son commit 6 Eylül 2020, SOAP servisine bağlı. Altınkaynak'ın web servisleri sayfası bugün yalnızca HTTPS üzerinden JSON dönen iki adres listeliyor. Görev bu farktan çıkıyor:

Markdown
Görev: Kütüphaneyi Altınkaynak'ın güncel JSON uçlarına taşı.
Kaynak: https://altinkaynak.com/Araclar/Servisler
- Döviz ve altın listesini veren mevcut public metotların imzası korunacak.
- SOAP bağımlılığı ve kaynak koddaki kimlik bilgileri kaldırılacak.
- Değişikliği doğrulayan testler eklenecek.
- Görevle ilgisi olmayan dosyalara dokunulmayacak.
Bitince değiştirdiğin dosyaları ve neden değiştirdiğini PR açıklamasına yaz.

Metin dört terminal ajanına komut satırından, Atlantic'e GitHub Issue olarak aynen gidiyor. Depoda AGENTS.md, CLAUDE.md ya da başka bir kural dosyası yok. Vibe Coder 4.2'de araçların aynı dosyayı farklı okuduğunu yazmıştık; bu sınavda o fark ölçülmüyor, herkes yalnızca görev metnini görüyor.

Kurallar#

  1. Aynı başlangıç. Şablon depodan beş ayrı depo üretiliyor; GitHub'ın template repository özelliği her birine birbiriyle ilişkisiz bir geçmiş veriyor, PR'lar karışmıyor. Commit kimlikleri farklı olur ama dosya ağacının hash'i aynı olmalı. Sınav başlamadan bunu aşağıdaki betik kontrol ediyor.
  2. Aynı görev metni, yukarıdaki blok. Kelimesi değişmiyor.
  3. Müdahale yok. İlk turda insan dokunmuyor. Ajan soru sorarsa tek, hazır bir cevap var: "Görev metnindeki bilgiyle devam et." Her soru sayılıyor.
  4. Süre tavanı 60 dakika. Dolarsa o ana kadarki hâli puanlanıyor.
  5. Web araması kapalı. Ajanların bir kısmı web'de arama yapabiliyor ve bu yazı yayınlandığı anda internette. Kapatılamayan araçta durum kayda geçiyor.
  6. Model ve sürüm kaydı. Her koşuda aracın sürümü ve modeli; Atlantic için katman.
  7. Gizli test paketi. Ajanların görmediği testler, PR birleşmeden temiz bir kopyada çalışıyor. İçeriği sonuç yazısıyla birlikte yayınlanacak, bugün değil. Cevap anahtarı zarfta kalıyor.
  8. En az iki koşu. Aynı araç iki koşuda farklı sonuç verirse ikisi de yazılıyor; iyi olanı seçmek yok.
  9. Maliyet ayrı. Her aracın kendi raporladığı tutar, kaynağıyla. Abonelikle API faturası aynı şey değil, karıştırılmıyor.

Birinci kuralın betiği bu. Her deponun kök commit'indeki ağacı şablonun ağacıyla karşılaştırıyor:

Bash
#!/usr/bin/env bash
# sinav-yoklamasi.sh: her ajanın deposu aynı başlangıç ağacından mı çıkıyor?
set -euo pipefail
​
BEKLENEN=${1:?Kullanım: sinav-yoklamasi.sh <şablon-ağaç-hash> <depo>...}
shift
HATA=0
​
for DEPO in "$@"; do
  KOK=$(git -C "$DEPO" rev-list --max-parents=0 HEAD | tail -n 1)
  AGAC=$(git -C "$DEPO" rev-parse "$KOK^{tree}")
  if [ "$AGAC" = "$BEKLENEN" ]; then
    echo "tamam  $DEPO  ${AGAC:0:12}"
  else
    echo "FARKLI $DEPO  ${AGAC:0:12}" >&2
    HATA=1
  fi
done
​
exit "$HATA"

Betiği altinkaynak'ın bir kopyasında denedim. Şablonun ağacı 7c6df0b4e980. Beş depoyu şablondan üretilmiş gibi ayrı geçmişlerle kurunca beşi de tamam dedi, çıkış kodu 0. Birinin src/Altinkaynak.php dosyasına tek satır ekleyip deposunu yeniden kurunca o depo FARKLI ile e16266be68cd bastı, çıkış 1. Tek satırlık fark sınavı başlatmıyor.

Puanlama, sonuçlardan önce#

Ölçüt Puan Nasıl ölçülüyor
Gizli testler 40 Geçen test oranı
Sözleşme korunuyor mu 15 Eski public metotlar aynı imzayla çalışıyor mu
Kapsam disiplini 15 Görevle ilgisiz dokunulan dosya ve satır
Kendi yazdığı testler 10 Var mı, gerçekten bir şey ölçüyor mu
Kod kalitesi 10 php -l, okunabilirlik, sırrın gerçekten çıkması
PR açıklaması 10 Yazdığı ile diff'in tutarlı olması

Puana girmeyen ama yazılacaklar: toplam süre, maliyet, ajanın sorduğu soru sayısı ve Atlantic için süreç sonucu.

Teknik Detay: Kapsam disiplinine 15 puan verdim, çünkü bence kodlama ajanlarının en pahalı hatası yanlış kod değil, sormadan dokunulan dosya. Doğru çalışan ama otuz dosyaya dokunan bir PR'ı incelemek, yanlış çalışan üç dosyalık bir PR'ı düzeltmekten uzun sürebilir.

Davetiyenin küçük yazısı#

İki şeyi açık yazayım. Birincisi: Atlantic'ten ücret ya da ayrıcalık almıyorum, mesajdaki referans bağlantısını kullanmıyorum. Ürün adresini doğrudan veriyorum: factory.getatlantic.ai. Şirketi Mart 2026'da Rüzgar İmren ve Ege Mustafa Çelik kurmuş; Haziran'da Galata Business Angels'tan 5 milyon dolar değerleme üzerinden yatırım aldıkları Webrazzi'de haber olmuştu.

İkincisi kart meselesi. Mesajda "ücretsiz, kart yok" yazıyordu. Fiyat sayfası bugün "Start with $50 free for 7 days" diyor, aynı sayfanın SSS'si ise "You save a card during onboarding and pay $0 today." Mesajı ilk incelettiğimde ChatGPT kart kaydını not etmişti; ikinci yanıtında kendini düzeltip kartsız başlangıç dedi. Bugünkü sayfa ilk yanıtın yanında duruyor. Bu yüzden deneme koşullarını hafızadan değil, test günü alınmış ekran görüntüsünden yazacağım.

Kod tarafında güvenlik sayfası net konuşuyor ve bunu takdir ediyorum. Çalıştırıcılar AWS us-east-1'de, model çağrıları Bedrock'un bölgeler arası yönlendirmesiyle başka bir AWS bölgesinde işlenebiliyor. Testler ağı kapalı konteynerlerde koşuyor. QA ekran görüntüleri ve tarayıcı kayıtları listelenmeyen bağlantılarla S3'te duruyor, 180 gün sonra siliniyor ve o süre boyunca "Anyone holding a link can open it." Herkese açık bir depo için sorun değil. Müşteri koduyla deneyecekseniz bu cümleyi okuyup karar verin.

Testten önce Rüzgar'a soracağım üç şey var: PHP projesi için örnek bir factory.deploy.yml, ajanın web erişiminin kapatılıp kapatılamadığı ve koşuda kullanılan modelin adı. Cevaplar sonuç yazısında olacak.

Zarf ne zaman açılacak?#

Sonuçlar, bu Cumartesi başlayan Kentsel Dönüşüm serisinin dördüncü bölümü Kaçak Kat'ta (28 Kasım) yayınlanacak: beş PR, diff'ler, gizli testler ve test çıktıları, herkesin kendisi açıp bakabileceği şekilde.

Zarfı mühürledim. Kazananı ben değil, cevap anahtarı belirleyecek. Teknolojiyle kalın.

Yorumlar

0 yorum

Yorum yazın

kişisine yanıt

Yorumlar onaylandıktan sonra görünür. E-posta adresiniz kimseyle paylaşılmaz. Kişisel verileriniz nasıl işlenir?