# Bağlam bir bütçedir, hafıza onun dışında yaşar

Ajanın dikkati sınırlıdır ve pencere doldukça kötüleşir. Yalnızca önemli olanı görünürde tutun, gerisini gerektiğinde yükleyin, uzun vadeli durumu dosyalara yazın.

## Daha çok token, daha çok hafıza değil

Büyük bir pencere her şeyi tutabilmek anlamına geliyormuş gibi düşünmek cazip. Anthropic'in bağlam mühendisliği rehberi bunun tersini söylüyor. Bağlam **sınırlı bir dikkat bütçesi**, ve token sayısı arttıkça model bağlamın herhangi bir parçasını kullanmakta kötüleşiyor. Rehber buna context rot diyor.

Hedef, en çok sinyali taşıyan en küçük token kümesi. Bu, sistem prompt'unu nasıl yazdığınızı da değiştiriyor: her durum için bir kural yığını değil, doğru yükseklikte talimatlar, birkaç temsilî örnek ve birbiriyle çakışmayan araçlar. Rehber, uzun bir kural listesi yerine birkaç iyi örneği tercih ediyor.

Her araç sonucu bu yığına ekleniyor. Bir önceki dersin çıktı boyutuna bu kadar önem vermesinin sebebi bu.

## Lazım olduğunda yükleyin

İlk alışkanlık, bir şeyi önceden yüklememek. Bütün kod tabanını pencereye koymak yerine ajan referansları tutuyor, örneğin dosya yollarını, ve ihtiyaç duyunca çalışma anında yüklüyor. İçeriğe ihtiyacı olduğunda bir araç çağırıp yalnızca o kısmı okuyor.

Buna **tam zamanında yükleme** (just-in-time) diyoruz: önemli dosyayı bul, oku, devam et. Rehbere göre en iyi kurulumlar çoğu zaman karma oluyor: hız için biraz şey baştan yüklenir, gerisi çalışma anında getirilir.

```flow
Dosyayı değil yolu tut
Görevin buna ihtiyacı olduğunu fark et
O kısmı okumak için araç çağır
Kullan, sonra bırak
```

## Pencerenin dışındaki notlar

Uzun bir iş, hangi pencereden olursa olsun uzun yaşar. Çözüm, önemli olanı sonraki turun bulabileceği bir yere yazmak. Anthropic'in rehberi yapılandırılmış not almayı ajanın dış hafızası olarak adlandırıyor.

Harness ekibi bunun nasıl göründüğünü gösterdi. Her oturum hiçbir hafıza olmadan başlıyor. O yüzden ilk oturum bir ilerleme kaydı, bir `init.sh` betiği, ilk git commit'i ve hepsi "başarısız" işaretli bir JSON özellik listesi oluşturuyor. Sonraki her oturum kaydı ve git geçmişini okuyor, temel bir uçtan uca kontrol çalıştırıyor, sonra tek bir özellik yapıyor. Yalnızca `passes` alanını çevirebiliyor. Ekip JSON'u seçti, çünkü modeller onu Markdown'dan daha az üzerine yazıyor.

Bash döngüsü Ralph aynı fikri daha kaba uyguluyor: her tur taze bir bağlamla başlıyor ve durumu diskteki bir plan dosyasından öğreniyor.

Managed Agents bir adım daha ileri gidiyor. Oturum kaydı yalnızca ekleme kabul ediyor ve hem modelin hem de harness'ın dışında duruyor; harness çökerse kaydı baştan oynatıp devam ediyor.

```terminal
$ cat progress.md
* Bitti: ayrıştırıcı iç içe listeleri işliyor
* Sıradaki: tablo hizalamasını düzelt, sonra bütün testleri çalıştır
> progress.md dosyasını oku ve devam et
* Kaydı ve son commit'leri okur
* Smoke kontrolünü çalıştırır, sonra tablo hizalamasına başlar
# Ajan hatırlamadı. Okudu.
```

**Question:** Uzun soluklu harness neden her oturuma ilerleme kaydını ve git geçmişini okuyarak başlıyor?

- Sistem prompt'unda token tasarrufu için
- Her oturum hafızasız başlıyor, süreklilik yalnızca dosyalarda
- Modelin çalışması için git geçmişi gerekli olduğundan
- Modelin önceki işini kendi notlandırması için

**Answer:** Her oturum hafızasız başlıyor, süreklilik yalnızca dosyalarda. Oturumlar arasında hiçbir şey kendiliğinden taşınmaz. Kayıt, özellik listesi ve commit'ler, bir sonraki oturumun baştan başlamak yerine devam etmesini sağlar.


## Compaction ne yapıyor

Bazen tek bir uzun oturumdan kaçamazsınız. Compaction, harness'ın konuşmayı özetleyip o özetten yeni bir pencere başlatması. Claude Code'da özet, en son dokunulan beş dosyayla birlikte tutuluyor.

Bu kayıplı bir kopya. Özetin dışında kalan her şey pencereden gidiyor; önemli bilgilerin bir dosyada durması bu yüzden. Not dosyasına yazılmış bir karar hayatta kalır, lafın arasında geçen bir ayrıntı kalmayabilir.

Aynı soruna ikinci çözüm alt ajan. Bir arama için on binlerce token harcayıp size 1.000 ile 2.000 token'lık bir özet verebiliyor. Gürültü onun penceresinde kalıyor, sizinki temiz.

> **Çıktıyı küçük tutun, gerisini kaydedin**
Derleyici projesinde test çıktısı birkaç satırda tutuldu, ayrıntı dosyalara yazıldı. Ajan dosyaları yalnızca gerektiğinde okudu, pencere kullanışlı kaldı.


> **Sıfırlamalar ebedî değil**
Harness ekibi bir dönem, Sonnet 4.5'in alanı bitiyor diye kaygılanması üzerine bağlam sıfırlamaları kullandı: taze bir ajan ve yapılandırılmış bir devir. Opus 4.5'te bunları bıraktılar. Model değişince numaralarınızı yeniden deneyin.


**Question:** Compaction sonrasında da ajanın bilmesi gereken bir karar için en iyi yer neresi?

- Sohbetin başlarında söylenmiş bir cümle
- Not ya da plan gibi bir dosya
- Araç açıklamaları
- Hiçbir yer, özet her şeyi tutar

**Answer:** Not ya da plan gibi bir dosya. Özet kayıplıdır. Pencerenin dışındaki dosyalar istenince yeniden okunur ve compaction onları etkilemez.
