Русский
Документация
LSP серверы

LSP-серверы

OpenCode интегрируется с вашими LSP-серверами.

OpenCode интегрируется с Language Server Protocol (LSP), чтобы помочь LLM взаимодействовать с вашей кодовой базой. Он использует диагностику для предоставления обратной связи LLM.

Встроенная поддержка

OpenCode включает несколько встроенных LSP-серверов для популярных языков:

LSP-серверРасширенияТребования
astro.astroАвтоустановка для проектов Astro
bash.sh, .bash, .zsh, .kshАвтоустановка bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Автоустановка для проектов C/C++
csharp.csУстановлен .NET SDK
clojure-lsp.clj, .cljs, .cljc, .ednДоступна команда clojure-lsp
dart.dartДоступна команда dart
deno.ts, .tsx, .js, .jsx, .mjsДоступна команда deno (автоопределение deno.json/deno.jsonc)
elixir-ls.ex, .exsДоступна команда elixir
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueЗависимость eslint в проекте
fsharp.fs, .fsi, .fsx, .fsscriptУстановлен .NET SDK
gleam.gleamДоступна команда gleam
gopls.goДоступна команда go
hls.hs, .lhsДоступна команда haskell-language-server-wrapper
jdtls.javaУстановлен Java SDK (версия 21+)
kotlin-ls.kt, .ktsАвтоустановка для проектов Kotlin
lua-ls.luaАвтоустановка для проектов Lua
nixd.nixДоступна команда nixd
ocaml-lsp.ml, .mliДоступна команда ocamllsp
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteЗависимость oxlint в проекте
php intelephense.phpАвтоустановка для проектов PHP
prisma.prismaДоступна команда prisma
pyright.py, .pyiУстановлена зависимость pyright
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruДоступны команды ruby и gem
rust.rsДоступна команда rust-analyzer
sourcekit-lsp.swift, .objc, .objcppУстановлен swift (xcode на macOS)
svelte.svelteАвтоустановка для проектов Svelte
terraform.tf, .tfvarsАвтоустановка из GitHub releases
tinymist.typ, .typcАвтоустановка из GitHub releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsЗависимость typescript в проекте
vue.vueАвтоустановка для проектов Vue
yaml-ls.yaml, .ymlАвтоустановка Red Hat yaml-language-server
zls.zig, .zonДоступна команда zig

LSP-серверы автоматически включаются при обнаружении одного из вышеуказанных расширений файлов и выполнении требований.

Примечание: Вы можете отключить автоматическую загрузку LSP-серверов, установив переменную окружения OPENCODE_DISABLE_LSP_DOWNLOAD в true.

Как это работает

Когда opencode открывает файл:

  1. Проверяет расширение файла по всем включённым LSP-серверам.
  2. Запускает соответствующий LSP-сервер, если он ещё не запущен.

Конфигурация

Вы можете настроить LSP-серверы через раздел lsp в конфигурации opencode.

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {}
}

Каждый LSP-сервер поддерживает следующее:

СвойствоТипОписание
disabledbooleanУстановите true для отключения LSP-сервера
commandstring[]Команда для запуска LSP-сервера
extensionsstring[]Расширения файлов, которые должен обрабатывать этот LSP-сервер
envobjectПеременные окружения при запуске сервера
initializationobjectПараметры инициализации для отправки LSP-серверу

Рассмотрим несколько примеров.

Переменные окружения

Используйте свойство env для установки переменных окружения при запуске LSP-сервера:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "rust": {
      "env": {
        "RUST_LOG": "debug"
      }
    }
  }
}

Параметры инициализации

Используйте свойство initialization для передачи параметров инициализации LSP-серверу. Это специфичные для сервера настройки, отправляемые во время запроса LSP initialize:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "initialization": {
        "preferences": {
          "importModuleSpecifierPreference": "relative"
        }
      }
    }
  }
}

Примечание: Параметры инициализации различаются в зависимости от LSP-сервера. Проверьте документацию вашего LSP-сервера для доступных параметров.

Отключение LSP-серверов

Чтобы глобально отключить все LSP-серверы, установите lsp в false:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": false
}

Чтобы отключить конкретный LSP-сервер, установите disabled в true:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "typescript": {
      "disabled": true
    }
  }
}

Пользовательские LSP-серверы

Вы можете добавить пользовательские LSP-серверы, указав команду и расширения файлов:

opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "lsp": {
    "custom-lsp": {
      "command": ["custom-lsp-server", "--stdio"],
      "extensions": [".custom"]
    }
  }
}

Дополнительная информация

PHP Intelephense

PHP Intelephense предлагает премиум-функции через лицензионный ключ. Вы можете предоставить лицензионный ключ, поместив (только) ключ в текстовый файл по адресу:

  • macOS/Linux: $HOME/intelephense/licence.txt
  • Windows: %USERPROFILE%/intelephense/licence.txt

Файл должен содержать только лицензионный ключ без дополнительного содержимого.