Claude Code neden bu kadar iyi
(minusx.ai)- Claude Code, kullanılabilirlik açısından son derece başarılı bir AI ajanı/iş akışı
- Mimari sadelik ve net bir kontrol döngüsü sayesinde hata ayıklama ve bakımda rahat bir deneyim sunuyor
- RAG kullanımını minimumda tutup gelişmiş istemler ve bağlam dosyalarını aktif biçimde kullanarak LLM’in güçlü yanlarını en üst düzeye çıkarıyor
- Çeşitli araçlar (tool'lar) ve açık yönergeler ile işin netliğini ve tutarlılığını koruyor
- Karmaşıklık yerine anlaşılması kolay yapı ve istem tasarımı sayesinde, kendi LLM ajanınızı da benzer şekilde kurabilme avantajı sağlıyor
Genel bakış
- Claude Code (bundan sonra CC), şu anda kullanılabilen AI ajanı/kodlama iş akışları arasında en tatmin edici deneyimlerden birini sunuyor
- CC’nin güçlü yanı, hedefe uygun kod düzenleme, gereksiz dikkat dağıtıcıları azaltma ve kullanıcının kontrolünü koruyarak akıcı bir UX sağlaması
- Claude 4 modeli ve kendine özgü Interleaved Thinking yaklaşımı burada kilit rol oynasa da, Cursor veya Github Copilot gibi aynı modele dayanan diğer araçlara kıyasla daha az sürtünme yaratıyor
- Bu yazı, CC’nin uygulama mantığını parçalara ayırarak inceliyor ve benzer bir deneyim sunacak kendi LLM ajanınızı geliştirmek için pratik bir rehber sunuyor
Claude Code’un temel erdemi: sadelik
- En büyük ders şu: "Basit tutun (Keep Things Simple, Dummy)"
- LLM ajanlarında karmaşık yapılar (çoklu ajanlar, karmaşık RAG, doğrulama sistemleri vb.) devreye girdikçe hata ayıklama ve iyileştirme aşırı zorlaşıyor
- CC, tek bir ana döngü, sade bir araç seti ve tek bakışta anlaşılabilen bir yapı benimsiyor; tüm temel mantığı tek bir dosyada toplayarak gereksiz boilerplate’i ve karmaşıklığı dışarıda bırakıyor
Sadelik neden önemli
- Çoklu ajan yapısı yerine işlerin çoğunu tek bir ana iş parçacığında yürütüyor
- Geçmiş özetleme, UX için mesaj birleştirme gibi işler yardımcı biçimde uygulanıyor
- Daha karmaşık bir iş gerektiğinde kendisini kopyalayarak bir alt ajana dallanıyor (özyinelemeli dallanma yok, yalnızca tek seviyeye izin veriliyor)
- Yapılacaklar listesi (todo list) aktif olarak kullanılıyor
- Karmaşık problemler alt ajanlarda bölünüp çözülebiliyor, ardından sonuçlar ana mesaj geçmişine birleştiriliyor
- Aşırı soyut çok katmanlı yapılar (çoklu ajanlar, grafik gezinme) ise sistemin kararlılığına ve ölçeklenebilirliğine zarar verebiliyor
Hafif modellerin aktif kullanımı
- claude-3-5-haiku gibi hafif LLM modelleri isteklerin büyük bölümünde kullanılıyor
- Büyük dosyaları okuma, web sayfası ayrıştırma, git geçmişi özetleme gibi pek çok iş verimli biçimde gerçekleştiriliyor
- Hafif model kullanımıyla maliyetler %70–80’e kadar düşebiliyor
- Tüm önemli işlev çağrılarında optimize edilmiş model kombinasyonları kullanılması öneriliyor
İncelikli istem tasarımı
- CC’nin sistem istemi oldukça büyük bir hacme (yaklaşık 2800 token) ve çeşitli bölümlere sahip (ton & stil, iş yönetimi, araç kullanım politikası, OS/dizin bilgileri vb.)
- claude.md gibi bağlam dosyalarının tamamı her zaman dahil edilerek bağlam zenginliği en üst düzeye çıkarılıyor
- Sistem istemi; politika kuralları, örnekler, dikkat noktaları ve araçların ne zaman kullanılacağı gibi konularda çok ayrıntılı yönlendirme içeriyor
XML ve Markdown’ı birlikte kullanma
- İstem içinde XML etiketleri ve Markdown yapısı birlikte kullanılıyor
<system-reminder>,<good-example>,<bad-example>gibi etiketlerle ayrıntılı ve koşullu bilgi aktarımı yapılabiliyor- Markdown başlıklarıyla bölümler net biçimde ayrılıyor
Bağlam dosyalarının önemi
- claude.md dosyasının olup olmaması, CC performansında dramatik bir fark yaratıyor
- Kod tabanından çıkarımı zor olan ek kuralları (klasör/kütüphane hariç tutma, tercih edilen politikalar vb.) iletmek için kritik önemde
- MinusX de ekip/kullanıcı tercihlerini sistematik hale getirmek için minusx.md kullanıyor
RAG’ı azaltma, LLM aramasını kullanma
- CC, RAG (Retrieval Augmented Generation) yerine gerçek bir geliştirici gibi
ripgrep,jq,findkomutlarıyla doğrudan kod aramaya dayalı bir yapıyı tercih ediyor- Bu yaklaşım, karmaşık RAG kurulumlarının getirdiği gizli hata olasılıklarına (ör. benzerlik fonksiyonu, yeniden sıralayıcı, chunking) karşı bir alternatif sunuyor
- LLM’in gerçek kod bağlamını doğrudan keşfedip anlamasına olanak vererek hareketli parça sayısını azaltıyor; ayrıca RL eğitiminde verimlilik avantajı da sağlayabiliyor
Araç (tool) tasarımı ve katmanlı yapı
- CC, düşük seviye (Bash, Read, Write), orta seviye (Edit, Grep, Glob), yüksek seviye (Task, WebFetch vb.) araçların tümünü destekliyor
- Kullanım sıklığı ve doğruluk gibi etkenler gözetilerek gerekli araçlar ayrı ayrı tanımlanıyor
- Araçların açıklaması, örnekleri ve ne zaman kullanılacağı sistem isteminde açıkça belirtiliyor
- Karmaşık işler
Taskveya diğer yüksek seviye araçlarla tutarlı biçimde yönetiliyor
Açık Todo yönetimiyle bağlam kaybını önleme
- Uzun süre çalışan LLM ajanlarının tipik problemi olan bağlam kaybı ve yönünü yitirme sorununu çözmek için CC, doğrudan tutulan bir Todo listesi ile durum yönetimi yapıyor
- Çoklu ajan sistemi yerine model, Todo’ları kendisi güncelleyerek hem yön duygusunu hem de esnekliği koruyor
Ajanın tonu, stili ve yakınlık düzeyini kontrol etme
- Ton, stil ve proaktiflik gibi unsurlar ayrı bölümlerde yönetiliyor
- Gereksiz açıklamalardan kaçınma, emojilere yalnızca açıkça istendiğinde izin verme gibi kararlarla tutarlı bir kullanıcı deneyimi tasarlanıyor
- "Çok önemli (IMPORTANT)", "Asla (NEVER)", "Her zaman (ALWAYS)" gibi güçlü vurgularla dikkat noktaları aktarılıyor
Karar algoritması ve akış tasarımı
- LLM’in izlemesi gereken temel algoritmalar açık biçimde tarif ediliyor ve örneklendiriliyor
- Sadece Do/Don't listeleri vermek yerine akış şemaları ve adım adım kontrol listeleri, algoritmik kararlılığı korumada daha etkili oluyor
- Farklı yönergeler ve örnekler arasında çakışma olasılığı dikkate alınarak rol sınırları ve politikalar yapısal biçimde tanımlanıyor
Tasarım desenleri ve uygulamaya dönük pratik ipuçları
- Güçlü görüşler ve yapı, kendi ajanınızı tasarlarken doğrudan kıyas ölçütü olarak alınabilecek nitelikte
- Kafa karıştıran framework’leri aşırı kullanmak yerine, basit ve etkili bir yapı tasarlamak önemli
- MinusX de bu ilkelerin çoğunu fiilen uyguluyor ve zamanla kapsamı genişletmeyi planlıyor
Sonuç
- Claude Code’dan çıkan en büyük ders: “Sadelik en büyük güçtür”
- Yapısal açıklık, anlamlı istem tasarımı ve hafif araç kombinasyonları, güçlü LLM ajanlarını mümkün kılıyor
- Kendi LLM ajanınızı geliştirirken, CC’nin tasarım felsefesi ve rehberini yakından incelemek büyük değer taşıyor
2 yorum
Çok iyi, çok mutluyum, harika, çok tatlı, devam edeceğim
Hacker News görüşleri
KISS benzeri sadeliğin her zaman kazandığına inandığını ve bu yazının bunu iyi toparladığı için faydalı olduğunu söyleyen bir yorum
Claude Code'un açık kaynak olmaması üzücü, ancak iç işleyişini daha iyi anlamayı sağlayan araçlar olduğuna dair bir paylaşım; gerçekten nasıl çalıştığıyla ilgileniyorsanız Claude Trace öneriliyor
https://github.com/badlogic/lemmy/tree/main/apps/claude-trace
Bu araç, oturumda kullanılan tüm araçları ve prompt'ları gösteren bir JSON dosyası ile kolay okunur biçimde formatlanmış bir HTML dosyası üretiyor
https://github.com/All-Hands-AI/OpenHands?tab=readme-ov-file
Sistem prompt'unu da görebilirsiniz
Model, işleri varsayılan olarak çok adımlı parçalara bölüp sabırla çözmesi için eğitilmiş; başarısızlık senaryolarına karşı da belli ölçüde dayanıklı
Çoklu ajan sistemlerinin öne çıktığı bu dönemde, LLM merkezli bir organizasyonun nasıl yaklaştığını görmenin faydalı olduğunu söyleyen bir görüş; kendisinin de günlük hayatta farklı tasarım bakış açılarını denediğini ve bu yüzden yakınlık hissettiğini belirtiyor
Temel içgörüler olarak şunlar sıralanıyor:
(1) Prompt'un uzun olması sorun değil ve aracın amacı ya da nasıl yardımcı olduğu gibi temel açıklamaları mutlaka içermeli
(2) Araç çağrıları çok temel bir parça; bağlamı daha fazla yansıtmalı (ne zaman kullanılacağı, ne zaman kullanılmayacağı gibi)
(3) Sistemin durumunu mesajlar olarak yönetmek makul; dataframe kaydetme, değişken parse etme gibi daha havalı yöntemler de düşünülmüş ama context window uzadıkça yalnızca mesajlarla da yeterli olabileceği düşünülüyor
OpenAI, Google Gemini gibi modelleri de denemiş ama Anthropic modelleri kadar iyi olmadıklarını ve daha yavaş kaldıklarını düşünüyor; prompt uzadıkça araçları unutma veya çıktıyı yanlış formatta verme sorunları yaşadığını belirtiyor
Netlik ve sadelik en yüksek öncelik
Google Gemini'nin, özellikle Pro sürümünün, Claude'a kıyasla nasıl olduğunu merak eden bir soru; Google'ın birçok ürününü sevse de ürünleri sık sık sonlandırması, kurumsal kontrol konularında (Chrome vb.) kaba davranması ve sansür meseleleri nedeniyle endişe duyduğunu söylüyor
Kendi stratejisi olarak önce Gemini ile proje özeti ve yüksek seviyeli tasarım planı çıkarıyor, sonra gpt5 ile bunu iyileştirip ayrıntılı iş akışı tasarımı yaptırıyor (ör. XML dokümanı) ve ardından bunu yeniden Claude'a veriyor; bunun bile Claude'un bocalama eğilimini büyük ölçüde önlediğini söylüyor
https://www.tbench.ai/leaderboard
Bir yoruma göre kullanıcıların olumlu değerlendirmeler vermesinin nedeni temel modelin gerçek yazılım geliştirme işlerinde güçlü olması; yani genel benchmark sorularından farklı bir durum var; GitHub Copilot kullanınca Claude'un OpenAI ve Google modellerinden çok daha üstün olduğu, aradaki farkın diğer modelleri pratikte neredeyse kullanışsız hissettirecek kadar büyük olduğu söyleniyor
Şu anda Claude Code ile Security Onion üzerinde Elastic kaynaklı bir sorunu debug etmeye çalıştığını, ancak birkaç dakika sonra anlaşılmaz JS kodları döküldüğünü ve “Error: kill EPERM” hatası aldığını anlatan bir yorum var
Loglara bakınca Node.js sürecini öldürüp Claude'un kendisini de kapatıyor olabileceğini düşünüyor; ya da sorunu çözemeyince Claude'un kendi kendini kapattığı hissine kapılıyor
Her hâlükârda süreç ayakta kalırsa biraz daha yardımcı olmasını isterdiğini söylüyor
İleride LLM'in en iyi bildiği dilin/platformun/mimarinin giderek baskın hâle geleceğini düşünüyor; örneğin LLM nodejs'i 10 kat daha iyi kullanıyorsa baştan Elixir veya Go yerine nodejs seçmenin daha mantıklı olabileceğini savunuyor; junior geliştiricilerin de LLM yardımıyla mid-level/senior gibi kullanılabileceğini ekliyor
sudoile süreci süper kullanıcı yetkisiyle çalıştırmaya çalışırken timeout olduğu için böyle bir hata çıkabiliyorBir kullanıcı, startup'ının ilk MVP'sinin tamamını Claude Code ile geliştirdiğini ve artık ücretli müşterileri olduğunu söylüyor; elbette bir SEV yaşanırsa her şeyin bir anda çökebileceğine dair temel bir kaygı var, ancak güvenlik açıklarını düzeltmek, test odaklı geliştirme yapmak ve uzun vadeli yol haritasına uygun yazılım mimarisi tasarlamak için Claude'u aktif biçimde kullanmaya devam ettiğini belirtiyor
Bu tür hikâyelerin zamanla daha yaygın hâle gelmesini umuyor
“Keep things simple” iddiası doğruysa, bunun tersine biraz karmaşık bir kurulum gibi hissettirdiğini söyleyen bir görüş var
Kendisi bugüne kadar hep tek prompt'la ne gerekiyorsa soran basit bir yaklaşımla yeterince çok iş yaptığını belirtiyor
Tartışılan bu karmaşık yapıların, gerçekten iyi hazırlanmış bir prompt'a kıyasla ne tür ek değer sağladığından emin olmadığını söylüyor
Örneğin "yeni öğrendiğim bir dilde while döngüsü nasıl yazılır" gibi tek cümlelik bir prompt'un daha verimli olabileceğini düşünüyor
Control flow'un daha da belirsizleştiği hissine kapılıyor; LLM'in appendix kısmını (araçlar ya da sistem prompt'u) gerçekten düzgün kullanıp kullanmadığından da emin değil; istek çok karmaşıksa bazı bölümlerin yok sayılması ya da token israfı olması muhtemel görünüyor
Parçalara bölünmüş ayrı prompt'larla programlama yapmak ona çok daha doğal geliyor
Farklı yaklaşım kullanan örnekleri ya da prompt'ları görmek istediğini söylüyor
İnsanların LLM kullanarak bütünlüklü bir programı pratikte nasıl oluşturduğunu, özellikle prompt'lara bölerek yapılan örnekleri görmek istediğini belirtiyor
Bu arada, yazının sonunda minusx.com bağlantısı var ve güvenlik sertifikası 553 gün önce sona ermiş durumda; sitenin geçerli olmadığını, dikkatli olunması gerektiğini belirten bir uyarı var