İçeriğe geç
Mühendislik

AI Ajanımıza Hafıza Verdik, Sekiz Ay Sonra Geriye Baktık

AI ajanımıza 8 ay ders biriktirdik. Geriye baktığımızda iki sürpriz: mekanik hatalar lint’e taşınmalı, forward-only bellek çözülen işi açık gösteriyor.

Emre Aydın· Kurucu, PAFTA13 Ağustos 20266 dk okuma

Fikir basit: AI ajanın her işten bir ders çıkarmasına izin verin, dersi dosyaya yazdırın, sonraki oturumda okutun. Zamanla ajan “projeyi bilen biri” hâline gelir. Bunu yaklaşık sekiz ay uyguladık ve sonra durup biriken şeye baktık. İki sürprizle karşılaştık.

Ne yaptık

Trivial olmayan her iş biterken ajan dersi üç kategoriden birine yazıyor: hatadan öğrenilen, aktif proje gerçeği, tekrarlanan çözüm deseni. Her not bir index dosyasından tek satırla bağlanıyor, böylece sonraki oturum tamamını okumadan ilgilisini bulabiliyor.

966

Sekiz ay sonunda depoya commit’lenmiş bellek notu dosyası (çekirdek + modül bazlı birikim).

Sürpriz 1: tahminimiz gerçeğin otuzda biriydi

Notları sınıflandırınca yaklaşık sekizde birinin dört mekanik hata sınıfından geldiğini gördük: yerel saat yerine UTC’ye çeviren tarih dönüşümü, iç içe çeviri nesnesinin üzerine düz metin yazma, para hesabında taban/tavan yuvarlama ve sorgu anahtarlarını sabit yerine elle yazma.

Dördü de proje kurallarında açıkça “yasak” yazıyordu. Ajan yine de ihlal etti — çünkü kural yalnız bir metin dosyasındaydı, derleme hattında değil. Kaç ihlal olduğunu tahmin etmemiz istenseydi elliyi söylerdik. Kod tabanını taradığımızda çıkan sayı bambaşkaydı.

~1.559

İlk ölçümde bulunan potansiyel ihlal noktası — tahminimizin yaklaşık otuz katı.

Tepkimiz kuralları yeniden yazmak değil, çalıştırılabilir hâle getirmek oldu: mekanik yasakları projeye özel bir lint eklentisine taşıdık. Her yasak ayrı isimli bir kural, çünkü şiddeti bağımsız ayarlanabilsin istedik.

javascript
// eslint.config.js — projeye özel eklenti (kısaltılmış)
rules: {
  'pafta/no-toisostring-date': 'error',        // tarih: UTC kayması
  'pafta/no-hardcoded-turkish-jsx': 'error',   // i18n: sabit metin
  'pafta/require-querykey-factory': 'warn',    // sorgu anahtarı borcu
  'pafta/no-native-money-math': 'warn',        // para: native aritmetik
}

Burada dürüst olmak gerekiyor: iki kural hemen “hata” seviyesine çekilebildi ve o iki ihlal sınıfı sıfıra indi. Diğer ikisi hâlâ “uyarı” seviyesinde, çünkü biriken borç binlerce satıra yayılmıştı ve canlı bir finansal sistemde toplu otomatik düzeltme yapmak, düzeltmeye çalıştığı riskten daha büyük bir risk. Uyarı seviyesi yeni ihlali anında yakalıyor; eski borç ayrı ve ölçülü turlarda ödeniyor.

Asıl ders şu: “yasak” yazmak bir niyet beyanıdır, lint kuralı ise bir mekanizma. Niyet ile mekanizma arasındaki fark, bu projede otuz kat olarak ölçüldü.

Sürpriz 2: “açık” işlerin çoğu çoktan kapanmıştı

Bellekte “bu hâlâ açık”, “sonra bakılacak” diye işaretlenmiş notlar vardı. Bir grup örneği tek tek kontrol ettik ve neredeyse hepsinin aylar önce çözülmüş olduğunu gördük.

Sebep yapısal: bellek yalnız ileri yazıyordu. Sorun tespit edilince not düşülüyor, çözülünce kimse geri dönüp kapatmıyordu. Zamanla “açık görünen ama aslında kapalı” bir katman birikti.

Bu, zararsız bir dağınıklık değil. Sonraki oturum bu notları bağlam olarak alıyor; var olmayan bir sorunu çözmeye çalışabiliyor ya da tersine, çoktan değişmiş bir gerçeği doğru sanıp yanlış karar verebiliyor. Bayat bellek, boş bellekten daha tehlikeli — çünkü güven veriyor.

Tepki olarak periyodik bir mutabakat turu ekledik: notlar açılıp “bu hâlâ doğru mu” diye canlı sisteme karşı ölçülüyor, çözülenler kapatılıyor. Kural basit: bir iddiayı önceliklendirmeden önce ölç, çünkü belge bayatlar, kod bayatlamaz.

Hangi hafıza türü değerini korudu

Hafıza türüDeğeriZayıf noktası
Alan adı/convention kuralıYüksekNadiren bayatlar; bir kez öğrenilir, sürekli işe yarar
Mekanik hata dersiOrtaAsıl yeri lint kuralı; metin olarak kaldığı sürece tekrarlanır
Proje durumu (açık/kapalı)DüşükEn hızlı bayatlayan tür; periyodik mutabakat şart
Tekrarlanan çözüm deseniYüksekBaşka bağlamda yeniden kullanılır, uzun ömürlü

Ders: hafıza biriktirmek kolay kısmı. Asıl değer onu geri çıkarmakta — mekanik olanı önleyici bir guardrail’e çevirmek ve bayatlayanı periyodik olarak kapatmak. Ders yazma adımını otomatikleştirdik; dersi geri çıkarıp uygulama adımı bilinçli olarak insanda kaldı ve şimdilik denge doğru görünüyor.

PAFTA’yı bu disiplinle geliştiriyoruz: canlı bir ERP’de her değişiklik ölçülüp doğrulanarak gidiyor.

PAFTA’yı ücretsiz dene
Emre AydınKurucu, PAFTA

PAFTA’nın kurucusu. KOBİ’ler için ERP, e-fatura ve ön muhasebe süreçlerini sadeleştirme üzerine yazıyor.

LinkedIn

Sıkça Sorulan Sorular