Перейти к тексту

Claude Code: работа с coding-агентом3. Знакомство с Claude Code

Shell-команды в session: !, Ctrl+B и Ctrl+Z

Засчитывается, когда отвечены все вопросы квиза

Зачем это нужно

Агент без доступа к shell только пишет код и надеется, что он работает. С shell он сам запускает тесты, type check и dev-сервер, читает ошибки и исправляет их — получает обратную связь. Часто агент сам понимает, какую команду запустить. Но бывает, что вы точно знаете команду и хотите выполнить её сами: прогнать type check и отдать агенту ошибки, поднять dev-сервер, посмотреть что-то, не засоряя контекст. Для этих трёх случаев в Claude Code три приёма.

Как это устроено

Shell mode: ! в начале строки. Промпт, который начинается с !, выполняется как shell-команда напрямую: агент её не запускает и не одобряет, команда сразу идёт в shell.

! pnpm typecheck

Shell mode:

  • добавляет команду и её вывод в контекст разговора — агент видит результат и может по нему работать;
  • показывает вывод по мере выполнения;
  • не требует, чтобы агент интерпретировал или одобрял команду;
  • дополняет команду по Tab из истории прошлых !-команд в этом проекте.

Выйти из shell mode можно через Esc, Backspace или Ctrl+U на пустом поле.

Фон: Ctrl+B. Dev-сервер не завершается, и shell mode будет ждать его вечно. Нажмите Ctrl+B, пока команда работает, — она уйдёт в фон. Так же Ctrl+B уводит в фон и Bash-команду, которую запустил сам агент. У фоновой задачи есть ID, её вывод пишется в файл, и агент может прочитать его Read tool — например, логи dev-сервера после запроса к нему. Посмотреть и остановить фоновые задачи можно командой /tasks. При выходе из Claude Code фоновые задачи останавливаются. В tmux Ctrl+B нужно нажать дважды: это prefix tmux.

Пауза: Ctrl+Z. Иногда вывод команды агенту не нужен, а контекст и состояние session жалко терять. Ctrl+Z приостанавливает весь процесс Claude Code и возвращает вас в shell. Выполните что нужно, затем fg — Claude Code вернётся в том же состоянии, а агент так и не увидит, что вы делали. Это работает только в Unix-системах.

Задача Приём
Агент должен увидеть вывод ! перед командой
Долгий процесс, например dev-сервер ! и затем Ctrl+B
Агент не должен видеть команду Ctrl+Z, команда, fg

Практика

В Cadence запустите Claude Code и выполните type check в shell mode — посмотрите в package.json, как он называется в проекте, например:

! pnpm typecheck

Вывод попал в разговор, и агент может на него отреагировать. Попросите «кратко объясни вывод последней команды»: агент ответит, не запуская её повторно, — вывод уже в контексте. Затем запустите dev-сервер через ! и нажмите Ctrl+B: поле ввода снова свободно. Выполните /tasks и найдите там сервер. Остановите его оттуда же.

Подводные камни

  • Вывод занимает контекст. Всё, что напечатала команда в shell mode, попадает в разговор. Длинный лог сборки съест заметную часть context window — для таких команд лучше Ctrl+Z.
  • Ctrl+Z приостанавливает Claude Code целиком, а не одну команду. Агент в это время не работает, пока вы не выполните fg.
  • Ctrl+C вместо Ctrl+B. Остановленный dev-сервер не оставит ни работающего приложения, ни логов, которые агент мог бы читать.

Вывод: ! — когда вывод нужен агенту, Ctrl+B — когда процесс не заканчивается, Ctrl+Z — когда агенту не нужно знать о команде.

Проверь себя

Источники

  • Anthropic, Interactive mode
  • Anthropic, Commands
  • По мотивам AI Coding Crash Course, AI Hero: урок «Running Bash Commands»

Текст подготовлен с помощью LLM и может содержать неточности.