Встроить ИИ в редактор через LSP проще, чем расширением

Расширения для VS Code и других редакторов позволяют добавлять автодополнение, но требуют переписывания под каждый редактор. Расширение для VS Code не работает в Vim, а код для IntelliJ невозможно перенести в Nova.

Language Server Protocol решает эту проблему: один сервер автодополнения общается со всеми редакторами по стандартному протоколу. Разработчик писал серверную часть один раз, а редакторы подключались к нему как клиенты.

Как это работает на практике

Редактор отправляет информацию о курсоре и содержимом файла серверу. Сервер запрашивает у модели автодополнение, обогащив запрос контекстом репозитория. Ответ упаковывается обратно в формат LSP и показывается в редакторе.

Подвох: контекст репозитория нужно собрать оперативно. LSP позволяет серверу запросить имена файлов и их содержимое, но на сбор больших деревьев нужна ловушка кэширования.

Поэтому ИИ-помощники через LSP берут контекст меньший, чем монолитные расширения. Но выигрывают в универсальности: один бинарник работает везде.