Geçen Aralık ayında Boris Cherny, tek bir ayda 259 pull request gönderdi. Hepsini Claude yazdı. O süre boyunca bir editör bile açmadığını söylüyor.
Onun işi kod yazmak değildi. Kodu yazan şeyi yazmaktı. Peter Steinberger bunu iki satıra sığdırdı ve 8 milyondan fazla kez görüntülendi: "Artık kodlama ajanlarına prompt vermemelisiniz. Ajanlarınıza prompt verecek döngüler tasarlamalısınız."
İşte bu döngü mühendisliği. İşi bulan, bir ajana devreden, sonucu kontrol eden ve bir sonraki adıma karar veren küçük bir sistem kurarsınız, sonra siz uyurken çalışmasına izin verirsiniz.
Ancak aynı ay bir terslik yaşandı. Başka birinin döngüsü on bir gün izlenmeden çalıştı ve kimse fark etmeden 47.000 dolar yaktı. Yani bu aslında iki beceri ve neredeyse herkes sadece ilkini öğretiyor: iş üreten bir döngü kurmak ve sizi uçurumdan aşağı yuvarlanmaktan alıkoyacak frenleri inşa etmek.
Hangi döngüyü kurduğunuzu tek bir soru belirler: gerçek bir şeye yakınsıyor mu, yoksa sadece pahalı bir rastgele yürüyüş mü?
1. Bir döngü altı parçadan ve bir sorudan oluşur
Tüm bu karmaşanın altında, çalışan bir döngü altı bölümden oluşur. Liste ilk bakışta fazla sade görünür. Her bir parçanın içindeki ayrıntı, bir döngünün ya bir arada durduğu ya da bir gecede para sızdırdığı yerdir.
Artık bunların hiçbirini elle inşa etmiyorsunuz. Bir yıl önce bir döngü, sahibi olduğunuz ve sonsuza dek bakımını yaptığınız bir yığın shell scripti anlamına geliyordu. Şimdi parçalar ürünlerin içinde geliyor ve aynı altı parça hem OpenAI Codex uygulamasına hem de Claude Code'a uyarlanabiliyor. Bunu bir kez gördüğünüzde, araç artık tartışma konusu olmaktan çıkar ve döngü tasarım haline gelir.
1PARÇA DÖNGÜDEKİ GÖREVİ CODEX CLAUDE CODE2------------- ------------------------ ------------------------- --------------------------3Durum çalıştırmalar arasında hatırla markdown / Linear (MCP) markdown / Routines + MCP4Otomasyonlar zamanlanmış çalıştır Automations sekmesi + Triage /loop (beceri), Routines, /goal5Çalışma Alanları paralel ajanları ayır Çalışma Alanı başına iş parçacığı --worktree, isolation: worktree6Beceriler niyetini kodla ~/.agents/skills/SKILL.md ~/.claude/skills/SKILL.md7Bağlayıcılar gerçek araçlarına bağlan MCP sunucuları (config.toml) MCP sunucuları (.mcp.json)8Alt Ajanlar yapıcıyı denetleyiciden ayır TOML .codex/agents/ içinde .claude/agents/ + ajan ekipleri
2. Durum, bir sonraki çalıştırmanın miras aldığı tek şeydir
En alttan başlayın, çünkü diğer her şey ona dayanır.
Bir model, bir çalıştırma sona erdiğinde unutur. Sohbet ölür, bağlam temizlenir, bir sonraki çalıştırma hiçbir şey bilmeden uyanır. Sohbetteki hafıza, çalıştırmayla birlikte ölür. Diskte yaşamak zorundadır.
Pratikte bu tek bir dosyadır. Depodaki bir STATUS.md veya bir bağlayıcı aracılığıyla erişilen bir Linear panosu; neyin bittiğini, neyin devam ettiğini, sırada ne olduğunu ve döngünün asla dokunmaması gereken birkaç şeyi tutar.
1# STATUS.md (döngü önce bunu okur, en son bunu yazar)2## Bitti3- [x] auth: v2 token'lara geçildi, testler yeşil4## Devam ediyor5- [ ] billing: webhook yeniden düzenlemesi (PR #214, CI kırmızı)6## Sıradaki7- [ ] dashboard: test/charts içinde tutarsız test8## Asla9- insan onayı olmadan infra/ dizinini değiştirme
Döngüye, asla izlemediğiniz bir gece vardiyası gibi davranın. Saat 3'te ne yaptığıyla değil, saat dokuzda masanızda sizi bekleyen notla yargılanırsınız. Önce o notu tasarlayın, döngünün çoğu kendiliğinden şekillenecektir.
3. Otomasyonlar, bir döngü ile bir kere çalıştırdığınız şey arasındaki farktır
Bir döngü, ancak kendi kendine tetiklendiğinde bu adı hak eder.
Codex uygulamasında bir tane Automations sekmesinde oluşturursunuz: depo, prompt, sıklık. Bir şey bulan çalıştırmalar bir Triyaj gelen kutusuna düşer; hiçbir şey bulamayanlar kendilerini arşivler. OpenAI bunu bir kod tabanının gösterişsiz omurgası için kullanır: günlük sorun triyajı, CI hatası özetleri, geçen hafta birinin kaçırdığı hatayı yakalamak.
Claude Code'a birkaç temel yapı taşıyla ulaşılır ve popüler yazılar ayrıntıları genelde yanlış aktarır, bu yüzden net olmakta fayda var. /loop bir beceridir, yerleşik bir komut değildir ve oturumunuz açıkken bir promptu belirli bir sıklıkta yeniden çalıştırır. Tekrarlayan bulut işleri, /schedule ile ayarlanan Routines'dır, minimum bir saatlik süreleri vardır ve dizüstü bilgisayarınız kapalıyken bile çalışmaya devam ederler. Yerel bir crontab yoktur.
Öğrenmeye değer olan /goal'dür. Yazdığınız bir koşul gerçekleşene kadar çalışır ve her turdan sonra ayrı, daha küçük bir model gerçekten bitirip bitirmediğinizi kontrol eder. Kodu yazan ajan, kendi işini notlandırmaz.
1# Claude Code: gerçekten bittiğinde çalıştır, bitmiş gibi hissettirdiğinde değil2/goal test/auth içindeki tüm testler geçiyor ve lint adımı temiz34# Claude Code: tekrarlayan bir bulut işi (en az 1 saat)5/schedule günlük PR triyajı saat 9'da67# Codex: bir otomasyon promptu (sıklığı formda ayarlayın)8"Hafta içi her gün saat 9: açık PR'ları tara, başarısız CI veya inceleyen yoksa işaretle, Triyaj'a gönder."
Durdurma koşulunu bir sözleşme gibi yazın. "test/auth içindeki tüm testler geçiyor" bir sözleşmedir. "Daha iyi yap" ise bir döngünün maaş gününe kadar çalışmasının yoludur.
4. Çalışma alanları paralel ajanları birbirinin yolundan uzak tutar
Birden fazla ajan çalıştırdığınız an, hata modu değişir. Artık sorun model değildir. İki ajanın aynı dosyayı yazmasıdır, tıpkı iki mühendisin kimse konuşmadan aynı satırlara commit yapması gibi.
Git çalışma alanı (worktree), aralarındaki duvardır: depo geçmişini paylaşan, kendi branch'inde ayrı bir çalışma dizini. Böylece bir ajandaki düzenlemeler diğerinin checkout'una ulaşamaz.
1# Claude Code: ajan başına izole edilmiş checkout2claude --worktree feature-auth34# veya bir alt ajanda, .claude/agents/<name>.md ön yüzünde:5# isolation: worktree67# Codex: bir iş parçacığı açarken "Worktree" seçeneğini seçin (her biri ayrı bir detached HEAD)
Aracın bahsetmeyeceği bir uyarı. Çalışma alanları çarpışmayı ortadan kaldırır, darboğazı değil. Hâlâ siz tavansınız. Kaç tane ajan başlatırsanız başlatın, kendi inceleme bant genişliğiniz kaç tanesine güvenebileceğinizi belirler.
5. Beceriler, niyetinizi bir kez yazılmış, dışarıda tutar
Bir ajan her çalıştırmaya soğuk başlar ve niyetinizdeki her boşluğu kendinden emin bir tahminle doldurur. Bir beceri, modelin her seferinde okuduğu yere yazılmış niyettir, böylece tahmin etmeyi bırakır.
Her iki araçta da format aynıdır: talimatlar ve bir açıklama içeren bir SKILL.md dosyası ve gerektiğinde kullanacağı script'lerle birlikte bir klasör. Adını söylediğinizde veya göreviniz açıklamasıyla eşleştiğinde tetiklenir ki bu, düz ve kelimesi kelimesine bir açıklamanın neden zekice olandan daha iyi olduğunu tam olarak açıklar.
1# .claude/skills/triage/SKILL.md (Codex: ~/.agents/skills/triage/SKILL.md)2---3name: triage4description: Dünkü CI hatalarını, açık sorunları ve son commit'leri oku;5 her bulguyu STATUS.md'ye bir görev olarak yaz.6---71. Başarısız CI'ları çek ve temel nedene göre grupla.82. Her birini buna neden olan açık sorun veya commit ile eşleştir.93. Gerçek her bulgu için STATUS.md'ye bir görev yaz. Gürültüyü atla.
Beceriler olmadan, her döngü projenizi sıfırdan yeniden öğrenir. Becerilerle, döngü her sabah biraz daha keskinleşir.
6. Bağlayıcılar döngünün sadece konuşmasını değil, hareket etmesini sağlar
Sadece dosya sistemini görebilen bir döngü oyuncaktır. Ortak MCP standardı üzerine inşa edilen bağlayıcılar, ajanın sorun takipçinizi okumasına, bir staging API'sine erişmesine, bir veritabanını sorgulamasına, bir kanala göndermesine olanak tanır.
1# Claude Code2claude mcp add --transport http linear https://mcp.linear.app/mcp34# Codex5codex mcp add linear --url https://mcp.linear.app/mcp
Bu, "işte çözüm" diyen bir ajan ile pull request'i açan, ticket'ı bağlayan ve kendi başına yeşil rapor veren bir döngü arasındaki çizgidir. Her iki araç da MCP konuştuğu için, biri için bağladığınız bir bağlayıcı genellikle diğerine de uyar.
7. Alt ajanlar yapıcıyı denetleyiciden ayırır
Herhangi bir döngüdeki en yüksek değerli hamle, yazan ajanı kontrol eden ajandan ayırmaktır.
Kendi işini inceleyen bir model, kendini her seferinde geçer not alır. Farklı talimatlara ve ideal olarak farklı bir modele sahip ikinci bir ajan, birincinin kendini ikna ettiği şeyleri yakalar.
1# Codex: .codex/agents/reviewer.toml2name = "reviewer"3description = "Rakiplerce PR incelemesi: doğruluk, güvenlik, eksik testler."4developer_instructions = "Bir sahip gibi incele. Yazarın yanıldığını varsay5 ta ki diff aksini kanıtlayana kadar."6model_reasoning_effort = "yüksek"78# Claude Code: .claude/agents/reviewer.md ön yüzü9# name: reviewer10# description: Rakiplerce inceleme. Her kod değişikliğinden sonra kullan.11# model: opus
Biri keşfeder, biri uygular, biri spesifikasyona göre doğrular. /goal'ün altında zaten yaptığı şey budur: işin bitip bitmediğine yeni bir model karar verir. İkinci görüşler token'a mal olur, çünkü her ajan kendi modelini ve araçlarını çalıştırır, bu yüzden hata yapmanın pahalı olduğu yerlerde harcayın.
8. Bir döngü neye benzer
Altı parçayı bir araya getirin ve tek bir iş parçacığı küçük bir makineye dönüşür.
Zamanlanmış bir otomasyon her sabah depoda çalışır. Triyaj becerinizi çağırır, bu da geceki CI hatalarını, açık sorunları ve son commit'leri okur ve her gerçek bulguyu STATUS.md'ye yazar. Yapmaya değer her bulgu için döngü, izole bir çalışma alanı açar, bir alt ajana düzeltmeyi hazırlaması, ikinci bir alt ajana da bunu becerilerinize ve testlerinize göre incelemesi için gönderir. Bağlayıcılar PR'ı açar ve ticket'ı günceller. Başa çıkamadığı her şey triyaj gelen kutunuzda bekler. STATUS.md neyin geçtiğini ve neyin hâlâ açık olduğunu hatırlar, böylece yarın, bugünün kaldığı yerden başlar.
Sabah uyandığınızda karşınızda bir günlük duvarı değil, kısa bir devir teslim notu bulursunuz:
1# 9:00 — döngünün geceki devir teslimi (Triyaj gelen kutunuz)2BİRLEŞTİRMEYE HAZIR3 PR #218 test/charts içindeki tutarsız test düzeltildi CI yeşil4 PR #219 webhook'ta 429 hatası için yeniden dene, geri çekilme testi eklendi CI yeşil5SENİ BEKLİYOR6 auth/session.ts bunu düzeltmenin iki güvenli yolu var; ben hiçbirini seçmedim, karar senin7SESSİZ8 7 zamanlanmış çalıştırma hiçbir şey bulamadı ve kendini arşivledi
Bir kez tasarladınız. Hiçbirine prompt vermediniz.
9. Uzaklaşmadan önce frenleri inşa edin
İşte kimsenin öğretmediği yarı ve döngünüzün bir varlık mı yoksa bir yükümlülük mü olduğunu belirler.
47.000 dolarlık fatura, çıldırmış zeki bir model değildi. Bir analizci ve bir doğrulayıcı olmak üzere iki ajandı, kibarca birbirlerinden daha fazla iş istiyorlardı, adım sınırı yoktu, bütçe tavanı yoktu ve durma koşulu yoktu. On bir gün çalıştı. Tek bir sınır ilk günde durdururdu.
Beygir gücünden önce frenleri takın. Fren pedalını göndermeden motoru asla yola çıkarmayın.
1# UZAKLAŞMADAN ÖNCE BUNLARI TAKIN:2- adım sınırı: --max-turns 50 (sert duruş, istisna yok)3- bütçe tavanı: claude -p --max-budget-usd 10 (yazdırma modu; aşama başına)4- patlama yarıçapı: bir çalışma alanı, bir branch, src/ dışında salt okunur5- devre kesici: aynı araç + aynı argümanlar art arda 3 kez = durdur6- ölü adam kontrolü: her çalıştırmada STATUS.md'ye bir kalp atışı yaz; sessizlik seni arasın
Bir döngüyü, yapmasını istediğiniz şeye göre değil, yok edebileceği şeye göre kapsamlandırın: hangi depolar, hangi branch'ler, kaç dolar, zorla kapanmadan önce kaç adım. Önce patlama yarıçapını, sonra görevi seçin.
Ve dürüstçe fiyatlandırın. Steinberger'in yüz ajanlı filosu gerçek ve ayda yaklaşık 1,3 milyon dolara mal oluyor. İşe yarıyor çünkü OpenAI artık onu istihdam ediyor ve faturayı ödüyor. Sınırdaki durum sponsorlu. Sizinki değil. 20 ila 200 dolarlık bir planda, kâr getiren döngü küçük, sınırlı ve bir sürüye değil, tek bir sıkıcı işe yöneliktir.
1MALİYET DAĞILIMI (hepsi gerçek, hepsi son altı aydan)2-----------------------------------------------------------------330 günde 259 PR bir mühendis, %100'ü Claude tarafından yazıldı411 günde 47.000 dolar sınırı olmayan, kimsenin izlemediği kaçak bir döngü5Ayda ~1,3 milyon dolar 100 ajanlı bir filo (fatura sponsorlu)6-----------------------------------------------------------------7Aynı teknoloji. Fark frenlerde.
10. Döngüler nasıl ölür
Başarısız olan her döngü dört ölümden biriyle ölür. İsimlerini şimdi öğrenin ki saat 3'te onları fark edin.
Kaçak özyineleme. İki ajan birbirini sonsuza dek besler. Tedavisi, yukarıdaki adım sınırı ve bütçe tavanıdır, daha akıllıca bir şey değil.
Sessiz ölüm. Bir geliştiricinin gece çalıştırması tam bir bağlam penceresine ulaştı, durdu, sonra canlı görünürken aynı duvara karşı devam etmeye çalıştı. Döngünüz saatlerce ölü olabilir ve hâlâ ilerleme raporu verebilir. Tedavisi bir kalp atışı ve aşama başına taze bir bağlamdır, sonsuz bir çalıştırma değil.
Rastgele yürüyüş. Doğrulanabilir bir durma koşulu olmadan, döngü hedefe doğru değil, ondan uzaklaşır. Geçen bir test paketi, ulaşabileceği bir sabit noktadır. "Bitmiş görünüyor" böyle bir şey değildir.
Anlayış borcu. Bir döngü sizin yazmadığınız kodu ne kadar hızlı gönderirse, deponuzun ne yaptığı ile sizin anladığınız arasındaki uçurum o kadar genişler. Okunmadan yeterince uzun süre çalışmasına izin verirseniz, mühendis olmaktan çıkıp bir onay damgasına dönüşürsünüz. Tedavisi, döngünün asla atlamasına izin verilmeyen bir insan tarafından okuma geçididir.
11. Döngüyü inşa edin. Mühendis olarak kalın.
İki kişi aynı döngüyü inşa edip taban tabana zıt sonuçlar alabilir. Biri, derinlemesine anladığı işte daha hızlı ilerlemek için kullanır. Diğeri, işi hiç anlamamak için kullanır. Döngü onları ayırt edemez. Siz edebilirsiniz.
Cherny'nin amacı asla işin kolaylaştığı değildi. Mesele, kaldıracın prompt'tan döngüye ve yazmaktan muhakemeye kaymasıydı. Bu, prompt vermekten daha zor bir iştir, daha kolayı değil.
İşte hamle ve kasıtlı olarak küçük, çünkü bu erken bir aşama ve maliyetler çılgınca dalgalanıyor. Yarın sabah, hâlâ elle yaptığınız en sıkıcı işi alın: CI triyajı, eski sorunları kapatmak, tutarsız bir testin peşinden koşmak ve etrafına sınırlı bir döngü sarın. Önce frenler. Gönderdiği her diff'i hâlâ okuyacağınız kadar küçük.
Ayda 200 pull request gönderen hiç kimse yüz ajansıyla başlamadı. Güvendikleri tek bir döngüyle başladılar ve tüm yol boyunca mühendis olarak kaldılar. O bir tane döngüyü inşa edin.





