LSP
Что это
LSP, Language Server Protocol (протокол языкового сервера), — это общий способ для редакторов и инструментов получать актуальную информацию о коде проекта. «Языковой сервер» читает ваш код по мере работы и сообщает об ошибках, типах, вариантах автодополнения и ссылках «перейти к определению». Благодаря протоколу один языковой сервер может обслуживать множество редакторов — те же красные подчёркивания, что вы видите в VS Code, могут питать и инструмент командной строки, и ИИ-агента для написания кода.
Сильные стороны
- Даёт реальную, осознающую язык обратную связь: настоящие ошибки типов и неразрешённые ссылки, а не просто догадки.
- Стандартизирован, поэтому один сервер работает во множестве редакторов и инструментов.
- Обновляется по мере набора текста, так что проблемы всплывают сразу, а не на этапе сборки.
- Питает повседневные функции, на которые полагаются разработчики: автодополнение, всплывающую документацию, переименование, переход к определению.
Компромиссы
- Каждому языку нужен свой собственный сервер, и их качество различается.
- Серверы могут быть тяжёлыми по памяти и CPU на крупных проектах.
- Он сообщает, что не так, но не как это исправить — интерпретация по-прежнему на вас (или на ИИ).
- Настройка может быть капризной; чтобы правильно сконфигурировать нужный сервер для проекта, требуется аккуратность.
Когда использовать
Всякий раз, когда вам нужна надёжная обратная связь по коду в реальном времени по мере его написания — то есть практически всегда. Для вайб-кодинга это важнее всего как источник сигнала: диагностика, которую выдаёт языковой сервер, — это именно то, что вы хотите возвращать обратно в цикл.
Соответствие вайб-кодингу
LSP — это то, что позволяет ИИ видеть те же проблемы, что и вы. Хорошая обвязка передаёт диагностику языкового сервера обратно агенту после каждой правки, так что ИИ ловит собственные ошибки типов и линтинга и исправляет их ещё до того, как вы запустите код. Вместо «выглядит правдоподобно» вы получаете «компилятор согласен». Скажите своему агенту читать диагностику, а не только файл.
// диагностика, которую возвращает LSP-сервер — передайте это обратно агенту
{
"severity": "error",
"range": { "start": { "line": 12, "character": 6 } },
"message": "Type 'string' is not assignable to type 'number'."
}