Son görüşmelerimde Claude Code kullanıcılarıyla konuşurken sürekli karşıma çıkan bir tema var: 1M token bağlam penceresi iki ucu keskin bir kılıç.
Claude Code'un daha uzun süre otonom çalışmasını ve görevleri daha güvenilir bir şekilde halletmesini sağlıyor, ancak oturumlarını yönetme konusunda dikkatli değilsen bağlam kirliliğine de kapı aralıyor.
Oturum yönetimi her zamankinden daha önemli hale geldi ve bu konuda pek çok soru var gibi görünüyor. Bir terminalde tek bir oturum mu açık tutuyorsun, yoksa iki mi? Her komutta sıfırdan mı başlıyorsun? Compact, rewind veya subagent'ları ne zaman kullanmalısın? Kötü bir compact'a ne sebep olur?
Burada Claude Code ile deneyimini gerçekten şekillendirebilecek şaşırtıcı miktarda detay var ve neredeyse tamamı bağlam pencereni yönetmekle ilgili.
Bağlam, Sıkıştırma ve Bağlam Çürümesi Hakkında Kısa Bir Giriş

Bağlam penceresi, modelin bir sonraki yanıtını üretirken aynı anda "görebildiği" her şeydir. Sistem komutunu, şimdiye kadarki konuşmayı, her araç çağrısını ve çıktısını ve okunan her dosyayı içerir. Claude Code'un bir milyon tokenlik bir bağlam penceresi vardır.
Ne yazık ki bağlamı kullanmanın hafif bir maliyeti vardır ve buna genellikle bağlam çürümesi denir. Bağlam çürümesi, bağlam büyüdükçe model performansının düşmesi gözlemidir çünkü dikkat daha fazla token'a yayılır ve daha eski, alakasız içerik mevcut görevden uzaklaştırmaya başlar. 1MM bağlam modelimiz için, yaklaşık ~300-400k token civarında bir miktar bağlam çürümesi görüyoruz, ancak bu kesin bir kural değil, göreve oldukça bağımlıdır.
Bağlam pencereleri sert bir sınırdır, bu nedenle bağlam penceresinin sonuna yaklaştığında, üzerinde çalıştığın görevi daha küçük bir açıklamaya özetlemen ve çalışmaya yeni bir bağlam penceresinde devam etmen gerekecektir, buna sıkıştırma diyoruz. Sıkıştırmayı kendin de tetikleyebilirsin.

Her Adım Bir Dallanma Noktasıdır
Diyelim ki az önce Claude'dan bir şey yapmasını istedin ve işini bitirdi. Artık bağlamında biraz bilgi var (araç çağrıları, araç çıktıları, komutların) ve bundan sonra ne yapacağın konusunda şaşırtıcı sayıda seçeneğin var:
- Devam Et — aynı oturumda başka bir mesaj gönder
- /rewind (esc esc) — önceki bir mesaja geri dön ve oradan tekrar dene
- /clear — genellikle az önce öğrendiklerinden çıkardığın bir özetle yeni bir oturum başlat
- Compact — şimdiye kadarki oturumu özetle ve özetin üzerine devam et
- Subagent'lar — sonraki iş parçasını kendi temiz bağlamı olan bir ajana devret ve sadece sonucunu geri al
En doğal olanı devam etmek olsa da, diğer dört seçenek bağlamını yönetmene yardımcı olmak için vardır.

Ne Zaman Yeni Bir Oturum Başlatmalı
Yeni 1M bağlam penceresi, artık daha uzun görevleri daha güvenilir bir şekilde yapabileceğin anlamına geliyor, örneğin sıfırdan tam bir full-stack uygulama oluşturmak gibi. Ancak modelin bağlamı tükenmedi diye yeni bir oturum başlatmaman gerektiği anlamına gelmez.
Genel kuralımız şudur: yeni bir göreve başladığında, yeni bir oturum da başlatmalısın.
Gri alan, bağlamın bir kısmının hala gerekli olduğu ancak tamamının olmadığı ilgili görevleri yapmak istediğin zamandır.
Örneğin, az önce uyguladığın bir özellik için dokümantasyon yazmak. Yeni bir oturum başlatabilirsin, ancak Claude az önce uyguladığın dosyaları yeniden okumak zorunda kalır, bu da daha yavaş ve daha pahalı olur. Dokümantasyon çok yüksek zeka gerektiren bir görev olmayabileceğinden, ilgili dosyaları yeniden okumamaktan kaynaklanan verimlilik kazancı muhtemelen ekstra bağlama değer.
Düzeltmek Yerine Geri Sarmak

