LLM ajanının bağlam penceresi: neler girer ve ajan kuralları neden unutur
LLM bağlam penceresi, modelin her yanıtta gördüğü tüm metindir: sistem promptu, talimat dosyaları, konuşma geçmişi, okunan dosyalar ve araç çıktıları. Pencerenin token cinsinden sert bir sınırı vardır, ama dikkat kalitesi bu sınırdan çok önce düşer; bu yüzden uzun oturumda ajan kuralları kaybetmeye başlar. Yardımcı olan şeyler kısa talimatlar, compaction, plan dosyasıyla yeni oturumlar ve gürültülü işi alt ajanlara devretmektir.
LLM bağlam penceresi nedir
LLM bağlam penceresi, modelin bir sonraki yanıtı üretirken aldığı tüm girdi metnidir. Modelin insanlardaki anlamda bir hafızası yoktur: model o anda görevinizle ilgili ne "biliyorsa", hepsi bu pencerededir. Pencerede olmayan şey model için yoktur.
Pencerenin boyutu token ile ölçülür — kelime parçalarıyla. Rusça metinde bir token ortalama İngilizcedekinden kısadır, bu yüzden aynı talimat Rusça yazıldığında daha fazla token tutar. Modern modellerin pencereleri yüz binlerce token olabiliyor ve her şeye yetecekmiş gibi görünüyor. Pratikte ajanın alanı beklediğinizden hızlı tükenir ve performansı ondan da önce düşmeye başlar.
Ajanın bağlam penceresine neler girer
Programlama ajanının bilgi kaynağı tam olarak üç tanedir: görevi anlatan sistem promptu, okuduğu dosyaların içeriği ve çağırdığı araçların çıktısı. Üçü de aynı pencerede yaşar ve yer için yarışır.
| Ne | Ne zaman girer | Genelde ne kadar yer kaplar |
|---|---|---|
| Ajanın sistem promptu ve araç tanımları | her oturumun başında | sabit maliyet, sizin etkiniz az |
| CLAUDE.md, AGENTS.md ve diğer talimat dosyaları | oturumun başında, tamamı | yüzlerce ila on binlerce token — sizin yazdığınıza bağlı |
| Sizin mesajlarınız ve ajanın yanıtları | tüm konuşma boyunca birikir | her replikte büyür |
| Okunan dosyalar | ajan onları açtığında | büyük bir dosya bir seferde binlerce token |
| Komut çıktıları: testler, loglar, derleme, grep | her çağrıdan sonra | çoğu zaman en büyük ve en az işe yarayan kısım |
Kritik nokta: bunların hiçbiri kendiliğinden kaybolmaz. Yirmi adım önce lazım olan, şimdi başarısız olmuş testlerin logu hâlâ pencerededir ve mevcut adımdan dikkat çalar. Uzun oturum, her geçen dakikada büyüyen bir saman yığınıdır; içinde iğneyi bulmak giderek zorlaşır.
Uzun oturumda ajan kuralları neden unutur
Sık görülen şikâyet: oturumun başında ajan CLAUDE.md'deki kuralları titizlikle uygular, bir saat sonra ihlal etmeye başlar. Kuralları harfi harfine "unutmuş" değildir — kuralın metni hâlâ pencerededir. Sorun, modelin uzun metin üzerinde dikkati nasıl dağıttığıdır.
Lost in the middle
Liu ve ortak yazarlarının 2023 tarihli araştırması, dil modellerinin uzun bağlamın başındaki ve sonundaki bilgiyi ortasındakinden belirgin biçimde daha iyi kullandığını gösterdi. Talimat dosyası oturumun başında yüklenir, ama konuşma ilerledikçe hem üstte hem altta giderek daha fazla metin birikir. Gözün önünde olan kural, zamanla modelin en az "gördüğü" bölgeye düşer.
Kuralların penceredeki payı düşer
Taze bir oturumda talimatlar bağlamın dikkat çekici bir parçasıdır. Yüz araç çağrısından sonra ise loglar, diff'ler ve okunmuş kodun arasında küçük bir parça olurlar. Sinyal aynıdır, ama etrafındaki gürültü on kat artmıştır.
Taze örnekler eski kuralları bastırır
Model son konuşmaya güçlü biçimde dayanır. Ajan kuralı arka arkaya birkaç kez çiğneyip bunun cezasız kaldığını görürse, geçmişteki bu örüntü başlangıçtaki talimat satırından daha ağır basmaya başlar.
Context rot: pencere dolmadan kalitenin bozulması
Context rot ("bağlam çürümesi"), pencere doldukça yanıt kalitesinin düşmesine verilen addır; teknik sınıra hâlâ uzak olunsa bile. Model 200 bin token'ı resmen kabul eder, ama 150 bin token'da 20 bin token'dakine göre daha kötü çalışır: ayrıntıları daha sık karıştırır, zaten reddedilmiş çözümleri tekrar önerir, talimatları kaybeder.
Oturumun "çürüdüğünün" işaretleri:
- ajan yarım saat önce birlikte reddettiğiniz bir yaklaşımı tekrar önerir;
- az önce konuşulmuş dosya ve fonksiyon adlarını karıştırır;
- başta kendi çalıştırdığı kontrolleri çalıştırmayı bırakır;
- yanıtlar uzar ve bulanıklaşır, "bir de şunu düzelttim" gibi fazlalıklar çıkar.
Bunu çözmek için bir kural daha eklemek işe yaramaz: yeni kural da aynı gürültüde kaybolur. Gürültüyü azaltmak gerekir.
Compaction: bağlamın sıkıştırılması
Compaction, oturum geçmişinin sıkıştırılmasıdır: model neler olduğunun kısa bir özetini yazar ve konuşma tam geçmiş yerine bu özetle devam eder. Pencere boşalır, işin özü korunmuş olur.
Claude Code'da bunun için /compact komutu vardır; sıkıştırırken nelere odaklanılacağını ipucu olarak verebilirsiniz. Pencere sınıra yaklaştığında Claude Code compaction'ı otomatik de yapar. /clear geçmişi tamamen temizler ve sıfırdan başlatır; /context ise pencerenin neyle dolu olduğunu gösterir.
/context
/compact sakla: görevin amacı, nedenleriyle alınan kararlar, değiştirilen dosyaların listesi, neyin kontrol edilmesi gerektiği
/clear
Compaction neden tehlikeli
Yeniden anlatım her zaman ayrıntı kaybeder. Sıkıştırılmış özete reddedilen seçenek ve reddetme nedeni, gereksinimin tam ifadesi ya da yan yana kararlaştırdığınız bir incelik girmeyebilir. Compaction'dan sonra ajan kendi oturumunun başkasının yazdığı notlarıyla çalışır. Bu yüzden önemli şeyleri konuşma geçmişinde değil, her compaction'ı atlatacak dosyalarda tutmak daha güvenlidir.
Compaction mı, yeni oturum mu
| Durum | Ne yapmalı |
|---|---|
| Görev neredeyse bitti, biraz daha yer lazım | Ne korunacağını belirterek compaction |
| Bir görev bitti, yenisine başlanıyor | Yeni oturum; eski geçmiş yalnızca engel olur |
| Oturum "çürüdü", ajan döngüye girdi | Durumu bir plan dosyasına yazıp yeni oturum açmak |
| Kod veya log üzerinde uzun araştırma gerekiyor | Araştırmayı bir alt ajana vermek |
Bağlam penceresi nasıl tasarruf edilir
Bağlam tasarrufu token fiyatıyla ilgili değil, işin kalitesiyle ilgilidir. Pencerede gürültü azaldıkça görevle kurallara daha fazla dikkat kalır.
1. Kısa bir yönlendirici talimat dosyası
Giriş dosyası CLAUDE.md veya AGENTS.md her oturumda baştan sona okunur. 600 satırlık bir dosya kabaca 10–20 bin token sabit yüktür. İçinde kontrol komutlarını, sert kısıtları ve proje haritasını tutun; konulara göre ayrıntıları ihtiyaç olduğunda açılan ayrı belgelere koyun.
2. İhtiyaç anında yüklenen bilgi
Claude Code skills, bağlama önce yalnızca kısa açıklamalarını koyacak şekilde çalışır; tam talimat ise beceri görevde gerektiğinde yüklenir. Deploy, migrasyon, sürüm gibi nadir süreçleri her oturumda ödemeden elinizin altında tutmanın kolay yoludur.
3. Gürültülü iş için alt ajanlar
Alt ajan kendi bağlam penceresinde çalışır ve ana oturuma yalnızca sonucu döndürür. Büyük kodda arama, uzun log analizi, tanımadığınız bir modülü inceleme — hepsini alt ajana verip binlerce satır ham çıktı yerine birkaç paragraf sonuç alabilirsiniz.
4. Sessiz araç çıktısı
Komut çıktısı pencerenin başlıca tüketicisidir. Kontrol komutlarını başarıda tek satır, hatada yalnızca özü yazdıracak şekilde ayarlayın: düşen test ve onun mesajı, tam derleme logu değil.
# gürültülü: her çalıştırmada binlerce satır pencereye
pytest -v
# sessiz: başarıda tek satır, düşmede yalnızca başarısız testler
pytest -q --tb=short
# log tamamı değil, yalnızca sonu ve hatalar
tail -n 50 app.log | grep -i error
5. Bir görev, bir oturum
Bir oturumu üç ilgisiz göreve taşımayın. İlk görevin geçmişi üçüncü görev için işe yaramaz, ama yer kaplar ve ajanı şaşırtır. Bitirdiniz — sonucu kaydettiniz — yeni oturum açtınız.
6. Durum geçmişte değil, dosyalarda
Compaction'ı ve yeni oturumu atlatması gereken her şeyi depoya yazın: amaç, nedenleriyle kararlar, reddedilen seçenekler, yapılanlar ve nasıl doğrulandığı, bir sonraki adım. Örneğin PLAN.md ve PROGRESS.md dosyalarında. Böylece yeni oturum özetle değil, kesin bir belgeyle başlar ve geçmişi rahatça temizleyebilirsiniz.
# PROGRESS.md
## Hedef
İndirim hesabını tam kuruşlara çevirmek
## Yapılanlar (doğrulandı)
- app/payments/discount.py: float → int, make test yeşil
- 041 migrasyonu eklendi, yerelde uygulandı
## Kararlar
- Yuvarlama — bankacılık yuvarlaması, ödeme sağlayıcısındaki gibi
## Reddedilenler
- Modelde Decimal: webhook serileştirmesini bozuyor
## Sonraki adım
Sipariş ödeme e2e senaryosunu güncellemek ve make e2e çalıştırmak
Kritik kurallar yalnızca pencerede olmamalı
Kusursuz düzenlenmiş bir bağlam bile kuralların uygulanmasını garanti etmez: pencereye yazılan metin modele etki eder, ama çalıştırılabilir bir yasak değildir. İhlali kabul edilemeyen kurallar mekanik olarak kontrol edilmelidir. Claude Code'da bunun için hook'lar vardır — ajanın olaylarında çalışan ve eylemi engelleyebilen komutlar — ve belirli araçları veya komutları yasaklayan izin ayarları. Linter'lar, testler ve CI, ajanın penceresinde ne olduğundan bağımsız çalışır.
İyi bir harness kuralı: otomatik kontrol edilebilen her şey otomatik kontrol edilir, bağlamda ise yalnızca yargı gerektiren şey kalır.
Sonuç
LLM bağlam penceresi, ajanın görevinizi gördüğü tek yerdir ve talimatlar, geçmiş, okunan dosyalar ve komut çıktıları oturum bitene kadar birikerek onu sandığınızdan hızlı doldurur. Kalite teknik sınırdan çok önce düşer, uzun bağlamın ortasındaki kurallar kaybolur ve compaction yeri kurtarırken ayrıntıya mal olur. Talimatları kısa tutun, nadir bilgileri ihtiyaç anında yükleyin, gürültülü işi alt ajanlara verin, durumu dosyalarda tutun ve kritik kuralları hook'lar ile kontrollerle destekleyin. Ajan bağlamıyla çalışma, harness engineering kursunda uygulamalı olarak ele alınır.
Sık sorulan sorular
Claude'un bağlam penceresi kaç token?
Modele ve plana göre değişir; standart referans yaklaşık 200 bin token'dır, bazı modellerde ve yapılandırmalarda daha fazladır. Kesin değerleri Anthropic'in ilgili model belgelerinden kontrol edin.
Daha büyük pencereli bir model unutulan kural sorununu çözer mi?
Kısmen: yer artar, ama lost in the middle ve context rot etkisi ortadan kalkmaz. Büyük pencere kısa talimatların ve temiz oturumun yerini tutmaz.
Ajan bir kuralı çiğnediğinde mesajda tekrar etmek gerekir mi?
Tek seferlik bir hatırlatma yardımcı olur, çünkü bağlamın sonundaki taze metin modelin daha iyi gördüğü yerdedir. Ama sürekli hatırlatmanız gerekiyorsa kuralı bir kontrol ya da hook ile sabitleyin.
Claude Code'da bağlamın neyle dolu olduğunu nasıl görürüm?
/context komutu sistem promptunun, araçların, bellek dosyalarının ve mesaj geçmişinin ne kadar yer kapladığını gösterir. Şişmiş bir CLAUDE.md'nin ya da uzun geçmişin pencereyi yediğini hızlıca görmenin yoludur.
Compaction sırasında ilk olarak ne kaybolur?
Yalnızca konuşmada var olan anlaşmalar: reddedilen seçenekler, gereksinim netleştirmeleri, küçük incelikler. Depo dosyalarına yazılmış her şeyi ajan yeniden okuyabilir.
Bu konu “Harness Engineering: AI Ajanları İçin Güvenilirlik Mühendisliği” kursunda uygulamalı olarak ayrıntılı işleniyor.
- AI Kodlama Ajanları İçin Depo Haritası: Oturumlar Arası Hafızasız Proje Yapısı
- AGENTS.md En İyi Uygulamaları: Dev Talimat Dosyası Neden Çalışmaz, Yönlendirici Nasıl Kurulur
- AI Ajanı Oturumlar Arası Hafıza: Oturum Devri, PROGRESS.md ve Başlangıç Sözleşmesi