Skip to main content
Skip to content

Добавление серверов LSP для GitHub Copilot CLI

Вы можете добавить LSP-серверы для обеспечения Copilot CLI точного интеллекта кода, улучшая их способность ориентироваться по определениям, находить ссылки и переименовывать символы.

Введение

В этой статье объясняется, как добавить LSP-серверы для Copilot CLI. Для получения концептуальной информации о серверах LSP см. AUTOTITLE.

Добавление LSP-сервера для Copilot CLI — это двухэтапный процесс:

  1. Установите программное обеспечение LSP-сервера на ваш локальный компьютер.
  2. Настройте сервер в конфигурационном файле.

Эти шаги подробно описаны в данной статье.

Установка и настройка LSP-сервера

Вы можете добавить LSP-сервер для определённого языка, следующим образом:

  • Использование lsp-setup навыка, который автоматизирует процесс.
  • Ручная установка серверного программного обеспечения и настройка Copilot CLI для использования сервера.

Эти два подхода описаны в разделах ниже.

Использование lsp-setup навыка для добавления языкового сервера

Навык lsp-setup из репозитория «Awesome GitHub Copilot» автоматизирует установку и настройку некоторых популярных языков.

  1. Зайдите на сайт загрузки «Awesome GitHub Copilot» и найдите «lsp»:

https://awesome-copilot.github.com/skills/?q=lsp.

  1. Скачайте навык lsp-setup .

  2. Распаковайте загруженный .zip файл и создайте каталог под названием lsp-setup.

  3. Переместите lsp-setup каталог в один из следующих вариантов:

    • Ваш каталог личных навыков: ~/.copilot/skills/.
    • Каталог навыков проекта: .github/skills/ в репозитории Git.
  4. Начните Copilot CLI, или, если вы сейчас участвуете в сессии CLI, введите /skills reload.

  5. Введите запрос:

    Copilot prompt
    setup lsp
    
  6. Следуйте инструкциям на экране, чтобы выбрать язык для нужного сервера, затем выполните дополнительные шаги.

  7. Когда процесс завершён, введите, /lsp reload чтобы загрузить новый сервер LSP.

  8. Проверьте, был ли сервер добавлен и работает корректно. См. раздел «Подтверждение доступности LSP-сервера » позже в этой статье.

Ручная установка и настройка LSP-сервера

Установка LSP-сервера для определённого языка обычно включает установку пакета через менеджер пакетов, такой npmкак , gem, или pip.

Чтобы вручную установить LSP-сервер, обратитесь к документации по конкретному языковому серверу, который хотите установить. Ниже приведены примеры команд для установки популярных серверов LSP.

Примечание.

Полезные ресурсы для поиска LSP-серверов для разных языков включают: * Implementations на сайте Microsoft Language Server Protocol. * Протокол Language Server на сайте Arch Linux.

Внимание

Устанавливайте LSP-серверы только с тех источников, которым доверяете.

Пример команды установки: TypeScript и JavaScript

Если у вас установлен Node.js, вы можете установить typescript-language-server LSP-сервер с помощью следующей команды:

Bash
npm install -g typescript typescript-language-server

typescript-language-server LSP-сервер поддерживает как TypeScript, так и JavaScript.

Пример команды установки: Ruby

Если у вас установлен Gem, вы можете установить ruby-lsp LSP-сервер с помощью следующей команды:

Bash
gem install ruby-lsp

В качестве альтернативы можно установить solargraph LSP-сервер для Ruby с помощью:

Bash
gem install solargraph

Пример команды установки: Python

Если у вас установлен Node.js, вы можете установить pyright LSP-сервер с помощью следующей команды:

Bash
npm install -g pyright

Или, если у вас установлен PIP, вы можете установить python-lsp-server LSP-сервер с помощью:

Bash
pip install python-lsp-server

Настройка языкового сервера

  1. Для настройки сервера LSP добавьте определение сервера в один из двух конфигурационных файлов:

    • Пользовательская конфигурация: ~/.copilot/lsp-config.json применима ко всем вашим проектам.
    • Project конфигурация: .github/lsp.json, в вашем репозитории, применяется ко всем, кто работает над этим project.

    Оба файла используют одинаковый синтаксис JSON:

    {
      "lspServers": {
        "SERVER-NAME": {
          "command": "COMMAND",
          "args": ["ARG1", "ARG2"],
          "fileExtensions": {
            ".EXT": "LANGUAGE-ID"
          }
        },
        "ANOTHER-SERVER": {
          ...
        }
      }
    }
    

    Некоторые примеры определений серверов для конкретных LSP-серверов приведены позже в этой статье.

  2. После установки и настройки сервера убедитесь, можно Copilot CLI ли им пользоваться. См. ниже раздел «Подтверждение доступности LSP-сервера ».

Поля конфигурации

Каждое определение сервера в конфигурационном файле должно иметь уникальное имя и содержать только буквенно-цифровые символы, подчеркнуть и дефисы.

