Перейти к содержимому

ЛСП Серверы

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

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


Встроенный

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

LSP ServerExtensionsRequirements
astro.astroAuto-installs for Astro projects
bash.sh, .bash, .zsh, .kshAuto-installs bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Auto-installs for C/C++ projects
csharp.cs.NET SDK installed
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp command available
dart.dartdart command available
deno.ts, .tsx, .js, .jsx, .mjsdeno command available (auto-detects deno.json/deno.jsonc)
elixir-ls.ex, .exselixir command available
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint dependency in project
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installed
gleam.gleamgleam command available
gopls.gogo command available
hls.hs, .lhshaskell-language-server-wrapper command available
jdtls.javaJava SDK (version 21+) installed
kotlin-ls.kt, .ktsAuto-installs for Kotlin projects
lua-ls.luaAuto-installs for Lua projects
nixd.nixnixd command available
ocaml-lsp.ml, .mliocamllsp command available
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint dependency in project
php intelephense.phpAuto-installs for PHP projects
prisma.prismaprisma command available
pyright.py, .pyipyright dependency installed
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby and gem commands available
rust.rsrust-analyzer command available
sourcekit-lsp.swift, .objc, .objcppswift installed (xcode on macOS)
svelte.svelteAuto-installs for Svelte projects
terraform.tf, .tfvarsAuto-installs from GitHub releases
tinymist.typ, .typcAuto-installs from GitHub releases
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript dependency in project
vue.vueAuto-installs for Vue projects
yaml-ls.yaml, .ymlAuto-installs Red Hat yaml-language-server
zls.zig, .zonzig command available

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


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

Когда 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 значение 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/license.txt
  • В Windows: %USERPROFILE%/intelephense/license.txt

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