Введение в разработку с ИИ
Теория: AI-автодополнение и Next Edit Suggestions
Перед тем как браться за полноценную агентскую разработку, имеет смысл сначала подключить AI-автодополнение и NES (Next Edit Suggestions). Это самый простой способ встроить ИИ в повседневную работу: не через отдельный чат и не через полноценного агента, а прямо в редакторе, в момент набора и редактирования кода.
Выбор и настройка редактора
Подобные возможности сегодня есть почти во всех популярных редакторах и IDE, и в целом работают они очень похоже: ИИ предлагает продолжение кода, подсказывает следующие правки и помогает быстрее вносить типовые изменения. Но для простоты и универсальности в курсе мы будем показывать примеры на VS Code, потому что это самый распространенный и понятный базовый вариант.

Чтобы все это заработало, нужен какой-то AI-помощник, подключенный к редактору. В случае с VS Code самый очевидный вариант - GitHub Copilot: ставите расширение, входите в GitHub-аккаунт и при необходимости оформляете подписку или используете доступный бесплатный режим с лимитами, если он есть на вашем тарифе. После этого нужно убедиться, что inline suggestions действительно включены. При этом Copilot - не единственный вариант: похожие возможности есть у Cursor, JetBrains AI, Codeium, Supermaven, Tabnine и других инструментов. В рамках курса нам не так важен конкретный вендор, как сам подход: редактор должен уметь показывать AI-подсказки прямо в коде и предлагать следующие правки по ходу редактирования.
Как альтернативу (в случае технических и других проблем) можно рассматривать SourceCraft, сервис разрабатываемый Яндексом и предоставляющий плагин для редактора.
Ai-автокомплит
Обычное AI-автодополнение в VS Code работает как "умный ghost text": вы начинаете писать функцию, комментарий, тест или условие, а Copilot предлагает продолжение прямо под курсором. Такие подсказки особенно полезны в знакомом коде, где нужно быстро дописать очевидный фрагмент, не отвлекаясь на документацию и не переключаясь в чат. При этом подсказка учитывает текущий файл, соседний код и старается подстроиться под стиль именования, форматирования и уже используемые паттерны.

Такой серый текст прямо в строке и называется ghost text. Это не вставленный код, а только предложение редактора: его можно принять целиком, обычно клавишей Tab, проигнорировать и просто продолжить печатать, либо отменить, если подсказка мешает. В этом режиме автодополнение ощущается намного мягче, чем старые popup-списки, потому что не перехватывает на себя весь фокус и не заставляет каждый раз выбирать вариант вручную.
Это важный момент еще и потому, что ранние AI-подсказки часто встраивались в обычный список автокомплита рядом с методами, переменными и сниппетами редактора. Из-за этого они нередко мешали: хотели быстро выбрать реальный метод из autocomplete, а сверху оказывался длинный AI-вариант, который ломал привычный ритм и создавал лишний шум. Формат ghost text во многом решает эту проблему: стандартный автокомплит остается для точного выбора символов и API, а ИИ-подсказка живет отдельно и не так агрессивно вмешивается в набор кода.
При этом важно сразу принять, что такие подсказки иногда промахиваются. Где-то модель продолжит мысль не так, как вы хотели, где-то предложит лишнюю абстракцию, а где-то начнет раздражать слишком ранним или шумным появлением. Обычно это особенно заметно в слабоструктурированных проектах, в коде без типов и в файлах, где рядом слишком мало полезного контекста. Чтобы автодополнение приносило пользу, а не мешало, имеет смысл держать открытыми связанные файлы, писать чуть более явный код и при необходимости подстроить поведение редактора: например, отключить подсказки для отдельных языков, включать их только там, где они реально ускоряют работу, или увеличить задержку показа.
Next Edit Suggestion (NES)
Следующий шаг - NES. В отличие от обычного автодополнения, NES подсказывает не только продолжение в текущей позиции, но и следующее логичное изменение в файле. Например, если вы переименовали переменную в одном месте, Copilot может предложить обновить остальные вхождения. Если вы начали менять структуру класса, он может подсказать, какие связанные места тоже нужно поправить. По сути это переход от "допиши строку" к "помоги довести правку до конца".

У NES много сильных сценариев: он хорошо подхватывает переименования, помогает дотянуть цепочку связанных правок, подсказывает пропущенные изменения после рефакторинга и иногда ловит совсем мелкие, но неприятные ошибки. При этом важно понимать, что NES - это отдельный тип AI-подсказок внутри редактора, а не просто "еще одна LLM-подсказка". Он должен работать быстро, потому что может вызываться много раз в минуту, и при этом быть достаточно точным, чтобы не разрушать концентрацию. Поэтому хороший NES важен не только тем, что умеет предлагать правки, но и тем, что умеет в нужный момент промолчать.
Отсюда же растут и его ограничения. Если система срабатывает слишком активно, редактор начинает внезапно дергать вас по файлу и предлагать продолжить изменения раньше, чем вы сами определились с направлением. Если слишком осторожна, пользы от нее почти нет. Поэтому современные реализации специально балансируют между скоростью, точностью и навязчивостью: уменьшают количество лишних срабатываний, стараются показывать только более уверенные подсказки и делают сами диффы более читаемыми. Но полностью убрать эффект "внезапного запуска" нельзя, потому что NES по определению пытается угадать следующий шаг без явного запроса.
Нормальный способ жить с NES - воспринимать его как необязательную навигационную подсказку по связанным правкам. Он особенно хорош там, где у изменения уже есть инерция: серия однотипных правок, небольшой рефакторинг, протягивание нового поля или параметра через несколько мест. А вот в исследовательском режиме, когда решение еще только рождается, NES может чаще промахиваться. В таких случаях его не нужно "побеждать" или постоянно отключать: достаточно выработать спокойную привычку принимать полезные попадания и без колебаний игнорировать шум.
Именно поэтому AI-автодополнение и NES - хороший вход в AI-assisted development. Они почти не меняют привычный рабочий процесс, но позволяют почувствовать, как ИИ помогает удерживать поток работы и снимать часть рутинной нагрузки. А уже после этого проще переходить к следующему уровню - к инструментам, которые умеют не только подсказывать, но и самостоятельно исследовать проект, менять файлы и запускать проверки.
Направление через документирование
Один из самых практичных приемов работы с AI-подсказками - перед реализацией коротко написать в комментарии, что именно вы хотите получить. Не в духе общей документации, а как локальное намерение: какую функцию пишем, что она должна учитывать, какие ограничения важны, что именно нужно вернуть. После этого можно начинать реализацию, и автодополнение вместе с NES обычно начинают попадать заметно точнее, потому что модель уже видит не только код вокруг, но и вашу формулировку задачи.
После такого начала редактор с высокой вероятностью начнет предлагать уже не случайный код, а что-то близкое к нужной логике: filter, проверку active, сравнение возраста, копирование массива перед sort и саму сортировку по lastLoginAt. Если бы вы просто написали function getVisibleUsers(users) {, пространство вариантов было бы намного шире и подсказки чаще промахивались бы.
Этот подход имеет смысл использовать тогда, когда название функции не может полностью передать все нюансы задачи. И после ее выполнения, скорее всего, вы захотите удалить этот текст или заменить его на нормальную документацию. Причем можно сделать хитро: не переписывать комментарий самостоятельно, а попросить агента превратить его в аккуратную документацию. Так получаем двойную пользу.