В каждом определении сервера доступны/обязательны следующие поля:

ПолеОбязательныйОписание
commandНетКоманда, используемая для запуска сервера LSP. По крайней мере один из command, bashили powershell должен быть указан.
bashНетСкрипт bash для запуска вместо commandсерверов, которым требуются функции оболочки, такие как каналы или настройка среды. Не используется в Windows, если powershell также задано значение.
powershellНетСкрипт PowerShell для запуска вместо commandWindows используется при установке.
argsНетАргументы для передачи commandв . Игнорируется при запуске или запуске bashpowershellсервера.
cwdНетРабочий каталог для запуска сервера. По умолчанию используется корневой каталог проекта.
fileExtensionsДаJSON-карта расширений файлов и их соответствующий языковой идентификатор (например, { ".rs": "rust" }).
envНетПеременные среды для установки при запуске сервера. Поддержка ${VAR} и ${VAR:-default} синтаксис расширений.
rootUriНетКорневой каталог сервера LSP, относительно корня Git. По умолчанию — ".". Полезно для монорепо. Если ваш проект находится в подкаталоге репозитория Git, а не в корне репозитория, установите rootUri путь к этому подкаталогу.
initializationOptionsНетПользовательские опции отправляются на сервер при запуске.
requestTimeoutMsНетТайм-аут для серверных запросов составляет миллисекунды (по умолчанию: 90 секунд).
initializationTimeoutMsНетВремя ожидания для подтверждения запуска сервера в миллисекундах (по умолчанию: 60 секунд). Если серверу требуется больше времени для первоначального анализа проекта, увеличьте это значение.
spawnTimeoutMsНетВремя ожидания для создания процесса сервера в миллисекундах.
warmupTimeoutMsНетВремя ожидания для этапа нагрева сервера в миллисекундах.

Чтобы отключить сервер LSP для всех пользователей, использующих репозиторий, добавьте запись в файл репозитория .github/lsp.json . Эта запись может переопределить сервер, настроенный источником с низким приоритетом, например подключаемым модулем или конфигурацией пользователя. Используйте существующее имя сервера и задайте вместо "disabled": true предоставления полного определения сервера:

{
  "lspServers": {
    "SERVER-NAME": {
      "disabled": true
    }
  }
}

Пример определения сервера: typescript-language-server LSP-сервер

JSON
{
  "lspServers": {
    "typescript": {
      "command": "typescript-language-server",
      "args": ["--stdio"],
      "fileExtensions": {
        ".ts": "typescript",
        ".tsx": "typescriptreact",
        ".js": "javascript",
        ".jsx": "javascriptreact",
        ".mjs": "javascript",
        ".cjs": "javascript",
        ".mts": "typescript",
        ".cts": "typescript"
      }
    }
  }
}

Пример определения сервера: ruby-lsp LSP-сервер

JSON
{
  "lspServers": {
    "ruby": {
      "command": "ruby-lsp",
      "args": [],
      "fileExtensions": {
        ".rb": "ruby",
        ".rbw": "ruby",
        ".rake": "ruby",
        ".gemspec": "ruby"
      }
    }
  }
}

Пример определения сервера: pyright LSP-сервер для Python

JSON
{
  "lspServers": {
    "python": {
      "command": "pyright-langserver",
      "args": ["--stdio"],
      "fileExtensions": {
        ".py": "python",
        ".pyw": "python",
        ".pyi": "python"
      }
    }
  }
}

Управление языковыми серверами с /lsp помощью команды

Вы можете перечислить и управлять своими LSP-серверами в интерактивной CLI-сессии с помощью /lsp команды слэш:

Команда SlashОписание
/lsp или /lsp showПокажите статус всех настроенных серверов LSP.
/lsp test SERVER-NAMEПроверьте, правильно ли сервер запускается.
/lsp reloadПерезагрузите конфигурации LSP с диска.
/lsp logsОткройте панель служб LSP для просмотра журналов сервера.
/lsp helpПокажите /lsp командную информацию.

Список доступных серверов LSP

  1. В Copilot CLI, проверьте, что выбранный вами LSP-сервер доступен с помощью /lsp команды slash. Вы увидите такие выводы, как:

    ● LSP Server Status:
    
      User-configured servers:
        • ruby: ruby-lsp (.rb, .rbw, .rake, .gemspec)
        • omnisharp: omnisharp (.cs)
    
      User config: /Users/username/.copilot/lsp-config.json
    

Подтверждение доступности LSP-сервера

  1. После добавления и настройки LSP-сервера запустите (или перезапустите). Copilot CLI

  2. Используйте команду slash: /lsp test SERVER-NAME чтобы проверить, работает ли сервер LSP корректно.

Copilot CLI попытки запустить временный, автономный экземпляр сервера и сообщает, был ли он успешным или были ли ошибки. В итоге временный серверный процесс останавливается.

Дополнительные материалы