Что это решает
Работа с моделью в браузере упирается в перенос. Модель не видит репозиторий: человек копирует фрагменты файлов в окно чата, получает ответ, вставляет обратно, вручную сводит импорты и отступы. Каждая итерация стоит несколько минут возни, а на проекте из сотен файлов такой цикл проигрывает обычной правке руками.
Claude Code убирает перенос. Агент запускается в терминале из корня рабочей копии, ищет файлы по содержимому, читает их, вносит правку, запускает тесты и линтер, показывает diff. Человек занят решениями: что делать, что принять, что выпускать.
Отдельно закрывается класс задач «пройтись по всему проекту»: переименовать поле в сорока местах, вычистить неиспользуемые импорты, дописать тесты к модулю, размотать стек-трейс от строки лога до причины. Работа объёмная и скучная, ошибка в ней стоит дёшево, проверяется за минуту прогоном тестов — подходящая нагрузка для агента.
Третье — вход в незнакомый код. Вопрос «где формируется этот ответ API» отрабатывается поиском по репозиторию за десяток секунд вместо получаса чтения.
Как устроено
Цикл
Внутри крутится один цикл: модель получает задачу и текущий контекст, выбирает инструмент, инструмент выполняется, результат возвращается в контекст, модель выбирает следующий шаг. Цикл идёт, пока задача не закрыта или пока человек не остановил. Всё остальное — обвязка вокруг этого цикла.
Инструменты
Базовый набор: чтение файла, запись файла, точечная правка по совпадению строки, поиск по содержимому (grep), поиск по маске имён (glob), запуск команд оболочки, выборка веб-страниц. Отдельного инструмента для git нет — git идёт через оболочку обычными командами, поэтому агент умеет ровно то же, что умеет пользователь в этом терминале.
Точечная правка работает по принципу «найти уникальный фрагмент и заменить». Отсюда типичная ошибка новичка: просьба «перепиши файл целиком» вместо адресной правки — так теряются куски кода, которые в контекст не попали.
Поиск вместо индекса
Заранее построенного векторного индекса репозитория здесь нет. Файлы ищутся на лету: grep по подстроке, glob по путям, чтение нужных кусков. Плюсы — индекс не протухает, приватный код не уезжает в чужое хранилище эмбеддингов, работает сразу после git clone, ветку переключили — ничего перестраивать не надо. Минусы — каждый поиск тратит токены и время, а на очень большой монорепе поиск идёт дольше, чем по готовому индексу.
Разрешения
Чтение файлов агент делает молча. Запись, правка и любая команда оболочки проходят через подтверждение. Правила складываются в .claude/settings.json (проектный, коммитится в репозиторий) и в пользовательский конфиг: список разрешённых шаблонов команд, список запрещённых. Разумный старт — разрешить git status, git diff, прогон тестов и линтера; запретить всё, что пишет в сеть, в прод и в базу.
Есть режим планирования: агент исследует код и выдаёт план, но ничего не меняет, пока план не принят. На незнакомом проекте это дешевле, чем откатывать правки.
Память проекта
Файл CLAUDE.md в корне читается в начале сессии. Туда кладут то, что агент не выведет сам: как запускается тестовый прогон, какой менеджер пакетов, куда писать нельзя, какие ветки защищены, по какому шаблону называть ветки, где лежит схема базы. Команда /init собирает первую версию по репозиторию, дальше файл ведут руками. Такой же файл в подпапке действует на свою часть дерева.
Правило для этого файла — писать запреты и точные команды, а не пожелания. «Тесты: make test» работает, «пиши качественный код» не работает.
Контекст
Окно контекста конечно, и длинная сессия его забивает: прочитанные файлы, выводы команд, стек-трейсы. По мере заполнения качество падает — агент начинает забывать ранние договорённости и противоречить сам себе. Инструменты управления: /clear — начать с нуля, /compact — сжать историю в конспект и продолжить. Практика простая: одна задача — одна сессия. --continue возвращает последнюю сессию, --resume даёт выбрать из списка.
Расширения
- Слэш-команды: файлы в
.claude/commands/— заготовленный промпт с параметрами, вызывается как/имя. Годится для повторяющихся рутин: разбор упавшего пайплайна, подготовка описания merge request. - Субагенты: описания в
.claude/agents/. Отдельный прогон со своим контекстом и своим набором инструментов, возвращает в основную сессию только сводку. Тяжёлое исследование не забивает основной контекст. - Хуки: команда, привязанная к событию — перед вызовом инструмента, после правки файла, в конце ответа. Через хук вешают форматтер после каждой записи или блокировку опасных команд. Хук выполняет оболочка, а не модель, поэтому его нельзя обойти уговорами в промпте.
- MCP-серверы: подключение внешних систем — трекер, база, CI, почта.
Неинтерактивный режим
claude -p "текст задачи" выполняет задачу и печатает результат в stdout, без диалога. Отсюда растут скрипты и шаги CI: разбор логов ночного прогона, черновик описания релиза, проверка внутренних правил на изменённых файлах.
Полезные сценарии
- Локализация бага по стек-трейсу: агент читает лог, находит файл и строку, поднимает цепочку вызовов вверх, предлагает правку и тест на воспроизведение.
- Массовая смена сигнатуры или переименование поля: правка по всем местам вызова с прогоном тестов после каждого шага.
- Разбор незнакомого модуля: «покажи по порядку вызова, как здесь считается скидка, и назови файлы».
- Дописывание тестов к непокрытому участку с прогоном на месте и починкой того, что упало.
- Рутина вокруг git: ветка от нужной базы, коммиты осмысленными кусками, черновик описания merge request по diff.
- Шаг в CI через
-p: конспект упавшего пайплайна в чат команды или проверка соблюдения внутренних соглашений на изменённых файлах.
Ограничения
Правдоподобный неверный код. Агент уверенно пишет то, чего нет: несуществующий метод библиотеки, поле, которого нет в схеме, флаг, которого нет у утилиты. Тон ответа никак не связан с корректностью, чтение diff обязательно.
Реальная система под руками. Инструмент выполняет команды в настоящей оболочке с правами пользователя. Забытый разрешающий шаблон уровня psql * или docker * однажды прилетит в живую базу. Разрешения настраивают до первой длинной сессии, а не после разбора последствий.
Секреты. Файл .env для агента — обычный текстовый файл: он его прочитает и может процитировать в ответе. Запрет на чтение прописывают в запрещающий список явно.
Деньги и время. Стоимость складывается из прочитанных и написанных токенов. Просьба «посмотри весь проект» на большой кодовой базе съедает лимит за один заход. Дешевле давать точку входа: файл, папку, имя функции, строку лога.
Длинные сессии. После нескольких десятков шагов агент начинает противоречить собственным ранним решениям. Лечится сбросом контекста и переносом договорённостей в CLAUDE.md.
Визуальные задачи. Терминал не показывает страницу. Вёрстку и анимацию агент правит вслепую, пока ему не дадут скриншот или инструмент управления браузером.
Внутренние библиотеки. Приватный фреймворк компании модели неизвестен. Без примеров и описания в CLAUDE.md она пишет по мотивам популярных публичных аналогов — синтаксически чисто и функционально мимо.
Как проверить результат
Смотреть git diff после каждой задачи, а не после пяти. Diff на сорок файлов не читает никто, и именно там проезжает лишняя правка.
Требовать доказательство вместо заявления. «Тесты прошли» проверяется в логе сессии: сама команда, код возврата, хвост вывода. Второй уровень — прогнать те же тесты вручную в чистой оболочке.
Ставить контрольный тест до правки. Перед починкой бага — тест, который падает. После — тот же тест зелёный. Без этого «починил» неотличимо от «переписал так, что ошибка перестала показываться».
Проверять разрешения командой /permissions и глазами по .claude/settings.json. В проектном конфиге не должно быть широких звёздочек на командах, которые пишут в систему.
Проверять актуальность CLAUDE.md. Устаревшая команда запуска тестов заставляет агента изобретать свои и ломать окружение. Быстрая проверка — попросить пересказать правила проекта своими словами и сверить с файлом.
Следить за длиной сессии. Как только агент переспрашивает уже решённое или возвращает откаченный вариант — /clear и заново с коротким описанием состояния.
Правило: агенту отдают выполнение, себе оставляют diff и прогон тестов.
