Back to Opencode

LSP serveri

packages/web/src/content/docs/bs/lsp.mdx

1.15.1110.0 KB
Original Source

OpenCode se može integrisati sa Language Server Protocol (LSP) serverima kako bi koristio dijagnostiku kao feedback za agenta.

Ugrađeni

OpenCode dolazi sa nekoliko ugrađenih LSP servera za popularne jezike:

LSP serverEkstenzijeZahtjevi
astro.astroAutomatske instalacije za Astro projekte
bash.sh, .bash, .zsh, .kshAutomatski instalira bash-language-server
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Automatske instalacije za C/C++ projekte
csharp.cs.NET SDK instaliran
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp komanda dostupna
dart.dartdart komanda dostupna
deno.ts, .tsx, .js, .jsx, .mjsdeno komanda dostupna (automatski detektuje deno.json)
elixir-ls.ex, .exselixir komanda dostupna
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint ovisnost u projektu
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK instaliran
gleam.gleamgleam komanda dostupna
gopls.gogo komanda dostupna
hls.hs, .lhshaskell-language-server-wrapper komanda dostupna
jdtls.javaJava SDK (version 21+) instaliran
julials.jljulia i LanguageServer.jl instalirani
kotlin-ls.kt, .ktsAutomatske instalacije za Kotlin projekte
lua-ls.luaAutomatske instalacije za Lua projekte
nixd.nixnixd komanda dostupna
ocaml-lsp.ml, .mliocamllsp komanda dostupna
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint zavisnost u projektu
php intelephense.phpAutomatske instalacije za PHP projekte
prisma.prismaprisma komanda dostupna
pyright.py, .pyipyright ovisnost instalirana
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby i gem komande dostupne
rust.rsrust-analyzer komanda dostupna
sourcekit-lsp.swift, .objc, .objcppswift instaliran (xcode na macOS-u)
svelte.svelteAutomatske instalacije za Svelte projekte
terraform.tf, .tfvarsAutomatske instalacije iz GitHub izdanja
tinymist.typ, .typcAutomatske instalacije iz GitHub izdanja
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript zavisnost u projektu
vue.vueAutomatske instalacije za Vue projekte
yaml-ls.yaml, .ymlAutomatski instalira Red Hat yaml-language-server
zls.zig, .zonzig komanda dostupna

LSP je podrazumijevano isključen. Kada je omogućen, serveri se pokreću kada se otkrije jedna od gore navedenih ekstenzija datoteke i zahtjevi su ispunjeni. :::note Možete onemogućiti automatska preuzimanja LSP servera tako što ćete postaviti varijablu okruženja OPENCODE_DISABLE_LSP_DOWNLOAD na true. :::


Kako radi

Kada je LSP omogućen i opencode otvori fajl, on:

  1. Provjerava ekstenziju datoteke u odnosu na sve omogućene LSP servere.
  2. Pokreće odgovarajući LSP server ako već nije pokrenut.

Najbolje prakse

LSP može pomoći agentu da pronađe i popravi probleme pružanjem dijagnostike iz jezičkih servera. Ovo je korisno u nekim projektima, ali nije uvijek neto pozitivno.

Jezički serveri mogu ispasti iz sinhronizacije, koristiti mnogo memorije, razlikovati se po verziji ili projektu i usporiti agent workflow. U mnogim projektima je bolje da agent direktno pokreće lint, typecheck ili druge dijagnostičke CLI alate, tako da se greške vraćaju u agent loop bez tih kompromisa. Dokumentujte te komande u instrukcijskim fajlovima kao što su AGENTS.md ili skills, kako bi agent znao šta treba pokrenuti. Uključite LSP kada vaš projekt ima koristi od dodatnog feedbacka jezičkog servera.


Konfiguracija

Možete omogućiti i prilagoditi LSP servere kroz lsp odjeljak u vašoj opencode konfiguraciji.

Da biste omogućili sve ugrađene LSP servere, postavite lsp na true.

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

Koristite objekt da zadržite ugrađene servere omogućene dok konfigurirate izmjene ili prilagođene servere.

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

Svaki LSP server podržava sljedeće:

SvojstvoVrstaOpis
disabledbooleanPostavite ovo na true da onemogućite LSP server
commandstring[]Naredba za pokretanje LSP servera
extensionsstring[]Ekstenzije datoteka koje ovaj LSP server treba da rukuje
envobjektVarijable okruženja koje treba postaviti prilikom pokretanja servera
initializationobjektOpcije inicijalizacije za slanje na LSP server

Pogledajmo neke primjere.


Varijable okruženja

Koristite svojstvo env za postavljanje varijabli okruženja prilikom pokretanja LSP servera:

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

Opcije inicijalizacije

Koristite svojstvo initialization da prosledite opcije inicijalizacije na LSP server. Ovo su postavke specifične za server poslane tokom LSP initialize zahtjeva:

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

:::note Opcije inicijalizacije razlikuju se od LSP servera. Provjerite dokumentaciju vašeg LSP servera za dostupne opcije. :::


Onemogućavanje LSP servera

Ako je lsp izostavljen, svi LSP serveri su onemogućeni. Da biste onemogućili sve LSP servere nakon što ih je druga konfiguracija omogućila, postavite lsp na false:

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

Da onemogućite specifičan LSP server, postavite disabled na true:

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

Prilagođeni LSP serveri

Možete dodati prilagođene LSP servere navodeći ekstenzije naredbe i datoteke:

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

Dodatne informacije

PHP Intelephense

PHP Intelephense nudi vrhunske funkcije putem licencnog ključa. Možete dati licencni ključ postavljanjem (samo) ključa u tekstualnu datoteku na:

  • Na macOS/Linuxu: $HOME/intelephense/license.txt
  • Na Windowsima: %USERPROFILE%/intelephense/license.txt Datoteka treba da sadrži samo licencni ključ bez dodatnog sadržaja.