Ana içeriğe geç

Orkestratör Bir Dağıtıcıdır: Ajan Sürüleri Neden Muhakemede Değil Kuyruklamada Başarısız Olur

Model muhakemesine yüklenen çok ajanlı arızaların çoğu aslında zamanlama arızasıdır. Sınırsız fan-out, backpressure yokluğu ve admission control eksikliği bir sürüyü retry fırtınasına çevirir.

A thematic Star Wars droids display at Disney's Hollywood Studios in Bay Lake, Florida.

Belirti ve yanlış teşhis

Bir sürü olayı nadiren zamanlama problemi olarak etiketlenmiş halde gelir. Muhakeme problemi olarak gelir. Bir ajan döngüye girer, iki ajan birbiriyle çelişir, üç ajan hafifçe farklı prompt'lardan aynı artefaktı üretir ve postmortem modele doğru kayar: planlayıcı fazla belirsizdi, alt ajan talimatlarını yanlış anladı, eleştirmen yeterince eleştirel değildi.

Trace incelemesi genellikle farklı bir hikâye anlatır. Döngü bir kuyruğun aşağısındadır. Tek bir tool call — yavaş bir arama, rate limit'e takılan bir API, felsefi davranmaya karar vermiş bir veritabanı — çağıranın timeout süresinden uzun sürer. Çağıran retry yapar. Retry, aynı iş biriminin yeniden sahiplenilmesi değil de yeni bir görev olduğu için tekrar fan-out yapar. Aynı upstream sonucu bekleyen kardeş ajanlar da artık timeout'a düşer ve onlar da retry yapar. Her retry aynı context'i taşır, dolayısıyla olayın token maliyeti süperdoğrusal büyürken gerçek iş hiç büyümez.

Bu trace'lerdeki muhakeme kalitesi çoğu zaman yeterlidir. Ajanlar makul ara çıktı üretmektedir; sadece bunu birkaç kez, yanlış sırayla, bayat varsayımlara karşı üretmektedirler. Eksik olan daha iyi bir planlayıcı değildir. Eksik olan, yükü atabilen veya erteleyebilen bir mekanizmadır.

Bu ayrım önemlidir çünkü iki teşhis zıt düzeltmeleri ima eder. Sorun muhakemeyse düzeltme prompt çalışması ve model seçimidir. Sorun kuyruklamaysa düzeltme mimaridir: admission control, backpressure, idempotency ve kendi sınırlarını bilen bir zamanlayıcı.

İlk tasarım kararı olarak admission control

Bir görev grafiğindeki her fan-out kenarı iki beyan edilmiş sayıya ihtiyaç duyar: maksimum genişlik ve maksimum derinlik. Genişlik, aynı anda kaç çocuğun uçuşta olabileceğidir. Derinlik, grafiğin bir sonuç döndürmesi gerekmeden önce kaç nesil delegasyona izin verildiğidir. Her ikisi de tasarım zamanı sabitleridir, grafik spesifikasyonunda beyan edilir, üretimde faturayı izleyerek keşfedilmez.

Kullanışlı bir admission kuralı birleştiricidir: bir görev yalnızca hem bir worker slotu hem de bir bütçe dilimi mevcut olduğunda kabul edilir. Worker slotları eşzamanlılığı sınırlar. Bütçe dilimleri maliyeti ve duvar saati maruziyetini sınırlar. İkisinden biri tükendiyse görev başlatılmaz. Bir deadline ile kuyruğa alınır veya kaydedilmiş bir gerekçeyle düşürülür.

A close-up view of a DJ mixer, showcasing its knobs and controls.

Düşürmek meşru bir sonuçtur. İşi reddedemeyen bir dağıtıcı dağıtıcı değildir; bir hunidir. Sessiz sınırsız genişleme arıza modudur ve tam da sistemde hiçbir şeyin hayır deme izni olmadığı için sessizdir.

