Claude Code yavaşlama ve maliyet sorunu çözümü
Claude Code oturumlarında artan token maliyetini ve yavaşlamayı önlemek için /context komutuyla bağlam yönetimi ve optimizasyon yöntemlerini öğrenin.
Claude Code oturumunun yavaşlamasını ve maliyetli hale gelmesini nasıl önleyebilirsiniz
Uzun bir Claude Code oturumu yavaşlar ve maliyetli hale gelir; çünkü her adımda tüm context tekrar gönderilir ve bu context sürekli büyür. Çözüm, belirli bir sırayla temizlik yapmaktır. Pencereyi neyin doldurduğunu görmek için /context komutunu çalıştırın, her istekte ücret ödediğiniz öğeleri silin, ardından ilgisiz görevler arasında /clear komutunu ve tek bir uzun görev içindeki talimatlar için /compact komutunu kullanın. Kesintisiz aralıklarla çalışın; çünkü soğuk bir prompt cache, ucuz bir okuma işlemini, söylediğiniz her şeyin tam bir yeniden yazımına dönüştürür.
Sayaç maliyetinin neden oluştuğının cevabı agent oturumunun arkasındaki token sayacı kısmında verilmiştir.
Herhangi bir değişiklik yapmadan önce /context içeriğini okuyun
Pencere içeriği hakkında tahmin yürütmeyin. Claude Code size bilgi verecektir.
/context [all], bağlam kullanımını renkli bir ızgara olarak ve bağlam yoğunluklu araçlar ile bellek şişmesi için optimizasyon önerileriyle birlikte çizer; all, tam ekran modunda öğe bazlı dökümü genişletir. Sonuç beş grup olarak okunmalıdır.
- Sistem istemi (system prompt). Claude Code'un kendi çalışma talimatları. Oturum boyunca sabittir.
- Araç tanımları (tool definitions). Ajanın çağırabileceği her bir aracın şeması; bağlı olan tüm MCP (Model Context Protocol) sunucuları dahil.
- Bellek dosyaları (memory files). Oturum başında yüklenen
CLAUDE.mdve otomatik bellek. - Dosyalar ve araç sonuçları. Okunan her dosya ve komutlarınızın çıktıları.
- Mesaj geçmişi. Kullanıcı girdileri ve modelin yanıtları.
İlk üç öğe, oturum süresince her istekte ödenen sabit bir maliyettir. Son iki öğe ise sürekli büyür. Sabit maliyeti oturum başında bir kez azaltın; büyüyen kısmı ise sürekli yönetin.
Pencerenin dolduğunu iki metin belirtir:
Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.Birincisi katı bir sınırdır ve istek reddedilir; ilgili API (application programming interface) hatası Prompt is too long olarak görünür. İkincisi ise sıkıştırma penceresidir; 1 milyon token kapasiteli bir modelde, modelin gerçek bağlam penceresinin altında kalabilir. Bu sınıra rağmen istekler başarılı olur, dolayısıyla bu bir ret değil, bir uyarıdır.
Ücretli bir planda, /usage diğer yarısını ekler; uzun bağlam veya önbellek kaçırmaları gibi davranışları işaretler ve son kullanımları münferit yeteneklere, alt ajanlara ve MCP sunucularına atfeder.
CLAUDE.md kalıcı bir vergidir, bu yüzden yalın tutun
CLAUDE.md oturum başında bağlama yüklenir ve orada kalır. Eğer dosya ayrıntılı bir dağıtım prosedürü içeriyorsa, bir test dosyasındaki yazım hatasını düzeltirken bu tokenlar mevcuttur. Anthropic kılavuzu, yalnızca temel öğelerin dahil edilmesini ve dosyanın 200 satırın altında tutulmasını önerir.
Prosedürleri skills içine taşıyın. Bir skill yalnızca çağrıldığında yüklenir; bu nedenle haftada iki kez çalıştırdığınız bir iş akışı, diğer günlerde herhangi bir maliyet oluşturmaz. Sıkıştırma işleminden sonra skill'lerin kendi bütçeleri vardır: içerikler yeniden enjekte edilir, her skill için 5,000 token ve toplamda 25,000 token ile sınırlandırılır; en eski içerik önce silinir. Kısaltma işlemi dosyanın başlangıcını korur, bu nedenle en önemli talimatları SKILL.md dosyasının başına yerleştirin.
Sıkıştırma işleminden nelerin kurtulduğu, bir talimatın nerede bulunması gerektiğini belirler.
- Sistem promptu ve çıktı stili değişmez, çünkü bunlar mesaj geçmişinin bir parçası değildir.
- Proje kök dizinindeki
CLAUDE.md, kapsam dışı kurallar ve otomatik bellek diskten yeniden enjekte edilir. paths:frontmatter içeren bir kural, eşleşen dosya tekrar okunana kadar kaybolur.- Bir alt dizindeki iç içe geçmiş
CLAUDE.md, o alt dizindeki bir dosya tekrar okunana kadar kaybolur. - Hook'lar etkilenmez, çünkü bir hook kod olarak çalışır ve bağlama asla girmez.
Bu nedenle, bağımlı olduğunuz bir kural proje kök dizinindeki CLAUDE.md içinde yer almalıdır: Claude Code önce eski tool çıktılarını temizler ve ardından özetleme yapar, bu yüzden konuşmanın başındaki talimatlar kaybolabilir. Belleği /memory ile düzenleyin. Claude Code, oturum başında yüklediği kopyayı tutar; bu nedenle oturum ortasındaki bir kırpma işlemi prompt cache'i korur ve bir sonraki /clear, /compact veya yeniden başlatma işlemine kadar uygulanmaz.
görevler arasında /clear, tek bir görev içinde /compact
Bu iki komut birbirinin yerine kullanılabilir görünse de maliyetleri birbirinden çok farklıdır.
/clear [name] boş bir bağlam ile yeni bir sohbet başlatır. Hiçbir istek göndermediği için maliyeti yoktur. Önceki sohbeti /resume seçicisi ile etiketlemek için bir isim verin; /reset ve /new takma adlardır. İlgisiz bir göreve geçtiğiniz anda bu komutu kullanın; aksi takdirde eski görev her yeni mesajda tekrar gönderilir ve tekrar ücretlendirilir.
/compact [instructions] aynı sohbeti sürdürürken bağlamı boşaltır: şimdiye kadarki geçmişi özetler ve onunla değiştirir. Sürekliliğe ihtiyaç duyduğunuz uzun bir görev içinde kullanın.
/compact komutuna her zaman bir talimat verin. Yalın bir /compact, işin hangi kısmına hala ihtiyaç duyduğunuzu bilmeyen varsayılan bir isteme göre özetleme yapar. Talimat içeren bir komut ise bunu korur:
/compact focus on the auth bug fix
/compact keep only the plan and the diffHer seferinde aynı sebeple sıkıştırma yapıyorsanız, projenizin CLAUDE.md kısmına bir # Compact instructions başlığı altına sabit bir talimat ekleyin. Yeni bir oturumda /compact, Not enough messages to compact. çıktısını verir; bu sadece henüz bir geçmiş bulunmadığı anlamına gelir.
Burada iki maliyet karıştırılmaktadır. Özetleme isteği sizin prefix'inizi paylaşır, bu nedenle geçmişi yeniden işlemek yerine mevcut önbelleği okur ve zamanının çoğu özeti oluşturmaya harcanır. Büyük bir bağlamı sıkıştırmak hala büyük bir istektir, çünkü özetlenen sohbet girdi olarak kullanılır. Sıkıştırmadan sonraki adım yavaş olan kısım değildir: çok daha kısa bir istem için önbelleği yeniden oluşturur.
İki adet daha ucuz komut mevcuttur. /rewind [description] kod ve sohbeti bir kontrol noktasına geri döndürür; tamamen bırakmak istediğiniz bir yol için sıkıştırmadan daha iyidir, çünkü halihazırda önbelleğe alınmış bir prefix'e kadar keser. /recap geçmişi değiştirmek yerine komut çıktısı olarak bir özet ekler, böylece önbelleğe alınmış prefix bozulmadan kalır.
Otomatik sıkıştırmanın üst üste tetiklenmesi şu çıktıyı verir:
Autocompact is thrashing: the context refilled to the limit...Sıkıştırma başarılı oldu, ancak bir dosya veya araç çıktısı pencereyi art arda birkaç kez doldurdu, bu nedenle Claude Code tekrar denemeyi durdurdu. Çok büyük bir dosyayı satır aralıklarıyla okuyarak, büyük çıktıyı düşüren bir odak ile /compact komutunu çalıştırarak, işi bir subagent'a devrederek veya önceki sohbet bittiyse /clear kullanarak kurtarma yapın.
MCP sunucuları sabit maliyet getirir
Bağlanılan her MCP sunucusu, oturum boyunca yapılan her isteğe ek yük bindirir. Sunucu çağrılmasa dahi bu maliyet ödenir.
Claude Code bu durumu hafifletir. MCP araç tanımları varsayılan olarak ertelenir; böylece Claude belirli bir aracı kullanana kadar bağlama (context) sadece araç isimleri dahil edilir. Sunucularınızın gerçek maliyetini görmek için /context komutunu, bugün kullanmayacağınız bir sunucuyu devre dışı bırakmak için /mcp disable <name> komutunu çalıştırın. Eğer kendi MCP sunucularınızı bir VPS üzerinde çalıştırıyorsanız, aynı hesaplama yöntemi bir sunucunun kaç araç sunması gerektiğini de sınırlar.
Bu işlemi oturumun başında yapın. Tanımlamalar ertelenmiş halde kaldığı sürece, bir sunucuya bağlanmak veya bağlantıyı kesmek sadece konuşmaya ekleme yapar ve önbellek (cache) korunur. Araç arama kapalıysa veya bir sunucu ertelemeden muaf tutulmuşsa ve tanımlamalar ön ek (prefix) içine yükleniyorsa, aynı işlem bir sonraki isteğin her şeyi yeniden okumasına neden olur.
Araç çıktısını bağlama girmeden önce filtreleyin
Bir araç sonucu girdi olarak kullanılır ve girdi, sonraki her adımda tekrar gönderilir. 20,000 tokenlık çıktı üreten bir test çalışması tek seferlik bir maliyet değildir: Çıktı pencereden çıkana kadar her adımda tekrar ödeme yapılır.
Filtreleme işlemini kaynakta yapın. Bir test çalışmasını Claude görmeden önce sadece hatalara indirgeyen bir kanca (hook), bu çıktı yığınını hem mevcut adımda hem de her yeniden gönderimde birkaç yüz tokena dönüştürür:
npm test 2>&1 | grep -E "FAIL|Error:" | head -40Kancalar kod olarak çalıştığı için kendileri asla bağlama girmezler. Çıktısı ekran sınırlarını aşan tüm araçlar için bu yöntem uygulanmalıdır. Aynı mantık 3,000 satırlık dosyalar için de geçerlidir: İhtiyaç duyulan satır aralığını isteyin, çünkü dosyanın tamamı içeri aktarıldıktan sonra pencerede kalmaya devam eder.
Agentin okuduğu kapsamı belirleyin ve gürültülü işları delege edin
Dosya adını ve belirtiyi içeren bir istem, ilgili dosyayı okur. Projeyi düzenlemek için verilen açık bir istek, agent'ın ilgili bulduğu her şeyi okur ve bu okumaların her biri pencerede kalır.
Ayrıntılı işleri bir subagent'a delege edin. Test çalıştırmaları ve log işleme süreçlerinin her ikisi de gerçek bağlam tüketir; bir subagent bu çıktıyı kendi penceresinde tutar ve yalnızca bir özet döndürür. Bu yöntemin ödünü: Bir subagent, ilk çağrıda cache eşleşmesi yakalayamaz ve abonelik olsa bile beş dakikalık cache ömrünü kullanır. Delege etme işlemi, ana bağlamınızı güvenilir bir şekilde korur. Toplam token sayısını her zaman düşürmez.
Önbellek saati: kesintisiz aralıklarla çalışın
Prompt caching, yeniden gönderim maliyetini düşüren unsurdur: prefix okuma hızı temel giriş hızının 0.1x katıdır; yazma hızı ise 1.25x veya bir saatlik ömür için 2x katıdır. Her kullanım, ek maliyet olmaksızın girişi yeniler; bu nedenle saat son kullanımdan itibaren işler.
Elde edilen ömür süresi, kimlik doğrulama yönteminize bağlıdır; bu nedenle "önbelleğiniz beş dakika sonra sona erer" gibi genel ifadeler hatalıdır.
- Claude aboneliğinde, Claude Code otomatik olarak bir saatlik ömür talep eder.
- Plan limitiniz aşıldığında ve kullanım kredileri devreye girdiğinde, kullanım için faturalandırılırsınız; bu durumda süre beş dakikaya düşer.
- API key veya bulut sağlayıcısı kullanımında süre beş dakikada kalır.
ENABLE_PROMPT_CACHING_1H=1bir saatlik ömür seçeneğini kullanır,FORCE_PROMPT_CACHING_5M=1ise süreyi tekrar düşürür.
Çalışma ritmi tavsiyesi her iki durum için de aynıdır: kesintisiz aralıklarla çalışın; çünkü ömür süresini aşan boşluklar, bir sonraki turda tüm birikmiş prefix'in yeniden yazılmasına neden olur. tmux içindeki kopuk bir Claude Code oturumu boşta dururken hiçbir maliyet oluşturmaz; boşta kalma süresinin kaybettiği şey ise sıcak önbellektir.
Bazı işlemler siz çalışırken önbelleği temizler: model değiştirmek, çaba seviyesini değiştirmek, fast mode özelliğini açmak, bir MCP sunucusuna bağlanmak veya bağlantıyı kesmek, bir eklentiyi etkinleştirmek veya devre dışı bırakmak, bir aracı tamamen reddetmek, sıkıştırmak ve Claude Code'u yükseltmek. /model yaygın bir sürprizdir; çünkü her modelin kendi önbelleği vardır, bu nedenle içerik aynı olsa bile bir sonraki istek hiçbir önbellek eşleşmesi olmadan tüm geçmişi okur.
Dosya düzenleme, CLAUDE.md düzenleme, yetenek ve komut çağırma, /recap çalıştırma, geri sarma ve bir subagent başlatma işlemlerinin tamamı önbelleği korur. Önbellek tek bir makine ve tek bir dizin ile sınırlandırılmıştır; bu nedenle farklı dizinlerdeki iki oturum birbirinin önbelleğine erişemez.
Önbelleğeğin çalışıp çalışmadığını görmek için current_usage kısmını okuyun. cache_creation_input_tokens önbellek yazma hızında yazılmıştır; cache_read_input_tokens ise standart giriş hızının yaklaşık onda biri hızında sunulmuştur. Yüksek bir okuma/oluşturma oranı sağlıklı bir göstergedir. Eğer oluşturma oranı her turda yüksek kalıyorsa, prefix içindeki bir unsur sürekli değişiyor demektir.
Daha büyük bir context window bunu çözer mi?
Kısmen. Mevcut modellerin birkaçı 1 million token context window desteklemektedir ve sıkıştırma işlemi daha büyük limitlerde de aynı şekilde çalışır. Ekonomi değişmez; çünkü tam prompt her adımda tekrar gönderilir ve her seferinde ücretlendirilir. Daha büyük bir window, ne zaman aksiyon almanız gerektiğini belirler; veri temizliği ise maliyeti belirler. Sorun limit değil de fatura ise, çalışma şeklinize en uygun Claude planı dolar mı yoksa plan kotası mı harcayacağınızı belirler.
API'da context editing ve compaction farklı işlemlerdir
Messages API üzerinde kendi agent yapınız oluşturuluyorsa, slash komutları mevcut değildir ve bu işlem kullanıcı tarafından uygulanır. İki farklı sunucu tarafı özelliği bu işlevi yerine getirir ancak bunlar aynı özellik değildir.
Context editing, konuşma geçmişi büyüdükçe belirli içerikleri seçici olarak temizler. Silinen her içeriğin yerine yer tutucu metin eklenir; böylece Claude bir verinin kaldırıldığını anlar. Bu özellik beta aşamasındadır: anthropic-beta: context-management-2025-06-27 gönderilmeli ve context_management.edits altındaki stratejiler yapılandırılmalıdır. clear_tool_uses_20250919 araç sonuçlarını temizler, clear_thinking_20251015 ise düşünme bloklarını yönetir. trigger varsayılan olarak 100,000 input token, keep son 3 araç kullanımı ve clear_tool_inputs ise false olarak ayarlanmıştır; böylece inputlar korunur ve sadece sonuçlar silinir.
Compaction, bir özet oluşturur ve tüm konuşma geçmişini bu özetle değiştirir. Bu özellik de beta aşamasındadır: anthropic-beta: compact-2026-01-12 gönderilmeli ve compact_20260112 edit tipi kullanılmalıdır. Tetikleyici varsayılan olarak {"type": "input_tokens", "value": 150000} değerindedir ve değer en az 50,000 olmalıdır.
Compaction işleminin agent yapılarının çalışmasını bozan bir aktarım kuralı vardır. Yanıt, özeti içeren bir compaction content block ile başlar ve ardından normal text block gelir. Bu bloğu sonraki isteklerde tekrar iletmek zorunludur; aksi takdirde API, bu bloktan önceki tüm content blockları siler. Uygulamada: sadece metni değil, response.content içeriğinin tamamını ekleyin.
Anthropic dokümantasyonu, sunucu tarafı compaction işlemini uzun süreli konuşmalarda context yönetimi için birincil strateji, context editing işlemini ise nelerin temizleneceği üzerinde daha hassas kontrol sağlayan bir seçenek olarak tanımlar. Öncelikle model desteğini kontrol edin. Mevcut Opus, Sonnet ve Fable modelleri compaction destekler; claude-haiku-4-5 desteklemez; güncel liste compaction sayfasında yer almaktadır. Her iki beta özelliği de Claude Code'un kendi /compact özelliğini yönetmez; dokümantasyon bu özelliği istemcinin gönderdiği tek seferlik bir özetleme isteği olarak tanımlar.
FAQ
Claude Code oturumum ne kadar uzun sürerse neden o kadar yavaşlar ve maliyetli hale gelir?
Her adımda tüm konuşma tekrar gönderildiği için, tüm gün açık kalan bir oturumdaki tek satırlık bir soru tüm günün verisini beraberinde taşır. Prompt caching, önbellek sıcakken okuma işlemi için temel giriş oranının 0.1x'i kadar düşük maliyet sağlar; önbellek kaçırıldığında ise aynı önek 1.25x maliyetle tekrar yazılır. Pencereyi neyin doldurduğunu görmek için /context komutunu çalıştırın; mekanizmayı öğrenmek için Claude Code oturumunun sizi ne için ücretlendirdiğine göz atın.
Claude Code içindeki /clear ve /compact arasındaki fark nedir?
/clear, boş bir bağlam ile yeni bir konuşma başlatır. Hiçbir istek göndermediği için maliyeti yoktur; birbiriyle ilgisiz görevler arasında doğru tercihtir. /compact aynı konuşmayı sürdürür ve geçmişi bir özetle değiştirir; bu nedenle tek bir uzun görev içindeki doğru tercihtir. Talimatın neyin kalacağını belirlediği için /compact keep only the plan and the diff örneğinde olduğu gibi ona bir odak noktası verin.
Claude Code bağlam penceresini (context window) neyin tükettiğini nasıl görebilirim?
/context komutunu veya öğe bazlı tam döküm için /context all komutunu çalıştırın. Bu komut; sistem istemini, araç tanımlarını, MCP sunucularını, bellek dosyalarını ve geçmişi renkli bir ızgara olarak gösterir; bağlamı yoğun kullanan araçlar ve bellek şişmesi için öneriler sunar. Ücretli bir planda /usage, son kullanımları tekil yeteneklere, alt ajanlara ve MCP sunucularına da atfeder.
Kompaktlaştırma (compacting) yerine 1 milyon tokenlık bir bağlam penceresi mi kullanmalıyım?
Daha büyük bir pencere, sorunu çözmek yerine sadece erteler. Opus 4.8 ve Sonnet 5 dahil olmak üzere mevcut modellerin birkaçı 1 milyon tokenlık bir bağlam penceresiyle çalışır ve kompaktlaştırma orada da aynı şekilde işler. Her adım hala tam istemi tekrar gönderir ve bunun için ücretlendirilir; bu nedenle 400,000 tokenlık bir konuşma, sığsa da sığmasa da maliyetlidir.
Claude API'de bağlam düzenleme (context editing) ve kompaktlaştırma arasındaki fark nedir?
Bağlam düzenleme, eski içeriği (çoğunlukla araç sonuçlarını) seçici olarak temizler ve Claude'un içeriğin kaldırıldığını bilmesi için her birinin yerine yer tutucu metin bırakır. Kompaktlaştırma bir özet oluşturur ve tüm geçmişi bununla değiştirir. Anthropic dokümantasyonu, kompaktlaştırmayı uzun süreli konuşmalar için birincil strateji olarak tanımlar ve bağlam düzenlemeyi hassas ayar seçeneği olarak konumlandırır. Her ikisi de kendi başlıklarına sahip beta özellikleridir ve her ikisi de Claude Code'un /compact özelliğinden ayrıdır.