Внутри терминального агента есть свой набор команд - для режимов, сессий, вывода, внешних серверов, плагинов, конфигурации, песочницы, входа и диагностики. Каталог расширяется вместе с версиями и установленными навыками, поэтому книга разделяет две вещи: статический справочник и живой список. Первый полезен как карта, второй - как источник истины для вашей сборки, и открывается он там же, в разговоре.
Отдельный механизм - режим оболочки, который запускает команду прямо из разговора. У него есть особенности, которые надо знать до первого использования, иначе они выглядят как поломка. Каждая команда выполняется независимо, поэтому переход в другой каталог не сохраняется между вызовами. Время выполнения ограничено, а интерактивные приглашения и бесконечные потоки вывода не поддерживаются.
Эти ограничения не случайны - они задают назначение инструмента. Режим оболочки существует для коротких доказательств: посмотреть статус, прогнать сфокусированный тест, проверить сборку. Сервер разработки, миграция, интерактивный установщик и бесконечный лог живут в обычном терминале со своим жизненным циклом. Попытка запустить их в режиме коротких команд заканчивается обрывом по времени, и это правильное поведение, а не ошибка.
Полезно один раз увидеть, как это выглядит на практике. Ниже - проверка статуса, запуск тестов в подкаталоге одной строкой и просмотр изменений. Обратите внимание на вторую строку: раз каталог между вызовами не сохраняется, переход и команду объединяют в один вызов.
Причина у этого простая, и, зная её, перестаёшь спотыкаться. Каждый вызов уходит в свою оболочку входа и умирает вместе с командой. Не сохраняется при этом не только каталог: экспортированные переменные, активированное окружение языка, выбранная версия инструмента - всё это живёт ровно один вызов. Значит, всё, что нужно команде, пишут в самой команде, а не рассчитывают на состояние, оставшееся от предыдущей.
Быстрый обзор изменений вызывается отдельным сочетанием и устроен как читалка: стрелки переключают файлы и прокручивают, отдельная клавиша добавляет уточнение, а для длинного вывода есть свой режим просмотра. Это ровно то, чего в терминале не хватает по сравнению с редактором, - возможность пройти изменения по файлам, не выходя из разговора и не собирая контекст заново.
Ограничение времени - тридцать секунд, и это не мелочь, а граница применимости. Проверка статуса и сфокусированный тест укладываются, полный прогон монорепозитория или установка зависимостей - нет. Признак того, что вы упёрлись именно в это ограничение, узнаваем: команда обрывается без осмысленной ошибки, всегда примерно на одном месте. Лечение не в повторе, а в сужении прогона или в переносе его в обычный терминал.
Есть важная тонкость про разрешения. Команды с перенаправлением вывода нельзя разрешить прямо в строке вызова - их поведение описывают точной политикой в конфигурации. Это не придирка: перенаправление меняет то, куда попадает результат, и потому относится к правам, а не к синтаксису команды. Правильное место для таких решений - файл конфигурации, где их видно и можно отревьюить.
Инженерный вывод простой: терминальный агент удобен ровно там, где работа укладывается в короткие проверяемые шаги. Он не заменяет обычный терминал и не должен: у длительных процессов свой жизненный цикл, своё логирование и свой способ остановки, и попытка втянуть их в разговор делает хуже и разговору, и процессу.
Типичные провалы предсказуемы. Ждать, что переход в каталог сохранится между вызовами. Запускать сервер разработки в режиме коротких команд и списывать обрыв на баг. Пытаться разрешить команду с перенаправлением прямо в вызове. И считать статический список команд полным, не заглянув в живой каталог своей версии.
/shell git status --short
/shell cd packages/web && pnpm test -- --runInBand
# обзор правок - Ctrl+R, i добавляет уточнение
# каталог не сохраняется между вызовами - переход и команду объединяют в один вызов