Somut bir mekanizma: orkestratörün durumunu bir konuşma yerine bir defter olarak temsil edin. Kabul edilen her görev bir lease tutar — (task_id, worker_slot, budget_slice, deadline). Lease tamamlanmada, açık arızada veya süre bitiminde serbest bırakılır. Zamanlayıcının her tick'teki işi, kuyruktaki görevleri boş lease'lerle eşleştirmektir. Bu gösterişsizdir ve oyunun tamamı budur.

Ajanlar arasında backpressure

Alt ajanlar işi emip geç başarısız olmak yerine "şimdi değil" sinyali verebilmelidir. Geç başarısızlık pahalıdır: iş zaten context, token ve zaman tüketmiştir ve arıza, ebeveynin ucuza kurtarmak için gereken bilgiyi kaybettiği bir noktada ortaya çıkar.

İki mekanizma erken reddi güvenli kılar.

Birincisi, visibility timeout'lu paylaşılan bir kuyruk. Bir görev, sınırlı bir süre boyunca tam olarak bir worker tarafından sahiplenilir. Worker bu süre içinde tamamlamaz veya yenilemezse sahiplik sona erer ve görev yeniden görünür hale gelir. Bu, iki ajanın aynı iş birimini sahiplenmesini önler; birbiriyle çelişiyor gibi görünen sürülerdeki yinelenen çıktının en yaygın kaynağı budur. Aynı fikirde değillerdir; ikisi de aynı işi yapmaktadır.

İkincisi, yan etkisi olan her işlemde idempotency anahtarları. Bir retry orijinal denemeyle aynı anahtarı taşıdığında, downstream sistem iki kez yürütmek yerine tekilleştirebilir. Backpressure'ın agresif olabilmesini sağlayan budur. Idempotency olmadan agresif ret ve retry tehlikelidir, çünkü bir retry çift yazabilir. Idempotency ile işi reddetmek ucuz ve güvenlidir ve sistem yükü emip çökmek yerine erken atmaya göre ayarlanabilir.

Ödünleşim gerçektir: idempotency, grafikteki her tool'dan ve her harici servisten işbirliği gerektirir ve bazıları bunu sağlamayacaktır. Sağlamadıkları yerde dağıtıcı ya o tool'a erişimi serileştirmeli ya da at-most-once semantiğini kabul edip boşlukları açıkça ele almalıdır. Sorun yokmuş gibi davranmak, bir sürünün yalnızca yük altında ortaya çıkan bir hata sınıfı ed

Görev türü başına dört ölçüm teşhis alanının çoğunu kapsar:

Close-up of an automated can filling machine in a beverage production line.

  • Kuyruk derinliği — ne kadar işin beklediği, zaman içinde örneklenmiş.
  • Bekleme süresi — admission gecikmesi, kuyruğa alınmadan lease verilmesine kadar.
  • Sahiplikten tamamlanmaya süre — yürütme gecikmesi, bekleme süresinden ayrılmış ki ikisi ayrı ayrı atfedilebilsin.
  • Retry amplifikasyon faktörü — toplam denemeler bölü farklı iş birimleri.

Amplifikasyon faktörü tek başına en kullanışlı sinyaldir. Bire yakın durduğunda sistem her iş parçasını kabaca bir kez yapmaktadır. Yükseldiğinde sürü kapasitesini zaten sahip olduğu sonuçları yeniden türetmeye harcamaktadır ve hiçbir prompt iyileştirmesi bunu düşürmez.

Bir koşu, mesaj listesi olarak değil, admission'lardan oluşan bir zaman çizelgesi olarak yeniden kurulabilmelidir — görev kuyruğa alındı, lease verildi, lease yenilendi, lease süresi doldu, görev tamamlandı, görev dead-letter'a düştü. Mesaj logları ajanların ne söylediğini anlatır. Admission zaman çizelgeleri sistemin ne yaptığını anlatır ve bir olayı açıklayan yalnızca ikincisidir.

