Когда нужно изменить один фрагмент, рука тянется открыть агента и описать правку словами. Соблазн понятен: агент умеет больше, значит, пусть он и делает мелочь. Но на локальном изменении это перебор - вы платите полным агентным циклом за то, что решается точечным инструментом, и получаете больше проверки, чем стоила задача.
Для таких случаев в Devin Desktop есть Command - отдельная поверхность точечного редактирования, а не команда агента. Выделите код и нажмите Cmd/Ctrl+I: Command перепишет ровно выделенные строки. Без выделения он вставит результат в позиции курсора. Принять изменение можно сочетанием Cmd/Ctrl+Enter, отклонить - Cmd/Ctrl+Delete; те же кнопки доступны в code lens над сгенерированным diff.
Сила Command в узости, и запрос должен быть таким же узким. Хороший промпт несёт локальное намерение и границы: "замени ручной retry на функцию withBackoff, сохрани публичную сигнатуру и не трогай обработку 4xx". Такой запрос говорит инструменту не только что сделать, но и чего не менять, - и именно вторая часть удерживает точечную правку от расползания.
Ломается это, когда точечным инструментом пытаются сделать нелокальную работу. Command оптимизирован под изменения в пределах текущего файла и описываемые одним намерением; переименование по всему проекту, согласованная правка в нескольких модулях или задача с побочными эффектами - уже не его размер. Признак, что вы вышли за границу, простой: намерение перестаёт умещаться в одну фразу про одно место. И наоборот, дробить крупную работу на десяток вызовов Command в надежде обойтись без агента - ложная экономия: согласованность между файлами придётся держать в голове самому, а именно её и снимает проектный агент.
Когда задача пересекает файлы, инструмент меняют, а не насилуют. Многофайловая, многошаговая работа - это Devin Local с его циклом инструментов, правами и проверкой diff. Переход туда не поражение Command, а признание масштаба: точечный редактор закрывает точечное, проектный агент - проектное, и попытка сделать второе первым даёт незаконченную, рассыпанную по файлам правку.
У Command своя модель взаимодействия, и это стоит знать заранее. Он использует отдельные модели Devin, оптимизированные под редактирование текущего файла, и, по текущей документации, не расходует premium model credits - в отличие от полноценного агента. То есть частые мелкие правки через Command дешевле по кредитам, чем те же правки через агентный цикл. Но каталог и условия меняются, поэтому конкретику по своему плану сверяют на странице usage, а не по этой строке.
Дешевизна в кредитах не означает бесплатность во внимании. Command вносит изменение так же реально, как агент, и в чувствительном коде - авторизация, денежные суммы, публичные контракты API - его вывод проверяют не менее строго. Экономия кредитов здесь не повод ослабить чтение diff; она лишь снимает стоимость самого вызова, а не стоимость ошибки в принятом результате.
Проверять результат Command проще всего сразу после генерации, пока фрагмент перед глазами. Прочитайте diff в пределах выделения: сохранилась ли сигнатура, которую вы просили не трогать, не изменилось ли поведение за пределами намерения, не затронуты ли соседние ветки. Если правка касалась чего-то за границами файла, это уже сигнал, что задача была не для Command. Принятое сочетанием Cmd/Ctrl+Enter должно совпадать с тем, что вы описали, а не быть похожим на это. Полезно и заметить, чего в diff быть не должно: новых импортов, тронутых соседних функций, изменённых сигнатур сверх заявленного.
Инженерный смысл прост: Command - это скальпель для одного места, а не универсальный агент в миниатюре. Он выигрывает там, где намерение локально, границы названы и результат виден целиком; он проигрывает всюду, где работа не помещается в одно выделение. Держать это различие - значит каждый раз тратить ровно тот инструмент, которого хватает, и не платить проверкой за лишнюю мощность.
Отдельно стоит помнить, с чего Command начинается - с выделения. Что попало в выделение, то и станет областью правки: захватите лишнюю строку, и инструмент имеет право её тронуть; оставьте за границей нужное, и он его не увидит. Точность выделения задаёт точность результата раньше, чем формулировка запроса, поэтому сначала аккуратно очерчивают фрагмент, а уже потом описывают, что с ним сделать.
Типичные провалы двусторонни. С одной стороны, Command зовут на проектную задачу, получают правку в одном файле и удивляются, почему сборка красная в трёх других. С другой - открывают тяжёлого агента ради переименования переменной в пределах функции и платят циклом за движение скальпеля. Признак обоих один: инструмент выбрали по привычке, не назвав, локальна задача или нет. Назвать размер работы прежде инструмента - и оба провала исчезают.