Gå til innholdet

LSP-servere

opencode integreres med LSP-serverne dine.

OpenCode kan integreres med Language Server Protocol (LSP)-servere for å bruke diagnostikk som tilbakemelding til agenten.


Innebygde servere

OpenCode kommer med flere innebygde LSP-servere for populære språk:

LSP ServerFilendelserKrav
astro.astroInstalleres automatisk for Astro-prosjekter
bash.sh, .bash, .zsh, .kshInstallerer bash-language-server automatisk
clangd.c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++Installeres automatisk for C/C++-prosjekter
csharp.cs.NET SDK installert
clojure-lsp.clj, .cljs, .cljc, .ednclojure-lsp kommando tilgjengelig
dart.dartdart kommando tilgjengelig
deno.ts, .tsx, .js, .jsx, .mjsdeno kommando tilgjengelig (automatisk oppdager deno.json/deno.jsonc)
elixir-ls.ex, .exselixir kommando tilgjengelig
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueeslint avhengighet i prosjekt
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK installert
gleam.gleamgleam kommando tilgjengelig
gopls.gogo kommando tilgjengelig
hls.hs, .lhshaskell-language-server-wrapper kommando tilgjengelig
jdtls.javaJava SDK (version 21+) installert
julials.jljulia og LanguageServer.jl installert
kotlin-ls.kt, .ktsInstalleres automatisk for Kotlin-prosjekter
lua-ls.luaInstalleres automatisk for Lua-prosjekter
nixd.nixnixd kommando tilgjengelig
ocaml-lsp.ml, .mliocamllsp kommando tilgjengelig
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteoxlint avhengighet i prosjekt
php intelephense.phpInstalleres automatisk for PHP-prosjekter
prisma.prismaprisma kommando tilgjengelig
pyright.py, .pyipyright avhengighet installert
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby og gem kommandoer tilgjengelig
rust.rsrust-analyzer kommando tilgjengelig
sourcekit-lsp.swift, .objc, .objcppswift installert (xcode på macOS)
svelte.svelteInstalleres automatisk for Svelte-prosjekter
terraform.tf, .tfvarsInstalleres automatisk fra GitHub-utgivelser
tinymist.typ, .typcInstalleres automatisk fra GitHub-utgivelser
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctstypescript avhengighet i prosjekt
vue.vueInstalleres automatisk for Vue-prosjekter
yaml-ls.yaml, .ymlInstallerer Red Hat yaml-language-server automatisk
zls.zig, .zonzig kommando tilgjengelig

LSP er deaktivert som standard. Når det er aktivert, starter servere når en av filtypene ovenfor oppdages og kravene oppfylles.


Slik fungerer det

Når LSP er aktivert og opencode åpner en fil, gjør den:

  1. Kontrollerer filtypen mot alle aktiverte LSP-servere.
  2. Starter den riktige LSP-serveren hvis den ikke allerede kjører.

Beste praksis

LSP kan hjelpe agenten med å finne og fikse problemer ved å gi diagnostikk fra språkservere. Dette er nyttig i noen prosjekter, men er ikke alltid en klar gevinst.

Språkservere kan komme ut av synk, bruke mye minne, variere etter versjon eller prosjekt og redusere agentarbeidsflyter. I mange prosjekter er det bedre at agenten kjører lint, typecheck eller andre diagnostiske CLI-verktøy direkte, slik at feil mates tilbake i agentløkken uten disse avveiningene. Dokumenter disse kommandoene i instruksjonsfiler som AGENTS.md eller skills, slik at agenten vet hva den skal kjøre. Aktiver LSP når prosjektet ditt har nytte av ekstra språkservertilbakemelding.


Konfigurasjon

Du kan aktivere og tilpasse LSP-servere gjennom lsp-delen i OpenCode-konfigurasjonen.

For å aktivere alle innebygde LSP-servere, sett lsp til true.

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

Bruk et objekt for å beholde innebygde servere aktivert mens du konfigurerer overstyringer eller egendefinerte servere.

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

Hver LSP-server støtter følgende:

EgenskapTypeBeskrivelse
disabledbooleanSett dette til true for å deaktivere LSP-serveren
commandstring[]Kommandoen for å starte LSP-serveren
extensionsstring[]Filendelser denne LSP-serveren skal håndtere
envobjectMiljøvariabler som skal angis når serveren startes
initializationobjectInitialiseringsalternativer for å sende til LSP-serveren

La oss se på noen eksempler.


Miljøvariabler

Bruk egenskapen env til å angi miljøvariabler når du starter LSP-serveren:

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

Initialiseringsalternativer

Bruk egenskapen initialization til å sende initialiseringsalternativer til LSP-serveren. Dette er serverspesifikke innstillinger sendt under LSP initialize-forespørselen:

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

Deaktivering av LSP-servere

Hvis lsp utelates, er alle LSP-servere deaktivert. For å deaktivere alle LSP-servere etter at en annen konfigurasjon har aktivert dem, sett lsp til false:

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

For å deaktivere en spesifikk LSP-server, sett disabled til true:

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

Egendefinerte LSP-servere

Du kan legge til egendefinerte LSP-servere ved å spesifisere kommandoen og filtypene:

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

Tilleggsinformasjon

PHP Intelephense

PHP Intelephense tilbyr førsteklasses funksjoner gjennom en lisensnøkkel. Du kan oppgi en lisensnøkkel ved å plassere (bare) nøkkelen i en tekstfil på:

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

Filen skal bare inneholde lisensnøkkelen uten ekstra innhold.