SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
0dbc9de verified
Raw History Blame Contribute Delete
10.9 kB
---
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.