İçeriğe geç
ceaksan

AI Coding Agent'lar İçin Context Engineering: Statik Dokümanlardan Yaşayan Ekosisteme

CLAUDE.md ve architecture.md yetmez. Semantik kod arama, bilgi tabanı, karar yönetişimi ve öğrenme döngüsünü birleştiren dört katmanlı context engineering ekosistemi. Gerçek proje deneyimiyle.

15 Şub 2026 9 dk okuma
TL;DR

Tek bir CLAUDE.md dosyası AI agent'ın doğru çalışması için yetmiyor. Dört katmanlı bir ekosistem kurdum: (1) statik referanslar (CLAUDE.md + architecture.md), (2) JIT semantik arama (mcp-code-search + dnomia-knowledge), (3) karar yönetişimi (/court + ADR'ler), (4) öğrenme döngüsü (forge retro). Bu yazıda her katmanın ne işe yaradığını, gerçek bir projede (3.600 satırlık architecture.md, 155 ADR) nasıl uyguladığımı ve Repomix gibi araçların neden gereksiz kaldığını anlatıyorum.

AI coding agent’larla çalışırken en büyük verimlilik kaybı kod yazmak değil, her oturumda projeyi yeniden tanıtmak. Bir CLAUDE.md dosyası başlangıç için iyi ama yetmiyor. Bu yazıda, gerçek bir projede deneyerek kurduğum dört katmanlı context engineering ekosistemini anlatıyorum.

Problem: Agent Her Oturumda Sıfırdan Başlıyor

Claude Code, Cursor veya GitHub Copilot ile büyük bir projede çalışırken şu döngüyü yaşarsınız:

  1. Agent kodu taramaya başlar
  2. Yüzeysel tarama yüzünden yanlış çıkarımlar yapar (iki farklı modüldeki benzer isimleri karıştırır)
  3. Context window tool output’larıyla dolmaya başlar
  4. Siz düzeltirsiniz, agent düzeltmeyi uygular
  5. Oturum biter, context kaybolur
  6. Sonraki oturum: 1’e dön

2025-2026 araştırmaları1 gösteriyor ki modeller yapılandırılmış, kalıcı referans noktaları ile beslendiğinde repo taramasına kıyasla belirgin şekilde daha iyi performans gösteriyor. Bu durum “context engineering” disiplinini doğurdu: agent’ın context window’undaki sinyal/gürültü oranını maksimize etme.

Ama bir CLAUDE.md dosyası bu sorunu tek başına çözmüyor. Projede neyin nerede olduğunu, neden o şekilde olduğunu ve o bilgiye ne zaman erişileceğini sistematik olarak yönetmek gerekiyor.

Dört Katmanlı Ekosistem

Gerçek bir SaaS projesinde (event tracking platformu, monorepo, 992 kaynak dosya, 155 ADR) deneyerek kurduğum yapı:

KatmanNeNasılNe Zaman
1. Statik referanslarCLAUDE.md + architecture.mdHer oturum başında otomatik yüklenirHer zaman
2. JIT aramamcp-code-search + dnomia-knowledgeAgent ihtiyaç duyduğunda semantik aramaTalep üzerine
3. Karar yönetişimi/court + ADR’lerYeni özellik veya mimari karar öncesiKarar anında
4. Öğrenme döngüsüforge retroTamamlanan iş sonrasıİş bitiminde

Her katman bir sonrakini besliyor. Statik referanslar agent’ın başlangıç noktası, JIT arama derinleşme aracı, karar yönetişimi tutarlılık garantisi, öğrenme döngüsü tüm sistemi güncel tutuyor.

Katman 1: Statik Referanslar

CLAUDE.md: Agent’a Talimat Vermek

CLAUDE.md, agent’ın her oturum başında otomatik okuduğu dosya. İçeriği “ne yap, nasıl yap” talimatları:

  • Performans kuralları (“barrel import kullanma”, “Promise.all ile paralel çağır”)
  • Workflow kuralları (“plan mode’a gir”, “spec yaz”, “ADR oluştur”)
  • Deployment komutları (tam çalıştırılabilir string’ler)
  • Sınırlar (do/don’t listeleri)

