Sub-agentlar
Sub-agentlar — mavjud agent ishga tushirilishidan yaratiladigan fon (background) agent ishga tushirilishlaridir. Ular o‘z sessiyasida ishlaydi (agent:<agentId>:subagent:<uuid>) va yakunlangach, natijasini so‘rovchi chat kanaliga e’lon qiladi.
Slash buyrug‘i
Joriy sessiya uchun sub-agent ishga tushirilishlarini ko‘rish yoki boshqarish uchun/subagents dan foydalaning:
/subagents list/subagents kill <id|#|all>/subagents log <id|#> [limit] [tools]/subagents info <id|#>/subagents send <id|#> <message>
- Asosiy ishga tushirilishni to‘smasdan “tadqiqot / uzoq vazifa / sekin vosita” ishlarini parallellashtirish.
- Sub-agentlarni sukut bo‘yicha izolyatsiya qilingan holda saqlash (sessiya ajratilishi + ixtiyoriy sandbox).
- Vositalar yuzasini noto‘g‘ri ishlatishga yo‘l qo‘ymaslik: sub-agentlar sukut bo‘yicha sessiya vositalariga ega bo‘lmaydi.
- Orkestrator andozalari uchun sozlanadigan ichma-ichlik (nesting) chuqurligini qo‘llab-quvvatlash.
agents.defaults.subagents.model yoki har bir agent uchun alohida sozlamalar orqali sozlashingiz mumkin.
Vosita
sessions_spawn dan foydalaning:
- Sub-agent ishga tushirilishini boshlaydi (
deliver: false, global yo‘lak:subagent) - So‘ng announce bosqichini bajaradi va announce javobini so‘rovchi chat kanaliga yuboradi
- Sukut bo‘yicha model: chaqiruvchidan meros oladi, agar
agents.defaults.subagents.model(yoki har bir agent uchunagents.list[].subagents.model) ni sozlamagan bo‘lsangiz; aniq ko‘rsatilgansessions_spawn.modelustunlik qiladi. - Sukut bo‘yicha thinking: chaqiruvchidan meros oladi, agar
agents.defaults.subagents.thinking(yoki har bir agent uchunagents.list[].subagents.thinking) ni sozlamagan bo‘lsangiz; aniq ko‘rsatilgansessions_spawn.thinkingustunlik qiladi.
task(majburiy)label?(ixtiyoriy)agentId?(ixtiyoriy; ruxsat berilgan bo‘lsa, boshqa agent id ostida ishga tushirish)model?(ixtiyoriy; sub-agent modeli ustidan yozadi; noto‘g‘ri qiymatlar e’tiborsiz qoldiriladi va sub-agent sukut bo‘yicha modelda ishga tushadi, vosita natijasida ogohlantirish ko‘rsatiladi)thinking?(ixtiyoriy; sub-agent ishga tushirilishi uchun thinking darajasini ustidan yozadi)runTimeoutSeconds?(sukut bo‘yicha0; o‘rnatilsa, sub-agent ishga tushirilishi N soniyadan keyin to‘xtatiladi)cleanup?(delete|keep, sukut bo‘yichakeep)
agents.list[].subagents.allowAgents:agentIdorqali nishonga olinishi mumkin bo‘lgan agent id lar ro‘yxati (["*"]— istalganiga ruxsat berish). Sukut bo‘yicha: faqat so‘rovchi agent.
sessions_spawnuchun hozir ruxsat etilgan agent id larni ko‘rish uchunagents_listdan foydalaning.
- Sub-agent sessiyalari
agents.defaults.subagents.archiveAfterMinutesdan keyin (sukut bo‘yicha: 60) avtomatik arxivlanadi. - Arxivlash
sessions.deletedan foydalanadi va transkript nomini*.deleted.<timestamp>ga o‘zgartiradi` (xuddi shu papka). cleanup: "delete"e’lon qilingandan so‘ng darhol arxivlaydi (transkript nomini o‘zgartirish orqali baribir saqlanadi).- Avto-arxivlash best-effort asosida ishlaydi; agar gateway qayta ishga tushsa, kutilayotgan taymerlar yo‘qoladi.
runTimeoutSecondsavto-arxivlamaydi; u faqat jarayonni to‘xtatadi. Sessiya avto-arxivlashgacha saqlanib qoladi.- Avto-arxivlash depth-1 va depth-2 sessiyalariga bir xil qo‘llaniladi.
Ichki Sub-Agentlar
Standart holatda, sub-agentlar o‘z sub-agentlarini yarata olmaydi (maxSpawnDepth: 1). maxSpawnDepth: 2 qilib sozlash orqali bitta ichki darajani yoqishingiz mumkin, bu orchestrator andozasini qo‘llab-quvvatlaydi: main → orchestrator sub-agent → worker sub-sub-agentlar.
Qanday yoqish kerak
Chuqurlik darajalari
| Chuqurlik | Sessiya kaliti shakli | Rol | Yarata oladimi? |
|---|---|---|---|
| 0 | agent:<id>:main | Asosiy agent | Har doim |
| 1 | agent:<id>:subagent:<uuid> | Sub-agent (agar depth 2 ruxsat etilgan bo‘lsa, orchestrator) | Faqat maxSpawnDepth >= 2 bo‘lsa |
| 2 | agent:<id>:subagent:<uuid>:subagent:<uuid> | Sub-sub-agent (yakuniy worker) | Hech qachon |
E’lon zanjiri
Sub-agents use a dedicated queue lane (subagent) separate from the main agent queue, so sub-agent runs don’t block inbound replies.
- Depth-2 worker yakunlaydi → o‘z ota-agentiga (depth-1 orchestrator) e’lon yuboradi
- Depth-1 orchestrator e’lonni qabul qiladi, natijalarni sintez qiladi, yakunlaydi → main ga e’lon yuboradi
- Asosiy agent e’lonni qabul qiladi va foydalanuvchiga yetkazadi
Chuqurlik bo‘yicha tool siyosati
- Depth 1 (orchestrator,
maxSpawnDepth >= 2bo‘lganda): O‘z farzandlarini boshqarishi uchunsessions_spawn,subagents,sessions_list,sessions_historyoladi. Boshqa sessiya/tizim toollari rad etiladi. - Depth 1 (leaf,
maxSpawnDepth == 1bo‘lganda): Sessiya toollari yo‘q (joriy standart xatti-harakat). - Depth 2 (leaf worker): Sessiya toollari yo‘q —
sessions_spawndepth 2 da har doim rad etiladi. Yana farzand agentlar yarata olmaydi.
The sessions_spawn Tool
Har bir agent sessiyasi (istalgan chuqurlikda) bir vaqtning o‘zida ko‘pi bilan maxChildrenPerAgent (standart: 5) ta faol farzandga ega bo‘lishi mumkin. Bu bitta orchestrator’dan nazoratsiz ko‘payib ketishni oldini oladi.
Parameters
Depth-1 orchestrator’ni to‘xtatish uning barcha depth-2 farzandlarini ham avtomatik ravishda to‘xtatadi:- Asosiy chatdagi
/stopbarcha 1-darajali agentlarni to‘xtatadi va ularning 2-darajali farzand agentlariga ham ta’sir qiladi. /subagents kill <id>ma’lum bir sub-agentni to‘xtatadi va uning farzandlariga ham ta’sir qiladi./subagents kill allso‘rov yuboruvchi uchun barcha sub-agentlarni to‘xtatadi va kaskad tarzda ta’sir qiladi.
Autentifikatsiya
Sub-agent auth sessiya turi bo‘yicha emas, balki agent id bo‘yicha hal qilinadi:- Sub-agent sessiya kaliti
agent:<agentId>:subagent:<uuid>ko‘rinishida bo‘ladi. - Auth store o‘sha agentning
agentDirpapkasidan yuklanadi. - Asosiy agentning auth profillari fallback sifatida qo‘shib birlashtiriladi; ziddiyat yuzaga kelganda agent profillari asosiy profillardan ustun bo‘ladi.
E’lon
Sub-agentlar natijani e’lon bosqichi orqali qaytaradi:- E’lon bosqichi sub-agent sessiyasi ichida bajariladi (so‘rovchi sessiyasida emas).
- Agar sub-agent aynan
ANNOUNCE_SKIPdeb javob bersa, hech narsa joylanmaydi. - Aks holda, e’lon javobi so‘rovchi chat kanaliga follow-up
agentchaqiruvi (deliver=true) orqali yuboriladi. - E’lon qilingan javoblar mavjud bo‘lsa, thread/mavzu marshrutlashini saqlab qoladi (Slack thread’lari, Telegram topic’lari, Matrix thread’lari).
- E’lon xabarlari barqaror shablonga keltiriladi:
Status:ishga tushirish natijasidan olinadi (success,error,timeoutyokiunknown).Result:e’lon bosqichidagi qisqacha mazmun (yoki mavjud bo‘lmasa(not available)).Notes:xatolik tafsilotlari va boshqa foydali kontekst.
Statusmodel chiqishidan aniqlanmaydi; u runtime natija signallaridan olinadi.
- Runtime (masalan,
runtime 5m12s) - Token usage (input/output/total)
- Model narxlari sozlangan bo‘lsa, taxminiy xarajat (
models.providers.*.models[].cost) sessionKey,sessionIdva transcript yo‘li (asosiy agentsessions_historyorqali tarixni olishi yoki diskdagi faylni tekshirishi uchun)
Sub-agentlarni boshqarish (/subagents)
Joriy sessiya uchun sub-agent ishga tushirishlarini ko‘rish va boshqarish uchun /subagents slash-buyrug‘idan foydalaning:
sessions_listsessions_historysessions_sendsessions_spawn
1, 2), run id prefiksi, to‘liq sessiya kaliti yoki last orqali murojaat qilishingiz mumkin.
Config orqali o‘zgartirish:
Concurrency
Sub-agentlar alohida in-process queue lane’dan foydalanadi:- Lane nomi:
subagent - Bir vaqtda bajarilish soni:
agents.defaults.subagents.maxConcurrent(standart8)
To‘xtatish
- So‘rovchi chatida
/stopyuborilganda, so‘rovchi sessiyasi bekor qilinadi va undan ishga tushirilgan barcha faol sub-agent jarayonlari, shu jumladan ichki farzandlari bilan birga to‘xtatiladi. /subagents kill <id>ma’lum bir sub-agentni to‘xtatadi va uning farzandlariga ham ta’sir qiladi.
Limitations
- Sub-agent e’loni best-effort asosida amalga oshiriladi. Agar gateway qayta ishga tushsa, kutilayotgan “announce back” ishlari yo‘qoladi.
- Sub-agentlar hali ham bir xil gateway jarayon resurslaridan foydalanadi;
maxConcurrentni xavfsizlik cheklovi sifatida ko‘ring. sessions_spawnhar doim non-blocking: u darhol{ status: "accepted", runId, childSessionKey }qaytaradi.- Sub-agent konteksti faqat
AGENTS.md+TOOLS.mdni qo‘shadi (SOUL.md,IDENTITY.md,USER.md,HEARTBEAT.mdyokiBOOTSTRAP.mdyo‘q). - Maksimal ichki joylashish chuqurligi 5 (
maxSpawnDepthoralig‘i: 1–5). Ko‘pchilik holatlar uchun 2-daraja tavsiya etiladi. maxChildrenPerAgenthar bir sessiya uchun faol childlar sonini cheklaydi (standart: 5, diapazon: 1–20).