У Devin Local три режима работы - Ask, Plan и Normal, - и выбирают их чаще всего неправильно: по масштабу задачи. "Большая задача - значит, сразу Normal, чтобы он делал", "маленькая - тоже Normal, чего тут планировать". Масштаб при этом вообще не та ось, по которой стоит выбирать режим, и подмена оси - корень большинства промахов на старте.
Наивная логика привязывает режим к размеру и к нетерпению. Раз цель понятна мне, значит понятна и агенту - переключаюсь в Normal и жду diff. Ask и Plan при таком взгляде выглядят задержкой: лишний разговор перед делом, который хочется проскочить. Именно это нетерпение и запускает самый дорогой сценарий - выполнение при нераскрытой неопределённости.
Ломается это на том, что режимы разложены не по масштабу, а по уровню неизвестного. Ask - когда нужно понять, не трогая код: агент отвечает, ссылается на места в коде, называет риски, но не действует. Plan - когда неясна архитектура или область: агент ведёт read-only исследование и предлагает согласованный план. Normal - когда цель ясна и можно выполнять: на выходе diff, команды и проверка. Ось одна - сколько в задаче ещё непонятного, - и режим её отражает. Масштаб при этом может быть любым: крошечная правка в незнакомом модуле честно начинается с Ask, а большая, но насквозь понятная задача - сразу с Normal.
Сведём это в таблицу, чтобы выбор занимал секунду. Ниже три строки: режим, ситуация, в которой он уместен, и ожидаемый от него выход. К таблице возвращаются перед стартом, чтобы назвать режим осознанно, а не по инерции "всегда работаю в Normal".
Отдельно стоит различать agent mode и permission mode: это разные оси, и их постоянно путают. Режим задаёт тип работы - понять, спланировать, выполнить. Permission mode задаёт, насколько свободно агент действует без подтверждения, через правила deny, ask и allow. Можно быть в Normal с осторожной permission-политикой и в Plan вообще без риска записи. На практике это две ручки, которые крутят независимо: одна отвечает "что агенту сейчас делать", другая - "что ему позволено делать без вас". Частая жалоба "переключил режим, а он всё равно спрашивает подтверждение" почти всегда про то, что крутили не ту ручку: тип работы сменили, а разрешения остались прежними. Смешивать их - значит спорить о свободе действий там, где вопрос был о типе работы.
У Plan есть документированная механика, которую полезно знать. Исследование ведётся read-only, а его результат сохраняется Markdown-файлом по пути ~/.devin/plans/plan-<session>.md - план можно прочитать, поправить и передать в следующую сессию. Ключевые слова megaplan, ultraplan и masterplan в промпте переводят сессию в Plan и просят планировать заметно глубже; при этом хороший план начинается хотя бы с одного уточняющего вопроса, а не с немедленной выдачи шагов.
| Режим | Когда | Ожидаемый выход |
|---|---|---|
| Ask | Нужно понять, без действий | Ответ, ссылки на код, риски |
| Plan | Неясна архитектура или область | Исследование и согласованный план |
| Normal | Цель ясна, можно выполнять | Diff, команды и проверка |
Цена неверного режима асимметрична, и это меняет стратегию по умолчанию. Ошибиться в сторону Ask или Plan дёшево: вы потратили несколько минут на чтение и согласование, но код не тронут, откатывать нечего. Ошибиться в сторону Normal дорого: агент уже наделал правок по неверно понятой цели, и теперь надо разобрать diff, откатить и переобъяснить. Когда цена ошибок неравна, разумно смещаться в дешёвую сторону, пока неизвестность не снята.
Отсюда естественный ход - подниматься по режимам, а не начинать с потолка. Пока область туманна, разумно начать с Ask или Plan и перейти в Normal, когда цель определилась и план согласован. Это не бюрократия: сохранённый план становится контекстом для исполнения, и Normal получает не сырую формулировку, а выверенный маршрут. Переход в обе стороны нормален: если уже в Normal всплыло, что область понята неверно, дешевле вернуться в Plan и переписать маршрут, чем чинить последствия исполнения по неверной карте. Понижение неопределённости в Plan оплачивает себя скоростью и точностью в Normal.
Проверять, что режим выбран верно, можно по совпадению выхода с ожиданием. От Ask вы ждёте понимание и список рисков - если вместо этого появился diff, режим был не тот. От Plan - исследование и план, а не готовые правки. От Normal - diff с командами и проверкой, а не рассуждение о подходах. Несовпадение выхода с режимом - первый сигнал, что задачу отправили не в ту дверь.
Типичные провалы сводятся к одному - к нетерпению. Normal на неясной задаче даёт уверенно сделанное не то. Вечный Ask на ясной - бесконечное обсуждение вместо результата. Plan без единого уточняющего вопроса - красивый план мимо реальной цели. Признак у всех один: режим выбрали по настроению "хочу уже увидеть код", а не по тому, сколько в задаче осталось неизвестного. Назовите уровень неопределённости первым - и режим выберется сам.