İyi bağlam yönetimini gösteren tek bir alışkanlık seçmem gerekirse, bu geri sarmak olurdu.
Claude Code'da Esc tuşuna iki kez basmak (veya /rewind çalıştırmak) önceki herhangi bir mesaja geri dönmeni ve oradan yeniden komut vermeni sağlar. Bu noktadan sonraki mesajlar bağlamdan düşer.
Geri sarmak genellikle düzeltmekten daha iyi bir yaklaşımdır. Örneğin, Claude beş dosyayı okur, bir yaklaşım dener ve işe yaramaz. İçgüdün "bu işe yaramadı, onun yerine X'i dene" yazmak olabilir, ancak daha iyi hamle, dosya okumalarının hemen sonrasına geri sarmak ve öğrendiklerinle yeniden komut vermektir. "A yaklaşımını kullanma, foo modülü bunu sunmuyor — doğrudan B'ye git."
Ayrıca Claude'dan öğrendiklerini özetlemesini ve bir devir teslim mesajı oluşturmasını istemek için "buradan itibaren özetle" özelliğini de kullanabilirsin; bu, bir şeyi deneyip işe yaramadığını gören gelecekteki benliğinden önceki Claude yinelemesine gönderilen bir mesaj gibidir.

Sıkıştırma ve Yeni Oturumlar
Bir oturum uzadığında, yükü azaltmak için iki seçeneğin vardır: /compact veya /clear (ve sıfırdan başlamak). Benzer görünürler ancak çok farklı davranırlar.
Compact, modelden şimdiye kadarki konuşmayı özetlemesini ister, ardından geçmişi bu özetle değiştirir. Kayıplıdır, neyin önemli olduğuna Claude'un karar vermesine güvenirsin, ancak kendin bir şey yazmak zorunda kalmazsın ve Claude önemli öğrenimleri veya dosyaları dahil etme konusunda daha titiz olabilir. Ayrıca komutlar vererek yönlendirebilirsin (/compact auth yeniden düzenlemesine odaklan, test hata ayıklamayı bırak).

/clear ile sen neyin önemli olduğunu yazarsın ("auth middleware'ini yeniden düzenliyoruz, kısıtlama X, önemli dosyalar A ve B, Y yaklaşımını eledik") ve temiz başlarsın. Daha fazla iştir, ancak ortaya çıkan bağlam senin alakalı olduğuna karar verdiğin şeydir.
Kötü Bir Compact'a Ne Sebep Olur?

Uzun süreli oturumlar çalıştırıyorsan, sıkıştırmanın özellikle kötü olabileceği zamanlar fark etmiş olabilirsin. Bu durumda, kötü sıkıştırmaların genellikle modelin çalışmanın gideceği yönü tahmin edemediğinde meydana geldiğini gördük.
Örneğin, otomatik sıkıştırma uzun bir hata ayıklama oturumundan sonra tetiklenir ve araştırmayı özetler ve bir sonraki mesajın "şimdi bar.ts dosyasında gördüğümüz diğer uyarıyı düzelt" olur.
Ancak oturum hata ayıklamaya odaklandığı için, diğer uyarı özetten düşmüş olabilir.
Bu özellikle zordur, çünkü bağlam çürümesi nedeniyle model, sıkıştırma yaparken en az zeki olduğu noktadadır. Bir milyon bağlamla, ne yapmak istediğinin bir açıklamasıyla /compact'i proaktif olarak kullanmak için daha fazla zamanın olur.
Subagent'lar ve Yeni Bağlam Pencereleri

Subagent'lar, bir iş parçasının bir daha ihtiyacın olmayacak çok sayıda ara çıktı üreteceğini önceden bildiğinde kullanışlı olan bir bağlam yönetimi biçimidir.
Claude, Agent aracı aracılığıyla bir subagent oluşturduğunda, bu subagent kendi yeni bağlam penceresini alır. İhtiyacı kadar çalışma yapabilir ve ardından sonuçlarını sentezleyerek yalnızca nihai raporun ana ajana geri dönmesini sağlar.
Kullandığımız zihinsel test: bu araç çıktısına tekrar ihtiyacım olacak mı, yoksa sadece sonuca mı?
Claude Code subagent'ları otomatik olarak çağıracak olsa da, bunu açıkça yapmasını söylemek isteyebilirsin. Örneğin, ona şunları söylemek isteyebilirsin:
- "Aşağıdaki spec dosyasına göre bu çalışmanın sonucunu doğrulamak için bir subagent başlat"
- "Auth akışını nasıl uyguladığını özetlemesi için diğer kod tabanını okuyacak bir subagent başlat, ardından aynı şekilde kendin uygula"
- "Git değişikliklerime dayanarak bu özellik için dokümanları yazacak bir subagent başlat"
Özet
Özetle, Claude bir adımı tamamladığında ve sen yeni bir mesaj göndermek üzereyken, bir karar noktasındasın.
Zamanla Claude'un bunu kendi başına halletmene yardımcı olmasını bekliyoruz, ancak şimdilik bu, Claude'un çıktısını yönlendirebileceğin yollardan biri.






