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 Server | Filendelser | Krav |
|---|---|---|
| astro | .astro | Installeres automatisk for Astro-prosjekter |
| bash | .sh, .bash, .zsh, .ksh | Installerer 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, .edn | clojure-lsp kommando tilgjengelig |
| dart | .dart | dart kommando tilgjengelig |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno kommando tilgjengelig (automatisk oppdager deno.json/deno.jsonc) |
| elixir-ls | .ex, .exs | elixir kommando tilgjengelig |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | eslint avhengighet i prosjekt |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK installert |
| gleam | .gleam | gleam kommando tilgjengelig |
| gopls | .go | go kommando tilgjengelig |
| hls | .hs, .lhs | haskell-language-server-wrapper kommando tilgjengelig |
| jdtls | .java | Java SDK (version 21+) installert |
| julials | .jl | julia og LanguageServer.jl installert |
| kotlin-ls | .kt, .kts | Installeres automatisk for Kotlin-prosjekter |
| lua-ls | .lua | Installeres automatisk for Lua-prosjekter |
| nixd | .nix | nixd kommando tilgjengelig |
| ocaml-lsp | .ml, .mli | ocamllsp kommando tilgjengelig |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | oxlint avhengighet i prosjekt |
| php intelephense | .php | Installeres automatisk for PHP-prosjekter |
| prisma | .prisma | prisma kommando tilgjengelig |
| pyright | .py, .pyi | pyright avhengighet installert |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | ruby og gem kommandoer tilgjengelig |
| rust | .rs | rust-analyzer kommando tilgjengelig |
| sourcekit-lsp | .swift, .objc, .objcpp | swift installert (xcode på macOS) |
| svelte | .svelte | Installeres automatisk for Svelte-prosjekter |
| terraform | .tf, .tfvars | Installeres automatisk fra GitHub-utgivelser |
| tinymist | .typ, .typc | Installeres automatisk fra GitHub-utgivelser |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | typescript avhengighet i prosjekt |
| vue | .vue | Installeres automatisk for Vue-prosjekter |
| yaml-ls | .yaml, .yml | Installerer Red Hat yaml-language-server automatisk |
| zls | .zig, .zon | zig 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:
- Kontrollerer filtypen mot alle aktiverte LSP-servere.
- 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.
{ "$schema": "https://opencode.ai/config.json", "lsp": true}Bruk et objekt for å beholde innebygde servere aktivert mens du konfigurerer overstyringer eller egendefinerte servere.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}Hver LSP-server støtter følgende:
| Egenskap | Type | Beskrivelse |
|---|---|---|
disabled | boolean | Sett dette til true for å deaktivere LSP-serveren |
command | string[] | Kommandoen for å starte LSP-serveren |
extensions | string[] | Filendelser denne LSP-serveren skal håndtere |
env | object | Miljøvariabler som skal angis når serveren startes |
initialization | object | Initialiseringsalternativer 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:
{ "$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:
{ "$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:
{ "$schema": "https://opencode.ai/config.json", "lsp": false}For å deaktivere en spesifikk LSP-server, sett disabled til true:
{ "$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:
{ "$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.