İçeriğe geç
New Kodine v2 is now available

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 SunucuUzantılarGereksinimler
astro.astroAstro projelerinde otomatik kurulur
bash.sh, .bash, .zsh, .kshbash-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, .ednclojure-lsp komutu bulunmalı
dart.dartdart komutu bulunmalı
deno.ts, .tsx, .js, .jsx, .mjsdeno komutu bulunmalı (deno.json/deno.jsonc kendiliğinden algılanır)
elixir-ls.ex, .exselixir komutu bulunmalı
eslint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vueProjede eslint bağımlılığı olmalı
fsharp.fs, .fsi, .fsx, .fsscript.NET SDK kurulu olmalı
gleam.gleamgleam komutu bulunmalı
gopls.gogo komutu bulunmalı
hls.hs, .lhshaskell-language-server-wrapper komutu bulunmalı
jdtls.javaJava SDK (version 21+) kurulu olmalı
julials.jljulia ve LanguageServer.jl kurulu olmalı
kotlin-ls.kt, .ktsKotlin projelerinde otomatik kurulur
lua-ls.luaLua projelerinde otomatik kurulur
nixd.nixnixd komutu bulunmalı
ocaml-lsp.ml, .mliocamllsp komutu bulunmalı
oxlint.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelteProjede oxlint bağımlılığı olmalı
php intelephense.phpPHP projelerinde otomatik kurulur
prisma.prismaprisma komutu bulunmalı
pyright.py, .pyipyright bağımlılığı kurulu olmalı
ruby-lsp (rubocop).rb, .rake, .gemspec, .ruruby ve gem komutları bulunmalı
rust.rsrust-analyzer komutu bulunmalı
sourcekit-lsp.swift, .objc, .objcppswift kurulu olmalı (macOS’ta xcode)
svelte.svelteSvelte projelerinde otomatik kurulur
terraform.tf, .tfvarsGitHub sürümlerinden otomatik indirilir
tinymist.typ, .typcGitHub sürümlerinden otomatik indirilir
typescript.ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .ctsProjede typescript bağımlılığı olmalı
vue.vueVue projelerinde otomatik kurulur
yaml-ls.yaml, .ymlRed Hat yaml-language-server otomatik kurulur
zls.zig, .zonzig 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:

  1. Dosyanın uzantısı etkin durumdaki tüm LSP sunucularıyla karşılaştırılır.
  2. 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.

kodine.json
{
"$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.

kodine.json
{
"$schema": "https://kodine.net/config.json",
"lsp": {}
}

Her LSP sunucu tanımında şu alanlar desteklenir:

ÖzellikTipAçıklama
disabledbooleanLSP sunucusunu kapatmak için true yapın
commandstring[]LSP sunucusunu başlatacak komut
extensionsstring[]Bu LSP sunucusunun hangi dosya uzantılarına uygulanacağı
envobjectSunucu başlatılırken tanımlanacak ortam değişkenleri
initializationobjectLSP 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:

kodine.json
{
"$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:

kodine.json
{
"$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:

kodine.json
{
"$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:

kodine.json
{
"$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:

kodine.json
{
"$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.