CLAUDE.md’nin işi agent’ı yönetmek. Projenin yapısını anlatmak değil.

architecture.md: Projenin Gerçekliğini Anlatmak

Bu ayrımı keşfetmem birkaç oturum aldı. CLAUDE.md’ye proje yapısı, modül haritası, veri akışı gibi bilgiler koymaya çalıştım. Dosya şişti, okunabilirlik düştü, agent hangi bilginin kural hangisinin referans olduğunu karıştırmaya başladı.

Çözüm: CLAUDE.md agent talimatları, architecture.md proje referansı. İkisi birbirini tamamlıyor ama farklı dosyalarda yaşıyor.

architecture.md’nin içeriği:

BölümNe Anlatır
Stack ve DependenciesTam versiyon numaralarıyla teknoloji yığını
Monorepo YapısıDizin ağacı, dosya boyutları, sorumluluklar
Modül HaritasıHer modülün sorumluluğu, bağımlılıkları, key dosyaları
Data FlowVerinin sistemde nasıl aktığı (edge’den DB’ye, DB’den destination’a)
Veri ModeliPrisma schema’nın yapılandırılmış özeti
AltyapıPlatform, bölge, port, proxy, tunnel bilgileri
Mimari KararlarBüyük kararlar ve neden alındıkları (ADR referanslarıyla)
Performans KurallarıGerçek uygulama durumu (uygulanmış/uygulanmamış)
Kod Hotspot’larıGit değişiklik sıklığına göre en çok değişen dosyalar
İlişkili NotlarVault ve repo dokümantasyonuna cross-reference’lar

Projemde bu dosya ~3.600 satıra ulaştı. Kulağa çok geliyor ama agent tüm dosyayı her seferinde okumuyor. İhtiyacı olan bölüme atlıyor. Yapı, başlık hiyerarşisi sayesinde bunu kolaylaştırıyor.

Repomix Deneyimi: Neden Gereksiz Kaldı

architecture.md’yi yazarken Repomix’i de denedim. Repomix, kod tabanını tek bir Markdown dosyasına paketleyen, Tree-sitter ile fonksiyon imzalarını çıkaran bir araç.

Sonuçlar:

ModDosya SayısıTokenDeğerlendirme
Full (tüm repo)9921.9MContext window’un 10 katı
Compressed (tüm repo)9921.25MHala kullanılamaz
Compressed (sadece TS/TSX)48990KTeorik olarak sığar ama context’in yarısı

Repomix’in ürettiği dizin ağacı ve git-change-count sıralaması yararlı. Hotspot dosyalarını oradan çıkardım. Ama asıl değeri “dosya okuyamayan” araçlarda (ChatGPT web arayüzü, web Claude). Claude Code zaten dosyaları doğrudan okuyor. Yapılandırılmış architecture.md + JIT arama, Repomix’in flat dump’ından daha hedefli bilgi veriyor.

Ayrımın Pratikte Etkisi

architecture.md’den önce agent’ın Inngest proxy worker yapısını araştırması ~20 dakika sürüyordu (SSH denemeleri, API endpoint tahminleri, port taramaları). architecture.md’den sonra agent doğrudan ilgili bölümü okuyor: container adı, portlar, tunnel route’ları, env var’lar. Hepsi tek yerde.

Benzer şekilde, “neden Neon’a geçtik?” sorusuna cevap için eskiden 155 ADR’yi taramak gerekiyordu. Şimdi architecture.md’deki “Mimari Kararlar” bölümünde ADR-127 referansıyla özet var, gerekirse agent ADR dosyasını açıyor.

Katman 2: JIT Semantik Arama

