Przejdź do głównej zawartości

Serwery LSP

OpenCode integruje się z serwerami LSP.

OpenCode integruje się z protokołem Language Server Protocol (LSP), aby zapewnić modelom LLM kontekst bazy kodu. Wykorzystuje diagnostykę, aby przekazywać informacje zwrotne do LLM.


Wbudowane

OpenCode posiada kilka wbudowanych serwerów LSP dla następujących języków:

Serwer LSPRozszerzeniaWymagania
astro.astroAutomatyczna instalacja dla Astro
bash.sh, .bash, .zsh, .kshAutomatycznie instaluje serwer języka bash
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Automatyczna instalacja dla C/C++
csharp.csZainstalowany .NET SDK
clojure-lsp.clj, .cljs, .cljc, .ednDostępne polecenie clojure-lsp
dart.dartDostępne polecenie dart
deno.ts, .tsx, .js, .jsx, .mjsDostępne polecenie deno (automatyczne wykrywanie deno.json/deno.jsonc)
elixir-ls.ex, .exsDostępne polecenie elixir
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueZależność eslint w projekcie
fsharp.fs, .fsi, .fsx, .fsscriptZainstalowany .NET SDK
gleam.gleamDostępne polecenie gleam
gopls.goDostępne polecenie go
hls.hs, .lhsDostępne polecenie haskell-language-server-wrapper
jdtls.javaZainstalowany Java SDK (version 21+)
kotlin-ls.kt, .ktsAutomatyczna instalacja dla Kotlin
lua-ls.luaAutomatyczna instalacja dla Lua
nixd.nixDostępne polecenie nixd
ocaml-lsp.ml, .mliDostępne polecenie ocamllsp
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteZależność oxlint w projekcie
php intelephense.phpAutomatyczna instalacja dla PHP
prisma.prismaDostępne polecenie prisma
pyright.py, .pyiZainstalowana zależność pyright
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruDostępne polecenie ruby i gem
rust.rsDostępne polecenie rust-analyzer
sourcekit-lsp.swift, .objc, .objcppZainstalowany swift (xcode na macOS)
svelte.svelteAutomatyczna instalacja dla aplikacji Svelte
terraform.tf, .tfvarsAutomatyczna instalacja z wydań GitHub
tinymist.typ, .typcAutomatyczna instalacja z wydań GitHub
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsZależność typescript w projekcie
vue.vueAutomatyczna instalacja dla Vue
yaml-ls.yaml, .ymlAutomatycznie instaluje serwer języka yaml Red Hat
zls.zig, .zonDostępne polecenie zig

Serwery LSP są automatycznie włączane po wykryciu jednego z obsługiwanych plików i spełnieniu wymagań.


Jak to działa

Gdy OpenCode otwiera plik:

  1. Sprawdza plik pod kątem wszystkich dostępnych serwerów LSP.
  2. Uruchamia odpowiedni serwer LSP, jeśli jeszcze nie działa.

Konfiguracja

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 następujące właściwości:

WłaściwośćTypOpis
disabledbooleanUstaw na true, aby wyłączyć ten serwer LSP
commandstring[]Polecenie uruchomienia serwera LSP
extensionsstring[]Rozszerzenia plików, które powinny używać tego serwera
envobjectZmienne środowiskowe ustawiane podczas uruchamiania
initializationobjectOpcje inicjalizacji do wysłania do serwera LSP

Spójrzmy na kilka przykładów.


Zmienne środowiskowe

Użyj env, aby ustawić zmienne środowiskowe podczas uruchamiania serwera LSP:

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

Opcje inicjalizacji

Użyj właściwości initialization, aby przekazać niestandardowe opcje inicjalizacji do serwera LSP. Są one wysyłane w żądaniu initialize protokołu LSP:

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, ustaw disabled na true:

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

Niestandardowe serwery LSP

Możesz dodać niestandardowe serwery LSP, podając polecenie i rozszerzenia plików:

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

Dodatkowe informacje

PHP Intelephense

PHP Intelephense oferuje funkcje premium poprzez klucz licencyjny. Możesz użyć klucza licencyjnego, umieszczając go (sam klucz) w pliku tekstowym pod adresem:

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

Plik powinien zawierać wyłącznie klucz licencyjny, bez białych znaków.