Чат отвечает текстом. Агент — это модель, которой дали инструменты и
разрешили крутиться в цикле, пока задача не будет сделана. Разница
принципиальная: чат предлагает изменения, агент их вносит.
задача
│
▼
┌─────────┐ что сделать дальше ┌──────────────┐
│ модель │──────────────────────▶│ инструмент │
│ │◀──────────────────────│ │
└─────────┘ результат └──────────────┘
│ ▲ файлы, поиск,
│ └── повторять, пока не готово терминал, сеть
▼
ответ человеку
На каждом витке модель видит всю историю: что просили, что она уже сделала,
что ответили инструменты. Решает, что делать дальше, вызывает инструмент,
получает результат — и снова. Останавливается, когда считает задачу
законченной, упирается в лимит шагов или спрашивает человека.
Всё. Никакой магии внутри нет — вся «агентность» в этой петле.
Набор у всех примерно один:
| Инструмент | Зачем |
|---|---|
| Чтение файлов | посмотреть, что уже написано |
| Запись и правка | собственно работа |
| Поиск по коду | найти, где определена функция, кто её зовёт |
| Терминал | собрать, прогнать тесты, посмотреть логи |
| Сеть | документация, чужие API |
| Подагенты | отдать кусок работы отдельной копии со своим контекстом |
Терминал — самый важный и самый опасный. Именно он превращает «предложила
код» в «проверила, что код работает»: агент запускает тесты, видит красное и
чинит сам, не спрашивая. Он же позволяет снести не то. Про границы — в
Безопасности.
Отдельная тема — MCP: стандартный способ
подключить агенту свои инструменты (базу, трекер, внутренний сервис), чтобы
не писать интеграцию под каждый клиент отдельно.
Всё, что агент помнит, лежит в контекстном окне: задача, файлы, вывод команд,
собственные рассуждения. Окно конечно. Каждый прочитанный файл и каждый
простыня-лог занимают в нём место.
Из этого следуют вещи, которые сначала кажутся странными:
cat на файл в 5000 строк — дорогая операция. Хороший агент читаетКогда место кончается, история сжимается: старое заменяется пересказом.
Пересказ всегда что-то теряет — обычно ту деталь, которая была важной.
Знакомая картина: первые шаги бодрые, потом агент начинает ходить кругами.
Причины почти всегда из этого списка.
Нет обратной связи. Если проверить себя нечем — нет тестов, сборка идёт
десять минут, ошибка вылезает только в браузере — агент не знает, стало лучше
или хуже. Он гадает. Это главная причина, и лечится она не промптом, а
проектом: быстрые тесты и строгие типы делают агента заметно умнее.
Накопление мелких неточностей. Каждый шаг чуть-чуть не тот, к десятому
сумма расхождений уводит в сторону от задачи.
Цель размылась. Исходная формулировка утонула в контексте под слоем
логов, и агент чинит последнюю ошибку вместо того, чтобы делать то, что
просили.
Зацикливание на подходе. Выбрал направление, оно не работает, но он
продолжает его чинить вместо того, чтобы отступить. Модели плохо даётся
«я был неправ на четыре шага назад».
Ложная победа. Тест позеленел, потому что агент его ослабил. Формально
задача решена.
Практическое следствие: если агент буксует третий круг — не подбадривайте
его, а остановите. Посмотрите, что он вообще сделал, откатите и
переформулируйте.
git checkout, а не инцидента.В редакторе (Cursor, Windsurf, Cline) — видит открытый проект, работает
рядом с вами, изменения показывает дифом. Ниже порог входа, удобно править
на лету.
В терминале (Claude Code, Codex, Aider) — живёт в проекте целиком, сам
запускает команды, читает логи, гоняет тесты. Мощнее и уместнее для задач,
где надо много ходить по коду.
Автономный — в CI, по задаче из трекера, по расписанию. Здесь человека
рядом нет вообще, поэтому критичны границы прав и качество автопроверок:
единственный, кто ловит ошибку, — это ваши тесты.
Подборка конкретных инструментов с оговорками — на странице
Инструменты.