Statik referanslar her oturumda yükleniyor ama her bilgi statik dosyaya sığmaz. 992 dosyalık bir kod tabanında “consent check nerede yapılıyor?” sorusunun cevabı 4-5 farklı dosyaya dağılmış olabilir. Bunu architecture.md’ye yazmak dosyayı patlatır. Bunu agent’ın her seferinde grep ile araması context window’u yer.

Çözüm: agent’ın ihtiyaç duyduğu anda, sadece ilgili bilgiyi çekebileceği semantik arama katmanı.

mcp-code-search: Kod İçin Semantik Arama

mcp-code-search, MCP (Model Context Protocol) üzerinden Claude Code’a bağlanan bir semantik kod arama sunucusu.

Nasıl çalışıyor:

Dizin tarama → Tree-sitter AST parse → Chunk (fonksiyon/class/method) → Embed (jina-v2-base-code) → LanceDB → Hybrid search

Agent “find authentication middleware” veya “rate limiting implementation” dediğinde, grep’ten farklı olarak anlamsal eşleşme yapıyor. “rate-limiter.ts” dosyasını buluyor ama aynı zamanda “token bucket” pattern’ini kullanan ilgisiz isimdeki dosyaları da çıkarabiliyor.

ÖzellikDetay
ChunkingTree-sitter AST (40+ dil)
Embeddingjina-embeddings-v2-base-code (768 dim, kod odaklı)
DepolamaLanceDB (lokal, sıfır network)
AramaHybrid: vektör benzerliği + FTS, RRF merge (k=60)
Artımlı indekslemeHash bazlı, sadece değişen dosyalar

Neden grep yetmiyor: “Consent kontrolü nerede yapılıyor?” sorusunda grep consent kelimesini arıyor ve 47 sonuç dönüyor. mcp-code-search aynı soruya anlamsal olarak yaklaşıp en ilgili 5-10 chunk’ı döndürüyor. Context window’a 47 dosya yerine 10 snippet giriyor.

dnomia-knowledge: Bilgi Tabanı İçin Semantik Arama

dnomia-knowledge, Markdown, MDX ve kod dosyalarını indeksleyen bir bilgi yönetimi MCP sunucusu.

mcp-code-search’ten farkı:

