Фоновий Exec + інструмент Process
OpenClaw запускає shell-команди через інструментexec і зберігає довготривалі завдання в пам’яті. Інструмент process керує цими фоновими сесіями.
Інструмент exec
Ключові параметри:command(обов’язковий)yieldMs(за замовчуванням 10000): автоматичне переведення у фон після цієї затримкиbackground(bool): негайно перевести у фонtimeout(секунди, за замовчуванням 1800): завершити процес після цього тайм-аутуelevated(bool): запускати поза sandbox, якщо режим elevated увімкнено/дозволено (за замовчуваннямgateway, абоnode, коли ціль exec —node)- Потрібен справжній TTY? Установіть
pty: true. workdir,env
- Запуски у foreground повертають вивід безпосередньо.
- У разі переведення у фон (явно або через тайм-аут) інструмент повертає
status: "running"+sessionIdі короткий хвіст виводу. - Вивід зберігається в пам’яті, доки сесію не буде опитано або очищено.
- Якщо інструмент
processне дозволено,execвиконується синхронно й ігноруєyieldMs/background. - Запущені команди exec отримують
OPENCLAW_SHELL=execдля правил shell/profile, що враховують контекст. - Для довготривалої роботи, яка починається зараз, запускайте її один раз і покладайтеся на автоматичне пробудження після завершення, якщо воно ввімкнене і команда виводить результат або завершується з помилкою.
- Якщо автоматичне пробудження після завершення недоступне або вам потрібне підтвердження
тихого успіху для команди, яка завершилася без помилок і без виводу, використовуйте
processдля підтвердження завершення. - Не імітуйте нагадування або відкладені наступні дії через цикли
sleepчи повторне опитування; для майбутньої роботи використовуйте cron.
Міст дочірніх процесів
Під час запуску довготривалих дочірніх процесів поза інструментами exec/process (наприклад, для повторних запусків CLI або helper-процесів gateway) підключайте helper містка дочірніх процесів, щоб сигнали завершення передавалися далі, а слухачі від’єднувалися після виходу/помилки. Це запобігає осиротілим процесам у systemd і зберігає узгоджену поведінку завершення на різних платформах. Перевизначення через середовище:PI_BASH_YIELD_MS: типовий yield (мс)PI_BASH_MAX_OUTPUT_CHARS: обмеження виводу в пам’яті (символи)OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS: обмеження очікуваного stdout/stderr для кожного потоку (символи)PI_BASH_JOB_TTL_MS: TTL для завершених сесій (мс, обмежено діапазоном від 1 хв до 3 год)
tools.exec.backgroundMs(за замовчуванням 10000)tools.exec.timeoutSec(за замовчуванням 1800)tools.exec.cleanupMs(за замовчуванням 1800000)tools.exec.notifyOnExit(за замовчуванням true): додає системну подію в чергу + запитує heartbeat, коли фоновий exec завершується.tools.exec.notifyOnExitEmptySuccess(за замовчуванням false): якщо true, також додає події завершення для успішних фонових запусків, які не дали жодного виводу.
Інструмент process
Дії:list: запущені + завершені сесіїpoll: зчитати новий вивід для сесії (також повідомляє статус завершення)log: прочитати агрегований вивід (підтримуєoffset+limit)write: надіслати stdin (data, необов’язковийeof)send-keys: надіслати явні токени клавіш або байти до сесії з підтримкою PTYsubmit: надіслати Enter / carriage return до сесії з підтримкою PTYpaste: надіслати буквальний текст, за бажанням обгорнутий у режим bracketed pastekill: завершити фонову сесіюclear: видалити завершену сесію з пам’ятіremove: завершити, якщо сесія запущена, інакше очистити, якщо завершена
- У пам’яті перелічуються/зберігаються лише сесії, переведені у фон.
- Після перезапуску процесу сесії втрачаються (збереження на диск немає).
- Журнали сесій зберігаються в історії чату, лише якщо ви виконуєте
process poll/logі результат інструмента записується. processобмежено межами агента; він бачить лише сесії, запущені цим агентом.- Використовуйте
poll/logдля стану, журналів, підтвердження тихого успіху або підтвердження завершення, коли автоматичне пробудження після завершення недоступне. - Використовуйте
write/send-keys/submit/paste/kill, коли потрібне введення або втручання. process listвключає похіднеname(дієслово команди + ціль) для швидкого перегляду.process logвикористовуєoffset/limitна основі рядків.- Якщо і
offset, іlimitне вказані, він повертає останні 200 рядків і містить підказку щодо пагінації. - Якщо вказано
offset, аlimitне вказано, він повертає дані відoffsetдо кінця (без обмеження в 200). - Опитування призначене для статусу на вимогу, а не для планування циклів очікування. Якщо робота має відбутися пізніше, використовуйте cron.