Gateway

Фонове виконання та інструмент керування процесами

OpenClaw виконує команди оболонки через інструмент exec і зберігає довготривалі завдання в пам’яті. Інструмент process керує цими фоновими сеансами.

Інструмент exec

Параметри:

Параметр Опис
command Обов’язковий. Команда оболонки для виконання.
workdir Робочий каталог; не вказуйте, щоб використовувати стандартний поточний робочий каталог.
env Додаткові змінні середовища для команди.
yieldMs Кількість мілісекунд очікування перед переведенням у фоновий режим (стандартно 10000).
background Негайно виконувати у фоновому режимі.
timeout Час очікування в секундах (стандартно tools.exec.timeoutSec); після його завершення процес припиняється. Установіть timeout: 0, щоб вимкнути обмеження часу процесу exec для цього виклику.
pty Виконувати в псевдотерміналі, якщо він доступний (CLI, що потребують TTY, агенти програмування).
elevated Виконувати поза пісочницею, якщо привілейований режим увімкнено/дозволено (стандартно gateway або node, коли ціллю exec є node).
host Ціль exec: auto, sandbox, gateway або node.
node Ідентифікатор/назва Node, використовується з host: "node".

Поведінка:

  • Виконання на передньому плані повертає вивід безпосередньо.
  • Після переведення у фоновий режим (явно або через завершення часу yieldMs) інструмент повертає status: "running" + sessionId і короткий фрагмент кінця виводу.
  • Фонові виконання та виконання з yieldMs успадковують tools.exec.timeoutSec, якщо у виклику явно не передано timeout.
  • Вивід залишається в пам’яті, доки не буде опитано або очищено сеанс.
  • Якщо інструмент process заборонено, exec виконується синхронно та ігнорує yieldMs/background.
  • Запущені команди exec отримують OPENCLAW_SHELL=exec для контекстно-залежних правил оболонки/профілю.
  • Для довготривалої роботи, яка починається зараз: запустіть її один раз і покладайтеся на автоматичне пробудження після завершення (якщо ввімкнено), щойно команда виведе дані або завершиться помилкою.
  • Якщо автоматичне пробудження після завершення недоступне або потрібне підтвердження тихого успішного виконання команди, яка завершується без виводу, опитуйте її за допомогою process.
  • Не імітуйте нагадування чи відкладені подальші дії циклами sleep або повторним опитуванням — для майбутньої роботи використовуйте Cron.

Перевизначення через змінні середовища

Змінна Вплив
OPENCLAW_BASH_YIELD_MS Стандартний час очікування перед переведенням у фоновий режим (мс). Стандартно 10000, обмежується діапазоном 10–120000.
OPENCLAW_BASH_MAX_OUTPUT_CHARS Обмеження обсягу виводу в пам’яті (у символах).
OPENCLAW_BASH_PENDING_MAX_OUTPUT_CHARS Обмеження обсягу очікуваних stdout/stderr для кожного потоку (у символах).
OPENCLAW_BASH_JOB_TTL_MS TTL завершених сеансів (мс), обмежений діапазоном від 1 хв до 3 год.
OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS Пороговий час відсутності виводу, після якого доступні для запису фонові сеанси позначаються як такі, що, ймовірно, очікують введення. Стандартно 15000.

Конфігурація (бажаніша за перевизначення через змінні середовища)

Ключ Стандартне значення Вплив
tools.exec.backgroundMs 10000 Те саме, що й OPENCLAW_BASH_YIELD_MS.
tools.exec.timeoutSec 1800 Стандартний час очікування для кожного виклику.
tools.exec.cleanupMs 1800000 Те саме, що й OPENCLAW_BASH_JOB_TTL_MS.
tools.exec.notifyOnExit true Додає системну подію до черги та запитує Heartbeat після завершення фонового виконання exec.
tools.exec.notifyOnExitEmptySuccess false Також додає до черги події завершення для успішних фонових виконань без виводу.

Міст для дочірніх процесів

