У агента несколько режимов, и выбирают их не по вкусу, а по степени неопределённости задачи. Ask исследует и отвечает, ничего не меняя. Plan задаёт вопросы, изучает код и собирает редактируемый план. Agent правит файлы, запускает инструменты и проверяет результат. Debug строит гипотезы, добавляет временное инструментирование и анализирует поведение во время работы. Разница между ними не в уме модели, а в наборе разрешённых действий и в моменте, когда требуется ваше согласие: четыре режима - четыре разных ответа на вопрос, чего вам сейчас не хватает.
Наивная стратегия - всегда включать самый мощный режим: он же умеет больше. На практике это даёт худший результат именно там, где неопределённость выше всего. Агент, которому дали неоднозначное требование, не остановится уточнять - он выберет трактовку и начнёт менять код. Диагностировать потом придётся не задачу, а получившийся diff, и стоить это будет дороже, чем один заход в режиме вопросов. Неопределённость не исчезает от того, что её отдали более способному инструменту: она просто превращается в код, который выглядит готовым.
Разница между режимами удобнее всего читается по тому, чего от них не стоит ждать. От Ask - готового изменения: он объясняет, а не делает. От Plan - автоматической реализации: план надо принять, и в этом его ценность. От Agent - безошибочности без ревью: он делает и проверяет, но не отвечает за то, что вы согласились с результатом. От Debug - пользы без воспроизведения: пока проблема не воспроизводится, инструментировать нечего.
Полезно один раз свести режимы в таблицу с этим четвёртым столбцом. Ниже такая карта: что режим делает, когда его выбирать и чего от него не ожидать. К ней возвращаются в начале задачи: выбор режима - это первое решение, которое либо экономит вам час, либо создаёт лишнюю работу.
| Режим | Что делает | Когда выбирать | Чего не ждать |
|---|---|---|---|
| Ask | Исследует и отвечает без правок | Незнакомый код, архитектурный вопрос, подготовка объёма работ | Готового изменения |
| Plan | Задаёт вопросы, изучает код и собирает редактируемый план | Несколько систем, неоднозначные требования, важное согласование |
| Автоматической реализации до одобрения |
| Agent | Правит файлы, запускает инструменты и проверяет | Понятная задача с измеримым результатом | Безошибочности без ревью |
|---|
| Debug | Строит гипотезы, инструментирует и анализирует поведение | Воспроизводимый сложный сбой, гонка, утечка, регрессия | Пользы без точного воспроизведения |
|---|
У плана есть тонкость, о которой легко забыть. По умолчанию план сохраняется в домашнем каталоге, то есть остаётся вашим личным черновиком. Отдельное действие переносит его в проект - и вот тогда он становится частью командной истории: его видно, его можно обсуждать и на него можно ссылаться. Пока план личный, он лежит файлом в домашнем каталоге и остаётся вашим черновиком; перенесённый в рабочее пространство, он становится документом, по которому потом восстанавливают, почему сделано именно так.
Debug устроен как метод, а не как кнопка. Он просит воспроизвести проблему, собирает данные через локальный отладочный сервер, затем делает узкую правку и убирает временное инструментирование. Здесь важно не соглашаться на фикс до повторного воспроизведения: пока падение не воспроизводится стабильно, любая правка - выстрел вслепую. И отдельно проверяйте, что отладочные логи убраны: инструментирование, забытое в коде, живёт дольше, чем баг, ради которого его добавили.
У плана есть цена, и её стоит признать. Он тратит ваше время на чтение и правку до того, как появится хотя бы строка кода, и для правки в одном файле это лишний обряд. Признак, по которому видно, что план действительно нужен, простой: вы не можете заранее назвать список файлов, которые изменятся. Пока список называется навскидку, задача понятна и без плана. Как только он не называется, неопределённость реальна, и разобраться с ней на бумаге дешевле, чем в diff.
Ask и план легко перепутать: оба не меняют код. Отвечают они на разные вопросы. Ask закрывает нехватку понимания - как здесь всё устроено, где живёт эта логика, что сломается при изменении. План закрывает нехватку согласованного намерения - что именно делаем, в каком порядке и как проверим. Отсюда диагностический признак: план из общих фраз, где нет ни файлов, ни проверок, означает, что не хватало понимания, а не плана. В этом случае возвращаются в режим вопросов, а не одобряют написанное.
Переключение режимов работает одним сочетанием, и это приглашает менять их по ходу работы. Практика, которая экономит больше всего: начать с вопросов, когда код незнаком; перейти в план, когда задача касается нескольких систем; принять план и перейти в агента; вернуться в отладку, если поведение расходится с ожиданием. Если реализация ушла не туда, часто быстрее восстановить снимок, уточнить план и запустить заново, чем чинить поверх.
Типичные провалы выбора режима предсказуемы. Отправить в агента задачу, у которой ещё нет однозначной трактовки. Одобрить план из общих фраз, где нет ни файлов, ни проверки. Согласиться на фикс, не воспроизведя проблему. И оставить в коде отладочное инструментирование, которое добавлялось на один заход.