File size: 10,934 Bytes
0dbc9de | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 | ---
title: Serwery LSP
description: OpenCode integruje si臋 z serwerami LSP.
---
OpenCode mo偶e integrowa膰 si臋 z serwerami Language Server Protocol (LSP), aby u偶ywa膰 diagnostyki jako informacji zwrotnej dla agenta.
---
## Wbudowane
OpenCode posiada kilka wbudowanych serwer贸w LSP dla nast臋puj膮cych j臋zyk贸w:
| Serwer LSP | Rozszerzenia | Wymagania |
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| astro | .astro | Automatyczna instalacja dla Astro |
| bash | .sh, .bash, .zsh, .ksh | Automatycznie instaluje serwer j臋zyka bash |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Automatyczna instalacja dla C/C++ |
| csharp | .cs | Zainstalowany `.NET SDK` |
| clojure-lsp | .clj, .cljs, .cljc, .edn | Dost臋pne polecenie `clojure-lsp` |
| dart | .dart | Dost臋pne polecenie `dart` |
| deno | .ts, .tsx, .js, .jsx, .mjs | Dost臋pne polecenie `deno` (automatyczne wykrywanie deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | Dost臋pne polecenie `elixir` |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Zale偶no艣膰 `eslint` w projekcie |
| fsharp | .fs, .fsi, .fsx, .fsscript | Zainstalowany `.NET SDK` |
| gleam | .gleam | Dost臋pne polecenie `gleam` |
| gopls | .go | Dost臋pne polecenie `go` |
| hls | .hs, .lhs | Dost臋pne polecenie `haskell-language-server-wrapper` |
| jdtls | .java | Zainstalowany `Java SDK (version 21+)` |
| julials | .jl | Zainstalowane `julia` i `LanguageServer.jl` |
| kotlin-ls | .kt, .kts | Automatyczna instalacja dla Kotlin |
| lua-ls | .lua | Automatyczna instalacja dla Lua |
| nixd | .nix | Dost臋pne polecenie `nixd` |
| ocaml-lsp | .ml, .mli | Dost臋pne polecenie `ocamllsp` |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Zale偶no艣膰 `oxlint` w projekcie |
| php intelephense | .php | Automatyczna instalacja dla PHP |
| prisma | .prisma | Dost臋pne polecenie `prisma` |
| pyright | .py, .pyi | Zainstalowana zale偶no艣膰 `pyright` |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Dost臋pne polecenie `ruby` i `gem` |
| rust | .rs | Dost臋pne polecenie `rust-analyzer` |
| sourcekit-lsp | .swift, .objc, .objcpp | Zainstalowany `swift` (`xcode` na macOS) |
| svelte | .svelte | Automatyczna instalacja dla aplikacji Svelte |
| terraform | .tf, .tfvars | Automatyczna instalacja z wyda艅 GitHub |
| tinymist | .typ, .typc | Automatyczna instalacja z wyda艅 GitHub |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Zale偶no艣膰 `typescript` w projekcie |
| vue | .vue | Automatyczna instalacja dla Vue |
| yaml-ls | .yaml, .yml | Automatycznie instaluje serwer j臋zyka yaml Red Hat |
| zls | .zig, .zon | Dost臋pne polecenie `zig` |
LSP jest domy艣lnie wy艂膮czone. Gdy jest w艂膮czone, serwery uruchamiaj膮 si臋 po wykryciu jednego z obs艂ugiwanych rozszerze艅 plik贸w i spe艂nieniu wymaga艅.
:::note
Mo偶esz wy艂膮czy膰 automatyczne pobieranie serwer贸w LSP, ustawiaj膮c zmienn膮 艣rodowiskow膮 `OPENCODE_DISABLE_LSP_DOWNLOAD` na `true`.
:::
---
## Jak to dzia艂a
Gdy LSP jest w艂膮czony i 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.
---
## Dobre praktyki
LSP mo偶e pom贸c agentowi znajdowa膰 i naprawia膰 problemy, dostarczaj膮c diagnostyk臋 z serwer贸w j臋zykowych. Jest to przydatne w niekt贸rych projektach, ale nie zawsze jest jednoznaczn膮 korzy艣ci膮.
Serwery j臋zykowe mog膮 wypa艣膰 z synchronizacji, zu偶ywa膰 du偶o pami臋ci, r贸偶ni膰 si臋 mi臋dzy wersjami lub projektami i spowalnia膰 workflow agenta. W wielu projektach lepiej, aby agent uruchamia艂 lint, typecheck lub inne diagnostyczne narz臋dzia CLI bezpo艣rednio; wtedy b艂臋dy wracaj膮 do p臋tli agenta bez tych kompromis贸w. Udokumentuj te komendy w plikach instrukcji, takich jak `AGENTS.md` lub skills, aby agent wiedzia艂, co uruchomi膰. W艂膮cz LSP, gdy Tw贸j projekt korzysta z dodatkowej informacji zwrotnej z serwera j臋zykowego.
---
## Konfiguracja
Mo偶esz w艂膮cza膰 i dostosowywa膰 serwery LSP poprzez sekcj臋 `lsp` w konfiguracji OpenCode.
Aby w艂膮czy膰 wszystkie wbudowane serwery LSP, ustaw `lsp` na `true`.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"lsp": true
}
```
U偶yj obiektu, aby pozostawi膰 wbudowane serwery w艂膮czone i jednocze艣nie skonfigurowa膰 nadpisania lub serwery niestandardowe.
```json title="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艣膰 | Typ | Opis |
| ---------------- | -------- | ------------------------------------------------------ |
| `disabled` | boolean | Ustaw na `true`, aby wy艂膮czy膰 ten serwer LSP |
| `command` | string[] | Polecenie uruchomienia serwera LSP |
| `extensions` | string[] | Rozszerzenia plik贸w, kt贸re powinny u偶ywa膰 tego serwera |
| `env` | object | Zmienne 艣rodowiskowe ustawiane podczas uruchamiania |
| `initialization` | object | Opcje 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:
```json title="opencode.json" {5-7}
{
"$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:
```json title="opencode.json" {5-9}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
```
:::note
Opcje inicjalizacji r贸偶ni膮 si臋 w zale偶no艣ci od serwera LSP. Sprawd藕 dokumentacj臋 swojego serwera LSP.
:::
---
### Wy艂膮czanie serwer贸w LSP
Je艣li `lsp` zostanie pomini臋te, wszystkie serwery LSP s膮 wy艂膮czone. Aby wy艂膮czy膰 wszystkie serwery LSP po tym, jak inna konfiguracja je w艂膮czy艂a, ustaw `lsp` na `false`:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}
```
Aby wy艂膮czy膰 **okre艣lony** serwer LSP, ustaw `disabled` na `true`:
```json title="opencode.json" {5}
{
"$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:
```json title="opencode.json" {4-7}
{
"$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.
|