ИИ-ассистент для кода это языковая модель плюс обвязка: плагин в IDE, который собирает контекст, отправляет запрос и показывает результат. Чтобы пользоваться им осознанно и толково отвечать на собесе, достаточно понимать несколько практических вещей. Теория трансформеров подробно разобрана в треке LLM, здесь только то, что влияет на ежедневную работу.
Три режима работы
- Автодополнение. Модель дописывает строку или блок прямо в редакторе. Видит текущий файл и немного соседних. Быстро, дёшево, ошибки мелкие, но частые.
- Чат. Вы задаёте вопрос, прикладываете файлы или выделенный код. Удобно для объяснений, черновиков функций, разбора ошибок.
- Агент. Ассистент сам читает файлы, правит несколько мест, запускает команды и тесты, повторяет цикл до результата. Сильнее всего ускоряет и сильнее всего может навредить.
Чем больше автономии, тем важнее проверка. Подробнее про агентов в отдельном модуле.
Контекст решает всё
Модель не помнит ваш проект между запросами. Она знает только то, что попало в текущий запрос: системные инструкции инструмента, ваш текст, открытые и приложенные файлы, найденные куски репозитория, историю диалога.
Отсюда практические выводы:
- Ассистент не знает про ваш внутренний хелпер, если его не показали. Он напишет свой, похожий.
- Он не знает договорённости команды, пока они не записаны в файл правил или в запрос.
- Длинный диалог со старыми неудачными попытками мешает: модель цепляется за них.
Окно и токены
Текст режется на токены: куски слов, символов, кода. У модели есть контекстное окно, максимум токенов на запрос вместе с ответом. Оно большое, но не бесконечное, и всё, что в него не влезло, для модели не существует.
Чтобы уложиться, инструменты делают индексацию репозитория: строят поиск по коду (часто через эмбеддинги и обычный текстовый поиск) и подкладывают в запрос самые похожие фрагменты. Поиск может промахнуться, и тогда модель работает без нужного файла.
Даже если всё влезло, качество внимания к середине длинного контекста бывает ниже, чем к началу и концу. Поэтому короткий точный контекст обычно лучше, чем «весь проект».
Токены стоят денег и времени: огромный контекст на каждый запрос замедляет ответ и расходует лимиты.
Почему ассистент ошибается уверенно
Модель генерирует правдоподобное продолжение, а не проверенный факт. Отсюда типовые ошибки:
- Выдуманные API. Метод, который «логично было бы иметь» библиотеке, но его нет.
- Устаревшие знания. У модели есть дата отсечки обучения. Новую версию фреймворка она может не знать и писать по старому API.
- Смешение версий. Половина кода в стиле одной мажорной версии, половина в стиле другой.
- Уверенный тон. Модель не сомневается вслух, даже когда ошибается.
Ответ на одинаковый запрос может отличаться от раза к разу: генерация вероятностная. Это нормально, но значит, что «в прошлый раз сработало» ничего не гарантирует.
Что модель делает хорошо и плохо
Хорошо: шаблонный код, преобразования данных, тесты по готовому примеру, перевод между языками, объяснение незнакомого кода, регулярки и SQL с последующей проверкой.
Плохо: новые библиотеки и внутренние API без документации, тонкая конкурентность, точная арифметика в уме, решения, требующие знания бизнес-контекста, который нигде не записан.
Облако или локально
Большинство ассистентов отправляет контекст на сервер провайдера. Есть и локальные модели, которые работают на машине разработчика или на сервере компании. Они слабее топовых облачных, но код не покидает периметр. Выбор между ними это вопрос политики безопасности, о нём модуль про безопасность и право.
Как это звучит на собесе
Хороший ответ показывает модель в голове: «Ассистент видит только то, что попало в контекст, поэтому я сам даю нужные файлы и правила. Он может выдумать API или писать по старой версии, поэтому всё проверяю запуском и тестами».