- OpenAI içindeki bir ekibin, 5 ay boyunca manuel kod yazmadan bir yazılım ürününün dahili betasını geliştirip yayınladığı deneysel örnek; tüm kodlar Codex ajanı tarafından üretildi
- 3 mühendisle başlayıp yaklaşık 1 milyon satır kod ve 1.500 pull request işlediler; mühendis başına günde ortalama 3,5 PR merge edildi
- Mühendisin rolü doğrudan kod yazmaktan ortam tasarlama, niyeti açıkça belirtme ve geri bildirim döngüleri kurmaya kaydı; ajanların güvenilir biçimde çalışabileceği scaffolding’i kurmak temel unsur oldu
- AGENTS.md, bir ansiklopedi değil içindekiler tablosu olarak kullanıldı; yapılandırılmış belgeler, linter’lar ve yapısal testlerle mimari tutarlılık mekanik olarak zorunlu kılındı
- Ajan özerkliği arttıkça entropi yönetimi ve çöp toplama benzeri sürekli temizlik zorunlu hale geliyor; yazılım geliştirme disiplini koddan scaffolding’e kayıyor
Boş bir git deposunda başlayan deney
- 2025 Ağustos sonlarında boş bir depoya ilk commit atıldı; ilk scaffold (depo yapısı, CI yapılandırması, biçimlendirme kuralları, paket yöneticisi ayarları, uygulama framework’ü) mevcut şablonlar temel alınarak Codex CLI içinde GPT-5 kullanılarak üretildi
- Ajana depoda nasıl çalışacağını anlatan ilk AGENTS.md dosyası da doğrudan Codex tarafından yazıldı
- En başından itibaren insanlar tarafından yazılmış mevcut bir kod olmadan, depo ajan tarafından şekillendirildi
- 5 ay sonra uygulama mantığı, altyapı, araçlar, dokümantasyon ve dahili geliştirici yardımcı araçları genelinde yaklaşık 1 milyon satır kod içeriyordu
- 3 kişilik küçük ekip yaklaşık 1.500 pull request açıp merge etti; bu da mühendis başına günde ortalama 3,5 PR verimine denk geliyor
- Ekip 7 kişiye büyüdüğünde verim daha da arttı
- Yüzlerce kullanıcı bunu her gün dahili olarak kullandı; dahili power user’lar da buna dahil
- Geliştirme sürecinin tamamında insanlar koda doğrudan katkı yapmadı
- "Manuel yazılmış kod yok" ifadesi ekibin temel felsefesi haline geldi
Mühendis rolünün yeniden tanımlanması
- İnsanlar doğrudan kod yazmadığı için sistem, scaffolding ve kaldıraç merkezli farklı bir mühendislik işi gerekiyor
- Başlangıçta ilerlemenin beklenenden yavaş olmasının nedeni Codex’in yetersizliği değil, ortamın eksikliği idi
- Ajanın üst düzey hedeflere ulaşması için gereken araçlar, soyutlamalar ve iç yapı yeterli değildi
- Mühendislik ekibinin ana görevi, ajanların faydalı işler yapmasını mümkün kılmaya dönüştü
- Büyük hedefler daha küçük yapı taşlarına (tasarım, kod, inceleme, test vb.) bölündü; ajan bu blokları birleştirip daha karmaşık işleri çözdü; bu da derinlik öncelikli çalışma biçimi oldu
- Başarısızlık halinde önemli soru “daha çok çabalamak” değil, "Hangi yetenek eksik ve bunu ajanın okuyup uygulayabileceği hale nasıl getiririz?" oldu
- İnsanlar sistemle neredeyse tamamen prompt’lar üzerinden etkileşime girdi
- İş tanımı verme, ajan çalıştırma, pull request açma gibi komutlar verildi
- Bir PR’ı tamamlamak için Codex’ten kendi değişikliklerini yerelde incelemesi, yerelde ve bulutta ek ajan incelemeleri istemesi, geri bildirimlere yanıt vermesi ve tüm ajan incelemeciler tatmin olana kadar bunu yinelemesi istendi
- Fiilen Ralph Wiggum Loop yaklaşımı
- Codex bağlam toplamak için
gh, yerel script’ler ve depo içi yerleşik yetenekler gibi standart geliştirme araçlarını doğrudan kullandı
- İnsanların pull request incelemesi mümkün olsa da zorunlu değildi; zamanla inceleme işlerinin neredeyse tamamı ajanlar arasında yapılmaya başladı
Uygulamanın okunabilirliğini artırma
- Kod üretim hacmi arttıkça insan QA kapasitesi darboğaza dönüştü
- İnsan zamanı ve dikkati sabit bir kısıt olduğu için, uygulama arayüzü, log’lar ve uygulama metrikleri Codex’in doğrudan okuyup anlayabileceği şekilde ajanlara yetenek olarak eklendi
- git worktree başına uygulama açma özelliği sayesinde Codex her değişiklik için ayrı bir instance çalıştırıp yönetebildi
- Chrome DevTools Protocol, ajan runtime’ına bağlandı; DOM snapshot, screenshot ve gezinme işlemleri için yetenekler oluşturuldu
- Böylece Codex hataları yeniden üretebildi, düzeltmeleri doğrulayabildi ve UI davranışı üzerine doğrudan akıl yürütebildi
- Gözlemlenebilirlik araçları da aynı şekilde ele alındı
- Log’lar, metrikler ve trace’ler, her worktree için geçici olarak tutulan yerel bir gözlemlenebilirlik yığını üzerinden Codex’e sunuldu
- İş tamamlandıktan sonra log’lar ve metrikler silindi
- Ajan, log’ları LogQL, metrikleri PromQL ile sorgulayabildi
- Bu bağlam sağlandığında, “servisin başlangıcı 800 ms içinde tamamlansın” ya da “dört temel kullanıcı yolculuğunda hiçbir span 2 saniyeyi aşmasın” gibi prompt’ları işlemek kolaylaştı
- Tek bir Codex çalıştırmasıyla 6 saatten uzun süre boyunca (çoğu zaman insanlar uyurken) tek bir görev üzerinde çalışılabildi
Depo bilgisini bir kayıt sistemi olarak kullanmak
- Bağlam yönetimi, ajanların büyük ve karmaşık görevleri etkili biçimde yerine getirmesindeki en büyük zorluklardan biri
- İlk ders şuydu: Codex’e 1.000 sayfalık bir kılavuz değil, bir harita vermek gerekir
- “Tek büyük AGENTS.md” yaklaşımı denendi ve öngörülebilir biçimde başarısız oldu
- Bağlam kıt bir kaynaktır: devasa yönerge dosyası görevleri, kodu ve ilgili belgeleri karmaşıklaştırarak ajanın ana kısıtları kaçırmasına veya yanlış kısıtlara göre optimize olmasına yol açtı
- Çok fazla yönerge yönerge olmaktan çıkar: her şey “önemli” ise hiçbir şey önemli değildir; ajan kasıtlı keşif yerine yerel örüntü eşleme yapar
- Çok hızlı bozulur: tek parça dev el kitabı, eski kuralların mezarlığına dönüşür; ajan neyin hâlâ geçerli olduğunu ayırt edemez
- Doğrulaması zordur: tek bir blok; kapsam, tazelik, sahiplik ve çapraz bağlantı gibi mekanik kontroller için uygun değildir, bu yüzden drift kaçınılmazdır
- Çözüm: AGENTS.md’yi bir ansiklopedi değil içindekiler tablosu gibi ele almak
- Deponun bilgi tabanı, yapılandırılmış
docs/ dizininde bir kayıt sistemi olarak yönetildi
- Kısa bir AGENTS.md (yaklaşık 100 satır), bağlama eklenerek öncelikle harita görevi gördü ve daha derin, daha güvenilir bilgi kaynaklarına yönlendirdi
- Tasarım dokümantasyonu; doğrulama durumu ve ajan öncelikli çalışma ilkelerini tanımlayan temel inançları içerdi ve sınıflandırılıp indekslendi
- Mimari dokümantasyon, alanlar ve paket katmanları için üst düzey bir harita sundu
- Kalite dokümantasyonu, her ürün alanını ve mimari katmanı derecelendirerek zaman içindeki boşlukları izledi
- Planlar birinci sınıf artefaktlar olarak ele alındı
- Geçici ve basit planlar küçük değişiklikler için kullanıldı
- Karmaşık işler, ilerleme durumu ve karar kayıtlarıyla birlikte uygulama planlarına konup depoda saklandı
- Devam eden planlar, tamamlanan planlar ve bilinen teknik borçlar aynı yerde, sürüm kontrollü olarak tutuldu
- Bu sayede kademeli açığa çıkarma mümkün oldu: ajan en baştan yüklenmek yerine küçük ve kararlı giriş noktalarından başlayıp sonraki adımlara ilerledi
- Mekanik uygulama: özel linter’lar ve CI işleri, bilgi tabanının güncel, çapraz bağlantılı ve doğru yapılandırılmış olduğunu doğruladı
- Tekrarlı çalışan bir "doc-gardening" ajanı, eskiyen ya da geçersiz belgeleri inceleyip düzeltme için pull request açtı
Hedef ajan okunabilirliği
- Depo tamamen ajanlar tarafından üretildiği için öncelik Codex’in okuyabilirliği oldu
- İnsan mühendislerin amacı, ajanın doğrudan depo içinden tüm iş alanı üzerinde akıl yürütebilmesini sağlamaktı
- Ajan açısından, çalışma sırasında bağlam içinde erişilemeyen şey fiilen yok hükmündedir
- Google Docs, chat thread’leri ya da insanların zihnindeki bilgi sistem tarafından erişilemez
- Yalnızca depodaki sürüm kontrollü artefaktlara (kod, Markdown, şema, uygulama planı) erişilebilir
- Slack tartışmalarında üzerinde uzlaşılmış bir mimari desen bile, ajan tarafından aranıp bulunamıyorsa okunamaz kabul edilir
- Codex’e daha fazla bağlam vermek, geçici yönergelerle yük bindirmek değil; doğru bilgiyi düzenleyip görünür kılarak ajanın akıl yürütmesini sağlamak demektir
- Ürün ilkeleri, mühendislik normları ve ekip kültürü (emoji tercihleri dahil) konusunda yeni bir ekip üyesini işe alır gibi ajanı bilgilendirmek daha iyi sonuç verdi
- Deponun içinde tamamen içselleştirilebilen ve üzerinde akıl yürütülebilen bağımlılıklar ve soyutlamalar tercih edildi
- “Sıkıcı” teknolojiler, bağlanabilirlikleri, API istikrarları ve eğitim verisindeki temsilleri sayesinde ajanlar için genellikle daha kolay modelleniyor
- Bazı durumlarda, kamusal kütüphanelerin opak upstream davranışına güvenmek yerine ajanın işlevin bir alt kümesini yeniden uygulaması daha ucuz oldu
- Örnek: genel amaçlı
p-limit tarzı bir paket yerine, OpenTelemetry enstrümantasyonuyla sıkı entegre, test kapsamı %100 olan ve runtime’da tam beklendiği gibi çalışan özel bir map-with-concurrency helper’ı
- Sistemi, ajanların inceleyebileceği, doğrulayabileceği ve doğrudan değiştirebileceği hale ne kadar çok getirirseniz, yalnızca Codex değil başka ajanlarda da (ör. Aardvark) kaldıraç o kadar artıyor
Mimariyi ve tercihleri zorunlu kılmak
- Sadece dokümantasyon, ajanlar tarafından üretilen bir kod tabanını tamamen tutarlı tutmaya yetmiyor
- Uygulamayı mikro düzeyde yönetmeden değişmezleri zorunlu kılarak, temel sağlam tutulurken ajanların hızlı teslimat yapması sağlandı
- Örneğin, Codex’in sınır noktalarda veri biçimlerini ayrıştırması istendi ama bunun nasıl yapılacağı (hangi spesifik kütüphaneyle) ayrıntılı biçimde belirtilmedi; model zaten Zod’u tercih etme eğiliminde
- Ajanlar, katı sınırlar ve öngörülebilir yapı bulunan ortamlarda en iyi performansı gösteriyor
- Uygulama, katı bir mimari model etrafında kuruldu
- Her iş alanı, sıkı biçimde doğrulanan bağımlılık yönleri ve sınırlı izinli edge kümeleriyle sabit bir katman setine ayrıldı
- Kod akışı
Types → Config → Repo → Service → Runtime → UI sırasını izledi
- Kimlik doğrulama, connector’lar, telemetry ve feature flag gibi çapraz konular, Providers adlı tek ve açık bir arayüz üzerinden içeri alındı
- Bunun dışındaki her şey yasaktı ve mekanik olarak zorunlu kılındı
- Bu kısıtlar, Codex’in ürettiği özel linter’lar ve yapısal testler ile uygulandı
- Bu ölçekte mimari, normalde yüzlerce mühendise ulaşıldığında ertelenen bir şey olabilir; ancak kodlama ajanları için başlangıç önkoşulu oldu
- Özel lint kurallarıyla yapılandırılmış logging, şema ve tür adlandırma kuralları, dosya boyutu sınırları ve platforma özgü güvenilirlik gereksinimleri statik olarak uygulandı
- Lint özel olduğu için hata mesajları yazılıp ajan bağlamına düzeltme yönergeleri enjekte edilebildi
- İnsan merkezli iş akışlarında bu kurallar aşırı ayrıntılı ya da kısıtlayıcı görünebilir; ancak ajan kullanımıyla etkileri katlanarak arttı
- Kısıtlar, neyin önemli neyin önemsiz olduğunu net biçimde ayırdı
- Bu, büyük bir mühendislik platformu organizasyonunu yönetmeye benziyor: merkezde sınırlar, yerelde özerklik
- Ortaya çıkan kod her zaman insanların stil tercihleriyle örtüşmeyebilir; ama çıktı doğru, bakımı yapılabilir ve ajan çalışma zamanında okunabilir ise kriter karşılanmış sayıldı
- İnsan tercihleri sisteme sürekli geri beslendi
- Review yorumları, refactor PR’ları ve kullanıcı kaynaklı hatalar ya dokümantasyon güncellemelerine işlendi ya da doğrudan araçlara kodlandı
- Dokümantasyon yetersiz kaldığında kural koda yükseltildi
Merge felsefesindeki değişim
- Codex’in üretim hızı arttıkça geleneksel mühendislik normları ters etki yaratmaya başladı
- Depo, minimum sayıda engelleyici merge kapısı ile işletildi
- Pull request’lerin ömrü kısa tutuldu; test kararsızlıkları ilerlemeyi belirsiz süre durdurmak yerine takip eden çalışmalarda çözüldü
- Ajan çıktısının insan dikkatini çok aştığı sistemlerde düzeltme maliyeti ucuz, bekleme maliyeti pahalıdır
- Bu yaklaşım düşük hacimli ortamlarda uygun olmayabilir; doğru dengeyi kurmak gerekir
“Ajan üretimli” ifadesinin gerçek kapsamı
- Kod tabanının Codex ajanı tarafından üretildiğini söylemek, kod tabanındaki her şeyin buna dahil olduğu anlamına geliyor
- Ürün kodu ve testler
- CI yapılandırması ve release tooling
- Dahili geliştirici araçları
- Dokümantasyon ve tasarım geçmişi
- Değerlendirme harness’ı
- Review yorumları ve yanıtları
- Deponun kendisini yöneten script’ler
- Üretim dashboard tanım dosyaları
- İnsanlar her zaman döngünün içinde kaldı ama artık farklı bir soyutlama katmanında çalıştı
- İş önceliklendirme, kullanıcı geri bildirimini kabul kriterlerine dönüştürme ve sonuçları doğrulama
- Ajan zorlandığında bu, araçlar, guardrail’ler ya da dokümantasyondaki eksikleri ortaya çıkaran bir sinyal olarak görüldü; düzeltmeler her zaman bizzat Codex tarafından yazdırılıp depoya geri verildi
- Ajan; review geri bildirimlerini çekme, satır içi yanıt yazma, güncellemeleri push etme, hatta kendi pull request’ini squash edip merge etme işlerini de yaptı
Özerklik düzeyinin artması
- Test, doğrulama, inceleme, geri bildirim işleme ve kurtarma gibi daha fazla geliştirme döngüsü doğrudan sisteme kodlandıkça önemli bir eşik aşıldı
- Ajanın tek bir prompt ile yapabildiği işler şunlar oldu:
- Kod tabanının mevcut durumunu doğrulamak
- Bildirilen hatayı yeniden üretmek
- Başarısız durumu gösteren bir video kaydı almak
- Düzeltmeyi uygulamak
- Uygulamayı çalıştırıp düzeltmeyi doğrulamak
- Çözümü gösteren ikinci bir video kaydı almak
- Pull request açmak
- Ajan ve insan geri bildirimlerine yanıt vermek
- Build hatalarını tespit edip düzeltmek
- Yalnızca karar gerektiğinde bir insana escalate etmek
- Değişikliği merge etmek
- Bu davranışlar, bu deponun özel yapısına ve araçlarına güçlü biçimde bağlı; benzer yatırım olmadan genellenebileceği varsayılmamalı
Entropi ve çöp toplama
- Ajanın tam özerkliği yeni sorunlar yaratıyor: Codex depoda zaten bulunan desenleri (bunlar tutarsız ya da optimum olmayan desenler olsa bile) kopyalıyor; zamanla drift kaçınılmaz hale geliyor
- Başlangıçta insanlar bunu elle yönetti; her cuma (haftanın %20’si) “AI slope” temizliğine zaman ayırdılar
- Beklendiği gibi ölçeklenmedi
- Alternatif olarak “altın kurallar” doğrudan depoya kodlandı ve düzenli temizlik süreçleri kuruldu
- (1) Değişmezleri merkezden yönetmek için elde yazılmış helper’lar yerine paylaşımlı utility paketleri tercih edildi
- (2) Verileri “YOLO-style” keşfetmek yerine sınırların doğrulanması ya da tiplenmiş SDK’lar kullanıldı; böylece ajanın tahmin ettiği şekillere yanlışlıkla bağımlı sistemler kurmasının önüne geçildi
- Düzenli olarak sapmaları kontrol eden, kalite notlarını güncelleyen ve hedefli refactor PR’ları üreten arka planda çalışan Codex işleri işletildi
- Bunların çoğu 1 dakikadan kısa sürede incelenip otomatik merge edilebildi
- Bu yaklaşım çöp toplama gibi çalıştı: teknik borç yüksek faizli kredi gibidir; faiz birikmeden önce azar azar ve sürekli geri ödemek en etkili yöntemdir
- İnsan tercihleri bir kez yakalandığında, kodun tüm satırlarına sürekli uygulanabildi; kötü desenlerin günlerce ya da haftalarca yayılması yerine her gün yakalanıp düzeltildi
Süren öğrenimler ve gelecekteki zorluklar
- Bu strateji OpenAI içinde, dahili yayın ve benimseme aşamasına kadar iyi çalıştı
- Gerçek kullanıcılar için gerçek ürünler geliştirerek bu yatırımın gerçek dünyaya oturması ve uzun vadeli bakım yapılabilirliğin sağlanması gerekiyor
- Henüz bilinmeyen nokta şu: tamamen ajan üretimli sistemlerde mimari tutarlılık yıllar içinde nasıl evrilecek
- İnsan muhakemesinin en büyük etkiyi nerede yarattığı ve bu muhakemenin nasıl kodlanıp bileşik kaldıraç yaratacağı hâlâ öğreniliyor
- Modellerin yetenekleri gelişmeye devam ettikçe bu sistemin nasıl evrileceği de belirsiz
- Yazılım geliştirme hâlâ disiplin gerektiriyor; ancak bu disiplin artık koddan çok scaffolding tarafında ortaya çıkıyor
- Kod tabanı tutarlılığını koruyan araçlar, soyutlamalar ve geri bildirim döngüleri giderek daha kritik hale geliyor
- Şu anda en zor görev, ajanların karmaşık ve güvenilir yazılımları büyük ölçekte geliştirip sürdürmesine yardımcı olacak ortamları, geri bildirim döngülerini ve kontrol sistemlerini tasarlamak
1 yorum
40 gün, 1 milyon satır, 13 milyar token — Lablup CEO’su Shin Jeong-gyu’nun keşfettiği agentic iş akışının gerçeği - Park Jae-hong’un Silikon Vadisi - https://wikidocs.net/blog/@jaehong/8206/