Фоновый Exec + инструмент Process
OpenClaw выполняет shell‑команды через инструментexec и хранит длительно выполняющиеся задачи в памяти. Инструмент process управляет этими фоновыми сеансами.
Инструмент exec
Ключевые параметры:command(обязательно)yieldMs(по умолчанию 10000): автоматический перевод в фон по истечении этой задержкиbackground(bool): немедленно запустить в фонеtimeout(секунды, по умолчанию 1800): завершить процесс по истечении этого тайм‑аутаelevated(bool): запускать на хосте, если повышенный режим включён/разрешён- Нужен реальный TTY? Установите
pty: true. workdir,env
- Запуски в переднем плане возвращают вывод напрямую.
- При переводе в фон (явно или по тайм‑ауту) инструмент возвращает
status: "running"+sessionIdи короткий хвост вывода. - Вывод хранится в памяти, пока сеанс не будет опрошен или очищен.
- Если инструмент
processзапрещён,execвыполняется синхронно и игнорируетyieldMs/background.
Связывание дочерних процессов
При запуске длительно работающих дочерних процессов вне инструментов exec/process (например, при перезапуске CLI или вспомогательных процессах шлюза) подключайте помощник моста дочерних процессов, чтобы сигналы завершения передавались, а слушатели отсоединялись при выходе/ошибке. Это предотвращает появление «осиротевших» процессов в 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): поставить в очередь системное событие + запросить сигнал keepalive, когда фоновый exec завершается.tools.exec.notifyOnExitEmptySuccess(по умолчанию false): если true, также ставит в очередь события завершения для успешно выполненных фоновых задач без вывода.
Инструмент process
Действия:list: выполняющиеся + завершённые сеансыpoll: слить новый вывод для сеанса (также сообщает статус завершения)log: прочитать агрегированный вывод (поддерживаетoffset+limit)write: отправить stdin (data, необязательноeof)kill: завершить фоновый сеансclear: удалить завершённый сеанс из памятиremove: завершить, если выполняется, иначе очистить, если завершён
- В памяти перечисляются/сохраняются только фоновые сеансы.
- Сеансы теряются при перезапуске процесса (нет сохранения на диск).
- Логи сеансов сохраняются в истории чата только если вы запускаете
process poll/logи результат инструмента записывается. processимеет область видимости «для каждого агента»; он видит только сеансы, запущенные этим агентом.process listвключает производныйname(глагол команды + цель) для быстрого просмотра.process logиспользует построчныеoffset/limit(опуститеoffset, чтобы получить последние N строк).- Если оба параметра
offsetиlimitопущены, возвращаются последние 200 строк и добавляется подсказка о пагинации. - Если указан
offset, аlimitопущен, возвращается вывод отoffsetдо конца (без ограничения в 200 строк).