LSP Sunucuları
kodine, LSP sunucularınızla birlikte çalışır.
kodine, dil sunucularından gelen tanılamaları agent’a geri bildirim olarak iletmek için Language Server Protocol (LSP) sunucularıyla entegre olabilir.
Yerleşik
kodine, yaygın diller için hazır gelen çok sayıda LSP sunucusu içerir:
| LSP Sunucu | Uzantılar | Gereksinimler |
|---|---|---|
| astro | .astro | Astro projelerinde otomatik kurulur |
| bash | .sh, .bash, .zsh, .ksh | bash-language-server otomatik kurulur |
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | C/C++ projelerinde otomatik kurulur |
| csharp | .cs | .NET SDK kurulu olmalı |
| clojure-lsp | .clj, .cljs, .cljc, .edn | clojure-lsp komutu bulunmalı |
| dart | .dart | dart komutu bulunmalı |
| deno | .ts, .tsx, .js, .jsx, .mjs | deno komutu bulunmalı (deno.json/deno.jsonc kendiliğinden algılanır) |
| elixir-ls | .ex, .exs | elixir komutu bulunmalı |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | Projede eslint bağımlılığı olmalı |
| fsharp | .fs, .fsi, .fsx, .fsscript | .NET SDK kurulu olmalı |
| gleam | .gleam | gleam komutu bulunmalı |
| gopls | .go | go komutu bulunmalı |
| hls | .hs, .lhs | haskell-language-server-wrapper komutu bulunmalı |
| jdtls | .java | Java SDK (version 21+) kurulu olmalı |
| julials | .jl | julia ve LanguageServer.jl kurulu olmalı |
| kotlin-ls | .kt, .kts | Kotlin projelerinde otomatik kurulur |
| lua-ls | .lua | Lua projelerinde otomatik kurulur |
| nixd | .nix | nixd komutu bulunmalı |
| ocaml-lsp | .ml, .mli | ocamllsp komutu bulunmalı |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | Projede oxlint bağımlılığı olmalı |
| php intelephense | .php | PHP projelerinde otomatik kurulur |
| prisma | .prisma | prisma komutu bulunmalı |
| pyright | .py, .pyi | pyright bağımlılığı kurulu olmalı |
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | ruby ve gem komutları bulunmalı |
| rust | .rs | rust-analyzer komutu bulunmalı |
| sourcekit-lsp | .swift, .objc, .objcpp | swift kurulu olmalı (macOS’ta xcode) |
| svelte | .svelte | Svelte projelerinde otomatik kurulur |
| terraform | .tf, .tfvars | GitHub sürümlerinden otomatik indirilir |
| tinymist | .typ, .typc | GitHub sürümlerinden otomatik indirilir |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | Projede typescript bağımlılığı olmalı |
| vue | .vue | Vue projelerinde otomatik kurulur |
| yaml-ls | .yaml, .yml | Red Hat yaml-language-server otomatik kurulur |
| zls | .zig, .zon | zig komutu bulunmalı |
LSP varsayılan olarak kapalıdır. Açıldığında, yukarıdaki uzantılardan birine sahip bir dosya algılanır ve koşullar sağlanırsa ilgili sunucu başlatılır.
Nasıl Çalışır?
LSP açıkken kodine bir dosya açtığında şunlar olur:
- Dosyanın uzantısı etkin durumdaki tüm LSP sunucularıyla karşılaştırılır.
- Eşleşen sunucu henüz çalışmıyorsa başlatılır.
En İyi Uygulamalar
LSP, dil sunucularının tanılamalarını agent’a ulaştırarak sorunların bulunmasına ve giderilmesine katkı sağlayabilir. Bazı projelerde faydalı olsa da her durumda net bir kazanç sunmaz.
Dil sunucuları senkronizasyonu yitirebilir, hatırı sayılır miktarda bellek tüketebilir, sürüme ya da projeye göre farklı davranabilir ve agent iş akışını yavaşlatabilir. Pek çok projede agent’ın lint, typecheck gibi tanılama CLI araçlarını doğrudan çalıştırması daha iyi sonuç verir; böylece hatalar bu dezavantajlar olmadan agent döngüsüne geri döner. Agent’ın hangi komutları çalıştıracağını bilmesi için bu komutları AGENTS.md ya da skills benzeri talimat dosyalarınıza yazın. Projeniz dil sunucusundan gelen ek geri bildirimden gerçekten fayda görüyorsa LSP’yi açın.
Yapılandırma
LSP sunucularını kodine yapılandırmanızdaki lsp bölümünden açabilir ve özelleştirebilirsiniz.
Yerleşik LSP sunucularının tamamını açmak için lsp alanına true verin.
{ "$schema": "https://kodine.net/config.json", "lsp": true}Yerleşik sunucuları açık tutarken bazılarını geçersiz kılmak ya da özel sunucular tanımlamak için bir nesne kullanın.
{ "$schema": "https://kodine.net/config.json", "lsp": {}}Her LSP sunucu tanımında şu alanlar desteklenir:
| Özellik | Tip | Açıklama |
|---|---|---|
disabled | boolean | LSP sunucusunu kapatmak için true yapın |
command | string[] | LSP sunucusunu başlatacak komut |
extensions | string[] | Bu LSP sunucusunun hangi dosya uzantılarına uygulanacağı |
env | object | Sunucu başlatılırken tanımlanacak ortam değişkenleri |
initialization | object | LSP sunucusuna iletilecek başlatma seçenekleri |
Birkaç örneğe göz atalım.
Ortam değişkenleri
Sunucu başlatılırken ortam değişkeni tanımlamak için env alanını kullanın:
{ "$schema": "https://kodine.net/config.json", "lsp": { "rust": { "env": { "RUST_LOG": "debug" } } }}Başlatma seçenekleri
Başlatma seçeneklerini LSP sunucusuna aktarmak için initialization alanını kullanın. Bunlar, LSP initialize isteği sırasında gönderilen ve sunucuya özgü ayarlardır:
{ "$schema": "https://kodine.net/config.json", "lsp": { "typescript": { "initialization": { "preferences": { "importModuleSpecifierPreference": "relative" } } } }}LSP sunucularını devre dışı bırakma
lsp alanı tanımlanmazsa tüm LSP sunucuları kapalı kalır. Başka bir yapılandırma bunları açtıysa ve hepsini kapatmak istiyorsanız lsp alanına false verin:
{ "$schema": "https://kodine.net/config.json", "lsp": false}Yalnızca belirli bir LSP sunucusunu kapatmak için o sunucunun disabled alanını true yapın:
{ "$schema": "https://kodine.net/config.json", "lsp": { "typescript": { "disabled": true } }}Özel LSP sunucuları
Başlatma komutunu ve dosya uzantılarını belirterek kendi LSP sunucularınızı tanımlayabilirsiniz:
{ "$schema": "https://kodine.net/config.json", "lsp": { "custom-lsp": { "command": ["custom-lsp-server", "--stdio"], "extensions": [".custom"] } }}Ek Bilgiler
PHP Intelephense
PHP Intelephense, lisans anahtarıyla açılan premium özellikler sunar. Lisans anahtarınızı (yalnızca) aşağıdaki konumda bulunan bir metin dosyasına yerleştirerek kullanabilirsiniz:
- macOS/Linux’ta:
$HOME/intelephense/license.txt - Windows’ta:
%USERPROFILE%/intelephense/license.txt
Dosyada lisans anahtarından başka hiçbir içerik bulunmamalıdır.