Przejdź do głównej zawartości

Serwery LSP

opencode integruje się z serwerem LSP.

opencode integruje się z protokołem serwera językowego (LSP), aby pomóc LLM w korzystaniu z bazowego kodu. Wykorzystuje diagnostykę, aby otrzymać odpowiedź zwrotną do LLM.


Wbudowany

opencode posiada kilka wbudowanych serwerów LSP dla języków:

Serwer LSPRozszerzenieWymagania
astro.astroAutomatyczne instalacje dla Astro
bash.sh, .bash, .zsh, .kshAutomatycznie instaluje serwer języka bash
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Automatyczne instalacje dla C/C++
csharp.cs.NET SDK zainstalowany
clojure-lsp.clj, .cljs, .cljc, .ednKomenda clojure-lsp dostępna
dart.dartKomenda dart dostępna
deno.ts, .tsx, .js, .jsx, .mjsDostępne rozwiązanie deno (automatyczne wykrywanie deno.json/deno.jsonc)
elixir-ls.ex, .exsKomenda elixir dostępna
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint zależność w projekcie
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK zainstalowany
gleam.gleamKomenda gleam dostępna
gopls.goKomenda go dostępna
hls.hs, .lhsKomenda haskell-language-server-wrapper dostępna
jdtls.javaJava SDK (version 21+) zainstalowany
kotlin-ls.kt, .ktsAutomatyczne instalacje dla Kotlin
lua-ls.luaAutomatyczne instalacje dla Lua
nixd.nixKomenda nixd dostępna
ocaml-lsp.ml, .mliKomenda ocamllsp dostępna
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint zależność w projekcie
php intelephense.phpAutomatyczne instalacje dla PHP
prisma.prismaKomenda prisma dostępna
pyright.py, .pyiZainstalowana zależność pyright
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruDostępne polecenie ruby i gem
rust.rsKomenda rust-analyzer dostępna
sourcekit-lsp.swift, .objc, .objcppswift zainstalowany (xcode na macOS)
svelte.svelteAutomatyczne instalacje dla aplikacji Svelte
terraform.tf, .tfvarsAutomatyczne instalacje z wydań GitHub
tinymist.typ, .typcAutomatyczne instalacje z wydań GitHub
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript zależność w projekcie
vue.vueAutomatyczne instalacje dla Vue
yaml-ls.yaml, .ymlAutomatycznie instaluje serwer języka yaml Red Hat
zls.zig, .zonKomenda zig dostępna

Serwery LSP są automatycznie włączane po wykryciu jednego z rozszerzonych plików i wymagań.


Jak to działa

Gdy opencode otwiera plik, to:

  1. Sprawdzanie pliku na wszystkich dostępnych serwerach LSP.
  2. Uruchamia właściwy serwer LSP, jeśli jeszcze nie działa.

Skonfiguruj

Możesz dostosować serwery LSP poprzez sekcję lsp w konfiguracji opencode.

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

Każdy serwer LSP obsługuje szczegółowe elementy:

NieruchomośćWpiszOpis
disabledbooleanUstaw tę opcję na true, aby wyłączyć serwer LSP
commandstring[]Polecenie uruchomienia serwera LSP
extensionsstring[]Rozszerzenia plików, które powinny mieć ten serwer LSP
envobjectZmienne ustawienia podczas uruchamiania serwera
initializationobjectOpcje inicjalizacji do wysłania na serwer LSP

Spójrzmy na kilka przykładów.


Zmienne środowiskowe

Zastosowanie env, aby ustawić zmienne parametry transmisji podczas uruchamiania serwera LSP:

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

Opcje inicjalizacji

właściwości initialization, aby mieć możliwość inicjalizacji na serwerze LSP. Są to ustawienia dla serwera wysyłającego podczas przełączania LSP initialize:

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

Wyłączanie serwerów LSP

Aby wyłączyć wszystkie serwery LSP globalnie, ustaw lsp na false:

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

Aby wyłączyć określony serwer LSP, ustawa disabled na true:

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

Niestandardowe serwery LSP

Serwer udostępniający serwery LSP, mechanizmy sterujące i udostępniane pliki:

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

Dodatkowe informacje

PHP Intelefense

PHP Intelephense oferuje funkcje premium poprzez klucz licencyjny. Możesz przechowywać klucz licencyjny umieszczając (tylko) klucz w pliku tekstowym pod adresem:

  • W systemie macOS/Linux: $HOME/intelephense/license.txt
  • W systemie Windows: %USERPROFILE%/intelephense/license.txt

Plik powinien zawierać wyłącznie klucz licencyjny, bez udostępniania treści.