LSP-servere
OpenCode integreres med dine LSP-servere.
OpenCode kan integreres med Language Server Protocol (LSP)-servere for at bruge diagnostik som feedback til agenten.
Indbyggede
OpenCode leveres med flere indbyggede LSP-servere til populære sprog:
| LSP Server | Udvidelser | Krav |
|---|---|---|
| astro | .astro | Autoinstallationer til Astro-projekter |
| bash | .sh,.bash,.zsh,.ksh | Autoinstallerer bash-language-server |
| clangd | .c,.cpp,.cc,.cxx,.c++,.h,.hpp,.hh,.hxx,.h++ | Autoinstallationer for C/C++ projekter |
| csharp | .cs | .NET SDK installere |
| clojure-lsp | .clj,.cljs,.cljc,.edn | clojure-lsp kommando tilgængelig |
| dart | .dart | dart kommando tilgængelig |
| deno | .ts,.tsx,.js,.jsx,.mjs | deno kommando tilgængelig (auto-detects deno.json/deno.jsonc) |
| elixir-ls | .ex,.exs | elixir kommando tilgængelig |
| eslint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue | eslint afhængighed i projekt |
| fsharp | .fs,.fsi,.fsx,.fsscript | .NET SDK installere |
| gleam | .gleam | gleam kommando tilgængelig |
| gopls | .go | go kommando tilgængelig |
| hls | .hs,.lhs | haskell-language-server-wrapper kommando tilgængelig |
| jdtls | .java | Java SDK (version 21+) installere |
| julials | .jl | julia og LanguageServer.jl installeret |
| kotlin-ls | .kt,.kts | Autoinstallationer til Kotlin-projekter |
| lua-ls | .lua | Autoinstallationer til Lua-projekter |
| nixd | .nix | nixd kommando tilgængelig |
| ocaml-lsp | .ml,.mli | ocamllsp kommando tilgængelig |
| oxlint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue,.astro,.svelte | oxlint afhængighed i projekt |
| php intelephense | .php | Automatiske installationer til PHP-projekter |
| prisma | .prisma | prisma kommando tilgængelig |
| pyright | .py,.pyi | pyright afhængig installeret |
| ruby-lsp (rubocop) | .rb,.rake,.gemspec,.ru | ruby og gem kommandoer tilgængelige |
| rust | .rs | rust-analyzer kommando tilgængelig |
| sourcekit-lsp | .swift,.objc,.objcpp | swift installere (xcode på macOS) |
| svelte | .svelte | Autoinstallationer til Svelte-projekter |
| terraform | .tf,.tfvars | Automatiske installationer fra GitHub-udgivelser |
| tinymist | .typ,.typc | Automatiske installationer fra GitHub-udgivelser |
| typescript | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts | typescript afhængighed i projekt |
| vue | .vue | Autoinstallationer til Vue-projekter |
| yaml-ls | .yaml,.yml | Autoinstallerer Red Hat yaml-language-server |
| zls | .zig,.zon | zig kommando tilgængelig |
LSP er deaktiveret som standard. Når det er aktiveret, starter servere, når en af ovenstående filtypenavne opdages, og kravene er opfyldt.
Sådan fungerer det
Når LSP er aktiveret, og opencode åbner en fil, vil den:
- Kontrollerer filtypenavnet mod alle aktiverede LSP-servere.
- Starter den relevante LSP-server, hvis den ikke allerede kører.
Bedste praksis
LSP kan hjælpe agenten med at finde og rette problemer ved at levere diagnostik fra sprogservere. Det er nyttigt i nogle projekter, men er ikke altid en klar fordel.
Sprogservere kan komme ud af sync, bruge meget hukommelse, variere efter version eller projekt og gøre agentarbejdsgange langsommere. I mange projekter er det bedre, at agenten kører lint, typecheck eller andre diagnostiske CLI-værktøjer direkte, så fejl føres tilbage i agentens loop uden disse afvejninger. Dokumentér disse kommandoer i instruktionsfiler som AGENTS.md eller skills, så agenten ved, hvad den skal køre. Aktivér LSP, når dit projekt har gavn af ekstra sprogserverfeedback.
Konfiguration
Du kan aktivere og tilpasse LSP-servere gennem sektionen lsp i din opencode-konfiguration.
For at aktivere alle indbyggede LSP-servere skal du indstille lsp til true.
{ "$schema": "https://opencode.ai/config.json", "lsp": true}Brug et objekt til at holde indbyggede servere aktiveret, mens du konfigurerer tilsidesættelser eller brugerdefinerede servere.
{ "$schema": "https://opencode.ai/config.json", "lsp": {}}Hver LSP- server understøtter følgende:
| Egenskab | Type | Beskrivelse |
|---|---|---|
disabled | boolean | Indstil dette til true for at deaktivere LSP-serveren |
command | string[] | Kommandoen til at starte LSP-serveren |
extensions | string[] | Filtypenavne, som denne LSP-server skal håndtere |
env | object | Miljøvariabler, der skal indstilles, når serveren starter |
initialization | object | Initialiseringsmuligheder for at sende til LSP-serveren |
Lad os se på nogle eksempler.
Miljøvariabler
Brug egenskaben env til at indstille miljøvariabler, når du starter LSP-serveren:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "rust": { "env": { "RUST_LOG": "debug" } } }}Initialiseringsmuligheder
Brug egenskaben initialization til at videregive initialiseringsindstillinger til LSP-serveren. Disse er serverspecifikke indstillinger sendt under LSP initialize anmodningen:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "initialization": { "preferences": { "importModuleSpecifierPreference": "relative" } } } }}Deaktivering af LSP-servere
Hvis lsp udelades, er alle LSP-servere deaktiveret. For at deaktivere alle LSP-servere efter at en anden konfiguration har aktiveret dem, skal du indstille lsp til false:
{ "$schema": "https://opencode.ai/config.json", "lsp": false}For at deaktivere en specifik LSP-server skal du indstille disabled til true:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "typescript": { "disabled": true } }}Brugerdefinerede LSP-servere
Du kan tilføje brugerdefinerede LSP-servere ved at angive kommandoen og filtypenavne:
{ "$schema": "https://opencode.ai/config.json", "lsp": { "custom-lsp": { "command": ["custom-lsp-server", "--stdio"], "extensions": [".custom"] } }}Yderligere oplysninger
PHP Intelephense
PHP Intelephense tilbyder premium funktioner gennem en licensnøgle. Du kan angive en licensnøgle ved at placere (kun) nøglen i en tekstfil på:
- På macOS/Linux:
$HOME/intelephense/license.txt - På Windows:
%USERPROFILE%/intelephense/license.txt
Filen bør kun indeholde licensnøglen uden yderligere indhold.