~/VibeHandbook

AI-сервисы

microsoft.github.io

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'."
}