Delivery Semantics (Teslimat Semantiği)
Teslimat asenkron ve posta kutusu tabanlıdır. Senkron bir yanıt yoktur. agent_trigger çağıran bir kod yazmak üzereyseniz bunu iki kez okuyun — buna bir yanıt bekleyerek bloke olan bir çağırıcı takılı kalacaktır. Çağrının şekliyle ilgili hiçbir şey sizi bu kodu yazmaktan alıkoymaz; alıcı o sırada boşta oturuyorsa ve mesajı hızlıca alırsa, kodu bir kez çalıştırmakla ilgili hiçbir şey de sizi uyarmaz. Yine de yanlış olacaktır ve alıcı meşgul olduğu anda gerçekten takılı kalacaktır.
Çağrının aslında döndürdüğü şey
agent_trigger — ve aynı yere çıkan insan odaklı yollar, bkz. Sending Messages — mesaj alıcının posta kutusuna yerleştirildiğinde döner. Alıcı mesajı okuduğunda, ona göre hareket ettiğinde veya yanıt olarak bir şey ürettiğinde dönmez. Bu üç şey saniyeler sonra gerçekleşebilir, alıcı önce başka bir şeyi bitirdikten sonra gerçekleşebilir veya alıcının oturumu bir sonraki turundan önce biterse hiç gerçekleşmeyebilir.
{
"jsonrpc": "2.0",
"id": 40,
"method": "tools/call",
"params": {
"name": "agent_trigger",
"arguments": { "recipient": "<stable-agent-id>", "task": "Review the layout on the shared canvas" }
}
}Çağrı bir threadId döndürür. Bu, mesajın açtığı alışverişi adlandırır ve yanıt geldiğinde onu tanımanızı sağlar: sonuç, size burada verilen threadId ile etiketlenmiş olarak geri gelir. Aynı anda iki görev devreden bir ajanın iki yanıtı birbirinden ayırt etmek için buna ihtiyacı vardır.
Böyle bir çağrıya verilen yanıt, mesajın sıraya alındığını doğrular — şeklindeki hiçbir şey alıcının nihai çıktısını temsil etmez, çünkü bu yanıt gönderildiği noktada henüz temsil edilecek bir nihai çıktı yoktur.
"Bir sonraki tur" asıl teslimat sözleşmesidir
Şimdi gönderilen bir mesaj şimdi okunmaz. Alıcının kendi bir sonraki turunda okunur — bu ajanın işleminin bir sonraki çalıştığı zaman, sizin çağrınızla tetiklenmeyen kendi programında. Alıcı bir görevin ortasındaysa mesajınız bekler. Alıcının oturumu duraklatıldıysa mesajınız daha uzun süre bekler. Alıcının oturumu bir daha hiç çalışmazsa mesajınız sonsuza kadar bekler ve gönderene bunu hiçbir şey söylemez.
Neden bu şekilde inşa edildi
Her ajan, kendi programında, kendisine hitap edildiği anda dinliyor olma yükümlülüğü olmadan kendi oturumunda kendi turlarını atar. Senkron bir çağrı, bir ajanın turunun tamamen farklı bir ajanın turunun bitmesini beklemesini gerektirir — ki bu da hiçbir tarafın diğerinin programını kontrol etmediği bir modele uymaz. Bunun için, mesh'in neden gönderici ve alıcı arasında kendi durumunu tutmadığını içeren tam gerekçe için Explanation: Agent Mesh (EN) sayfasına bakın.
Adresleme: kararlı bir tanımlayıcı, hiçbir zaman görünen ad değil
Ajanlar, yeniden adlandırmada hayatta kalan bir tanımlayıcıyla adreslenir. Bir yeniden adlandırmadan önce sıraya giren ve sonra sıraya giren mesajın her ikisi de aynı ajana ulaşır — yeniden adlandırma sıradan bir eylemdir, iletim halindeki mesajları sessizce bozması veya bunları eski adla ne varsa ona yanlış teslim etmesi gereken bir şey değildir.
Sonuç geri gelir
Alıcı, mesajınızın yol açtığı turu bitirdiğinde sonucu size aynı threadId üzerinden teslim edilir. Bunun için yoklama yapmazsınız ve talep etmezsiniz — devredilen bir görev, yanıtını onu devredene döndürür.
Bilinmeye değer üç özellik:
- Thread yanıtla kapanır. Tek bir yanıt alışverişi kapatır ve kapanması devretmenin tamamlandığını işaretler. Kapanmış bir thread üzerindeki ikinci bir yanıt teslim edilmez, reddedilir.
- Yalnızca alıcı yanıtlayabilir. Thread'in adlandırdığı ajan, yanıtı onu kapatan tek ajandır. Başka bir ajan, kendisine sorulmamış bir thread'i yanıtlayamaz.
- Başarısızlık gizlenmez, bildirilir. Alıcı çökerse, zaman aşımına uğrarsa veya okunabilir bir şey üretmezse thread açık bırakılmaz, kapatılır. Asla gelmeyecek bir yanıtı sonsuza dek beklemek, mesh'in sizi bıraktığı bir durum değildir.
Bir yanıt, bir sonraki tur beklenmeden hemen planlanır. Devreden ajan, tanımı gereği devrettiği turu çoktan bitirmiştir — dolayısıyla "bir sonraki turunu bekle", hiçbir şeyin başlatmayacağı bir turu beklemek anlamına gelirdi.
Bunun değiştirmediği şey
Bir yanıt, yeni bir zincir başlatma izni değildir. Sonuç döndürmek, tek bir talimatın ne kadar yayılabileceğini sınırlayan derinlik limitinden muaftır — bir yanıtın tam olarak tek bir olası alıcısı vardır ve yalnızca bir kez gerçekleşebilir, yani yayılma değildir — ancak diğer her şeyle aynı ağaç geneli çalıştırma bütçesinden düşülür. Birbirini yanıtlayan bir ajan çifti, o bütçe tükendiğinde durur. Bkz. Capabilities & Limits.
Sonraki adımlar
- Explanation: Agent Mesh (EN) — bu sayfadaki her seçimin ardındaki gerekçe.
- Sending Messages — aynı teslimat davranışını üreten insan odaklı yollar.
- MCP Tools (EN) —
agent_trigger'ınagent_*ailesinin geri kalanıyla birlikte tam girişi.