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 — когда агенту не нужно знать о команде.
Проверь себя
Вы хотите сами запустить type check, а потом попросить агента исправить ошибки из вывода. Как запустить команду?
!
в начале строки
Ctrl+Z
, затем
fg
Ctrl+B
и панель фоновых задач
Ctrl+Z
как раз прячет команду от агента, второй терминал заставляет копировать вывод руками, а
Ctrl+B
нужен процессам, которые не завершаются, — type check заканчивается сам.
Вы запустили dev-сервер через !, и поле ввода не освобождается: сервер не завершится. Что сделать?
Ctrl+B
, чтобы увести команду в фон
Ctrl+Z
, затем
fg
Ctrl+C
и попросить агента запустить сервер
Ctrl+B
уводит команду в фон, её вывод пишется в файл, который агент может прочитать, а управлять задачей можно через
/tasks
.
Ctrl+Z
приостановит весь Claude Code,
Ctrl+C
остановит сервер, а ждать бессмысленно — dev-сервер не завершается.
Нужно выполнить команду, вывод которой агент видеть не должен, и при этом сохранить состояние session. Что сделать?
Ctrl+Z
, выполнить команду, затем
fg
!
и не обращать внимания на вывод
Ctrl+Z
приостанавливает Claude Code, команда выполняется в обычном shell, а
fg
возвращает session в прежнем состоянии. Через
!
вывод попадёт в контекст, просьба «не смотреть» его оттуда не уберёт, а после выхода session придётся возобновлять заново.
Источники
- Anthropic, Interactive mode
- Anthropic, Commands
- По мотивам AI Coding Crash Course, AI Hero: урок «Running Bash Commands»
Текст подготовлен с помощью LLM и может содержать неточности.