Під час запуску довготривалих дочірніх процесів поза інструментами exec/process (повторні запуски CLI, допоміжні засоби Gateway) підключайте допоміжний засіб мосту дочірніх процесів, щоб сигнали завершення передавалися далі, а обробники від’єднувалися після виходу/помилки. Це запобігає появі осиротілих процесів у systemd і забезпечує узгоджене завершення роботи на різних платформах.

Інструмент process

Дії:

Дія Вплив
list Активні та завершені сеанси.
poll Отримати новий вивід сеансу (також повідомляє стан завершення).
log Прочитати сукупний вивід і підказки щодо відновлення введення. Підтримує offset + limit.
write Надіслати дані до stdin (data, необов’язково eof).
send-keys Надіслати явні токени клавіш або байти до сеансу на основі PTY.
submit Надіслати Enter/повернення каретки до сеансу на основі PTY.
paste Надіслати буквальний текст, за потреби обгорнутий у режим вставлення в дужках.
kill Припинити фоновий сеанс.
clear Видалити завершений сеанс із пам’яті.
remove Припинити активний сеанс або очистити завершений.

Примітки:

  • У списку зберігаються лише фонові сеанси — тільки в пам’яті, не на диску. Після перезапуску процесу сеанси втрачаються.
  • Активний фоновий сеанс блокує узгоджене призупинення хоста та безпечний перезапуск Gateway, доки власник процесу не підтвердить його фактичне завершення.
  • process remove може негайно приховати активний сеанс після запиту на припинення; призупинення та перезапуск залишатимуться заблокованими до підтвердження завершення.
  • Журнали сеансу зберігаються в історії чату лише тоді, коли ви виконуєте process poll/log і результат інструмента записується.
  • Область дії process обмежена окремим агентом; він бачить лише сеанси, запущені цим агентом.
  • Використовуйте poll/log для перевірки стану, журналів або підтвердження завершення, коли автоматичне пробудження після завершення недоступне.
  • Використовуйте log перед відновленням інтерактивного CLI, щоб одночасно бачити поточний перебіг сеансу, стан stdin і підказку щодо очікування введення.
  • Використовуйте write/send-keys/submit/paste/kill, коли потрібне введення або втручання.
  • process list містить похідне поле name (дієслово команди + ціль) для швидкого перегляду.
  • process list, poll і log повідомляють waitingForInput лише тоді, коли сеанс усе ще має доступний для запису stdin і неактивний довше за поріг очікування введення (стандартно 15000 мс, OPENCLAW_PROCESS_INPUT_WAIT_IDLE_MS).
  • process log використовує построкові offset/limit. Якщо обидва параметри не вказано, повертаються останні 200 рядків із підказкою щодо посторінкового перегляду. Якщо offset задано, а limit — ні, повертаються рядки від offset до кінця (без обмеження у 200 рядків).
  • timeout для poll очікує до вказаної кількості мілісекунд перед поверненням; значення понад 30000 обмежуються до 30000.
  • Опитування призначене для перевірки стану на вимогу, а не для планування циклів очікування. Якщо робота має виконатися пізніше, використовуйте Cron.

Приклади

Запустити довготривале завдання й опитати його пізніше:

json
{ "tool": "exec", "command": "sleep 5 && echo done", "yieldMs": 1000 }
json
{ "tool": "process", "action": "poll", "sessionId": "<id>" }

Перевірити інтерактивний сеанс перед надсиланням введення:

json
{ "tool": "process", "action": "log", "sessionId": "<id>" }

Негайно запустити у фоновому режимі:

json
{ "tool": "exec", "command": "npm run build", "background": true }

Надіслати дані до stdin:

json
{ "tool": "process", "action": "write", "sessionId": "<id>", "data": "y\n" }

Надіслати клавіші PTY:

json
{ "tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["C-c"] }

Надіслати поточний рядок:

json
{ "tool": "process", "action": "submit", "sessionId": "<id>" }

Вставити буквальний текст:

json
{ "tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n" }

Пов’язані матеріали

Was this useful?
On this page

On this page