Хотите заказать веб-сайт? Связаться с нами

Промптинг в терминале: как говорить с агентом

Ранее в курсе мы научились осознанно управлять сессией: запускать, переключать и завершать её с clean exit. Но главный инструмент, которым вы пользуетесь внутри сессии, — это сам запрос, который вы печатаете в терминале. В этом уроке разберём промптинг в терминале: как формулировать запросы так, чтобы агент понимал вас с первого раза, как подавать большой контекст, как уточнять и менять направление без потери темпа и каких ошибок избегать.

Промптинг в терминале: как говорить с агентом

Чем терминальный промптинг отличается от чата

Многие приходят к coding agent из веб-чатов и привычно печатают запросы «как в переписке»: короткую фразу, потом ещё одну, потом уточнение. В терминале этот стиль работает плохо. Причины — в устройстве среды.
  1. Каждый запрос — это отдельный ход. Агент не «дочитывает» вашу мысль между сообщениями. Всё, что вы не сказали в запросе, он додумывает сам, а додумывание — главный источник лишних циклов и галлюцинаций.
  2. Контекст конечен. Каждое лишнее слово в запросе — это токены в окне. В чате можно «поболтать» и уточнить; в терминале каждый лишний ход приближает сессию к Dumb Zone.
  3. Ввод чаще всего однострочный. В отличие от чата, где есть большое поле ввода, терминал по умолчанию принимает одну строку. Многострочный ввод нужно включать явно — иначе длинный запрос «обрежется» или уйдёт в неверном виде.
  4. Есть слэш-команды и шорткаты. У harness есть служебные команды (новая сессия, смена модели, пауза), которые экономят время, но о них нужно знать заранее.

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

Структура работающего промпта

Хороший запрос в терминале собирается из трёх частей. Не обязательно все три в каждом запросе, но чем сложнее задача, тем важнее каждая.

Контекст

Контекст отвечает на вопрос «что уже известно и где это лежит». Агент умеет сам читать файлы и искать по кодовой базе, но не умеет читать ваши мысли. Два-три предложения контекста экономят агенту десяток запросов-догадок. Пример:

В проекте есть модуль src/payments.ts, который сейчас валидирует суммы
в двух местах. Я хочу вынести валидацию в отдельную функцию.

Обратите внимание: контекст указывает не только на цель, но и на конкретные файлы. Это направляет агента в нужное место и не даёт ему «исследовать весь проект».

Задача

Задача — это глагол действия: «вынеси», «напиши», «исправь», «объясни», «сравни». Формулируйте задачу как результат, а не как процесс. Сравните два варианта.

Слабый запрос Сильный запрос
«Разберись с валидацией сумм» «Вынеси валидацию сумм из двух мест в src/payments.ts в отдельную функцию validateAmount и замени вызовы»
«Посмотри, почему падает тест» «Найди причину падения теста payments.test.ts, исправь код и прогони тест заново»
«Сделай красивый вывод» «Измени вывод команды так, чтобы каждая строка содержала дату в формате ГГГГ-ММ-ДД и сумму с разделителями»

Критерий готовности

Критерий готовности отвечает на вопрос «как я пойму, что задача выполнена». Без него агент решает задачу «в принципе», а вы потом тратите ходы на итерации. Критерий может быть таким:

Готово, когда: тесты проходят, функция покрыта одним тестом,
и в коде не осталось дублирующей валидации. После выполнения
покажи краткое резюме изменений.

Держите под рукой шаблон-заготовку: «Контекст: [что известно]. Задача: [что сделать]. Готово, когда: [как проверить].» Он занимает 10 секунд, чтобы заполнить, и экономит в среднем 2-3 лишних хода на задачу. Со временем вы научитесь заполнять его автоматически, не глядя.

Как подавать большой контекст в терминале

Однострочный ввод плохо подходит для длинных запросов. Если вам нужно передать агенту большой текст — описание бага, выдержку из логов, требования — не пытайтесь вставить всё в одну строку.

Три рабочих способа

  1. Многострочный ввод. Большинство harness поддерживают режим многострочного ввода (обычно включается специальной комбинацией клавиш или командой). В этом режиме запрос собирается построчно и отправляется целиком по нажатию Enter на пустой строке или по отдельной команде.
  2. Файл вместо текста. Сохраните текст в файл и попросите агента его прочитать. Это самый надёжный способ для объёмного контекста: файл не «съест» строку ввода, а агент прочитает ровно то, что нужно, и возьмёт из него только релевантное.
  3. Ссылка на источник. Если текст уже лежит в проекте — лог, заметка, другой файл, — просто скажите агенту, где он лежит: «прочитай logs/2026-09-19.txt и найди ошибки». Агент сам откроет файл и отфильтрует нужное.

Пример многострочного запроса с сохранением структуры:

ai >> Вот описание задачи:
ai >> 1. В API-роуте /api/orders возвращается 500 при пустом теле.
ai >> 2. Ожидаемое поведение: 400 с сообщением об ошибке.
ai >> 3. Найди обработчик, исправь и добавь тест.
ai >> Готово, когда: тест на пустое тело проходит и возвращается 400.
ai >> [Enter]

