Session Tool’lari
Maqsad: agentlar sessionlarni ro‘yxatlay olishi, tarixni ola olishi va boshqa sessionga yubora olishi uchun kichik va suiiste’mol qilish qiyin bo‘lgan tool to‘plami.Tool nomlari
sessions_listsessions_historysessions_sendsessions_spawn
Kalit modeli
- Asosiy to‘g‘ridan-to‘g‘ri chat bucket har doim literal kalit
"main"bo‘ladi (joriy agentning asosiy kalitiga yechiladi). - Guruh chatlari
agent:<agentId>:<channel>:group:<id>yokiagent:<agentId>:<channel>:channel:<id>dan foydalanadi (to‘liq kalitni uzating). - Cron job’lar
cron:<job.id>dan foydalanadi. - Hook’lar aniq belgilab qo‘yilmagan bo‘lsa
hook:<uuid>dan foydalanadi. - Node session’lari aniq belgilab qo‘yilmagan bo‘lsa
node-<nodeId>dan foydalanadi.
global va unknown rezerv qilingan qiymatlar bo‘lib, hech qachon ro‘yxatlanmaydi. Agar session.scope = "global" bo‘lsa, biz uni barcha tool’lar uchun main ga alias qilamiz, shunda chaqiruvchilar hech qachon global ni ko‘rmaydi.
sessions_list
Sessiyalarni qatorlar massivi sifatida roʻyxatlang. Parametrlar:kinds?: string[]filtr:"main" | "group" | "cron" | "hook" | "node" | "other"dan istalganilimit?: numbermaksimal qatorlar soni (standart: serverning standart qiymati, masalan 200 bilan cheklanadi)- Qarang: /concepts/compaction.
messageLimit?: number0 = xabarsiz (standart 0); >0 = oxirgi N ta xabarni qoʻshish
messageLimit > 0har bir sessiya uchunchat.historyni oladi va oxirgi N ta xabarni qoʻshadi.- Roʻyxat chiqishida tool natijalari filtrlanadi; tool xabarlari uchun
sessions_historydan foydalaning. - Sandboxed agent sessiyasida ishga tushirilganda, sessiya tool’lari sukut boʻyicha faqat ishga tushirilganlar uchun koʻrinish rejimida boʻladi (quyiga qarang).
key: session key (string)kind:main | group | cron | hook | node | otherchannel:whatsapp | telegram | discord | signal | imessage | webchat | internal | unknowndisplayName(group display label if available)updatedAt(ms)sessionIdmodel,contextTokens,totalTokensthinkingLevel,verboseLevel,systemSent,abortedLastRunsendPolicy(session override if set)lastChannel,lastTodeliveryContext(normalized{ channel, to, accountId }when available)transcriptPath(best-effort path derived from store dir + sessionId)messages?(only whenmessageLimit > 0)
sessions_history
Fetch transcript for one session. Parametrlar:sessionKey(required; accepts session key orsessionIdfromsessions_list)limit?: numbermax messages (server clamps)includeTools?: boolean(default false)
includeTools=falsefiltersrole: "toolResult"messages.- Returns messages array in the raw transcript format.
- When given a
sessionId, OpenClaw resolves it to the corresponding session key (missing ids error).
sessions_send
Send a message into another session. Parametrlar:sessionKey(required; accepts session key orsessionIdfromsessions_list)message(required)timeoutSeconds?: number(default >0; 0 = fire-and-forget)
timeoutSeconds = 0: enqueue and return{ runId, status: "accepted" }.timeoutSeconds > 0: wait up to N seconds for completion, then return{ runId, status: "ok", reply }.- If wait times out:
{ runId, status: "timeout", error }. Run continues; callsessions_historylater. - If the run fails:
{ runId, status: "error", error }. - Announce delivery runs after the primary run completes and is best-effort;
status: "ok"does not guarantee the announce was delivered. - Waits via gateway
agent.wait(server-side) so reconnects don’t drop the wait. - Agent-to-agent message context is injected for the primary run.
- Sessionlararo xabarlar
message.provenance.kind = "inter_session"bilan saqlanadi, shunda transkript o‘quvchilari marshrutlangan agent ko‘rsatmalarini tashqi foydalanuvchi kirishidan ajrata oladi. - After the primary run completes, OpenClaw runs a reply-back loop:
-
- 2+ raund so‘rovchi va nishon agentlar o‘rtasida navbatma‑navbat almashadi.
-
- Ping‑pongni to‘xtatish uchun aniq
REPLY_SKIPdeb javob bering.
- Ping‑pongni to‘xtatish uchun aniq
-
- Maksimal burilishlar soni
session.agentToAgent.maxPingPongTurns(0–5, standart 5).
- Maksimal burilishlar soni
-
-
- Tsikl tugagach, OpenClaw agentdan‑agentga e’lon qilish bosqichini ishga tushiradi (faqat nishon agent):
-
- Jim qolish uchun aniq
ANNOUNCE_SKIPdeb javob bering.
- Jim qolish uchun aniq
-
- Boshqa har qanday javob nishon kanaliga yuboriladi.
-
- E’lon bosqichi asl so‘rov + 1‑rau ndagi javob + so‘nggi ping‑pong javobini o‘z ichiga oladi.
8. Kanal maydoni
-
- Guruhlar uchun
channelsessiya yozuvida qayd etilgan kanal bo‘ladi.
- Guruhlar uchun
-
- To‘g‘ridan‑to‘g‘ri chatlar uchun
channellastChanneldan moslanadi.
- To‘g‘ridan‑to‘g‘ri chatlar uchun
-
- Cron/hook/node uchun
channel—internal.
- Cron/hook/node uchun
-
- Agar mavjud bo‘lmasa,
channel—unknown.
- Agar mavjud bo‘lmasa,
13. Xavfsizlik / Yuborish siyosati
- Kanal/chat turi bo‘yicha siyosatga asoslangan bloklash (sessiya identifikatori bo‘yicha emas).
- Ish vaqtida bekor qilish (har bir sessiya yozuvi uchun):
-
sendPolicy: "allow" | "deny"(o‘rnatilmasa = konfiguratsiyani meros qilib oladi)
-
sessions.patchorqali yoki faqat egaga ruxsat etilgan/send on|off|inherit(alohida xabar) orqali o‘rnatiladi.
- Majburiy ijro nuqtalari:
-
chat.send/agent(shlyuz)
-
- avtomatik javob yetkazib berish mantiqi
22. sessions_spawn
- Izolyatsiyalangan sessiyada quyi‑agent ishini ishga tushiring va natijani so‘rovchi chat kanaliga e’lon qiling.
- Ruxsat etilganlar ro‘yxati:
-
label?(ixtiyoriy; loglar/UI uchun ishlatiladi)
-
agentId?(ixtiyoriy; ruxsat etilsa, boshqa agent identifikatori ostida ishga tushiradi)
-
model?(ixtiyoriy; quyi‑agent modelini almashtiradi; noto‘g‘ri qiymatlar xato beradi)
-
runTimeoutSeconds?(standart 0; o‘rnatilganda, N soniyadan so‘ng quyi‑agent ishini to‘xtatadi)
-
cleanup?(delete|keep, standartkeep)
- Ruxsat etilganlar ro‘yxati:
-
agents.list[].subagents.allowAgents:agentIdorqali ruxsat etilgan agent identifikatorlari ro‘yxati (["*"]— har qandayiga ruxsat). 33. Standart: faqat so‘rovchi agent.
- Aniqlash:
- Xatti‑harakat:
-
deliver: falsebilan yangiagent:<agentId>:subagent:<uuid>sessiyasini boshlaydi.
-
- Quyi‑agentlar sukut bo‘yicha to‘liq vositalar to‘plamiga ega bo‘ladi sessiya vositalarisiz (
tools.subagents.toolsorqali sozlanadi ).
- Quyi‑agentlar sukut bo‘yicha to‘liq vositalar to‘plamiga ega bo‘ladi sessiya vositalarisiz (
-
- Quyi‑agentlarga
sessions_spawnni chaqirishga ruxsat berilmaydi (quyi‑agent → quyi‑agent ishga tushirish yo‘q).
- Quyi‑agentlarga
-
- Har doim bloklanmaydi: darhol
{ status: "accepted", runId, childSessionKey }ni qaytaradi.
- Har doim bloklanmaydi: darhol
-
- Yakunlangach, OpenClaw quyi‑agent e’lon qilish bosqichini ishga tushiradi va natijani so‘rovchi chat kanaliga joylaydi.
-
- E’lon bosqichida jim qolish uchun aniq
ANNOUNCE_SKIPdeb javob bering.
- E’lon bosqichida jim qolish uchun aniq
-
- E’lon javoblari
Status/Result/Notesga normallashtiriladi;Statusish vaqti natijasidan olinadi (model matnidan emas).
- E’lon javoblari
-
- Quyi‑agent sessiyalari
agents.defaults.subagents.archiveAfterMinutesdan so‘ng avtomatik arxivlanadi (standart: 60).
- Quyi‑agent sessiyalari
-
- E’lon javoblari statistika qatorini o‘z ichiga oladi (ish vaqti, tokenlar, sessionKey/sessionId, transkript yo‘li va ixtiyoriy xarajat).
46. Sandbox sessiya ko‘rinuvchanligi
-
Sandboxlangan sessiyalar sessiya vositalaridan foydalanishi mumkin, ammo sukut bo‘yicha ular faqat
sessions_spawnorqali o‘zlari ishga tushirgan sessiyalarni ko‘ra oladi. - Konfiguratsiya: