Gece saat 02:15’te Yusuf’un atölyesinde klasik bir yazılımcı tartışması patlak verdi: Ajanlı kodlama gerçekten herkesi yazılımcı yapacak mı, yoksa zihinsel yükü sadece halüsinasyonlu kod çöplüğünün bakımına mı devrediyoruz?
Standart yapay zekâ iş akışlarında bir insan ChatGPT veya Claude’a fikrini sorar, diplomatik bir kaçamak yanıt alır (“Bir yandan öyle… diğer yandan böyle…”) ve sekmeyi kapatır. Fakat Linux üzerinde yerel ikili dosyalarla çalışan otonom ajanlarla çevriliyken—Pi (pi), OpenCode (opencode) ve Antigravity (agy)—tek bir modele soru sormak kaçırılmış bir fırsattır.
Neden onları resmi bir turnuva kural seti altında, sıfır insan müdahalesiyle birbiriyle tartıştırmıyor ve ardından bağımsız bir yapay zekâ hakem heyetine rüşvet geçmez, makineyle doğrulanabilir bir karar verdirmiyoruz?
İşte bu yüzden ai-munazara motorunu inşa ettik (münazara, Osmanlı’nın yapılandırılmış, yüksek tempolu entelektüel tez savunma geleneğidir).
Modern Çoklu Ajan Altyapısının Gerçeği
2026 yılında ciddi yapay zekâ mühendisliği, tek bir API uç noktasına rastgele istek atmakla ilgili değildir. Artık mesele ajan altyapıları (agentic harnesses) yönetmektir—her birinin kendine has araç protokolleri, sandbox sınırları, alt-ajan üretim döngüleri ve token bütçeleme katmanları vardır:
| Ajan Altyapısı | Uzmanlık Alanı | Varsayılan Modeller | Çalışma Modeli |
|---|---|---|---|
Pi (pi) | Hızlı, terminal-yerel alt-ajanlar, cerrahi AST araçları | Muse Spark 1.2, DeepSeek V4 Flash | Headless CLI, worktree izolasyonu |
OpenCode (opencode) | Çok katmanlı model yönlendirme, stratejik mimari | Ox Alpha, GLM-5.3, MiMo V2.5 | Headless çalıştırma, toplu token boruları |
Antigravity (agy) | Derin kod zekâsı, çok-modlu mimari sentez | Gemini 3.7 Flash, Gemini 3.1 Pro High | Tam ajan çalışma zamanı, MCP ve araç grafı |
Bu CLI araçlarının her biri, klavye başında oturan bir insanla eş-programlama yapmak üzere tasarlanmıştır. Hiçbiri ortak bir turnuva arenasında sırayla konuşma bayrağını birbirine devretmek için inşa edilmemiştir.
Bunları bir araya getirmek üç temel mühendislik sürtünmesini çözmeyi gerektirdi.
Sıfır-Daemon Turnuva Motorunun Mimarisi
Katı Ponytail minimalizm ilkelerimize sadık kalarak, ai-munazara saf bir CLI olarak çalışmalıydı—Redis sunucuları, WebSocket daemon’ları veya arka plan şişkinliği yok. Sadece temiz bir durum dizini (.munazara/) üzerinde işlem yapan tek bir munazara ikili dosyası.
ai-munazara/
├── .munazara/
│ ├── debate.json # Resmi turnuva kuralları ve katılımcı kadrosu
│ ├── state.json # Atomik durum makinesi ve tur işaretçisi
│ ├── transcript.md # Yalnızca ekleme yapılan kronolojik markdown akışı
│ └── verdict.md # Kriptografik imzalı hakem puan kartları
└── src/munazara/
├── driver.py # Alt süreç çalıştırma ve zaman aşımı yöneticisi
├── registry.py # pi, opencode ve agy için dinamik keşif
└── verdict.py # 3 Hakemli oy sentezleyici ve puan hesaplayıcı
İnşa sırasında çözdüğümüz üç mühendislik zorluğu:
1. Non-Interactive CLI İzolasyonu ve TTY Kapanları
Her ajan altyapısı başsız (headless) çalıştırıldığında farklı davranır:
pi,-p "prompt"ile etkileşimsiz bayrakları tercih eder.opencode,--promptkabul eder ancak standart girdi interaktif bir TTY beklerse kilitlenebilir.agy,--dangerously-skip-permissions -p "prompt"ve kesin model adı eşleşmesi ister.
Herhangi bir alt süreç stdin bekleyerek kilitlenseydi, turnuvanın tamamı deadlock’a girerdi. Ajan çalıştırma döngüsünü POSIX zaman aşımları, stdout boruları ve arındırılmış prompt tamponlarıyla sardık:
# ponytail: Clean non-interactive subprocess wrapper <- timeout_sec=180 -> concurrent tournaments > 1
def _run_harness_command(self, profile: AgentProfile, prompt_text: str) -> str:
cmd = profile.command_template.format(prompt=prompt_text)
proc = subprocess.run(
shlex.split(cmd),
capture_output=True,
text=True,
timeout=180,
check=False
)
if proc.returncode != 0:
raise RuntimeError(f"Harness '{profile.name}' failed: {proc.stderr.strip()}")
return proc.stdout.strip()
2. Dinamik Model Keşfi vs Sabit Kodlanmış Listeler
Münazarayı ilk başlattığımızda Antigravity hata verdi: --model pro yerel CLI yapısında doğrudan tanınmıyordu. Statik takma adlar yazmak yerine registry.py içine dinamik CLI iç gözlemi ekledik:
munazara başlarken agy --help çıktısını regex ile tarayarak mevcut tüm Gemini varyantlarını (Gemini 3.7 Flash High/Medium/Low, Gemini 3.6 Flash vb.) anlık olarak çıkarır ve kısayolları (flash, pro, flash-thinking) aktif ikili dosya yeteneklerine otomatik olarak haritalar.
3. Atomik Durum ve Tek-Yazıcı Değişmezi
Birden fazla ajan veya hakem transkripte sırayla yazarken dosya bozulması ölümcüldür. .munazara/.lock üzerinde POSIX dosya kilitleme (fcntl.flock) uygulayarak her turun diske atomik yazılmasını, Markdown’a aktarılmasını ve bir sonraki ajan uyandırılmadan önce doğrulanmasını sağladık.
Turnuva: Demokratikleşme vs Değişmezlerin Muhafızlığı
Motor hazır olduğunda, 9 turluk otonom turnuvayı başlattık: “Ajanlı kodlama herkesi yazılımcı yapacak mı?”
Yarışmacılar:
- 1. Münazır (
pi/Muse Spark 1.2): Şüpheci Sistem Muhafızı. Kod yazmanın ucuz olduğunu, fakat değişmezlerin (invariants) bakımının asıl yazılım mühendisliği olduğunu savundu. Depoları doğrulanmamış yapay zekâ koduyla doldurmanın devasa bir bakım uçurumu yaratacağını belirtti. - 2. Münazır (
opencode/Ox Alpha): Ergonomi Tarihçisi. Bilişim tarihindeki her büyük sıçramanın (derleyiciler, SQL, GUI, yüksek seviyeli diller) mühendisliği “değersizleştirmekle” suçlandığını, fakat her birinin insanların inşa edebileceği dünyayı katbekat genişlettiğini savundu. - 3. Münazır (
agy/Gemini 3.7 Flash): Doğrulama Ağı Mimarı. Çığır açan sentezi sundu: Büyük Ayrışma (The Great Decoupling).
┌──────────────────────────────────────────────────────────────┐
│ BÜYÜK AYRIŞMA │
├──────────────────────────────┬───────────────────────────────┤
│ GEÇİCİ KULLANICI YAZILIMI │ KALICI BİLEŞİK ÇEKİRDEK │
│ (İhtiyaç anında üretilen, │ (Durum bilgili şemalar, POSIX│
│ sıfır bakım gerektiren, │ dosya sistemi, kriptografik │
│ tek kullanımlık scriptler) │ kimlikler, deterministik CI)│
├──────────────────────────────┼───────────────────────────────┤
│ Doğal dille herkese │ Menşe zarları ve doğrulama │
│ demokratikleştirildi │ ağlarıyla sıkıca korunur │
└──────────────────────────────┴───────────────────────────────┘
Antigravity, ajanlı kodlamanın tek kullanımlık yazılımları geçici (ephemeral) meta haline getirerek geleneksel “bakım uçurumunu” erittiğini savundu. 50 satırlık özel bir CLI aracının bakımını artık yapmazsınız; ihtiyaç anında üretir, kullanır ve atarsınız.
Buna karşılık, kalıcı bileşik sistemler (yusufakcakaya.com’un 32 sıfır-jank simülasyonu ve kriptografik ARG’si gibi) deterministik menşe zarları ve 3-ufuklu doğrulama ağları arkasında korunur.
Kâhin Tuzağından Kaçış: 3 Bağımsız Hakem
Modern yapay zekâ literatüründe otomatik değerlendirmenin en büyük kusuru Kâhin Tuzağı’dır (Oracle Trap): Bir LLM, kendi çıktısını dalkavukluk veya önyargı olmadan nesnel olarak puanlayamaz.
Kendi kendine not vermeyi engellemek için ai-munazara, farklı model mimarilerinden oluşan bağımsız bir 3 hakemli jüri atadı:
- 1. Hakem (
pi/DeepSeek V4 Flash): Sistem Ampiristi. - 2. Hakem (
opencode/GLM-5.3): Kategorik Puanlama Denetçisi. - 3. Hakem (
agy/Gemini 3.1 Pro High): Mimari Doğrulayıcı.
Tüm Münazırların Kapsamlı Puan Kartı (2. Hakem Denetimi)
Resmi denetim günlüğü yalnızca kazananı değil, üç yarışmacıyı da dört resmi boyutta puanladı:
| Kategori | 1. Münazır: Pi (Muse Spark 1.2) | 2. Münazır: OpenCode (Ox Alpha) | 3. Münazır: Antigravity (Gemini 3.7 Flash) |
|---|---|---|---|
| Mantık & Tutarlılık | 8.5 / 10 | 9.0 / 10 | 9.0 / 10 |
| Kanıt & Ampirik Veri | 8.0 / 10 | 🏆 9.5 / 10 | 7.0 / 10 |
| Çürütme & Savunma | 8.0 / 10 | 9.0 / 10 | 🏆 9.5 / 10 |
| Açıklık & Yapı | 8.5 / 10 | 9.0 / 10 | 🏆 9.5 / 10 |
| Toplam Skor | 33.0 / 40 | 🏆 36.5 / 40 | 35.0 / 40 |
| Jüri Kararı | 2. Sıra (Pota / Sınır) | 2. Sıra (Kanıt Lideri) | 🏆 3–0 Oy Birliğiyle Galip |
Puanların Anlattığı Derin Hikâye:
- OpenCode Kanıt Boyutunu Açık Ara Kazandı (9.5/10, Toplam 36.5): OpenCode münazaranın en iyi bireysel turlarını sundu. Soyutlama dalgaları envanteri (Assembly → Fortran → SQL → WordPress → Excel) ve ölçümlü otopilot analojisi (yolcu-mil sayısı 100 kat artarken pilot başına yolcu oranının çöküşü) turnuvanın en sağlam ampirik araçlarıydı.
- Pi Olmazsa Olmaz Kısıt Katmanını Oluşturdu (33.0/40): Pi, münazaranın entelektüel potası oldu. “Kontrol etmek ucuzdur; kontrol edilecek değişmezi (invariant) keşfetmek zordur” tespiti ve danışıklı doğrulama analizi (üretici ile test edicinin aynı gizli uzay kör noktalarını paylaşması) tüm paneli naif iyimserlikten arındırdı.
- Antigravity 3–0 Kararı Neden Kazandı (35.0/40): OpenCode tarihsel analojilerde, Pi ise teknik şüphecilikte öne çıkarken; Antigravity hayatta kalan mimari kabı (Büyük Ayrışma) inşa etti. Kapsam kaybetmeyen, her doğrudan saldırıyı çalışan mekanizmayla (Karantina-Terfi Protokolü, 3-Ufuklu Doğrulama Ağı) göğüsleyen ve her iki rakibin de sonunda içine yerleştiği çerçeveyi çizen tek taraf oldu.
Web’e ve Terminal VFS’ye Canlı Yayın
Yusuf’un atölyesinde inşa etmenin en güzel yanı, hiçbir şeyin terminal loglarında kilitli kalmamasıdır.
Turnuva biter bitmez Markdown transkripti ve imzalı karar Astro tarafından işlendi:
- İnteraktif, çift dilli bir tartışma yazısı olarak yayınlandı (/discussions/will-agentic-coding-make-everyone-a-developer ve /en/discussions/will-agentic-coding-make-everyone-a-developer).
- Tarayıcı içi retro Terminal VFS’sine
/discussions/will-agentic-coding-make-everyone-a-developer.txtolarak kaydedildi. - 118 statik sayfa ve 5 Cruel Stern test bataryasının tamamında %100 exit-0 makine kanıtıyla doğrulandı.
Nihai Analiz: Otonom Diyalektiğin Üç Yasası
Gece saat 4’te arenadan geriye çekilip baktığımızda, bu deney çoklu ajan mühendisliğinin geleceğine dair üç temel gerçeği ortaya koydu:
1. Monolitik Prompt Öldü
Tek bir modele dengeli bir görüş sormak, kurumsal ve ılık bir uzlaşı üretir. Çatışmacı rol ayrımına dayalı çoklu ajan turnuvaları ise modelleri eğitim dağılımı kaçamaklarından koparır. Bir ajan, rakip mimarilerin doğrudan çapraz sorgusu altında tezini savunmak zorunda kaldığında gerçek entelektüel sentez doğar.
2. Doğrulamanın Asimetrisi
Münazaranın en temel dersi Pi’nin demir kuralıdır: Bir test süitini çalıştırmak emtiadır; neyin kırılmaması gerektiğini belirleyen değişmez sözleşmesini (invariant contract) inşa etmek ise asıl darboğazdır. Yapay zekâ modelleri milyonlarca satır geçici kod üretirken, insan mühendislerin rolü yok olmuyor—kod tesisatçılığından Değişmezlerin Muhafızlığına (Invariant Stewardship) terfi ediyor. Değeriniz artık kod yazma hızınız değil, sistem sınırlarını belirleme vizyonunuzdur.
3. Geçici Yazılım Gerçek Devrimdir
Ajanlı kodlamanın en büyük kırılması, bir SaaS kurmanın %10 hızlanması değildir. Asıl kırılma, kişisel araçlar için bakım uçurumunun yok olmasıdır. Karmaşık bir CSV dosyasını dönüştürmek için yazılan 30 satırlık bir script veya tek seferlik bir görselleştirme artık 5 yıl boyunca bakıma muhtaç değildir. 4 saniyede bellekte sentezlenir, çalıştırılır ve yok edilir.
Kapanış ve Özet: Gece Yarısı Atölyesi
Bu gece ai-munazara motorunu inşa etmeye başlarken mesleğimizin geleceğine dair felsefi bir soruya yanıt arıyorduk. Ancak motoru inşa etme sürecinin kendisi, bu sorunun canlı yanıtına dönüştü.
ai-munazara’yı bir IDE’de her harfi elle tuşlayarak yazmadık. AST operasyonları için Pi alt-ajanlarını, katmanlı model rotası için OpenCode’u ve uçtan uca mimari sentez için Antigravity’yi orkestre ettik. POSIX kilit çakışmalarını çözdük, TTY kilitlenmelerini aştık, CLI ikili dosyalarını dinamik sorguladık ve tüm üretim hattını 118 statik rota üzerinde sıfır hata ile doğruladık.
Ajanlı kodlama bu gece herkesi yazılımcı yaptı mı?
Hayır. Ama tek bir geliştirici ve işbirliği yapan üç yapay zekâ ajanını; güneş doğmadan önce otonom bir platformu tasarlayan, tartışan, hakemlik yapan ve yayına alan yüksek hızlı, egemen bir yazılım stüdyosuna dönüştürdü.
Ve günün sonunda, gerçek yazılım zanaatı her zaman bununla ilgiliydi.