Мастер Claude · Блок 1. Первые шаги

Урок 9 из 93 · ~10 мин чтения

Фоновые задачи: --bg

Урок пока закрыт

Курс проходится последовательно.

К текущему уроку

Почему это важно именно вам

Есть задачи, которые занимают время. Обработать 200 документов — это не пять секунд. Проанализировать большой архив переписки — это минуты. И пока Claude работает, ваш терминал заблокирован: вы не можете ввести другую команду, начать другую задачу, сделать что-то параллельно.

--bg решает эту проблему. Задача запускается в фоне, управление терминалом возвращается немедленно, и вы продолжаете работать. Когда задача завершится — вы об этом узнаете.

Для директора это означает: запустить обработку отчётов, пока пишете письмо. Поставить анализ договоров на ночь. Запустить несколько задач параллельно и получить результаты всех к нужному времени.

Что это такое

Флаг --bg запускает задачу в фоновом режиме. Технически — создаёт отдельный процесс, который выполняется независимо от вашего терминала.

В сочетании с --name вы можете дать задаче понятное имя, по которому потом найдёте её статус и результат.

Аналогия: это как поставить задачу сотруднику и отпустить его работать. Вы не стоите рядом и не ждёте — вы занимаетесь другим. Когда сотрудник закончит — сообщит.

--bg vs системный фон (&)

В bash можно запустить любую команду в фоне через & в конце. --bg — это встроенный механизм Claude Code, который правильно управляет сессией, логирует результат и позволяет проверять статус через claude agents. Предпочитайте --bg для задач Claude.

Как работает на практике

Базовый запуск в фоне

claude --bg "обработай все файлы в папке отчёты и создай сводку" 

Команда вернёт управление немедленно. В выводе будет идентификатор задачи:

backgrounded · 7c5dcf5d · сводка-июнь
  claude agents             список сессий
  claude attach 7c5dcf5d    открыть в этом терминале
  claude logs 7c5dcf5d      свежий вывод
  claude stop 7c5dcf5d      остановить

Именованная фоновая задача

claude --bg --name "сводка-июнь" "проанализируй все отчёты за июнь и создай сводный документ" 

Теперь задачу можно найти по имени.

Проверка статуса

claude agents

Выводит все сессии, включая фоновые — с их статусом (running, completed, failed).

Получение результата

Когда задача завершится:

claude --resume session_abc123 -p "покажи результат"

Или, если использовали --output-format json при запуске, результат уже в файле.

Практический паттерн: запустил и забыл

claude --bg --name "договоры-анализ" \
  --permission-mode acceptEdits \
  -p "найди все .txt файлы в папке договоры, проверь каждый на наличие штрафных санкций и создай реестр договоров_риски.txt" 

Запустили, переключились на другую задачу. Через несколько минут:

cat договоры_риски.txt

Результат готов.

Несколько параллельных задач

# Задача 1
claude --bg --name "анализ-партнёр-А" \
  -p "проанализируй переписку с партнёром А и выдели ключевые договорённости" \
  < переписка_А.txt

# Задача 2  
claude --bg --name "анализ-партнёр-Б" \
  -p "проанализируй переписку с партнёром Б и выдели ключевые договорённости" \
  < переписка_Б.txt

# Задача 3
claude --bg --name "сводка-недели" \
  -p "создай сводку недели на основе этих отчётов" \
  < отчёты_неделя.txt

echo "Три задачи запущены. Проверить через 5 минут: claude agents"

Все три работают параллельно. Стоимость рассчитывается по каждой задаче отдельно.

Когда фон выгоднее последовательной обработки

Если у вас три независимые задачи по 2 минуты каждая — последовательно это 6 минут. В фоне — 2 минуты (все три работают параллельно). Для большого объёма файлов это принципиальная разница.

Запись результата в файл сразу

Чтобы не забывать проверять сессию — перенаправляйте вывод:

claude --bg \
  --permission-mode acceptEdits \
  -p "создай файл результат.txt с анализом этих данных" \
  < данные.txt

Результат будет в результат.txt — проверяйте когда удобно. Важная оговорка: если рабочая папка под git, фоновая сессия перед правками переезжает в свою копию под .claude/worktrees/, и файл окажется там. Чтобы фоновые задачи писали прямо в рабочую копию, поставьте в настройках проекта {"worktree": {"bgIsolation": "none"}}.

Уведомление о завершении

Если хотите получить уведомление в терминале когда задача завершится:

claude --bg "долгая задача" < данные.txt && echo "Задача завершена!" | osascript -e 'display notification "Claude завершил задачу" with title "Claude Code"'

На macOS osascript покажет системное уведомление. На Linux можно использовать notify-send.

Частые ошибки

Ошибка 1. Запускать bg без --permission-mode

Запрос разрешения от фоновой задачи всплывёт в вашей основной сессии. Но если терминала рядом нет (запуск по расписанию), отвечать некому — для таких сценариев задавайте режим заранее: --permission-mode dontAsk с заранее разрешённым списком инструментов или acceptEdits. Для фоновых задач используйте --permission-mode acceptEdits или bypassPermissions.

# НЕПРАВИЛЬНО — зависнет
claude --bg "измени все файлы в папке"

# ПРАВИЛЬНО
claude --bg --permission-mode acceptEdits "измени все файлы в папке"

Ошибка 2. Не сохранять идентификатор задачи

Запустили, забыли скопировать session ID, а потом не можете найти результат. Всегда либо сохраняйте ID, либо используйте --name, либо задавайте запись в конкретный файл.

Ошибка 3. Слишком много параллельных задач

API имеет лимиты на количество параллельных запросов. Если запустить 50 задач одновременно — часть получит ошибку throttling. Для больших объёмов лучше разбить на батчи по 5–10 задач.

Ошибка 4. Забыть про стоимость

Параллельные задачи = параллельные расходы. Десять задач по $0.01 = $0.10 одновременно. Это нормально, но нужно понимать, что фоновый запуск не делает токены бесплатными.

Когда нужно / когда нет

--bg нужен, если:
- Задача займёт больше минуты
- Нужно обработать большой объём данных
- Хотите запустить несколько независимых задач параллельно
- Запускаете задачу «на вечер» и хотите уйти заниматься другим

--bg не нужен, если:
- Задача быстрая (несколько секунд)
- Нужен интерактивный диалог с уточнениями
- Следующая задача зависит от результата этой (нужно дождаться)
- Задача разовая и несложная

Связь с другими уроками

Задание на сегодня

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

# Запустить в фоне
claude --bg --name "тест-фон" \
  --permission-mode acceptEdits \
  -p "создай файл фоновый_тест.txt с текстом: задача выполнена в фоне, время завершения — [текущее время]"

# Сразу выполнить что-то другое
echo "Я продолжаю работать пока Claude работает в фоне"

# Проверить статус
claude agents

Критерий выполнено: получили идентификатор фоновой задачи, выполнили другую команду, увидели задачу в списке сессий.

Резюме

Следующий урок откроется после отметки.