Promptlama 2024'te öldü. Yeni beceri Orkestrasyon
30 gün boyunca 1.000 Yapay Zeka Ajanı çalıştırdım ve işte bulduklarım
Promptlamanın yerini alan beceri ve bugün çalıştırabileceğiniz sistemler.
Prompt'unuzu optimize etmeyi bırakın. Artık darboğaz o değil.
Tek bir sohbet penceresinde tek bir ajanla, prompt oyunun çoğunluğunu oluşturur.
Saatlerce çalışan on ajanla, prompt sadece yuvarlama hatasıdır.
İşin kalitesini belirleyen şey, ajanların etrafındaki sistemdir:
- her görevin hangi modda çalıştığı
- hangi modelin hangi adımı çalıştırdığı
- ajanların nasıl koordine kaldığı
- siz uyurken "bitti"nin nasıl doğrulandığı
Bir prompt size tek bir çıktı verir. Bir döngü size birleşik bir işlem verir.
Değişim basittir. Her sonucu okuyup bir sonraki talimatı yazan kişi olmayı bırakırsınız. Sistemi bir kez tasarlayıp çalışmasına izin veren kişi olursunuz.
İş şimdi bu tasarım katmanıdır. İşte nasıl inşa edeceğiniz.
Orkestratörü siz inşa ediyorsunuz, kodu değil
Otuz ajana otuz ajanla konuşarak yönetmezsiniz. Tek bir ajanla konuşursunuz. O ajan orkestratördür ve geri kalanını yönetir.
İyi bir orkestratör tam olarak üç şey yapar:
- Bir hedefi sınırlı, bağımsız olarak kontrol edilebilir alt görevlere ayırır.
- Her alt görevi, kısa bir özet ve net dosya sahipliği ile bir işçiye devreder.
- Sonuçları bir araya getirir ve sonra ne olacağına karar verir.
Diğer tüm kuralların üzerinde duran bir kural vardır: orkestratör asla işi kendisi yapmaz.
Lider ajanınız uygulama kodu yazmaya başladığı anda, bağlamı detaylarla dolar ve tüm işin görüşünü kaybeder.
Bağlamını temiz tutun. Düşünür, böler, atar ve kontrol eder. Başka hiçbir şey.
Sonra geniş değil, derine inin:
- Orkestratörün doğrudan sekiz işçi doğurmasına izin vermeyin. Bu, bağlamını parçalar.
- Bunun yerine iki veya üç lider doğurmasını sağlayın.
- Her liderin kendi iki veya üç uzmanını doğurmasına izin verin.
Kazanç, aynı bağlam maliyetiyle üç kat daha fazla ayrıştırma derinliğidir. Gerçek bir organizasyonun ölçeklendiği yol budur, katmanlar aracılığıyla, her görevi tek bir kişinin atamasıyla değil.
Doğrulanabilir veya değil: her şeye karar veren ayrım
Bir şey inşa etmeden önce, görevle ilgili tek bir soru sorun. Bir makine yapılıp yapılmadığını kontrol edebilir mi?
Bu cevap tüm yaklaşımınızı belirler.
Görev doğrulanabilir ise, onu döngüye alabilirsiniz:
- Testler geçer veya geçmez.
- Tip denetleyici yeşildir veya değildir.
- Kıyaslama eşiği geçer veya geçmez.
Doğrulanabilir bir göreve bir ajan yönlendirin ve gece boyunca tepe tırmanışı yapacaktır. Çözülmüş bir problemle uyanırsınız.
Görev doğrulanabilir değilse, tek başına bir döngü sizi kurtarmaz. Örnekler:
- İyi bir değerlendirme tasarlamak.
- Bir API'nin doğru olup olmadığına karar vermek.
- Bir araştırma yönünün peşinden gitmeye değer olup olmadığını yargılamak.
Bunlar için, beğeniyi devreye sokarsınız. Hedefi teslim edip gidemezsiniz, çünkü durulacak bir kapı yoktur.
Bu yüzden yapılacak hamle, işin mümkün olduğunca çoğunu doğrulanabilir kılmaktır:
- "İyi yap" yerine "bu belirli kontrolleri geç" koyun.
- Belirsiz hedefleri somut, ölçülebilir olanlarla değiştirin.
- Yapamadığınız yerde, bir insanı döngüde tutun ve yönlendirin.
Orkestrasyon mühendisliğinin çoğu, bulanık hedefleri kontrol edilebilir olanlara dönüştürmektir, böylece döngü devralabilir.
En küçük gerçek sistemle başlayın: bir hedef döngüsü
Bir hedef döngüsü, kalıcı bir hedef artı deterministik bir kontroldür. Ajan, bir turdan sonra durmak yerine, adım adım bir hedefe doğru çalışır.
Tüm sistem, ajanınız ve bir doğrulayıcı etrafında bir döngüdür:
1i=02until npm test -s; do3 agent -p "Hedef: test paketini yeşil yap.4 Kodu OKU ve hiçbir şeyi değiştirmeden ÖNCE tam bir resim oluştur.5 'npm test' başarısız oluyor. Geçmeye yönelik en küçük değişikliği yap."6 (( ++i > 20 )) && { echo "dur: 20 iterasyon"; exit 1; }7done
Doğrulayıcı, çıkış kodu kapı olan herhangi bir komuttur. Testler, bir tip kontrolü, bir lint veya özel bir betik.
Pazarlık konusu olmayan iki şey:
- Bir sınır. Durdurma koşulu olmayan bir döngü, beş haneli bir token faturasıyla uyanma şeklinizdir.
- Önce oku talimatı. Her ajanın varsayılan başarısızlık modu, kodu okumak yerine ilk akla yatkın düzeltmeye rastgele bir atış yapmaktır.
Okumayı zorunlu kılın. Adım başına daha yavaş ve genel olarak çok daha hızlıdır.
"Bitti"yi pazarlık konusu olmaktan çıkarın: yargıç
Ajanlar erken bırakır. Bunu haklı çıkarabildikleri anda durmak için eğitilmişlerdir.
"Elimden gelenin en iyisini yaptım, burada duruyorum" ile bitmiş olmak aynı şey değildir.
Bir ajan kendi ödevini notlandırırsa, hile yapar. Kötü niyetle değil. Sadece kendini bitmiş olduğuna ikna eder.
Çözüm ayrı bir yargıçtır:
- Tek işi, somut bir değerlendirme tablosuna karşı çalışmayı puanlamak olan ikinci bir ajan.
- Tek bir soruyu yanıtlar: bitti veya bitmedi ve eksik olan ne.
- Durdurmada hiçbir çıkarı yoktur, bu yüzden geri adım atmaz.
Yapıcıyı ve yargıcı farklı model ailelerinde çalıştırın. Farklı aileler ilişkisiz hatalar yapar, bu nedenle yargıç, yapıcının kör olduğu şeyi görür.
1while :; do2 agent --model "$BUILD" -p "Görev: $TASK. Önce oku, uygula, testleri çalıştır."3 verdict=$(agent --model "$JUDGE" -p "Katı inceleyici. rubric.md'deki HER öğeye karşı puanla.4 Tam olarak 'GEÇTİ' veya 'KALDI: <eksik olan>' şeklinde yanıtla.")5 [[ $verdict == GEÇTİ* ]] && break6done
Değerlendirme tablosunu somut ve ikili yapın:
- İyi değerlendirme tablosu: "tüm testler yeşil, migrasyon dahil, hata ayıklama günlüğü yok."
- Kötü değerlendirme tablosu: "iyi yap."
Veto hakkı olan ilgisiz bir denetleyici, bir çalıştırmanın, işçi yorulduğu anda çökmesi yerine saatlerce devam etmesini sağlayan tek şeydir.
Her görev tamamlandığında onu ateşleyin. O zaman sadece yeşil olarak incelenmiş işi görürsünüz.
Gerçekten kullanacağınız daha fazla döngü
Hedef döngüsü temel desendir. Birkaç varyant, çalıştıracağınız şeylerin çoğunu kapsar.
1. Doğrulama döngüsü.
Hareket et, doğrulayıcıyı çalıştır, hatayı geri besle, kapı yeşil olana kadar tekrarla.
Regresyon taramaları, tip kontrolleri ve herhangi bir deterministik geçer/kalır için kullanın.
2. Sıra ve sıfırlama döngüsü.
İşi küçük, atomik görevlerden oluşan bir listeye bölün. Her seferinde birini işleyin.
Her görevden sonra, ajanı temiz bir bağlama sıfırlayın ve bir sonrakini alın.
Saatlerce çalışan bir bağlam kafa karışıklığıyla dolar. Sıfırlama her görevi temiz tutar.
Bellek, ajanın dışında, görev dosyasında ve taahhüt geçmişinde yaşar.
1while read -r task; do2 agent -p "Görev: $task. Önce oku. Uygula, ardından testleri çalıştır."3 npm test -s && git commit -aqm "oto: $task" # sadece yeşilse taahhüt et4done < tasks.txt
3. Monitör döngüsü.
Bir ajana bir sinyal akışı yönlendirin ve önemli olanı yüzeye çıkarmasına izin verin. Açık sorunlar, başarısız yapılar, hata günlükleri, yeni geri bildirim.
Sizin sormanızı beklemez. Okur, triyaj yapar ve yukarı rapor eder veya bir taslak düzeltme açar.
1while sleep 300; do2 agent -p "Son 5 dakikanın hata günlüklerini oku. YENİ bir desen ortaya çıkarsa,3 minimal bir yeniden üretimle bir sorun aç. Aksi halde 'yeni bir şey yok' de."4done
4. Önce planla sonra inşa et döngüsü.
Döngüyü iki aşamada çalıştırın. Önce yazılı bir plan üreten ve duran bir planlama geçişi.
Planı siz incelersiniz. Ardından bir yürütme geçişi onaylanan planı takip eder.
Planı düzeltmek ucuzdur. Kodu düzeltmek pahalıdır. Kötü yönü planda yakalayın.
İşi yapan promptlar
Bir prompt bir dilek değildir. Bir ajan için bu bir şartnamedir.
Vasat çıktı ile mükemmel çıktı arasındaki fark neredeyse tamamen bunların kalitesidir.
Küçük bir yeniden kullanılabilir prompt seti bulundurun. Beş tanesi yükün çoğunu taşır.
1. Ayrıştırma promptu, orkestratör için:
1Sen orkestratörsün. Kod YAZMA.2Bu hedefi 3 ila 6 sınırlı alt göreve böl.3Her biri için: tek satırlık bir özet, sahip olduğu tam dosyalar ve bitiş kontrolü.4Başka birine bağlı olan herhangi bir görevi işaretle. Listeyi çıkar, sonra dur.5Hedef: <hedef>
2. İşçi özeti, bir uzman için:
1Sadece şu dosyalara sahipsin: <dosyalar>.2Görev: <tek satır>. Şu durumda bitti: <doğrulanabilir kontrol>.3Düzenlemeden ÖNCE bu dosyaları ve çağıranlarını oku. Dosyalarının dışında hiçbir şeyi değiştirme.4Bittiğinde, <isim>.md'ye 5 satırlık bir rapor yaz, ardından testleri çalıştır.
3. Yargıç promptu, farklı bir model ailesi için:
1Sen katı, cömert olmayan bir incelemecisin. Bu kodu sen yazmadın.2Depoyu AŞAĞIDAKİ HER öğeye karşı puanla. Bir kaçırma KALDIR.3<değerlendirme tablosu>4Tam olarak tek satırla yanıtla: 'GEÇTİ' veya 'KALDI: <eksik olan>'.
4. Önce plan yap promptu, plan modu için:
1<hedef> için yazılı bir plan üret. Şunları kapsasın: yaklaşım, dokunulacak dosyalar,2kenar durumlar, test stratejisi ve YAPMAYACAĞIN şeyler.3Henüz kod yazma. İnceleyebilmem için plandan sonra dur.
5. Yansıt veya öldür promptu, bir ajan takıldığında:
1Aynı kontrolde 3 kez başarısız oldun. Yaklaşımı tekrarlamayı bırak.23 satırda yanıtla: tam olarak ne başarısız oldu, hangi varsayım yanlıştı3ve denenecek en küçük farklı şey. Sonra SADECE onu dene.
Beşinin de içinden geçen bir desen vardır. Rolü, sınırları, bitiş kontrolünü ve NE YAPILMAMASI gerektiğini belirtin.
Model yönlendirme: herkesin sorduğu soru
Soru genellikle bir seçim olarak çerçevelenir. Pahalı modeli planlamaya mı yoksa uygulamaya mı koyayım?
Bu yanlış çerçevedir. Bunun yerine patlama yarıçapına göre yönlendirin. Bir hatanın size en pahalıya mal olduğu yeri sorun.
Mantık basittir:
- Planlamadaki kötü bir karar tüm filonuza yayılır.
- Sınırlı, test edilmiş bir fonksiyondaki kötü bir satır dakikalar içinde yakalanır.
- Bu yüzden, hataların pahalı ve geri döndürülemez olduğu yerde harcarsınız ve ucuz ve kontrollü olduğu yerde tasarruf edersiniz.
İşte yönlendirme, katman katman:
- Planlama, mimari ve ayrıştırma: her zaman en üst katman. En yüksek kaldıraç, küçük token hacmi. Burada ucuz olmak yapabileceğiniz en pahalı hatadır.
- Dar bir şartname ile uygulama: orta katman, paralel çalıştırın. Şartname düşünmeyi yaptı. Testlerle doğrulayın.
- Gevşek bir şartname ile uygulama: üst katman. Boşluk doldurma akıl yürütmedir ve ucuz bir model bir düzine yönde yanlış tahmin eder.
- İnceleme ve yargılama: farklı bir aile ve ucuz bir tane değil. Pahalı kaçırmaları burada yakalarsınız.
- Gezinme, arama, özetleme ve sınıflandırma: en ucuz, en hızlı model. Sıfır akıl yürütme, yüksek hacim. Grep için asla prim ücreti ödemeyin.
Dolayısıyla "ucuz planlama mı yoksa ucuz uygulama mı?" sorusunun gerçek cevabı, körü körüne hiçbiri değildir.
Her zaman planlama ve incelemede üst model. Uygulama değişkendir.
Farklı model ailelerinin ayrıca farklı kişilikleri vardır ve bu yönlendirme için önemlidir:
- Bir aile boşlukları doldurur. Şartname gevşek olduğunda, makul varsayımlar yapar ve devam eder. Bu, varsayımlar iyi olduğunda yardımcı olur ve iyi olmadığında zarar verir.
- Başka bir aile gerçektir. Hassas bir çakı gibi, söylediğinizin aynısını yapar ve çok az fazlasını.
Boşluk doldurucuyu, işin açık uçlu ve şartnamenin gevşek olduğu yerde kullanın. Gerçek olanı inceleme ve kesin, iyi tanımlanmış değişiklikler için kullanın.
Uygulamayı kontrol eden kaldıraç sizin şartnamenizdir
- Dar bir şartname, size ucuz, paralel işçiler çalıştırma hakkı kazandırır.
- Gevşek bir şartname, boşlukları doldurmak için sizi pahalı bir modele geri dönmeye zorlar.
Tam olarak inşaatı ucuzlatabilmek için plana yatırım yapın.
Bahsetmeye değer bir tuzak vardır. Ucuz yönlendirme, her çağrının fiyatını optimize eder, ancak üretilen, birleştirilebilir çıktı üreten tokenların payını sessizce yok edebilir.
Beş kez yeniden deneyen ve birleştiremeyeceğiniz kod üreten ucuz bir model, premium bir modelden yapılan tek bir temiz geçişten daha pahalıdır.
Çağrı başına maliyeti değil, kullanışlı çıktının maliyetini ölçün.
Ölçek için iki sayı yardımcı olur:
- En üst katmanınız, token çıktı fiyatı olarak ucuz bir katmanın kabaca beş katına mal olur.
- Katmanlı yönlendirme, en iyi modelinizi her yerde çalıştırmaya kıyasla tipik olarak harcamayı %40 ila %60 oranında azaltır.
Beceriler: bir iş akışını bir kez paketleyin, sonsuza kadar yeniden kullanın
Aynı promptu yapıştırmaya veya aynı iş akışını çalıştırmaya devam ettiğinizde, onu bir beceriye dönüştürün.
Beceri, ajanın yalnızca ilgili olduğunda yüklediği küçük bir talimat dosyasıdır.
İş akışını bir kez yazarsınız ve her ajan ona ulaşabilir.
Bir beceri dosyasının iki kısmı vardır:
- Bir ad ve açıklama içeren YAML ön yüz maddesi.
- Gerçek talimatları içeren bir işaretleme gövdesi.
Açıklama en önemli satırdır. Ajana becerinin ne yaptığını ve tam olarak ne zaman kullanılacağını söyler, böylece ajan onu siz adlandırmadan kendi kendine alır.
Minimal bir beceri dosyası:
1---2name: termonükleer-inceleme3description: Derin, çekişmeli kod incelemesi. Önemsiz olmayan herhangi bir değişiklikten sonra4 veya bir diff'i birleştirmeden önce incelemesi, denetlemesi veya sağlamlaştırması istendiğinde kullanın.5---67# Termonükleer inceleme89Diff'in tamamını ve dokunduğu dosyaları okuyun. Göz gezdirmeyin.1011İncelemeyi üç geçişte yapın:121. Doğruluk: mantık hataları, kenar durumlar, yarış koşulları, birer birer hatalar.132. Güvenlik: enjeksiyon, kimlik doğrulama, sırlar, güvensiz girdi, yıkıcı işlemler.143. Uyum: mevcut mimariye uyuyor mu, yoksa yeni bir desen mi ekliyor?1516Her bulgu için: dosya, satır, şiddet ve tek satırlık düzeltme.17Bir kararla bitirin: GÖNDER veya ENGELLE, artı ilk düzeltilecek en önemli 3 şey.
İyi beceriler için kurallar:
- Dosyayı kısa tutun. Birkaç yüz satırın altında. Uzun referans materyallerini, becerinin işaret ettiği ayrı dosyalara taşıyın.
- Adın klasörüyle eşleştiğinden emin olun, aksi halde yüklenmez.
- Açıklamayı tetikleme için yazın. "Şu durumlarda kullan" durumlarını açıkça belirtin.
- Bir ajanın asla bir beceriyi yeniden yazmasına izin vermeyin. Her satırı bir insan düzenler.
Beceriler, bir iş akışının birikerek büyüdüğü yoldur. Bir şeyi ilk kez iyi çözdüğünüzde, onu kaydeder ve bulunabilir kılarsınız. Ondan sonraki her oturumda ücretsizdir.
Birçoğunu çalıştırmak: filo
Bir döngü çalıştığında, ölçeği genişletirsiniz.
Her işçiye iki şey verin:
- Hiçbir iki ajanın aynı dosyalara asla dokunmaması için kendi git çalışma ağacı.
- İzleyip mesaj gönderebilmeniz için kendi terminal penceresi.
1tmux new-session -d -s fleet2for name in hilbert gauss poincare; do3 git worktree add -B "agent/$name" "../wt-$name" main4 tmux new-window -t fleet -n "$name" -c "../wt-$name" "$AGENT"5done
- Ajanlarınızı adlandırın. On beş tane çalıştırırken, "ajan_7" işe yaramaz.
- İsimler, tüm filoyu kafanızda tutmanızı sağlar. Bu veri katmanına sahiptir, şu değerlendirmeler yazar, bu inceler.
- Okunabilirlik noktadır. Takip edemediğiniz bir filo, yönlendiremeyeceğiniz bir filodur.
- Sonra onları işbirliği yapmaya zorlayın. Varsayılan olarak, ajanlar birbirlerini görmezden gelir ve bir kardeşten gelen herhangi bir şeyi arka plan gürültüsü olarak ele alır.
İşin püf noktası, ajanlar arasında mesajları kullanıcı turları olarak iletmektir. Modeller, kullanıcıya yanıt vermek ve ortam sinyallerini çoğunlukla görmezden gelmek üzere eğitilmiştir.
1send() { tmux send-keys -t "fleet:$1" "$2" Enter; }2send hilbert "GET /search?q= döndürür [{id,title,url}]. UI'yi buna bağla."
Bu tek hamle, bir yığın izole edilmiş süreci, sözleşmeleri devreden ve birbirlerini tıkanıklıktan kurtaran bir ekibe dönüştürür.
Siz en üstte kalırsınız. Lidere mesaj atarsınız ve lider işçilere iletir.
Dinamik iş akışları: koordinasyonu koda derleyin
Bir döngü, koordinasyonu modelin içinde tutar. Model her adıma karar verir, bu da token yakar ve bağlamını doldurur.
Dinamik bir iş akışı bunu tersine çevirir. Orkestratör, işçileri koordine eden bir betik yazar ve ayrı bir çalışma zamanı betiği arka planda çalıştırır.
Ana fikir, durumun nerede yaşadığıdır. Döngü, dallanma ve ara sonuçlar, modelin belleğinde değil, betiğin değişkenlerinde bulunur.
Bunun size sağladıkları:
- Koordinasyonun maliyeti sıfır model tokenidir, çünkü bunu düz kod yapıyor.
- Ana bağlamınız temiz kalır. Sadece nihai sonuç geri gelir.
- Geniş bir alana yayılır. Aynı anda onlarca işçi, bir çalıştırmada bine kadar.
Ne zaman başvurmalı:
- Desen biliniyor ve doğrulama nesneldir.
- İş geniş ve tekrarlıdır. Birçok dosya, birçok durum, birçok uç nokta.
- Gözetimsiz çalışabilir.
Ne zaman başvurmamalı:
- Ne yapacağınızı hala anlamaya çalışıyorsunuz. Bu bir iş akışı değil, bir hedef döngüsüdür.
- Görevin tutarlı bir akıl yürütme zincirine ihtiyacı var. Bu, bin tane değil, tek bir güçlü ajan ister.
Somut bir şekil. Diyelim ki 200 dosyayı yeni bir API'ye taşımanız gerekiyor:
1// orkestratör bunu bir kez yazar; bir çalışma zamanı onu çalıştırır, model değil2const files = await glob("src/**/*.ts");34const results = await mapLimit(files, 16, async (file) => {5 const r = await subagent(`${file}'i yeni API'ye taşı. Testlerini çalıştır.`);6 return { file, ok: r.testsPassed };7});89const failed = results.filter(r => !r.ok);10return `taşındı ${results.length - failed.length}/${results.length}. ` +11 `yeniden dene: ${failed.map(f => f.file).join(", ")}`;
Bunun ne yaptığını okuyun:
- 200 dosyayı modelin kafasında değil, kodda listeler.
- Her biri bir dosyayı taşıyan ve testlerini çalıştıran 16 alt ajana aynı anda çalışır.
- Dosya başına başarılı/başarısız durumunu düz bir dizide kaydeder.
- Tek bir kısa özet döndürür. 200 ara döküm asla bağlamınıza dokunmaz.
Bütün mesele budur. Model, betiği yazmak için bir kez düşündü. Betik, koordinasyonu ücretsiz olarak yaptı.
Korkuluklar: bir filoyu kendini yemekten alıkoyan şey
İnsan darboğazı eskiden gerçek iş yapardı. İnsan hızında, hatalar erken acıtır ve siz giderken onları düzeltirsiniz.
Kendinizi tamamen ortadan kaldırın ve küçük hatalar, hissedebileceğinizden daha hızlı birikir. Burada bir kopyalama, orada gereksiz bir soyutlama.
Bir gün mimari eğilmeyecek ve testleriniz güvenilmez olacak çünkü onları da ajanlar yazdı.
Aşağıdaki her korkuluk, darboğazın eskiden sağladığı düzeltmenin yerini alır:
- Tahmin etmeden önce oku. Bunu her inşa promptunda, görev başına bir rica olarak değil, kalıcı bir kural haline getirin.
- Sınırla ve öldür. Her döngünün bir iterasyon limiti vardır. Her ajanın %85'e yaklaştığında otomatik olarak duraklayan bir token bütçesi vardır. Aynı hatada üç sıkışmış iterasyondan sonra, ajanı öldürün ve görevi yeni bir ajana devredin.
- Bir dosya, bir sahip. Çalışma ağaçlarıyla izole edin. İki ajanın asla aynı dosyayı düzenlemesine izin vermeyin.
- Görevi yeniden enjekte edin. Uzun çalıştırmalarda, ajanın bağlamı doldukça sürüklenmemesi için her birkaç dakikada bir kontrol listesini bir kullanıcı mesajı olarak gönderin.
1while sleep 900; do2 send gauss "HATIRLATMA: hala görevde misin? Önce oku. Her değişiklikten sonra testleri çalıştır. Kendi dosyalarında kal."3done &
En derin nokta, hepsinin altında yer alır:
- Doğrulama artık darboğazdır, üretim değil.
- Ajanlar, sizin kontrol edebileceğinizden daha hızlı makul çıktı üretir.
- Makul, doğru anlamına gelmez.
Doğrulamanız üretiminiz kadar hızlı olana kadar, insan incelemesi bir masraf değildir. Güvenlik sistemidir.
Bellek: uzun vadeli depo sizsiniz
Bir modelin kısa vadeli belleği, bağlam penceresi vardır ve başka hiçbir şeyi yoktur. Bu pencerenin ötesindeki her şey, siz taşımadıkça gider.
Bu yüzden, kendinize ve tuttuğunuz dosyalara, yalnızca kısa vadeli belleğe sahip ajanlar için uzun vadeli bellek olarak davranın.
İki alışkanlık önemlidir.
İlk olarak, durumu özetleyerek değil, referansla iletin:
- Bir bağlam dolduğunda, tembel çözüm onu özetlemektir. Özetler kayıplıdır ve daha sonra ihtiyaç duyacağınız detayı atar.
- Bunun yerine, ajanları yeniden okuyabilecekleri dosyalara, görev kayıtlarına ve önceki çıktılara yönlendirin. Hiçbir önemli şey sessizce atılmaz.
İkinci olarak, kalıcı belleği ajanın dışında tutun:
- Durumları olan bir görev dosyası.
- Devam eden bir ilerleme günlüğü.
- Taahhüt geçmişi.
- Desenleri ve tuzakları toplayan uzun vadeli bir not dosyası.
Tasarlarken, ajanlarınızın günlerce çalışacağını varsayın, çünkü iyi sıkıştırmayla çalışacaklardır.
Modeller henüz kendileri hakkında bunu bilmiyor. Token harcamak ölümcülmüş gibi, her şeyi kısa bir bütçe içinde çözme eğilimi taşırlar. İskele yapınız, bağlamı kaybetmeden uzun süre çalışmalarını sağlayan şeydir.
Topoloji: kaç ajan ve hangi şekilde
Daha fazla ajan daha fazla çıktı anlamına gelmez. Bir noktadan sonra daha azdır, çünkü koordinasyon ücretsiz değildir ve eklediğiniz her ajanla birikir.
Önemli olan kural, şekli işe uydurmaktır:
- Sıralı, bağımlı akıl yürütme daha az ajan ister, bazen bir tane. Tek bir düşünce zincirini bölmek, akıl yürütmeyi parçalar ve sonucu bozar.
- Bağımsız, paralel iş, genişlemeyi istemenizi gerektirir. Düz topoloji, temiz dosya sahipliği. Paralelliğin karşılığını verdiği yer burasıdır.
- Koordineli bir ekip, üç ila beş işçi ister. Token maliyeti boyutla kabaca doğrusal olarak ölçeklenir. Koordinasyon maliyeti daha kötü ölçeklenir. Üç odaklanmış işçi, beş dağınık olandan daha iyidir.
Peki, herhangi biri yüzlercesini nasıl çalıştırır? Kendi kendisiyle tartışan dev bir sohbet olarak değil.
Onları derinlik ve bağımsızlık olarak çalıştırırlar:
- Gerçekten konuştuğunuz birkaç ajan, her biri koordine olması gerekmeyen sınırlı alt görevlere aşağı doğru yetki devreder.
- Kendi işlerini yapan ve yukarı rapor eden bağımsız döngü sürüleri.
Ölçek, yetki devri derinliği ve bağımsızlıktan gelir. Asla tek bir iş parçacığını genişletmekten değil.
Kontrol dosyası: orchestration.md
Muhtemelen ajanlara deponuzda nasıl kod yazılacağını söyleyen bir dosyanız vardır. Stil, tuzaklar, mimari. Saklayın.
Ancak orkestrasyon için yanlış soruyu yanıtlar.
orchestration.md dosyası farklı bir soruyu yanıtlar. Burada iş nasıl yürütülmelidir?
İnsan tarafından yazılmış, şunları kapsayan bir sözleşmedir:
- hangi görev için hangi modun kullanılacağı
- hangi model katmanının nereye gideceği
- korkulukların ne olduğu
- ne zaman bir insana yükseltileceği
Her ajan, her oturumun başında onu okur ve yaklaşımını kendi kendine seçmek için kullanır.
Bu, depodaki en yüksek kaldıraçlı dosyadır. Mod seçim kararını, her oturumda tutarsız bir şekilde yeniden aldığınız kafanızdan, filonun takip ettiği bir şartnameye taşır.
Kısa bir versiyon şöyle görünür:
1# orchestration.md. İş burada NASIL yürütülür. İnsan tarafından düzenlenmiştir. Ajanlar düzenlememelidir.23Modu seçin:4- Hedef döngüsü (denetimli): bulanık veya tasarım işi. Tamamlama kontrolünü tanımlayın.5- Doğrulama döngüsü: deterministik kapı. Her zaman iterasyonları ve maliyeti sınırlayın.6- İnşa artı yargıç: işçi inşa eder, farklı aileden yargıç onaylar.7- Filo (üç ila beş): birbirine bağlı alt görevler, izole çalışma ağaçları, eş mesajlaşması.8- Sıra ve sıfırlama: birçok küçük atomik görev, her seferinde taze bağlam.9- Dinamik iş akışı: bilinen desen, nesnel kapı, geniş ve tekrarlı. Kodda koordinasyon, gözetimsiz.1011Modelleri patlama yarıçapına göre yönlendirin:12- Planlama ve mimari: her zaman üst katman.13- İnşa, dar şartname: orta katman, paralel, testlerle doğrulayın.14- İnşa, gevşek şartname: üst katman, çünkü boşluk doldurma akıl yürütmedir.15- İnceleme ve yargıç: farklı bir aile. Asla uygulayıcının modeli olmasın.16- Gezinme, arama, özetleme: en ucuz. Birleştirilebilir çıktıyı optimize edin, çağrı fiyatını değil.1718Korkuluklar:19- Ajan başına token bütçesi. %85'e yaklaştığında otomatik duraklama. 3 sıkışmış denemeden sonra öldür ve yeniden ata.20- Bir saatten uzun herhangi bir çalıştırmanın ayrı bir yargıcı olmalıdır. İşçiler asla kendi bitirdiklerini rapor etmez.21- Hipotez kurmadan önce kodu okuyun. İlk düzenlemeden önce yazılı olarak plan yapın.
Dosyayı yöneten iki kural:
- Kısa tutun.
- Bir ajanın asla onu yeniden yazmasına izin vermeyin.
Değer, her satırı bir insanın düzenlemiş olmasıdır.
Sizin olarak kalan şey
Orkestrasyon, ajanları yürütmede güvenilir kılar. Sorunu seçmez ve iyinin neye benzediğini bilmez.
Üç şey, kalıcı olarak sizin tarafınızda kalır.
İlk olarak, görevleri devredin, yargıyı değil:
- Ajanlara net geçer/kalır kriterleri olan kapsamlı iş verin. Standart kod, migrasyonlar, test iskeleleri ve elle denemeye asla vaktinizin olmayacağı yaklaşımlar.
- Mimarileri, ne inşa edilmeyeceğine dair kararı ve tam bağlam incelemesini kendinize saklayın.
- Ajanlar, vasat mimarilerden oluşan bir okyanusu emdiler ve sahip olmaması gereken bir projeye mutlu bir şekilde ağır desenleri kargoculuk yapacaklar. Hayır demek, sahip olmadıkları bir özelliktir.
İkinci olarak, şartnameniz kaldıraçtır.
Bir filoya yayıldığınızda, belirsiz düşünce sizi sadece yavaşlatmaz. Çoğalır.
Belirsiz bir gereksinim, her biri kendi yönünde yanlış giden düzinelerce paralel çalışma boyunca yayılır.
Kesin bir şartname ise her yerde kesin uygulamalara dönüşür.
Bu yüzden güçlü bir mühendis bu araçlardan daha az değil, daha fazla verim alır. Yazma işi otomatikleşti. Anlayış güçlendi.
Zamanınızın çoğunu plan modunda, herkesin üzerinde anlaştığı yazılı bir plan üzerinde, ilk düzenlemeden önce geçirin.
Üçüncü olarak, kasıtlı olarak az kaynak ayırın:
- Dört ajanlık bir işe iki ajan atayın. Kısıtlama, istediğiniz davranışı zorlar.
- İşleri elle yapmak yerine döngüler inşa edersiniz ve bir dahaki sefere bu iş zaten otomatikleşmiş olur.
- Bütçenizi manuel çabadan token'lara kaydırın. Başlangıçta yüksek yatırım, sonrasında sıfıra yakın marjinal maliyet.
Bunu yapan ekipler bileşik getiri sağlar. Yapmayanlar her seferinde tam bedel öder.
Artık yazılımı yazmıyorsunuz. Onu yazan fabrikayı inşa ediyorsunuz.
Bir fabrikanın kesin girdilere, her istasyonda kalite kontrolüne ve ürünün ne olması gerektiğini bilen bir sahibine ihtiyacı vardır.
Buradan başlayın
Pazartesi günü yüz ajan çalıştırmaya kalkmayın. Merdiveni tırmanın:
- Doğrulanabilir bir bitiş çizgisi olan bir görevde tek bir hedef döngüsü çalıştırın. İyi bir tamamlama kontrolünün nasıl hissettirdiğini öğrenin.
- Bir saatten uzun süren her şey için farklı bir model ailesinden bir yargıç ekleyin. Kendi kendine bildirilen tamamlamayı yasaklayın.
- Orchestration.md dosyanızı yazın. Ajanlarınıza önce onu okumalarını söyleyin. Sizin için modlar seçmeye başladıklarını izleyin.
- Dikkatlice yayılın. Paralelleştirilebilir bir görev, üç ila beş işçi, izole çalışma ağaçları, token bütçeleri.
- Modellerinizi yönlendirin. Planlama ve incelemede üst kademe, sınırlı yapı ve tekrarlı işlerde daha ucuz. Birleştirilebilir çıktıyı ölçün.
- Bir desen doğrulandıktan ve nesnel olarak kontrol edilebilir hale geldikten sonra, gözetimsiz çalışmasına izin verin. Birikmiş işleri gece boyunca tüketin.
Sistemin sadece yön olarak doğru olması gerekir, mükemmel olması değil:
- Kontrol dosyası, filoya kendi kendini yönlendirmesi için yeterli yapıyı sağlar.
- Yargıç uç durumları yakalar.
- Hatırlatma döngüsü belleği yönetir.
- Zevkiniz, devredilmeyen kararları yönetir.
Prompt yazma geçen yılın becerisiydi. Şimdi bu beceri.
Buradaki her sistemin çalıştırılabilir versiyonları (hedef döngüsü, yargıç döngüsü, filo başlatıcı, mesaj yolu, hatırlatma bekçisi ve model yönlendirici) beraberindeki kitte bulunur. Bir değişkeni ajan CLI'nize ayarlayın ve başlayın.
Sorumluluk Reddi
Bu makale, yazarın Claude Code oturumları ve codex oturumları kullanılarak yazılmıştır.
Dilbilgisi ve biçimlendirme sorunları için yazar ve Kimi K2.6 modeli tarafından düzenlenmiştir.