mcp-code-searchdnomia-knowledge
OdakKod dosyalarıMarkdown + kod + web içerik
Embeddingjina-v2-base-code (kod odaklı)multilingual-e5-base (çok dilli)
DepolamaLanceDBSQLite + FTS5 + sqlite-vec
ChunkingAST tabanlı (fonksiyon/class)Heading tabanlı (## ve ###)
Ek özellikBenzer kod bulmaBilgi grafi, web indeksleme

İkisi birlikte çalışıyor: agent bir mimari soruyu dnomia-knowledge’a, bir implementasyon sorusunu mcp-code-search’e yönlendiriyor. İkisi de MCP üzerinden bağlı, agent hangisinin daha uygun olduğuna kendisi karar veriyor. dnomia-knowledge ayrıca geliştirici etkileşim takibi yapıyor: hangi dosyaların en çok okunduğunu, hangi aramaların boş döndüğünü ve arama sonuçlarını kişiselleştirmek için interaction boost uyguluyor.

Progressive Disclosure: Bilgiyi Kademeli Açmak

1M token context window bile fazla bilgiyle doldurulduğunda performans düşüyor2. Bu yüzden “her şeyi yükle” yerine “lazım olanı çek” yaklaşımı kritik.

Ekosistemde bu şöyle çalışıyor:

  1. Oturum başı: CLAUDE.md + architecture.md otomatik yüklenir (statik, her zaman gerekli)
  2. İlk soru: Agent architecture.md’den ilgili bölümü okuyor (jump-to pointer)
  3. Derinleşme: Agent mcp-code-search veya dnomia-knowledge’a semantik sorgu atıyor (JIT)
  4. Karar gerekli: Agent ADR dosyasını açıyor (on-demand)

Her adımda context’e sadece gereken bilgi giriyor. Bu, Repomix’in “her şeyi tek dosyaya koy” yaklaşımının tam tersi.

Katman 3: Karar Yönetişimi

Kod tabanının yapısını bilmek ve arama yapabilmek yetmiyor. “Neden Redis yerine Inngest kullanıyoruz?” sorusuna cevap veremezseniz, agent bir gün Redis eklemek isteyebilir. Veya aynı problemi daha önce değerlendirip reddettiğiniz bir yöntemle çözmeye çalışabilir.

/court: Yapılandırılmış Değerlendirme

/court, yeni özellik veya mimari karar öncesi çalışan bir değerlendirme skill’i. Decision Gate framework’ünün 8 kriterini uygular ve sonucu GO, DEFER veya KILL olarak verir.

Ama /court’un context engineering açısından asıl değeri: her karar ADR olarak kaydediliyor. “Neden bu kararı aldık?” sorusunun cevabı, oturum bazlı context’te kaybolmuyor. Agent gelecekte aynı konuya döndüğünde, önceki değerlendirmeyi ve gerekçesini okuyabiliyor.

ADR’ler: Canlı Kısıtlamalar

Architecture Decision Record’lar genellikle pasif log olarak düşünülür. Ama agent ekosisteminde aktif kısıtlamalar:

  • Mimari sınırlar: “Collect worker’dan doğrudan DB sorgusu yapılmaz, Hyperdrive üzerinden geçmeli” (ADR-062)
  • Veri işleme kısıtlamaları: “PII plaintext olarak loglanamaz, AES-256-GCM + blind index” (ADR-137)
  • Reddedilen alternatifler: “Redis cache değerlendirildi, operasyonel yük nedeniyle reddedildi” (ADR-128)

Agent architecture.md’deki “Mimari Kararlar” bölümünden özeti görüyor. Detay gerekirse ADR dosyasını açıyor. Bu sayede aynı tartışma tekrarlanmıyor.

Projemde 155 ADR var. Bunların her birini architecture.md’ye yazmak yerine, 12 büyük kararı 4 kategoride özetledim ve ADR indeksini referans olarak ekledim. Agent özetten başlıyor, gerekirse derinleşiyor.

”Kernel of Truth” Workflow

155 ADR’nin hepsini ben sıfırdan yazmadım. Çoğu “Kernel of Truth” pattern’iyle oluştu: ben bir cümle yazıyorum (“Neon’a geçtik çünkü Docker port bypass güvenlik açığı vardı”), agent bunu yapılandırılmış ADR formatına genişletiyor. Yazma yükü minimum, ama kararın kaydı kalıcı.

Katman 4: Öğrenme Döngüsü

İlk üç katman bilgi sağlıyor. Dördüncü katman bilgiyi güncel tutuyor.

Forge Retro: Tamamlanan İşlerden Pattern Çıkarmak

Forge pipeline’ının son adımı olan /retro, tamamlanan bir özellikten kalıcı pattern’ler çıkarıyor:

  1. Court kararını oku (neden GO verdik?)
  2. İmplementasyonu incele (ne değişti?)
  3. Critique bulgularını kontrol et (ne sorun çıktı?)
  4. Kalıcı pattern varsa CLAUDE.md’ye veya architecture.md’ye ekle
  5. Geçici bilgileri temizle

Kritik nokta: retro bilgi tabanını büyütmüyor, buduyor. “Bu pattern 3 kez tekrarlandı, artık kural olsun” diyerek CLAUDE.md’ye ekliyor. “Bu geçici bir workaround’du” diyerek siliyor. Append değil, upsert mantığı.

Döngünün Kapanması

Oturum başı: CLAUDE.md + architecture.md yüklenir

Çalışma: JIT arama ile derinleşme

Karar: /court ile değerlendirme → ADR kaydı

İş bitimi: /retro ile pattern çıkarma

Güncelleme: CLAUDE.md / architecture.md güncellenir

Sonraki oturum: güncel referanslar yüklenir

Her iterasyonda referanslar biraz daha doğru, biraz daha güncel oluyor. Agent her oturumda biraz daha az keşif yapıyor, biraz daha çok üretim yapıyor.

Araştırma Temeli

Bu ekosistemi sıfırdan icat etmedim. 2025-2026 araştırmalarından (akademik makaleler, Gemini Deep Research, GPT-4o analizi, Kimi K2.5 araştırması) derlenen bulgular temel oluşturdu:

Codified Context yaklaşımı1: 108.000 satırlık bir C# projesinde test edilen üç katmanlı sistem (Hot Memory, Domain Expert Agent’lar, Cold Memory). Kritik bulgu: dokümantasyon altyapıdır, kod gibi bakım gerektirir.

AGENTS.md ekosistemi: Farklı AI araçları için farklı config dosyaları (CLAUDE.md, AGENTS.md, .cursorrules) ama hepsi aynı amaca hizmet ediyor: agent’a yapılandırılmış bağlam vermek. “Nearest-Wins” modeli: monorepo’da root’taki dosya global standartları, alt dizinlerdeki dosyalar yerel rehberliği sağlıyor.

Hybrid yaklaşım konsensüsü: Tüm kaynaklar aynı noktada birleşiyor: “what” otomatik üretilir (schema, tipler, dependency graph), “why” insan yazar (tasarım kararları, kısıtlamalar, trade-off’lar). İkisi birlikte agent’a tam resmi veriyor.

Progressive disclosure: Bilgiyi tümüyle yüklemek yerine, sadece ihtiyaç anında açmak. Jump-to pointer’lar, çalıştırılabilir arama komutları, nested override’lar.

Pratikte Ne İşe Yaradı, Ne Yaramadı

YatırımSonuç
architecture.md (~3.600 satır)Agent’ın keşif süresi belirgin şekilde düştü. Özellikle altyapı sorularında (port, proxy, tunnel) deneme-yanılma yerine doğrudan referans.
ADR indeksi (155 karar)Tekrar eden tartışmalar bitti. “Bunu daha önce değerlendirdik” diyebilmek çok değerli.
mcp-code-searchGrep’e göre daha isabetli, özellikle “X’i yapan tüm yerleri bul” sorgularında.
dnomia-knowledgeVault notları ve dokümantasyon araması için çok yararlı. Kod aramasıyla birlikte tamamlayıcı.
/courtCodebase audit’inde 28 görevden 6’sı elenmiş veya ertelenmiştir. Kötü fikirleri erken filtreliyor.
RepomixHotspot analizi dışında gereksiz kaldı. Claude Code zaten dosya okuyabiliyor.
Forge retroHenüz yeterli veri yok (yeni). Konsept doğru, etki ölçümü için erken.

Template

Bu yapıyı kendi projenize uyarlamak istiyorsanız, minimum başlangıç seti:

Küçük projeler (tek servis, 50-100 dosya):

  • CLAUDE.md (kurallar + komutlar)
  • architecture.md’de tek sayfalık yapı özeti yeterli

Orta projeler (monorepo, 200-500 dosya):

  • CLAUDE.md + architecture.md (ayrı dosyalar)
  • mcp-code-search (semantik kod arama)
  • ADR’ler (büyük kararlar için)

Büyük projeler (500+ dosya, birden fazla servis):

  • Tam dört katman
  • architecture.md’de modül haritası, data flow, altyapı, mimari kararlar
  • dnomia-knowledge (dokümantasyon + kod araması)
  • /court + forge pipeline

Her durumda: CLAUDE.md talimat verir, architecture.md gerçekliği anlatır. Bu ayrım temel. architecture.md’yi sıfırdan yazmak yerine yapılandırılmış bir template ile başlamak istiyorsanız, bu deneyimlerden türettiğim Living Architecture template’ini inceleyebilirsiniz.

Kaynaklar

Açık Kaynak Araçlar

Akademik ve Endüstri Kaynakları

  • Codified Context: Infrastructure for AI Agents in a Complex Codebase (arxiv.org/html/2602.20478v1)
  • AgenticAKM: Agentic Architecture Knowledge Management (arxiv.org/html/2602.04445v1)
  • AGENTS.md Standard (aihero.dev)
  • C4 Model (c4model.com)
  • Repomix (github.com/yamadashy/repomix)

İlişkili Yazılar

Footnotes

  1. “Codified Context: Infrastructure for AI Agents in a Complex Codebase” (arxiv.org/html/2602.20478v1). 108.000 satırlık bir C# projesinde test edilen üç katmanlı sistem. 2
  2. Context window doluluk oranı arttıkça model performansının düştüğü birden fazla benchmark’ta gözlemlenmiştir. “Lost in the Middle” (Liu et al., 2023) bu fenomeni ilk belgeleyen çalışmalardan biridir.
Önemli Noktalar
  • 01 CLAUDE.md agent'a ne yapacağını söyler, architecture.md projenin gerçek yapısını anlatır. İkisi farklı amaçlara hizmet eder ve birbirinin yerine geçemez.
  • 02 Tüm bilgiyi context window'a yüklemek yerine, JIT (just-in-time) semantik arama ile sadece lazım olan bilgiyi çekmek daha verimli.
  • 03 Karar almadan önce yapılandırılmış değerlendirme (/court) ve kararların ADR olarak kaydedilmesi, agent'ın gelecekte tutarlı kalmasını sağlar.
  • 04 Öğrenme döngüsü olmadan ekosistem durağanlaşır. Forge retro'su tamamlanan işlerden kalıcı pattern'ler çıkarıp kuralları güncelleyerek döngüyü kapatır.
Sık Sorulan Sorular (FAQ)
+ Context engineering nedir?

AI agent'ın context window'undaki sinyal/gürültü oranını maksimize etme disiplini. Agent'a doğru bilgiyi, doğru zamanda, doğru formatta vermek. Prompt engineering'in ötesinde, sistematik bir altyapı yaklaşımı.

+ CLAUDE.md ile architecture.md arasındaki fark nedir?

CLAUDE.md agent'a talimat verir: 'barrel import kullanma', 'Promise.all ile paralel çağır'. architecture.md projenin gerçekliğini anlatır: hangi modül nerede, veri nasıl akıyor, hangi kararlar neden alındı. Biri 'nasıl çalış', diğeri 'neyle çalışıyorsun'.

+ Repomix gibi araçlar gereksiz mi?

Claude Code gibi dosya okuyabilen araçlarda evet. Repomix 992 dosyalık bir repoyu 1.9M token'a paketliyor, bu context window'un 10 katı. Sıkıştırılmış hali bile 90K token. Yapılandırılmış architecture.md + JIT arama aynı bilgiyi çok daha verimli veriyor. Repomix, dosya okuyamayan araçlara (ChatGPT web, web Claude) repo bağlamı vermek için hala yararlı.

+ Bu ekosistemi kurmak ne kadar efor gerektiriyor?

architecture.md'yi sıfırdan yazmak birkaç oturum sürüyor (benim durumumda ~3.600 satır). Ama agent'ın kendisi de yardım ediyor: ADR'leri tarayıp özetliyor, kod tabanını analiz edip modül haritası çıkarıyor. İlk yatırımdan sonra bakım maliyeti düşük, çünkü her büyük değişiklikte sadece ilgili bölüm güncelleniyor.

+ Solo geliştirici için bu kadar yapı gerekli mi?

Solo geliştirici için daha da gerekli. Takım olsaydınız, biri size 'o kararı şu yüzden almıştık' diyebilirdi. Solo çalışırken AI agent sizin takım arkadaşınız, ama her oturumda sıfırdan başlıyor. Bu ekosistem, agent'ın her seferinde projeyi yeniden keşfetmesini önlüyor.