Перейти к содержанию

Фоновая работа: саб-агенты и процессы

Фоновая работа идёт параллельно с диалогом: пока вы продолжаете разговор, задача выполняется своим ходом, а результат появляется в отдельном реестре. Это удобно для долгих сборок, тестов и исследований, которые не должны блокировать сессию.

Два вида фоновой работы

Вид Что это Что видно в реестре
Фоновый саб-агент Дочерняя сессия со своим контекстом, историей и ходом Имя, статус, кнопка «Открыть сессию»
Фоновый процесс Шелл-команда, которая пишет вывод в лог и не держит ход Имя, статус, вывод по кнопке «Показать лог»

Саб-агент нужен, когда задачу можно делегировать целиком: он получит свой контекст и не будет мешать текущему диалогу. Процесс — когда нужна конкретная команда: сборка, тесты, долгий скрипт. Оба вида живут в одном реестре и переживают закрытие вкладки: работа продолжается на сервере.

Вкладка «Процессы»

Правая панель → вкладка «Процессы». Заголовок «Фоновые процессы», рядом счётчики: сколько прогонов всего и сколько выполняется прямо сейчас.

  • Фильтр «Фильтр по виду»: «Все», «Процессы», «Саб-агенты».
  • Тумблер «Только текущая сессия» сужает список до работы этой сессии.
  • В строке — имя, вид, статус и время; у саб-агента — «Открыть сессию», у процесса — «Показать лог» / «Скрыть лог» / «Обновить лог».
  • «Остановить» и «Удалить» спрашивают подтверждение в диалоге.

Пока работы нет, вкладка показывает «Фоновых процессов нет» и подсказку, что фоновые шелл-команды и саб-агенты появятся здесь.

Статусы

Статус Что значит
выполняется Прогон идёт прямо сейчас
завершён Прогон закончился успешно
ошибка Прогон завершился с ошибкой — смотрите лог или сессию
остановлен Прогон остановлен вручную
потерян Инстанс перезапускался, и связь с прогоном потеряна

«Потерян» — не потеря данных: запись осталась, но самого процесса больше нет. Удалить можно только запись в терминальном статусе; идущую сначала останавливают.

Как запустить

Отдельной кнопки «Запустить в фоне» у пустого реестра нет: фоновую работу запускает агент по вашей просьбе.

  • Попросите в диалоге: «запусти сборку в фоне», «проверь тесты фоном». Агент вызовет task с background: true для саб-агента или execute_shell с тем же флагом для команды.
  • Уже идущий прогон можно перевести в фон: у работающего саб-агента и у выполняющегося execute_shell есть кнопка «В фон».
  • ctrl+b переводит в фон все блокирующие прогоны активной сессии.

ctrl+b

Нажмите ctrl+b, когда ход «залип» на долгой команде: все блокирующие прогоны активной сессии уедут в фон, а диалог освободится. После перевода появится тост «Переведено в фон: N».

Перевод в фон необратим

Прогон нельзя вернуть в текущий ход: он остаётся фоновым до завершения. Отмена родительского хода его не останавливает — останавливайте отдельно. В гибридном режиме для удалённой сессии перевод недоступен: живого прогона на этом инстансе нет.

Уведомления

  • Тост на старте: «Фоновый процесс запущен: {имя}» или «Фоновый саб-агент запущен: {имя}».
  • Тост на завершении, ошибке и остановке — с тем же именем.
  • В ленте диалога — плашка «Фоновый процесс · {имя}» или «Фоновый саб-агент · {имя}».

Лимиты

Что Значение
Фоновых саб-агентов на сессию 2
Фоновых процессов на сессию 5
Записей в реестре на сессию 10
Размер лога процесса 10 МиБ, дальше «Лог обрезан (достигнут лимит записи)»
Хранение терминальных записей 7 дней
Вложенность 1 уровень: саб-агент не запускает своих саб-агентов

Лог обрезается, но процесс не останавливается. «Остановить» посылает SIGTERM, а через 5 секунд — SIGKILL; сама остановка асинхронная, статус меняется не мгновенно.

Перезапуск инстанса

Фоновые прогоны живут в процессе сервера. После перезапуска инстанса записи, которые ещё шли, получают статус «потерян»: продолжить их нельзя, можно только удалить и запустить работу заново. Поэтому долгую задачу лучше ставить так, чтобы её можно было безопасно повторить.

Фоновую работу можно выключить целиком: при background.enabled: false агент не запускает фоновые прогоны, а вкладка остаётся пустой. Настройка задаётся в конфигурации инстанса.

Что видит агент

  • process_list — список фоновых прогонов своей сессии и её дочерних сессий.
  • process_logs — вывод процесса по смещению; у саб-агента лога нет, его результат — в самой сессии.

Оба инструмента только читают и доступны даже в режиме plan. По ним агент проверяет, закончилась ли команда, и подхватывает результат.

Что дальше