boshqa kontekstlardan qayta foydalanish (mahalliy skriptlar, kelajakdagi desktop ilova va h.k.)¶
OpenClaw shell buyruqlarini exec vositasi orqali ishga tushiradi va uzoq davom etadigan vazifalarni xotirada saqlaydi. process vositasi esa ushbu fon sessiyalarini boshqaradi.
exec tool¶
Asosiy parametrlar:
command(majburiy)yieldMs(standart 10000): ushbu kechikishdan so‘ng avtomatik ravishda fon rejimiga o‘tkaziladibackground(bool): darhol fon rejimida ishga tushirishtimeout(soniya, standart 1800): ushbu vaqt tugagach jarayonni to‘xtatadielevated(bool): agar elevated rejimi yoqilgan/ruxsat berilgan bo‘lsa, hostda ishga tushirish- Fon ijrosi + Jarayon asbobi Set
pty: true. - Haqiqiy TTY kerakmi?
Behavior:
- Foreground runs return output directly.
- When backgrounded (explicit or timeout), the tool returns
status: "running"+sessionIdand a short tail. - Output is kept in memory until the session is polled or cleared.
- If the
processtool is disallowed,execruns synchronously and ignoresyieldMs/background.
Child process bridging¶
When spawning long-running child processes outside the exec/process tools (for example, CLI respawns or gateway helpers), attach the child-process bridge helper so termination signals are forwarded and listeners are detached on exit/error. This avoids orphaned processes on systemd and keeps shutdown behavior consistent across platforms.
Environment overrides:
PI_BASH_YIELD_MS: default yield (ms)PI_BASH_MAX_OUTPUT_CHARS: in‑memory output cap (chars)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: pending stdout/stderr cap per stream (chars)-
PI_BASH_JOB_TTL_MS: yakunlangan sessiyalar uchun TTL (ms, 1 daqiqa–3 soat oralig‘ida cheklangan)
- Konfiguratsiya (tavsiya etiladi):
-
tools.exec.backgroundMs(standart 10000)
-
tools.exec.timeoutSec(standart 1800)
-
tools.exec.cleanupMs(standart 1800000)
-
tools.exec.notifyOnExit(standart true): fon rejimidagi exec yakunlanganda tizim hodisasini navbatga qo‘shadi va heartbeat so‘raydi.
7. process vositasi¶
- Amallar:
-
list: ishlayotgan + yakunlangan sessiyalar
-
poll: sessiya uchun yangi chiqishni chiqarib tashlash (shuningdek chiqish holatini bildiradi)
-
log: yig‘ilgan chiqishni o‘qish (offset+limitqo‘llab-quvvatlanadi)
-
write: stdin yuborish (data, ixtiyoriyeof)
-
kill: fon sessiyasini to‘xtatish
-
clear: yakunlangan sessiyani xotiradan olib tashlash
-
remove: agar ishlayotgan bo‘lsa o‘ldiradi, aks holda yakunlangan bo‘lsa tozalaydi
- Eslatmalar:
-
- Faqat fon rejimidagi sessiyalar ro‘yxatga olinadi va xotirada saqlanadi.
-
- Jarayon qayta ishga tushirilganda sessiyalar yo‘qoladi (diskda saqlanmaydi).
-
- Sessiya jurnallari faqat
process poll/logishga tushirilganda va vosita natijasi yozib olinganda chat tarixiga saqlanadi.
- Sessiya jurnallari faqat
-
processagent bo‘yicha cheklangan; u faqat shu agent boshlagan sessiyalarni ko‘radi.
-
process listtez ko‘zdan kechirish uchun hosilaname(buyruq fe’li + maqsad) ni o‘z ichiga oladi.
-
process logqatorlarga asoslanganoffset/limitdan foydalanadi (offsetni qoldirsangiz, oxirgi N qator olinadi).
23. Misollar¶
- Uzoq vazifani ishga tushiring va keyinroq so‘rov qiling:
25. { "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
26. { "tool": "process", "action": "poll", "sessionId": "<id>" }
- Darhol fon rejimida boshlash:
28. { "tool": "exec", "command": "npm run build", "background": true }
- stdin yuborish:
30. { "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }