Ders 01 “düzeneği sorgula” dedi; bu ders “düzenek tam olarak neden ibarettir” sorusunu cevaplıyor.Documentation Index
Fetch the complete documentation index at: https://harness.lokomotif.ai/llms.txt
Use this file to discover all available pages before exploring further.
Bir laboratuvar, bir tek tüpten ibaret değildir
Sadece reaktifi olan bir laboratuvar laboratuvar sayılmaz. Çeker ocak yoksa, kalibre edilmiş terazi yoksa, defter yoksa, doğrulama protokolü yoksa, deney “olabilir”; ama tekrarlanamaz. Aynı şey bir ajan için de geçerlidir: model ne kadar güçlü olursa olsun, etrafını saran sistem zayıfsa sonuç güvenilmezdir. AutoGPT bu durumun en bilinen vakasıdır. 2023 ortasında GPT-4 üzerine kurulmuş, kendi kendine plan yapan bir ajandı; haftalar içinde 150 bin GitHub yıldızı aldı. Ama yapısal durum yönetimi ve dış geri bildirim kanalları olmadığı için uzun görevlerde döngüye girdi, bağlamı çöpe çevirdi, sonuçsuz kapandı. Mesele “yeteri kadar zeki bir model” değildi; mesele düzeneğin eksikliğiydi.Tez
Düzenek (harness), model ağırlıklarının dışında kalan her şeydir. LangChain bunu tek bir denklemle ifade eder: Agent = Model + Harness; düzenek ise “modelin kendisi olmayan tüm kod, konfigürasyon ve yürütme mantığı”dır (LangChain — Anatomy of an Agent Harness). Thoughtworks aynı denklemi tekrarlar: düzenek “bir AI ajanında modelin kendisi dışındaki her şeydir” (Martin Fowler — Harness Engineering). Bu operasyonel bir tanımdır. Promptu içerir ama prompttan ibaret değildir. Bir oturumun ortasında modelin bağlamına giren her bayt, modelin çağırabildiği her komut, modelin koştuğu her sanal ortam, oturumlar arası taşınan her dosya, ajanın çıktısını doğrulayan her test — hepsi düzeneğin parçasıdır. Bu dersin amacı, “düzenek” kelimesini elle tutulur beş aparata ayırmaktır. Müfredatın geri kalanı bu beş aparatı sırayla derinleştirir.Beş aparat
Anti-örüntü — “düzenek = prompt” yanılgısı
Saha pratiğindeki en yaygın hata, düzeneği tek bir uzun talimat dosyasına indirgemektir. Bir Markdown dosyasına 800 satır kural yazılır, ajana takılır, “harness yaptık” denir. Sonra aynı ajan:- Üç oturum sonra kararını unutur (durum yok).
- Kodunu çalıştıramaz, çünkü
make testhedefi yok (ortam yok). - Yazdığı testin geçip geçmediğini ajan değil insan kontrol eder (geri bildirim yok).
- “İzin verilen” araç listesi prompta gömülüdür, gerçekte hiçbir teknik kısıt yoktur (araç sözleşmesi yok).
Mekanizma — beş aparat
Düzenek Mühendisliği (Harness Engineering) bu beş aparatı birlikte tasarlamak ve birlikte sürdürmektir. Tek tek değerlendirilebilirler ama tek tek anlam ifade etmezler.| # | Aparat | Soru cevapladığı | Ana artefakt |
|---|---|---|---|
| 1 | Talimat (instruction) | “Ne yapmalıyım, hangi kurallarla?” | AGENTS.md, CLAUDE.md |
| 2 | Araç (tool) | “Hangi eylemlere iznim var?” | İzinli komut listesi, MCP sözleşmeleri |
| 3 | Ortam (environment) | “Hangi sürümler, hangi komutlar?” | pyproject.toml, .nvmrc, Makefile |
| 4 | Durum (state) | “Daha önce ne yaptım, neden?” | PROGRESS.md, DECISIONS.md |
| 5 | Geri bildirim (feedback) | “Yaptığım iş gerçekten doğru mu?” | Test, lint, type-check, e2e |
1) Talimat — yönlendirici, ansiklopedi değil
Talimat dosyası ajanın projeye girdiğinde okuyacağı router’dır: nereye bakacağını söyler, her şeyi içinde anlatmaz. Yığın, mimari sözleşmeler, sıkı kısıtlar, hızlı başlangıç. Bu, LangChain’in “system prompts” katmanına denk düşer (LangChain — Anatomy). Ders 04 bu dosyanın neden tek başına yetmediğini ölçer.2) Araç — yetki kontratı
Ajanın eline ne tutturduğun, kim olduğunu belirler. Bu sadece bir prompt notu değil; teknik olarak uygulanabilir bir kontrat olmalıdır: hangi komutları çağırabileceği, hangi MCP server’larına ulaşabileceği, hangi dizinlere yazabileceği. LangChain bu katmanı “Tools, Skills, MCPs — capabilities with descriptions” olarak adlandırır (LangChain — Anatomy). En az ayrıcalık (least privilege) burada düzenek için lüks değil zorunluluktur.3) Ortam — kendini açıklayan kurulum
Ortam kendini açıklayan olmalıdır.pyproject.toml, package.json, .nvmrc, .python-version ajanın “Hangi Python kullanıyorum?” sorusunu sohbete sormadan cevaplayabilmesini sağlar. Thoughtworks bu fikri “harnessability” altında toplar: güçlü tipli diller, net modül sınırları ve framework’ler ne kadar belirgin olursa, üstüne kurulabilecek kontroller o kadar çoğalır (Martin Fowler — Harness Engineering).
Pratik tavsiye: Makefile dört temel hedef üzerine kurulmalı.
4) Durum — oturumlar arası hafıza
LLM oturumları amneziktir; düzenek onları amnezik olmayan yapana kadar tüm uzun görevler darbeli çalışır. Inngest bu noktayı keskin bir cümleyle koyar: “Beşinci iterasyonda süreç ölürse, birinci ile dördüncü iterasyon zaten kalıcılaştırılmıştır” (Inngest — Your Agent Needs a Harness). Bu fikri tek bir repo dosyasına indirdiğimizdePROGRESS.md ve DECISIONS.md çıkar: “ne kaldım” ve “neden bu yolu seçtim” sohbette değil, dosyada yaşar. Ders 05 bu mekanizmayı genişletir.
5) Geri bildirim — en yüksek getirili katman
Doğrulama olmadan ajan ne yaptığını bilemez; sadece “yaptım” der. Thoughtworks bu katmanı guides (feedforward) ve sensors (feedback) olarak ikiye ayırır: rehberler ajan davranmadan önce yönlendirir, sensörler davrandıktan sonra doğrular (Martin Fowler — Harness Engineering). Sensörler iki tipte yürür: hızlı hesaplamalı (linter, tip denetimi, test — milisaniyeden saniyeye) ve daha yavaş çıkarımsal (semantik analiz). Bu doğrulamalar olmazsa ajanın “erken zafer ilan etme” eğilimi devreye girer; Ders 09 ve Ders 10 bu eğilimle başa çıkmaya ayrılmıştır.Framework, runtime ve düzenek — temiz bir taksonomi
Üç terim sık karıştırılır. LangChain bunları katmanlı bir taksonomiye oturtur (LangChain — Frameworks, Runtimes and Harnesses):- Framework — Geliştirme soyutlamaları: içerik blokları, ajan döngüsü, middleware. Örnekler: LangChain, Vercel AI SDK, CrewAI, OpenAI Agents SDK.
- Runtime — Üretim altyapısı: dayanıklı (durable) yürütme, akış, insan müdahalesi, oturum içi ve oturumlar arası kalıcılık. Örnekler: LangGraph, Temporal, Inngest.
- Harness (düzenek) — Yukarıdaki katmanların üstüne oturan, “piller dahil” yüksek seviyeli paket: varsayılan promptlar, planlama araçları, dosya sistemi erişimi, opinionated tool-call davranışı. Örnekler: DeepAgents, Claude Code.
Ablasyon — darboğazını ölçerek bul
Beş aparat aynı anda mükemmel olmaz. Hangisinin senin için en kritik olduğunu ablasyon ile bulursun: her seferinde tek bir aparatı sökersin ve performansa ne olduğunu ölçersin. Bu, Thoughtworks’ün “keep quality left” prensibini ölçülebilir bir karar çerçevesine dönüştürür.Pratik
20 bin satırlık bir TypeScript + React reposunda, düzeneği dört aşamada inşa ettiğimizde marjinal getiri eğrisi şu şekildedir:| Aşama | Düzenek içeriği | Başarı |
|---|---|---|
| 1 | Sadece README | %20 |
| 2 | + AGENTS.md (talimat) | %60 |
| 3 | + doğrulama komutları (geri bildirim) | %80 |
| 4 | + PROGRESS.md (durum) | %80–100 |
Doğrulama komutları sözleşmesi
AGENTS.md veya Makefile içinde yer alacak küçük bir bölüm, geri bildirim aparatının amacını netleştirir:
Sayılarla
- 5 aparat: talimat, araç, ortam, durum, geri bildirim.
- 4
Makefilehedefi yeter:setup,dev,test,check. - 3 katman: framework / runtime / harness (LangChain).
- 2 doğrulama tipi: hesaplamalı ve çıkarımsal (Thoughtworks).
- 1 denklem: Agent = Model + Harness (LangChain).
Pratik kontrol listesi
Talimat — router var mı
Repoda
AGENTS.md veya CLAUDE.md var mı? Diğer kaynaklara yönlendiriyor mu, yoksa 800 satırlık bir liste mi?Araç — kontrat teknik mi
İzin verilen komutlar/MCP’ler sadece promptta mı yazıyor, yoksa teknik olarak da kısıtlı mı?
Ortam — kendini açıklıyor mu
pyproject.toml / package.json / .nvmrc ve make check hedefi yerinde mi?Geri bildirim — ajan kendini doğruluyor mu
Ajan teslimden önce
make check koşuyor ve çıktısını mı paylaşıyor?