Başlangıç Noktası: İki Uç
Yapay zeka kodlama ajanlarına yaklaşımda iki uç görüyorum.
Bir tarafta tamamen mesafeli duranlar var. “Üretilen koda güvenemem,” “anlayamadığım hatalar ekleyecek.” Bu yaklaşım gerçek verimlilik kazanımlarını kaçırıyor.
Diğer tarafta her öneriyi sorgulamadan kabul edenler. Diff’i onayla, devam et. Neyin değiştiğine veya neden değiştiğine bakmadan. Üç hafta sonra bir şey bozulduğunda, hata ayıklama seansı kazanılan zamandan daha pahalıya mal oluyor.
Deneyimim ikisinin de sürdürülebilir olmadığını gösterdi. Benim temel aldığım çalışma biçimi: yapay zekayı pair programming partneri olarak konumlandırmak. Yetenekli, hızlı, bazen hatalı ve asla son kararı veren taraf değil.
Son birkaç aydır ağırlıklı olarak Claude Code ile çalışıyorum. Kullanmanın yanı sıra, etrafına stabil ve güvenilir bir altyapı kurmaya çalışıyorum: hataları yakalayan hook’lar, hatalardan öğrenen pipeline’lar, yıkıcı eylemleri engelleyen guardrail’ler ve yeni teknolojiyi değerlendiren çerçeveler. Ara ara bu konularda, temel aldığım yaklaşımlarla ilgili çeşitli yazılar yayınladım: 5 katmanlı güvenlik sistemi, Türkçe diyakritik düzeltme eklentisi, semantik kod arama MCP sunucusu. Bu sistemlerin hiçbiri ilk günden planlanmadı. Her biri pratikteki bir ihtiyaçtan doğdu. Genelde öğrendiğim bir bilgiyi veya edindiğim bir pratiği başka bir süreçte kullanmaya özen gösteririm. Bu yaklaşımı AI sürecinde de takip ettim ve zamanla birbirini tamamlayan bir çerçeveye dönüştürmeye çalıştım.
Yapay zeka yardımcım şu an bana 11 kahve (muhtemelen siz bu yazıyı okuduğunuzda bundan çok daha fazlasını) borçlu. İşte bu noktaya nasıl gelindi.
Çerçeve: Sınırları Olan Özerklik
Temel prensip basit: uygulamada tam özerklik, kararlarda sıfır özerklik.
Claude Code fonksiyon yazabilir, bileşenleri yeniden yapılandırabilir, test çalıştırabilir, kod formatlayabilir ve kod tabanında gezinebilir. Yapamayacağı şeyler: teknoloji seçmek, main’e merge etmek, kalıcı veriyi silmek veya doğrulama adımlarını atlamak. Her mimari karar insan değerlendirme sürecinden geçiyor. Her yıkıcı komut çalıştırılmadan engelleniyor.
Bu güvensizlikle ilgili değil. Yapay zekanın üretimde güçlü olduğunu ama yargılama konusunda zorlandığını kabul etmekle ilgili. Addy Osmani bunu net çerçeveliyor: “Üretim çözüldü. Doğrulama darboğaz.”1 Geliştiricinin rolü azalmadı. Kod yazmaktan değerlendirmeye, karar vermeye ve doğrulamaya kaydı.
Keşif ve Karar Araçları
Herhangi bir teknoloji kod tabanına girmeden, herhangi bir pattern benimsenmeden önce, üç araç ile değerlendirmeden geçiyor.
Radar: Değer mi, Trend mi?
Sohbete bir URL düşüyor. Yeni bir kütüphane, trend olan bir repo, birinin “oyun değiştiren” iş akışı. /radar aracı bunu değerlendiriyor: gerçekte ne yapıyor, kim bakımını üstleniyor, vendor lock-in riski ne, gerçekten yaşadığım bir sorunu çözüyor mu?
Radar değerlendirmeyi, daha önceki değerlendirmeler, geliştirdiğim projeler ve vault’a eklediğim diğer notlar üzerinden bağlamsallaştırıyor. Bu sayede değerlendirme daha tutarlı ve bağlamsal oluyor. Burada ilgiye 1-5 arası bir değer veriliyor. 1 düşük ilgi, 5 yüksek ilgi demek. 3 altındaki değerler için ek sorular soruluyor ve skip-bookmark gibi bir kararla değerlendirme sonrası vault’a kaydediliyor. Bu sayede aynı teknoloji tekrar tekrar değerlendirilmiyor.
Yapay zeka, bir çerçeve verildiğinde hızlı değerlendirmede çok etkili. Dokümantasyonu çapraz referanslayabiliyor, bakım aktivitesini kontrol edebiliyor, rakip alternatifleri belirleyebiliyor ve riskleri manuel araştırmadan daha hızlı ortaya çıkarabiliyor. Ama benimseme kararını vermiyor. O her zaman insanda kalıyor.
Breakdown: Artılar, Eksiler, Solo Geliştirici Filtresi
Teknoloji ve mimari seçimler için /breakdown yapılandırılmış bir analiz üretiyor: faydalar, dezavantajlar, bakım yükü, alternatifler ve kritik olarak solo geliştirici filtresi. Bakımı için ayrı bir DevOps mühendisi gerektiren bir araç, teknik olarak ne kadar zarif olursa olsun, baştan elenmiş demek.
Brainstorming: Koddan Önce Tasarım
Uygulamadan önce /brainstorming tasarım alanını keşfetmek için yapılandırılmış soru-cevap yürütüyor. Gereksinimler, uç durumlar, trade-off’lar ve kullanıcı deneyimi değerlendirmeleri tek satır kod yazılmadan ortaya çıkıyor. Kesin bir kapı var: tasarım açıkça onaylanmadan kod üretimi başlamıyor.
Solo geliştirici için ağır gibi görünebilir. Pratikte 5-10 dakika sürüyor ve yanlış anlaşılan gereksinimlerden kaynaklanan saatlerce yeniden çalışmayı önlüyor.
Hafıza: Konuşmalar Kaybolmuyor
Claude Code oturumları stateless. Terminali kapat, konuşmayı kaybet. Mevcut oturumdaki her içgörü, karar ve context buharlaşır.
Çözüm bu sınırlamayı kabul edip etrafına inşa etmek. Her radar değerlendirmesi vault’a araştırma notu olarak kaydediliyor. Her mimari karar bir ADR (Architecture Decision Record) oluyor. Her teknoloji reddi gerekçesiyle belgeleniyor.
Aynı konu üç hafta sonra tekrar gündeme geldiğinde, cevap “sıfırdan araştırayım” değil. “Bunu 15 Mart’ta değerlendirdim, bulduklarım burada, neden karşı karar verdiğim de burada.”
Bilgi oturumlar ve projeler arasında birikerek güçleniyor. “Hatırlıyorum” değil, “işte ne karar verdim ve neden, kanıtlarıyla birlikte.” Bu hafıza katmanını daha sorgulanabilir kılmak için dnomia-knowledge adında bir indeksleme sistemi geliştirdim. Proje dosyalarını, önceki kararları ve etkileşim geçmişini indeksleyerek yapay zekanın oturum başında ilgili context’e erişmesini sağlıyor.
Oturum kapanırken /bye komutu bu döngüyü tamamlıyor: yapılan işler vault’taki aktif görev listesine yazılıyor, tamamlanan maddeler işaretleniyor, yeni açılan konular ekleniyor. Bir sonraki oturum bu listeden devam ediyor. Bilgi sadece birikmiyor, aktif olarak aktarılıyor.
Pair programming metaforu tam burada somutlaşıyor. İyi bir pair partner sadece kod yazmanıza yardım etmez. Geçen sefer neyi denediğinizi, neyin işe yaramadığını ve kısıtların ne olduğunu hatırlar. O hafıza katmanını inşa etmek, stateless bir yapay zekayı gerçek bir işbirlikçiye yaklaştırıyor.
Devamı: Context Yönetimi, yapay zeka her şeyi unuttuğunda ne yapılır →
Coffee Debt: Hatalar Veri, Ceza Değil
Her yapay zeka aracı hata yapar. Eşleşmeyen Edit komutları, hatayla çıkan Bash scriptleri, insan düzeltmesi gerektiren öneriler. Soru hataların olup olmadığı değil. Onlarla ne yapıldığı.
Coffee Debt her hatayı bir veri noktasına dönüştürüyor. Kurallar basit:
- 1 hata = 1 çekirdek
- 5 çekirdek = 1 kahve
- Borç kümülatif ve asla sıfırlanmıyor
Dört hook scripti hataları otomatik yakalıyor: Edit, Write ve Bash işlemlerindeki araç hataları, Türkçe ve İngilizce tetikleyici ifadelerle tespit edilen kullanıcı düzeltmeleri ve engellenen yıkıcı komutlar. Her şey bağlamsal metadata ile JSONL formatında kaydediliyor: zaman damgası, hata tipi, hangi araç, hangi dosya, oturumda kaç prompt derinliğinde ve context ne kadar büyümüş.
Mevcut durum: 11 kahve ve 3 çekirdek. Pattern’ler şunları ortaya koyuyor:
| Metrik | Değer |
|---|---|
| En çok hata veren araç | Bash (7 günde 9 hata) |
| İkinci | Edit (5 hata) |
| En pahalı hata tipi | Kullanıcı düzeltmesi (12 adet) |
| Hata yoğunluğu zirvesi | Sabah, 06:00-12:00 (29 girdinin 13’ü) |
| Engellenen yıkıcı girişim | 8 |
Sabah kümelenmesi ilginç. Context taze ama insan henüz ısınırken yapılan erken oturum çalışmalarının en çok düzeltmeyi ürettiğini gösteriyor. Engellenen yıkıcı girişimler (bir haftada 8) koruma sisteminin teorik değil gerçek riskleri yakaladığını doğruluyor.
Bunun arkasındaki felsefe basit: yapay zeka hatalarına kızmak boşa giden enerji. Hataları kayıt altına almak, pattern bulmak ve önleyici sistemler inşa etmek verimli enerji.
Devamı: Coffee Debt, yapay zeka hatalarını gözlemlenebilirlik sistemine dönüştürmek →
Context Yönetimi: Sınırlarını Bilmek
Claude Code bir context penceresi içinde çalışıyor. Autocompact varsayılan 200K context penceresi üzerinden hesaplıyor: ~33K buffer ayırarak kapasitenin %83,5’inde sıkıştırmayı tetikliyor. 1M context modellerinde (Opus 4.6, Sonnet 4.6) bile autocompact modülü model suffix’ini tanımıyor ve 200K baz alıyor (Nisan 2026 itibarıyla bilinen bug). Sıkıştırma sonrası yalnızca en son okunan 5 dosya ve 50K token’lık bir özet kalıyor. Akıl yürütme zincirleri, dosya durumları ve ara kararlar gidiyor.
Autocompact’e güvenmek yerine her görev sonrası manuel compact yapıyorum. everything-claude-code reposundan2 alınan CLAUDE_AUTOCOMPACT_PCT_OVERRIDE tetikleme yüzdesini değiştiriyor:
CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=50
Bu, sıkıştırmayı context taşarken değil mantıksal görev sınırlarında tetikliyor. Ne zaman compact yapılacağına dair disiplinle birleştiğinde (görevler arasında, asla uygulama ortasında değil), uzun oturumlar boyunca çıktı kalitesini koruyor.
Birden fazla oturuma yayılan çalışmalar için SHARED_TASK_NOTES.md oturumlar arası köprü görevi görüyor: ne tamamlandı, ne işe yaradı, ne işe yaramadı, sırada ne var. Yapay zeka oturum başında bunu okuyor ve oturum sonunda güncelliyor.
Sıkıştırma öncesinde de bir aktarım adımı var. Compact tetiklenmeden önce mevcut görev durumu, öğrenilmiş pattern’ler ve kritik dosya referansları kaydediliyor. Sıkıştırma sonrasında PostCompact hook’u devreye giriyor: öğrenilmiş pattern’leri (yüksek güven skorlu içgüdüler) context’e yeniden enjekte ediyor. Yapay zeka sıkıştırma sırasında sadece bilgi kaybetmiyor. En değerli pattern’leri seçici olarak geri kazanıyor.
Devamı: Context Yönetimi, tam teknik derinlik →
Öğrenme Pipeline’ı: Zamanla Daha Az Hata
Coffee Debt hataları takip ediyor. Öğrenme pipeline’ı daha iddialı bir şey yapıyor: bu hataları önlemeye dönüştürüyor.
Üç aşamalı bir sistem otomatik çalışıyor:
-
Yakalama. PostToolUse hook’ları hata pattern’lerini gerçek zamanlı tespit ediyor: eksik import’lar, tip uyuşmazlıkları, eksik dosyalar, söz dizimi hataları. Her pattern bir güven skoruyla kaydediliyor.
-
Konsolidasyon. Oturum sonunda ham yakalamalar proje bazında gruplandırılıyor. Tekrarlayan pattern’lerin güven skorları artırılıyor. Birden fazla projede ortaya çıkan pattern’ler global içgüdülere terfi ettiriliyor.
-
Yükleme. Oturum başında ve her sıkıştırma olayından sonra, yüksek güvenli içgüdüler context’e enjekte ediliyor. Yapay zeka her oturuma, bu spesifik kod tabanında neyin sorun çıkardığına dair birikmiş bilgiyle başlıyor.
Terfi eşikleri kasıtlı olarak tutucu. Bir pattern’in global olması için en az 2 projede toplam 5 veya üzeri tekrarla ortaya çıkması gerekiyor. Otomatik oluşturulan kural dosyaları ancak 10 ve üzeri güven skorunda beliriyor. Bayatlık da önemli: 90 günden eski pattern’lerin güven skoru yarıya düşürülüyor.
Sonuç: yapay zeka sadece hata yapmıyor. Zamanla, ölçülebilir şekillerde daha az hata yapıyor.
Devamı: Öğrenme Pipeline’ı, ham hatalardan öğrenilmiş içgüdülere →
Hype Filtresi: Bir Vaka Çalışması
everything-claude-code reposu Anthropic Hackathon’u kazandı ve 50.000’den fazla yıldız topladı2. Güçlü bir popülerlik sinyali. Yaygın tepki önerdiği her şeyi uygulamak olurdu.
Bunun yerine standart süreçten geçti: radar değerlendirmesi, araştırma notu, detaylı spec, ardından solo geliştirici merceğinden süzme.
Repo 20’den fazla öneri içeriyordu. Filtreden geçenler:
Kabul edilen (8 pattern):
- Context sıkıştırma override’ı (CLAUDE_AUTOCOMPACT_PCT_OVERRIDE)
- İzin red listeleri (~/.ssh, ~/.aws, .env dosyalarına okuma engeli)
- Config koruma hook’u (yapay zekanın linter/formatter config’lerini düzenlemesini engelleme)
- Console.log uyarı hook’u (debug ifadelerini production’dan önce yakalama)
- —no-verify engeli (git hook’larının atlanmasını önleme)
- TypeScript typecheck hook’u (düzenlemelerden sonra tsc —noEmit)
- Biome format hook’u (JS/TS dosyalarını otomatik formatlama)
- Doğrulama pipeline’ı aracı
Reddedilen (8’den fazla pattern) ve gerekçeleri:
MAX_THINKING_TOKENS=10000: düşünme kalitesi önemli, bu erken optimizasyon- Haiku subagent yönlendirmesi: mevcut plugin yapılandırmasıyla zaten çözülüyor
- Stop hook ile sürekli öğrenme: solo geliştirici için aşırı mühendislik
- Eval-Driven Development: henüz var olmayan bir yapay zeka çıktı değerlendirme pipeline’ı gerektiriyor
- Diğerleri uygulama spec’inde belgelenmiş durumda
Çıkarım: 50.000 yıldız “her şeyi uygula” demek değil. Her öneri, diğer herhangi bir teknoloji kararıyla aynı değerlendirme çerçevesinden geçmeli. Ayakta kalanlar, kabul edilebilir bakım yüküyle gerçek sorunları çözenlerdir.
Guardrail’ler: Yapay Zekanın Yapmaması Gerekenler
Güven vaatlerle değil, kısıtlamalarla oluşuyor. Üç kategori guardrail iş akışını koruyor:
Yıkıcı komut engelleme. Bir PreToolUse hook’u her shell komutunu çalıştırılmadan önce değerlendiriyor. 25 tehlikeli pattern’e karşı eşleştirme yapıyor: tehlikeli yollarla rm -rf, git reset --hard, main’e git push --force, DROP TABLE, bulut kaynak silme komutları. Yalnızca geçen hafta 8 yıkıcı girişim engellendi. Bunlar kötü niyetli değildi. Yapay zekanın sorunları çözmek için kestirme yol denemeleriydi.
Config koruma. Yapay zeka kodlama ajanlarının linter hatalarını kodu düzeltmek yerine linter kuralını devre dışı bırakarak “düzeltme” eğilimi var. Özel bir hook .eslintrc, biome.json, .prettierrc, tsconfig.json ve benzeri dosyalara düzenlemeyi engelliyor. Kod kurallara uyum sağlar, tersi değil.
Build kapısı. Hiçbir build veya derleme komutu açık insan onayı olmadan çalışmıyor. Bu, birden fazla sürecin aynı anda çalışabileceği subagent iş akışları için özellikle kritik. Her seferinde tek bir build, her zaman izinle.
Önlemenin ötesinde doğrulama var. Uygulamadan sonra altı aşamalı bir pipeline çalışıyor: build, typecheck, lint, test, güvenlik taraması ve diff incelemesi. Güven düşük olduğunda ise /investigate yapay zekanın gerçekten doğru çalışıp çalışmadığını bağımsız olarak doğrulayan ayrı bir ajan gönderiyor.
Devamı: Guardrail’ler ve Değerlendirme, tam detay →
Günlük Pratikte Nasıl Görünüyor
Tipik bir oturum:
Başlangıç. Terminal, piksel sanatı kahve fincanı ve güncel borç sayısıyla açılıyor. 7 günlük hata pattern özeti zayıf noktaları gösteriyor. Vault’tan aktif görevler yükleniyor. Öğrenilmiş içgüdüler context’e enjekte ediliyor.
Çalışma. Her prompt amaca göre sınıflandırılıyor (uygulama, debug, araştırma, planlama, konuşma) ve yalnızca ilgili hook’lar devreye giriyor. Kod otomatik formatlanıyor. Türkçe karakterler doğrulanıyor. Yıkıcı komutlar engelleniyor. Hatalar çekirdek biriktiriyor.
Bitiş. Hata pattern’leri proje bazlı içgüdülere konsolide ediliyor. Vault’taki aktif görevler güncelleniyor. Oturumun öğrenme pipeline’ına katkısı kaydediliyor.
Bu geleneksel anlamda pair programming değil. Pratikte şekillenen, her parçası gerçek bir ihtiyaçtan doğan ve zamanla birbirini tamamlamaya başlayan bir sistem.
Sırada Ne Var
Mevcut sistem çalışıyor ama tamamlanmamış. Üç alan aktif olarak gelişiyor:
Eğitim verisi toplama. Her kod düzenleme ve yazma işlemi, kalite kontrol için onay/red iş akışıyla birlikte JSONL formatında talimat-kod çifti olarak yakalanıyor. Hedef: potansiyel fine-tuning için gerçek dünya kodlama etkileşimlerinden oluşan küratörlü bir veri seti.
Ajan takımları. Aynı kod tabanında paylaşımlı görev listeleri ve ajanlar arası mesajlaşmayla çalışan birden fazla Claude Code ajanı için deneysel destek. Şu an değerlendirmede, production’da değil.
SkillReducer ve Prompt Forge. Sıkıştırılmış beceri tanımlarının (%77 daha az token) verbose orijinallerden %2,8 daha iyi performans gösterdiğini ortaya koyan araştırma. Daha az gürültü, daha iyi odak. arXiv araştırmasıyla3 desteklenen ve 6 proje komutuna uygulanan doğrulanmış bir bulgu. Bu çalışmanın doğal devamı olarak prompt-forge bilgi destekli prompt optimizasyonu yapıyor: domain bilgisini anchor’lar üzerinden prompt’lara bağlayarak hem skill hem de iş akışı kalitesini artırıyor.
Yön açık: darboğaz üretim değil. Doğrulamayı hızlandıran, context’i daha dayanıklı kılan ve kararları daha bilinçli hale getiren sistemler inşa etmek. İnsan döngüde kalıyor, yapay zeka işi yapamadığı için değil, insanın yargısı işi yapılmaya değer kıldığı için.
Footnotes
- Addy Osmani, The Craft of Code Agent Orchestration ↩
- affaan-m, everything-claude-code, Anthropic Hackathon Winner, 50K+ yıldız ↩ ↩2
- arXiv:2603.29919, SkillReducer: Optimizing LLM Agent Skills for Token Efficiency ↩
- 01 AI pair programming doğrulama altyapısı gerektirir. Yapay zekayı tamamen reddetmek de her çıktıyı sorgulamadan kabul etmek de sürdürülebilir değil.
- 02 Coffee Debt yapay zeka hatalarını gözlemlenebilirlik sistemine dönüştürüyor. 1 hata = 1 çekirdek, 5 çekirdek = 1 kahve. Pattern analizi hataların ne zaman ve neden kümelendiğini ortaya koyuyor.
- 03 Context penceresi sınırlı ve autocompact beklenenden erken tetikleniyor. 1M context modellerinde bile sistem 200K varsayılan pencereye göre hesaplıyor (bilinen bug). Compact disiplini, oturumlar arası köprüler ve sıkıştırma sonrası hook'lar bilgiyi canlı tutuyor.
- 04 50K yıldızlı bir repo 'her şeyi uygula' demek değil. 20'den fazla öneriyi solo geliştirici merceğinden süzmek 8 kabul edilen ve 8'den fazla gerekçeli ret ile sonuçlandı.
- 05 Üretim çözüldü, doğrulama darboğaz. Geliştiricinin rolü kod yazmaktan yapay zeka çıktısını değerlendirmeye, karar vermeye ve doğrulamaya kaydı.
+ Claude Code ile AI pair programming nedir?
AI pair programming, Claude Code'u otomatik tamamlama aracı yerine işbirlikçi bir partner olarak ele alır. Geliştirici tüm karar alma yetkisini elinde tutarken uygulamayı devreder. Bu altyapı gerektirir: yıkıcı eylemleri önleyen guardrail'ler, pattern'leri belirleyen hata takibi, oturum sınırlarını aşan context yönetimi ve yeni teknolojiyi gerçek iyileştirmelerden ayıran değerlendirme çerçeveleri.
+ Claude Code'da Coffee Debt nedir?
Coffee Debt, Claude Code hook'larıyla inşa edilmiş oyunlaştırılmış bir hata takip sistemidir. Her yapay zeka hatası (araç hatası, kullanıcı düzeltmesi, engellenen yıkıcı komut) kalıcı bir sayaca 1 çekirdek ekler. 5 çekirdek 1 kahve borcuna eşittir. Sistem hataları bağlamsal metadata ile JSONL formatında kaydeder; bu sayede hataların ne zaman kümelendiğini, hangi araçların en çok hata verdiğini ve hangi hata tiplerinin en pahalı olduğunu ortaya koyan pattern analizi mümkün olur.
+ Claude Code oturumları arasında context nasıl yönetilir?
Claude Code oturumları stateless'tır. Autocompact varsayılan 200K context penceresi üzerinden hesaplıyor ve 1M context modellerinde bile beklenenden erken tetikleniyor (bilinen bug). Sıkıştırma sonrası yalnızca en son 5 dosya ve 50K özet kalıyor. Bunu aşmak için her görev sonrası manuel compact, oturumlar arası context köprüsü olarak SHARED_TASK_NOTES.md ve sıkıştırma sonrası öğrenilmiş pattern'leri yeniden enjekte eden PostCompact hook'ları devreye alınır.
+ AI araç önerilerini benimseyip benimsememeyi nasıl değerlendiriyorsunuz?
Her teknoloji önerisi 8 kriterli Karar Kapısından geçer: Fayda, Gereklilik, Yük, Çakışma, Performans, Güvenlik, Darboğaz ve Güncellik. Bu çerçeve, radar değerlendirmeleri ve ADR (Architecture Decision Records) ile birleşerek dürtüsel benimsemeyi önler ve her eklemenin solo geliştirici bağlamı için gerekçelendirilmesini sağlar.