Yeni klonladığın repoyu açıyorsun. Karşında iki satırlık birDocumentation Index
Fetch the complete documentation index at: https://harness.lokomotif.ai/llms.txt
Use this file to discover all available pages before exploring further.
task.md ve neredeyse boş bir app.py var: bir FastAPI() örneği ve bir TODO yorumu. Yığını söyleyen dosya yok, “tamamlandı”nın ne demek olduğunu söyleyen bir komut yok, doğrulamayı kim yapacak belirsiz. Bir ajan olsan tahmin etmeye başlardın: Python sürümü, depolama, token kaynağı, hata mesajları. Sohbete dönüp soru sorar, cevap gelmeyince varsayım koyar, ve nihayetinde “bitti” derdin — kimse aksini söyleyemediği için.
Bu proje aynı sahneyi iki kez kuruyor. Bir kez yalın prompt ile (projeler/01/starter/), bir kez minimum kural seti ile (projeler/01/solution/). Görev aynı: Notes API’a Bearer kimlik doğrulaması ekle. task.md aynı. Tek değişen düzenek (harness) — modeli kuşatan talimat, ortam ve geri bildirim aparatları. Amaç, bu iki klasörün diff’inin kendi başına bir argüman olduğunu göstermek.
Bu projede ne öğreneceksin
- Yalın prompt koşumunun neden yapısal olarak güvenilmez olduğunu kendi gözünle gör — sohbet penceresinin neden bir düzenek yerine geçmediğini deneyimle.
- Minimum bir düzeneğin (talimat router’ı + dört Makefile hedefi + smoke test) hangi başarısızlık modlarını kapattığını işaretlemeyi öğren.
- “Tamamlandı”nın bir kanaat değil, koşulabilir bir komut olduğunu pratikle kavra:
make checkyeşilse iş bitmiştir, değilse değildir. - AGENTS.md’nin neden bir ansiklopedi değil, kısa bir router olması gerektiğini örnek üzerinden anla.
- Ablasyon refleksini kazan: bir aparatı (Makefile, smoke test, AGENTS.md) sökmenin başarı oranına etkisini ölç ve raporla.
Yapı
İki klasör aynı görev tanımını paylaşır; tek fark, solution’a eklenmiş düzenek aparatlarıdır.starter ile solution arasındaki fark
Diff bir prompt değişikliği değil, repo düzeyinde bir sözleşmedir. Üç katmanı yan yana koymak yetiyor. Talimat aparatı. Starter’da AGENTS.md yok. Solution’da repo köküne konmuş birAGENTS.md var ve içeride beş başlık yaşar: “Sıkı kısıtlar”, “Dev Environment Tips”, “Testing Instructions”, “PR Instructions”, “Doğrulama komutları”. Dosya bir router’dır: yığını (Python 3.11, FastAPI, SQLite), sıkı kısıtları (Authorization: Bearer <API_TOKEN> zorunlu; SQL parametrize; make check yeşil olmadan teslim yok) ve doğrulama sözleşmesini söyler. Ajan bu repoya girdiğinde “tamam” demenin koşullarını öğrenir — sohbete sormak zorunda kalmaz.
Ortam aparatı. Starter’da bağımlılık tanımı yok, kurulum komutu yok, sunucuyu nasıl başlatacağın yazılı değil. Solution’da Makefile dört kanonik hedef sunar:
make setup yazıp koşar.
Geri bildirim aparatı. En kritik fark burada. Starter’da test yok; “çalışıyor” demenin kanıtı yalnızca ajanın iddiasıdır. Solution’da tests/test_smoke.py dört davranış kanıtı taşır:
AGENTS.md içinde tek satıra düşer: “make check yeşil olmadan teslim yapılmaz.”
Adım adım
Aşağıdaki yürüyüş, başarısızlığı ve çözümü yan yana gözleyebilmen için tasarlandı.- Repoyu klonla ve proje klasörüne in:
git clone <repo-url> && cd harness-docs/projeler/01. - Önce starter’a gir:
cd starter. İçerikte yalnızcatask.mdveapp.pyolduğunu doğrula. - Bu klasörü kendi ajan istemcinde aç (Claude Code, Cursor, ya da tercih ettiğin koşumcu) ve
task.md’yi prompt olarak ver. Ajanın davranışını gözlemle: hangi soruları soruyor, hangi varsayımları koyuyor, kodu koşturuyor mu, neyin “tamam” sayılacağına nasıl karar veriyor? - Üretilen kodu çalıştırmaya çalış. Çoğu koşumda şu kalıpları göreceksin: Python sürümü tutmuyor; bağımlılık listesi bulunamıyor; “401” davranışı belirsiz; ajan testsiz teslim ediyor; sen kontrol etmedikçe geri bildirim akmıyor. Bu Ders 01’in doğrulama boşluğu (verification gap) örüntüsünün canlı kopyasıdır.
- Şimdi solution’a geç:
cd ../solution.AGENTS.md,Makefile,pyproject.toml,tests/test_smoke.pyartık yerinde. - Tek komutla doğrulamayı koştur:
make setup && make check.pytest tests/ -xçıktısının dört yeşil noktayla bittiğini gör.Makefilecheckhedefiruffvemypyvarsa onları da koşar; yoksa graceful atlar vepytestyeter. - Solution klasörünü aynı ajan istemcinde aç ve yine
task.md’yi prompt olarak ver. Bu sefer ajanın davranışı kategorik olarak farklıdır:AGENTS.md’yi okur, kısıtları kabul eder,make checkkoşar, çıktıyı raporlar. “Tamam”ı söyleyen artık ajan değil, dört yeşil test. - İki koşumun farkını üç başlıkta yaz: hangi başarısızlık modu hangi aparatla kapandı, hangi aparat olmasaydı yine başarısız olunurdu, ablasyonu nasıl ölçerdin? Bu yazılı diff bu projenin teslim çıktısıdır.
Beklenen sonuçlar
Solution tarafındamake check koşulduğunda terminalde şu görüntü beklenir:
- Starter’da ajanın sorduğu soruların ve koyduğu varsayımların listesi.
- Solution’da
make check’in tam terminal çıktısı (4/4 yeşil). - “Hangi aparat hangi başarısızlığı kapattı” eşlemesi: talimat → belirsiz tanım; ortam → kurulum sürtünmesi; geri bildirim → doğrulama boşluğu.
- (Opsiyonel) ablasyon notu:
tests/test_smoke.pysilinerek solution yeniden koşturulduğunda davranışın nasıl değiştiği.
Yerel çalıştırma
API_TOKEN=test-token ile koşar; canlı sunucuya ihtiyaç duymaz, dış servis çağırmaz. Bu izolasyon, doğrulamanın tekrarlanabilir olmasını garanti eder — Ders 02’nin “kendini açıklayan ortam” prensibinin pratikteki karşılığı.
İlgili dersler
- Ders 01 — Yetkin Ajanlar Neden Başarısız Olur: doğrulama boşluğunun ne olduğu ve neden bir model değil bir konfigürasyon problemi olduğu.
- Ders 02 — Düzeneğin Anatomisi: beş aparat (talimat, araç, ortam, durum, geri bildirim). Bu projedeki diff üç aparatı somutlaştırır.
Sıradaki proje
- Proje 02 — Bilgi Mimarisi: bu projede gördüğün router AGENTS.md’yi şişmiş bir monolitten yönlendirici + konu dokümanları mimarisine taşır; “kısa ama yönlendirici” dengesini pratiğe döker.