50. Alt Ajanlar
Alt ajanlar, mevcut bir ajan çalışmasından başlatılan arka plan ajan çalıştırmalarıdır. Kendi oturumlarında (agent:<agentId>:subagent:<uuid>) çalışırlar ve tamamlandıklarında sonucu talepte bulunan sohbet kanalına duyururlar.
Eğik çizgi komutu
Geçerli oturum için alt ajan çalışmalarını incelemek veya kontrol etmek üzere/subagents kullanın:
/subagents list/subagents kill <id|#|all>/subagents log <id|#> [limit] [tools]/subagents info <id|#>/subagents send <id|#> <message>
/subagents info, çalışma meta verilerini gösterir (durum, zaman damgaları, oturum kimliği, döküm yolu, temizleme).
Temel amaçlar:
- Ana çalışmayı engellemeden “araştırma / uzun görev / yavaş araç” işlerini paralelleştirmek.
- Alt ajanları varsayılan olarak izole tutmak (oturum ayrımı + isteğe bağlı sandbox).
- Araç yüzeyini kötüye kullanıma kapalı tutmak: alt ajanlar varsayılan olarak oturum araçlarını almaz.
- Orkestratör desenleri için yapılandırılabilir iç içe derinlik desteği.
agents.defaults.subagents.model veya ajan başına geçersiz kılmalar ile yapılandırabilirsiniz.
Araç
sessions_spawn kullanın:
- Bir alt ajan çalıştırması başlatır (
deliver: false, global lane:subagent) - Ardından bir duyuru adımı çalıştırır ve duyuru yanıtını talepte bulunan sohbet kanalına gönderir
- Varsayılan model:
agents.defaults.subagents.model(veya ajan başınaagents.list[].subagents.model) ayarlamadığınız sürece çağıranı devralır; açık birsessions_spawn.modelher zaman önceliklidir. - Varsayılan düşünme:
agents.defaults.subagents.thinking(veya ajan başınaagents.list[].subagents.thinking) ayarlamadığınız sürece çağıranı devralır; açık birsessions_spawn.thinkingher zaman önceliklidir.
task(zorunlu)label?(isteğe bağlı)agentId?(isteğe bağlı; izin verildiyse başka bir ajan kimliği altında başlatır)model?(isteğe bağlı; alt ajan modelini geçersiz kılar; geçersiz değerler atlanır ve araç sonucunda bir uyarıyla birlikte varsayılan model kullanılır)thinking?(isteğe bağlı; alt ajan çalıştırması için düşünme seviyesini geçersiz kılar)runTimeoutSeconds?(varsayılan0; ayarlandığında alt ajan çalıştırması N saniye sonra iptal edilir)cleanup?(delete|keep, varsayılankeep)
agents.list[].subagents.allowAgents:agentIdile hedeflenebilecek ajan kimliklerinin listesi (["*"]herhangi birine izin verir). Varsayılan: yalnızca talepte bulunan ajan.
sessions_spawniçin şu anda hangi ajan kimliklerine izin verildiğini görmek üzereagents_listkullanın.
- Alt ajan oturumları
agents.defaults.subagents.archiveAfterMinutessüresi sonunda otomatik olarak arşivlenir (varsayılan: 60). - Arşivleme
sessions.deletekullanır ve dökümü*.deleted.<timestamp>olarak yeniden adlandırır (aynı klasörde). cleanup: "delete"duyurudan hemen sonra arşivler (döküm yeniden adlandırılarak korunur).- Otomatik arşivleme en iyi çaba esaslıdır; gateway yeniden başlatılırsa bekleyen zamanlayıcılar kaybolur.
runTimeoutSecondsotomatik arşivleme yapmaz; yalnızca çalıştırmayı durdurur. Oturum, otomatik arşivleme gerçekleşene kadar kalır.- Otomatik arşivleme hem derinlik-1 hem de derinlik-2 oturumlara eşit şekilde uygulanır.
İç İçe Alt Ajanlar
Varsayılan olarak alt ajanlar kendi alt ajanlarını başlatamaz (maxSpawnDepth: 1). maxSpawnDepth: 2 ayarlayarak bir seviye iç içe çalışmayı etkinleştirebilirsiniz; bu da orkestratör desenini mümkün kılar: ana → orkestratör alt ajan → çalışan alt-alt ajanlar.
Nasıl etkinleştirilir
Derinlik seviyeleri
| Depth | Session key shape | Rol | Başlatabilir mi? |
|---|---|---|---|
| 0 | agent:<id>:main | Ana ajan | Her zaman |
| 1 | agent:<id>:subagent:<uuid> | Alt ajan (derinlik 2 izinliyse orkestratör) | Yalnızca maxSpawnDepth >= 2 |
| 2 | agent:<id>:subagent:<uuid>:subagent:<uuid> | Alt-alt ajan (çalışan) | Asla |
Duyuru zinciri
Sonuçlar zincir boyunca yukarı akar:- Derinlik-2 çalışan tamamlar → ebeveynine (derinlik-1 orkestratör) duyurur
- Derinlik-1 orkestratör duyuruyu alır, sonuçları sentezler, tamamlar → ana ajana duyurur
- Ana ajan duyuruyu alır ve kullanıcıya iletir
Derinliğe göre araç politikası
- Derinlik 1 (orkestratör,
maxSpawnDepth >= 2iken): Çocuklarını yönetebilmesi içinsessions_spawn,subagents,sessions_list,sessions_historyalır. Diğer oturum/sistem araçları yine reddedilir. - Derinlik 1 (çalışan,
maxSpawnDepth == 1iken): Oturum araçları yoktur (mevcut varsayılan davranış). - Derinlik 2 (çalışan): Oturum araçları yoktur — derinlik 2’de
sessions_spawnher zaman reddedilir. Daha fazla çocuk başlatamaz.
Ajan başına başlatma limiti
Her ajan oturumu (herhangi bir derinlikte) aynı anda en fazlamaxChildrenPerAgent (varsayılan: 5) aktif çocuğa sahip olabilir. Bu, tek bir orkestratörden kontrolsüz fan-out oluşmasını engeller.
Zincirleme durdurma
Bir derinlik-1 orkestratörü durdurmak, tüm derinlik-2 çocuklarını otomatik olarak durdurur:- Ana sohbette
/stop, tüm derinlik-1 ajanları durdurur ve onların derinlik-2 çocuklarına zincirleme etki eder. /subagents kill <id>, belirli bir alt ajanı durdurur ve çocuklarına zincirleme etki eder./subagents kill all, talepte bulunan için tüm alt ajanları durdurur ve zincirleme etki eder.
Kimlik Doğrulama
Alt ajan kimlik doğrulaması oturum türüne göre değil, ajan kimliğine göre çözülür:- Alt ajan oturum anahtarı
agent:<agentId>:subagent:<uuid>şeklindedir. - Kimlik doğrulama deposu ilgili ajanın
agentDirdizininden yüklenir. - Ana ajanın kimlik doğrulama profilleri yedek olarak birleştirilir; çakışmalarda ajan profilleri önceliklidir.
Duyuru
Alt ajanlar bir duyuru adımı aracılığıyla geri bildirim yapar:- Duyuru adımı alt ajan oturumu içinde çalışır (talepte bulunan oturumda değil).
- Alt ajan tam olarak
ANNOUNCE_SKIPyanıtını verirse hiçbir şey gönderilmez. - Aksi takdirde duyuru yanıtı, talepte bulunan sohbet kanalına bir takip
agentçağrısı (deliver=true) ile gönderilir. - Duyuru yanıtları, mevcut olduğunda iş parçacığı/konu yönlendirmesini korur (Slack threads, Telegram topics, Matrix threads).
- Duyuru mesajları sabit bir şablona normalize edilir:
Status:çalışma sonucundan türetilir (success,error,timeoutveyaunknown).Result:duyuru adımındaki özet içerik (yoksa(not available)).Notes:hata ayrıntıları ve diğer yararlı bağlam.
Status, model çıktısından çıkarılmaz; çalışma zamanı sinyallerinden gelir.
- Çalışma süresi (ör.
runtime 5m12s) - Token kullanımı (input/output/total)
- Model fiyatlandırması yapılandırılmışsa tahmini maliyet (
models.providers.*.models[].cost) sessionKey,sessionIdve döküm yolu (ana ajanınsessions_historyile geçmişi alabilmesi veya dosyayı diskten inceleyebilmesi için)
Araç Politikası (alt ajan araçları)
Varsayılan olarak alt ajanlar oturum araçları ve sistem araçları hariç tüm araçları alır:sessions_listsessions_historysessions_sendsessions_spawn
maxSpawnDepth >= 2 olduğunda, derinlik-1 orkestratör alt ajanlar ayrıca çocuklarını yönetebilmek için sessions_spawn, subagents, sessions_list ve sessions_history alır.
Yapılandırma ile geçersiz kılma:
Eşzamanlılık
Alt ajanlar ayrılmış bir süreç içi kuyruk hattı kullanır:- Hat adı:
subagent - Eşzamanlılık:
agents.defaults.subagents.maxConcurrent(varsayılan8)
Durdurma
- Talepte bulunan sohbette
/stopgöndermek, talep eden oturumu iptal eder ve ondan başlatılmış tüm aktif alt ajan çalışmalarını durdurur; iç içe çocuklara zincirleme etki eder. /subagents kill <id>, belirli bir alt ajanı durdurur ve çocuklarına zincirleme etki eder.
Sınırlamalar
- Alt ajan duyurusu en iyi çaba esaslıdır. Gateway yeniden başlatılırsa bekleyen “geri duyuru” işleri kaybolur.
- Alt ajanlar aynı gateway süreci kaynaklarını paylaşır;
maxConcurrentbir güvenlik supabı olarak düşünülmelidir. sessions_spawnher zaman engelleyici değildir: hemen{ status: "accepted", runId, childSessionKey }döner.- Alt ajan bağlamı yalnızca
AGENTS.md+TOOLS.mdenjekte eder (SOUL.md,IDENTITY.md,USER.md,HEARTBEAT.mdveyaBOOTSTRAP.mdyoktur). - Maksimum iç içe derinlik 5’tir (
maxSpawnDeptharalığı: 1–5). Çoğu kullanım durumu için derinlik 2 önerilir. maxChildrenPerAgent, oturum başına aktif çocuk sayısını sınırlar (varsayılan: 5, aralık: 1–20).
Ayrıca Bakın
- Oturum Araçları —
sessions_spawnve diğer oturum araçları hakkında ayrıntılar - Çok Ajanlı Sandbox ve Araçlar — ajan başına araç kısıtlamaları ve sandboxing
- Yapılandırma —
agents.defaults.subagentsreferansı - Kuyruk —
subagenthattının nasıl çalıştığı