Ajan sayısına değil, amplifikasyon faktörüne alarm kurun. Ajan sayısı, sağlıklı bir patlama sırasında da kademeli bir arıza sırasında da düzgün biçimde yükselen bir gösteriş metriğidir. Amplifikasyon faktörü ikisini ayırt eder.

Bir tasarım kuralı

Orkestratörü üç bileşenli bir dağıtıcı olarak ele alın: bir zamanlayıcı, bir bütçe defteri ve bir dead-letter yolu. Zamanlayıcı admission'a sahiptir. Defter maliyet ve eşzamanlılık muhasebesine sahiptir. Dead-letter yolu, retry'larını tüketen her şeye sahiptir; böylece arızalar sessizce sonsuza dek yeniden kuyruğa alınmak yerine görünür ve incelenebilir olur.

Planlayıcı çıktısı, serbest biçimli delegasyon değil, beyan edilmiş genişlik ve derinliklere sahip bir görev grafiği olmalıdır. "Pazarı araştır ve bulguları sentezle" gibi düz yazı üreten bir planlayıcı bir grafik değil bir dilek üretmiştir. Sınırlı fan-out, açık bağımlılıklar ve düğüm başına bütçe tavanları olan düğümler üreten bir planlayıcı, bir dağıtıcının yürütebileceği ve bir bütçe defterinin uygulayabileceği bir şey üretmiştir.

Sürüyü diyaloğunun zarafetiyle değil, yük altındaki throughput ve tamamlanma ile ölçün. Diyalog kalitesi, demolar'da başarıyla korelasyon gösteren ve üretimde ondan kopan bir vekildir. Sabit bir eşzamanlılık bütçesi altında throughput, sabit bir deadline'da tamamlanma oranı ve amplifikasyon faktörü, sistemin gerçek trafikle temasında hayatta kalıp kalmayacağını öngören sayılardır.

Rahatsız edici çıkarım şudur: vasat muhakemeye ve mükemmel zamanlamaya sahip bir sürü, mükemmel muhakemeye ve admission control'süz bir sürüden daha iyi performans gösterir, çünkü ikincisi kapasitesini zaten yaptığı işi yeniden yapmaya harcar. Zamanlama sistemin ilgi çekici olmayan parçası değildir. İlgi çekici parçanın çalışmasına izin verilip verilmeyeceğini belirleyen parçadır.

İlgili okumalar

Bunun yanıtladığı sorular

Why are multi-agent failures usually misdiagnosed as reasoning errors?

Incident reports describe symptoms that look cognitive — looping, contradiction, duplicated work — so the first hypothesis is prompt or model quality. Trace inspection usually shows those symptoms are downstream of a queue: a slow tool call causes siblings to time out, retry, and re-enter the same work. The reasoning is often adequate; the system simply has no mechanism to shed or defer load.

What does admission control mean for an agent swarm?

Every fan-out edge declares a maximum width and a maximum depth at design time. A task is admitted only when a worker slot and a budget slice are both available; otherwise it is queued with a deadline or dropped with a recorded reason. Dropping is a legitimate outcome. Silent unbounded expansion is not.

How does backpressure work between agents?

Sub-agents signal 'not now' instead of absorbing work and failing late. A shared queue with visibility timeouts ensures only one worker claims a unit of work at a time, and idempotency keys make retries safe, which is what allows refusal to be aggressive rather than risky.

What should be instrumented in a multi-agent system?

Queue depth, wait time, claim-to-completion time, and retry amplification factor per task type. A run should be reconstructable as a timeline of admissions rather than a list of messages. Alert on amplification factor, not on agent count.

Should the orchestrator be a planner or a dispatcher?

A dispatcher with a scheduler, a budget ledger, and a dead-letter path. Planner output should be a task graph with declared widths and depths, not free-form delegation. The swarm should be measured on throughput and completion under load, not on the elegance of its dialogue.