Headless-режим¶
Headless-режим Koda CLI выполняет запрос без интерактивного интерфейса и возвращает результат в stdout. Он предназначен для скриптов, пайплайнов CI/CD и любой автоматизации, где диалог в терминале не нужен.
В этом режиме интерфейс не рендерится: CLI принимает запрос, работает с моделью и инструментами, а затем завершает процесс.
Все флаги запуска перечислены в аргументах CLI.
Когда включается headless-режим¶
Headless-режим активируется автоматически, если соблюдено одно из условий:
- передан флаг
-p(или--prompt) с текстом запроса; - ввод подаётся через stdin, когда процесс запущен не в TTY-окружении (например, через конвейер).
В следующем примере команда передаётся через echo, а результат выводится в терминал:
Тот же результат достигается флагом --prompt:
Совместимость способов запуска
Содержимое stdin добавляется к тексту --prompt с разделителем в виде пустой строки.
Так можно комбинировать директиву из скрипта с динамическим вводом из конвейера.
Headless-режим запускается и тогда, когда окружение не является интерактивным.
В таких случаях CLI автоматически переходит к обработке ввода из stdin без флага --prompt.
Ввод¶
Источники ввода для headless-режима:
- флаг
--prompt; - stdin, если процесс запущен не в TTY и ввод не пуст;
- комбинация: stdin добавляется к запросу из
--prompt.
Лимит объёма stdin — 8 МБ. При превышении ввод усекается до лимита, а в stderr выводится предупреждение.
Проброс ввода через конвейер
Флаг --prompt-interactive (-i) нельзя использовать вместе с вводом из stdin.
Если -i передан, а процесс не запущен в TTY, CLI завершается с ошибкой и кодом 1.
Для работы без интерактивного интерфейса настройте способ аутентификации заранее через переменные окружения:
KODA_AUTH_ACCESS_TOKEN, KODA_AUTH_REFRESH_TOKEN или KODA_API_KEY.
Подробнее — в разделе аутентификации.
Вывод¶
В headless-режиме stdout и stderr разделены:
| Поток | Что попадает |
|---|---|
stdout |
итоговый ответ модели без служебной информации |
stderr |
reasoning модели и сообщения об ошибках |
Reasoning выводится в stderr только при флаге --show-reasoning.
По умолчанию в stdout остаётся только итоговый ответ.
Последовательные переводы строк в ответе схлопываются до двух подряд, чтобы вывод оставался компактным.
Если вывод направлен в команду, которая завершилась раньше, обрыв канала считается штатным завершением:
процесс выходит с кодом 0, не порождая ошибку EPIPE.
Коды завершения¶
CLI использует два основных кода завершения в headless-режиме:
| Код | Значение |
|---|---|
0 |
успешное выполнение |
1 |
ошибка: сбой API, некорректные флаги, отсутствие ввода или ошибка аутентификации |
Некорректная комбинация флагов (например, одновременные --prompt и --prompt-interactive) приводит к ошибке и завершению с кодом 1.
Отсутствие ввода (промпта и данных stdin) также завершает процесс с кодом 1.
Ограничение числа шагов
Максимальное число ходов модели регулируется настройкой maxSessionTurns в settings.json (по умолчанию выключено).
При превышении лимита CLI сообщает об этом в stderr и завершает выполнение.
Остальные настройки — на странице настройки.
Подтверждение действий¶
По умолчанию в неинтерактивном режиме инструменты, требующие подтверждения, отключаются, чтобы агент не выполнял действия без вашего согласия.
Выбор режима подтверждения задаётся флагом --approval-mode:
| Режим | Что происходит |
|---|---|
default |
инструменты с подтверждением отключены |
auto_edit |
автоматически подтверждаются инструменты редактирования файлов |
yolo |
автоматически подтверждаются все инструменты |
Допустимо использовать -y (--yolo) вместо --approval-mode yolo, но не одновременно.
Примеры автоматизации¶
Простой запрос с флагом --prompt:
Отправка вывода конвейером, reasoning не показывается:
Запрос с заданной моделью и подтверждением правок:
Использование в CI: выполнить запрос и считать результат из stdout:
Ограничения¶
- Структурированный вывод (JSON, JSONL) не поддерживается — CLI возвращает только текстовый ответ в stdout.
- Интерактивные возможности TUI в headless-режиме недоступны.
- Подтверждение инструментов по умолчанию выключено, что защищает от нежелательных действий.