> ## Documentation Index
> Fetch the complete documentation index at: https://openclaw.veiseule.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Фоновый Exec и инструмент Process

# Фоновый 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 строк).

## Примеры

Запустить длительную задачу и опросить позже:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
```

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{ "tool": "process", "action": "poll", "sessionId": "<id>" }
```

Запустить сразу в фоне:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{ "tool": "exec", "command": "npm run build", "background": true }
```

Отправить stdin:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }
```
