Почему это важно именно вам
После установки Claude Code у большинства людей есть один режим работы: открыл, написал, получил ответ, закрыл. Это работает, но это четверть возможностей.
У Claude Code есть два принципиально разных способа работы. Первый — интерактивный диалог, как в браузере, только в терминале. Второй — headless-режим: один запрос, один ответ, без диалога. Именно второй режим открывает автоматизацию: вы можете встроить Claude в скрипт, в расписание, в конвейер обработки файлов.
Директор, который понимает разницу между этими режимами, начинает автоматизировать задачи, которые раньше казались «ну это же надо вручную». Составить сводку по десяти отчётам? Один скрипт. Проверить все письма на вежливость перед отправкой? Одна команда.
Что это такое
Интерактивный режим — это разговор. Вы запускаете claude, попадаете в сессию, обмениваетесь сообщениями, уточняете, переформулируете. Claude помнит всё, что было сказано в этой сессии.
Headless-режим (claude -p или claude --print) — это одноразовый запрос. Вы передаёте текст, получаете ответ, и на этом всё. Никакой сессии, никакого контекста между вызовами. Зато ответ можно сохранить в переменную, передать следующей команде, записать в файл.
Аналогия: интерактивный режим — это совещание с коллегой. Headless — это записка на стол с конкретным заданием и ожиданием конкретного ответа.
Как работает на практике
Интерактивный режим
claude
Запускает сессию. Вы видите приглашение ввода. Пишете что хотите, получаете ответ, продолжаете диалог.
Полезно для:
- Сложных задач, где нужно уточнять
- Работы с документами, когда нужно задавать много вопросов
- Изучения и экспериментов
Выход: Ctrl+C или /exit.
Headless-режим
claude -p "твой запрос"
Или полная форма:
claude --print "твой запрос"
Выводит ответ и завершается. Никакого диалога.
Пример 1. Получить ответ и сохранить в файл:
claude -p "напиши повестку дня для встречи с партнёром по теме продления договора" > повестка.txt
Пример 2. Обработать файл:
claude -p "найди все упоминания штрафных санкций в этом договоре" < договор.txt
Пример 3. Обработать файл и сохранить результат:
claude -p "извлеки ключевые показатели и оформи как маркированный список" < отчёт.txt > показатели.txt
Символы `<` и `>`
< файл — передать содержимое файла на вход Claude
> файл — записать вывод Claude в файл
Это стандартный синтаксис Unix, работает везде — не только с Claude
Кавычки: где нужны, а где нет
Это место, где легко запутаться, потому что правило зависит от режима.
В интерактивном режиме кавычки не нужны. Запустили claude, оказались в сессии — дальше пишете обычным текстом, как в переписке:
посмотри выгрузку за август и скажи, где расходятся суммы
Никакого специального синтаксиса, никаких кавычек, никакого экранирования. Знаки препинания, кириллица, вопросительные знаки, переносы строк — всё пишется как есть. Это просто ваш текст, а не команда терминала.
В headless-режиме кавычки нужны — и не из-за Claude, а из-за терминала. Строка claude -p ... разбирается оболочкой (в macOS это zsh), и без кавычек она видит не один запрос, а набор отдельных слов. Хуже того, символы ?, *, !, &, (, ) для неё имеют собственный смысл: ? и * она попытается развернуть в имена файлов, & — увести команду в фон.
claude -p почему расходятся суммы? # оболочка сломает запрос
claude -p "почему расходятся суммы?" # правильно
Полезная мелочь: если внутри запроса есть свои двойные кавычки, обрамляйте одинарными — иначе строка «закроется» раньше времени:
claude -p 'проверь, уместна ли фраза "с уважением" в этом письме'
Простое правило
Кавычки нужны там, где вы передаёте запрос как аргумент команды — то есть в claude -p "…" и в скриптах. Внутри диалога вы не пишете команду, вы пишете сообщение — там кавычек не требуется.
Цикл по нескольким файлам
Вот где headless-режим раскрывается полностью. Допустим, у вас папка с отчётами от региональных менеджеров:
for файл in отчёты/*.txt; do
echo "=== $файл ===" >> сводка.txt
claude -p "выдели три главных результата из этого отчёта" < "$файл" >> сводка.txt
echo "" >> сводка.txt
done
Этот цикл пройдёт по каждому файлу, задаст один и тот же вопрос и допишет ответ в общий файл сводка.txt. Вместо часа ручной работы — одна команда.
Комбинация с другими командами
Headless-режим хорошо работает в цепочках:
cat письмо.txt | claude -p "проверь тон письма: он достаточно уважительный для делового партнёра?"
Здесь cat читает файл, | (пайп) передаёт содержимое в Claude. Об этом подробнее в Дне 5.
Частые ошибки
Ошибка 1. Использовать интерактивный режим там, где нужен headless
Если вы запускаете claude, задаёте один вопрос, получаете ответ и выходите — вы теряете время на запуск и закрытие сессии. Используйте claude -p "запрос" для разовых задач.
Ошибка 2. Использовать headless там, где нужен диалог
Если задача сложная и требует уточнений — не пытайтесь запихнуть всё в один -p-запрос. Откройте интерактивную сессию. Один длинный запрос с десятью условиями работает хуже, чем диалог из трёх-четырёх шагов.
Ошибка 3. Путать правила кавычек между режимами
В headless кавычки обязательны, в диалоге — не нужны:
claude -p почему расходятся суммы # НЕПРАВИЛЬНО — оболочка разобьёт на аргументы
claude -p "почему расходятся суммы" # ПРАВИЛЬНО
claude # а внутри сессии просто пишете:
> почему расходятся суммы # без кавычек, обычным текстом
Ошибка 4. Ожидать памяти между headless-вызовами
Каждый -p вызов — это новая сессия с чистой памятью. Если вам нужен контекст между запусками — либо используйте интерактивный режим, либо передавайте контекст явно в каждом запросе. Подробнее — в Дне 7 про сессии.
Когда нужно / когда нет
Интерактивный режим:
- Сложная задача с несколькими итерациями
- Нужно уточнять и корректировать
- Работаете с кодом или структурой документа
- Исследовательский режим: «посмотреть, как это работает»
Headless (-p):
- Один конкретный вопрос — один конкретный ответ
- Нужно сохранить результат в файл
- Встраиваете Claude в скрипт
- Обрабатываете несколько файлов по одному шаблону
- Запускаете по расписанию (cron, launchd)
Связь с другими уроками
- День 5 — piping и stdin: как передавать данные в headless-режим через конвейер команд
- День 6 — форматы вывода: как получать результат headless-запроса в JSON для автоматизации
- День 7 — сессии: как сохранять контекст между запусками, если одного
-pне хватает
Задание на сегодня
Возьмите любой текстовый файл, который есть на вашем компьютере — письмо, отчёт, список задач. Выполните headless-запрос:
claude -p "напиши три ключевых вывода из этого текста" < ваш_файл.txt
Если нет подходящего файла — создайте тестовый:
echo "Продажи в марте выросли на 12%. Основной драйвер — новый продукт линейки Б. Команда перевыполнила план на 8%. Основная проблема — задержки в логистике на северном направлении." > тест.txt
claude -p "три главных вывода из этого текста" < тест.txt
Критерий выполнено: получили структурированный ответ в терминале без открытия интерактивной сессии.
Резюме
- Интерактивный режим (
claude) — для диалога и сложных задач с итерациями - Headless режим (
claude -p) — для разовых запросов, скриптов, автоматизации < файлпередаёт содержимое файла в Claude,> файлсохраняет ответ- Headless не помнит предыдущие вызовы — контекст нужно передавать явно
- Цикл
for+claude -p= обработка десятков файлов одной командой - Кавычки нужны только когда запрос идёт аргументом команды (
claude -p "…"); внутри диалога пишете обычным текстом - Если внутри запроса свои двойные кавычки — обрамляйте одинарными:
claude -p 'фраза "с уважением" уместна?'