Обратите внимание на нумерацию пунктов.

Агенту проще работать со структурированным списком, чем со сплошным текстом. Это же правило работает и для промптов внутри файлов.

Follow-up: уточнение и смена направления

Даже идеальный запрос не гарантирует идеального результата с первого раза. Умение работать с ответом агента — отдельный навык, и он делится на два сценария: уточнение и смена направления.

Уточнение после ответа

Если агент понял задачу, но сделал не совсем то, что вы хотели, — не повторяйте задачу заново и не начинайте новую сессию. Уточните точечно, указав на конкретное расхождение:

Почти готово. Функция validateAmount работает, но я ожидал,
что она будет принимать второй аргумент withTax. Добавь его
и обнови все вызовы. Тесты перезапусти.

Ключевое слово здесь — «почти готово». Оно сообщает агенту, что переделывать всё не нужно, нужно только поправить конкретное место. Это экономит и токены, и нервы: агент не «переписывает» уже сделанное, а точечно правит.

Смена направления

Если вы поняли, что подход был неверным, — используйте redirect-запрос:

Забудь предыдущий подход. Вместо отдельной функции сделай
валидацию частью существующего модуля validators.ts.
Сделай минимальный шаг и подтверди, что понял.

Redirect-запрос сохраняет весь изученный контекст (структуру проекта, прочитанные файлы) и сбрасывает только линию рассуждения. Он дешевле новой сессии и быстрее, чем долгие объяснения.

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

Типичные ошибки промптинга в терминале

Большинство проблем с агентом в терминале — не «агент плохой», а ошибки в формулировке запроса.

Пять самых частых ошибок

  1. Расплывчатый запрос без контекста. «Сделай лучше» или «оптимизируй» не говорят агенту ничего. Агент выбирает самое вероятное толкование — и почти всегда не то, что вы имели в виду. Всегда указывайте, что именно менять и по какому критерию.
  2. Несколько задач в одном запросе. «Исправь баг, добавь фичу и почини стили» — агент начнёт выполнять всё параллельно, перемешает изменения и вернёт кашу. Одна задача — один запрос. Если задач несколько, разбейте на последовательные шаги.
  3. Отсутствие критерия готовности. Без «готово, когда» агент считает задачу выполненной, как только написал код, — а не когда тесты прошли. Результат — лишние циклы проверки с вашей стороны.
  4. Передача контекста с опечатками и сокращениями. Терминальный ввод провоцирует на «быстрые» сообщения. Но агент читает буквально: опечатка в имени файла — и он ищет несуществующий файл. Проверяйте имена файлов, функций и флагов перед отправкой.
  5. Повторение запроса вместо уточнения. Если агент не понял, перепечатывать тот же запрос бесполезно — он не станет понятнее. Переформулируйте: добавьте контекст, уточните критерий, покажите пример ожидаемого результата.

Та же логика работает и наоборот. Если вы замечаете, что агент начал игнорировать часть инструкций или отвечать многословно (признаки Dumb Zone) — это уже не проблема формулировки, а сигнал, что пора делать чек-поинт и, возможно, завершать сессию.

Итоги

Промптинг в терминале — это умение собирать самодостаточный запрос из трёх частей (контекст, задача, критерий готовности), подавать большой контекст через файлы и многострочный ввод, а также точно уточнять и менять направление через follow-up.

Хорошая формулировка экономит не токены, а ходы: чем меньше итераций на задачу, тем дольше сессия остаётся в Smart Zone и тем больше работы вы успеваете сделать до заполнения окна.

В следующем уроке выйдем за пределы терминала и разберём, как coding agent интегрируется с вашей IDE: какие операции можно делать прямо в редакторе и как настроить связку агент + IDE для комфортной работы.

Глоссарий

  1. Промптинг — искусство формулировки запросов к LLM или агенту, обеспечивающее нужный результат с минимальным числом итераций.
  2. Самодостаточный запрос — запрос, содержащий весь необходимый для первого шага контекст, задачу и критерий готовности.
  3. Контекст запроса — часть промпта, описывающая текущее состояние проекта, релевантные файлы и ограничения.
  4. Критерий готовности — часть промпта, определяющая, как проверить, что задача выполнена.
  5. Многострочный ввод — режим терминала, позволяющий собирать запрос из нескольких строк и отправлять его целиком.
  6. Follow-up — последующий запрос, уточняющий или меняющий направление работы после ответа агента.
  7. Redirect-запрос — команда смены направления внутри сессии с сохранением накопленного контекста.
  8. Слэш-команда — служебная команда harness (новая сессия, смена модели), начинающаяся с символа «/».
  9. Dumb Zone — состояние, в котором качество рассуждения агента деградирует из-за переполнения контекстного окна.
  10. Smart Zone — диапазон заполнения контекстного окна, в котором агент сохраняет полную способность к рассуждению.

Теги: