Claude Code သည် တိတ်တဆိတ် အဆင့်မြှင့်တင်ခဲ့ပြီး နောက်ဆုံးတွင် "စာသားရှာဖွေရေးစက်" မဟုတ်တော့ပါ။
ကုဒ်ရေးတဲ့အခါ ဒီမေးခွန်းကို စဉ်းစားဖူးလား။
ဘာလို့ VS Code မှာ Ctrl + Click နှိပ်လိုက်တာနဲ့ function definition ကို တန်းရောက်သွားတာလဲ။ ဘာလို့ function ပေါ်မှာ mouse တင်လိုက်တာနဲ့ parameter အကြောင်းအရာ အစုံအလင်ကို တွေ့ရတာလဲ။ ဘာလို့ ကိုယ့်ရဲ့ကုဒ်ကို မ run ရသေးခင်မှာတင် ဘယ်နေရာမှာ မှားနေလဲဆိုတာ Editor က ပြောပြနိုင်တာလဲ။
ဒီလုပ်ဆောင်ချက်တွေကို နေ့တိုင်းသုံးနေပြီး အရမ်းအဆင်ပြေနေမှာပါ။
ဒါပေမဲ့ ဒီနောက်ကွယ်မှာ LSP (Language Server Protocol) ဆိုတဲ့အရာတစ်ခုက အထောက်အပံ့ပေးနေတယ်ဆိုတာကို သင်သိချင်မှ သိပါလိမ့်မယ်။
ပိုအရေးကြီးတာက Claude Code 2.0.74 version ကစပြီး LSP ကို support ပေးပါပြီ။
ဒါက ဘာကိုဆိုလိုတာလဲ။
Claude Code ဟာ နောက်ဆုံးမှာ "စာသားရှာဖွေရေးစက်" ဘဝကနေ တကယ့်ကုဒ်ကို နားလည်တဲ့ AI အဖြစ် ပြောင်းလဲသွားပြီဆိုတာကို ဆိုလိုပါတယ်။
LSP ဆိုတာ ဘာလဲ။ အလွယ်ပြောရရင်
LSP ဆိုတာ Microsoft က ဖန်တီးထားတဲ့ protocol တစ်ခုပါ။ ရည်ရွယ်ချက်က ရိုးရှင်းပါတယ်။
ကုဒ်ကို ပိုကောင်းအောင် လုပ်ဆောင်ပေးတဲ့ function တွေကို ဘယ် Editor မှာမဆို သုံးနိုင်အောင် လုပ်ဖို့ပါ။
ကြည့်ပါဦး။
-
TypeScript ရဲ့ language server ကို VS Code မှာ သုံးလို့ရသလို JetBrains မှာလည်း သုံးလို့ရတယ်။ Cursor မှာလည်း သုံးလို့ရတယ်။
-
အခု Claude Code မှာလည်း သုံးလို့ရပြီ
LSP ဆိုတာ ကိုယ့်ရဲ့ Editor ကို ပိုပြီး စမတ်ကျအောင် လုပ်ပေးတဲ့အရာပါ။
-
function နာမည်နဲ့ parameter တွေကို အလိုအလျောက် ဖြည့်ပေးခြင်း
-
definition ဆီကို တန်းသွားခြင်း
-
အားလုံးကို ရှာဖွေကိုးကားခြင်း
-
mouse တင်လိုက်တာနဲ့ document ကို ပြပေးခြင်း
-
real-time error နဲ့ warning တွေကို ပြပေးခြင်း
နေ့တိုင်း ကုဒ်ရေးတဲ့အခါ ဒီ function တွေကို အကြိမ်ပေါင်းများစွာ သုံးပါတယ်။
ဒါပေမဲ့ ဒါတွေ ဘယ်လိုအလုပ်လုပ်လဲဆိုတာကို တစ်ခါမှ မစဉ်းစားဖူးပါဘူး။
အခုတော့ စဉ်းစားနေစရာမလိုတော့ပါဘူး။ Claude Code မှာလည်း ဒီလုပ်ဆောင်ချက်တွေ ရှိနေပြီဆိုတာကို သိထားဖို့ပဲ လိုပါတယ်။
Claude Code က အရင်တုန်းက ဘယ်လိုအလုပ်လုပ်လဲ။
LSP ကို support မပေးခင်မှာ Claude Code က function တစ်ခု ဘယ်မှာ define လုပ်ထားလဲဆိုတာကို ရှာချင်ရင် ဘာလုပ်ရမလဲ။
grep နဲ့ ရှာရတယ်။
အလွယ်ပြောရရင် စာသားတစ်ခုလုံးကို ရှာဖွေပြီး "displayBooks" ဆိုတဲ့ စာလုံးတွေ ဘယ်မှာပါလဲဆိုတာကို ရှာရတာပါ။
ဒါက အသုံးဝင်လားဆိုတော့ အသုံးဝင်ပါတယ်။
AI model တွေက ကုဒ်အမြောက်အမြားကို လေ့လာထားတာကြောင့် စာသားထဲကနေ အများကြီး ခန့်မှန်းနိုင်ပါတယ်။
ဒါပေမဲ့ ဘာပြဿနာရှိလဲ။
ကုဒ်ရဲ့ တည်ဆောက်ပုံကို တကယ်နားမလည်တာပါ။
"အောင်ကျော်" ကို ရှာခိုင်းလိုက်တဲ့လူက ဖုန်းစာအုပ်ကို တစ်မျက်နှာချင်းစီလှန်ပြီး "အောင်ကျော်" ဆိုတဲ့ စာလုံးနှစ်လုံးကို ရှာရသလိုပါပဲ။
ဒါပေမဲ့ ကိုယ်က ဖုန်းနဲ့ "အောင်ကျော်" ကို ရှာလိုက်ရင် database ကို တိုက်ရိုက်ခေါ်ပြီး စက္ကန့်ပိုင်းအတွင်း အဖြေထွက်လာပါတယ်။
ဒါကွာခြားချက်ပါ။
အရင် Claude Code က တစ်ဖိုင်ချင်းစီ ဖတ်ပြီး စာသားနဲ့ တိုက်စစ်ဆေးတယ်။ အခု Claude Code က language server ကို တိုက်ရိုက်မေးပြီး တိကျတဲ့နေရာကို ရှာဖွေတယ်။
ထိရောက်မှုက အများကြီး ကွာခြားပါတယ်။
LSP က Claude Code ကို ဘာတွေ ယူဆောင်လာပေးလဲ။
အဓိက လုပ်ဆောင်ချက် ၅ ခုရှိပြီး တစ်ခုချင်းစီက ထိရောက်မှုကို မြှင့်တင်ပေးနိုင်ပါတယ်။
1. goToDefinition - definition ဆီကို တန်းသွားခြင်း
VS Code မှာ Ctrl+Click နှိပ်ရင် ဘာလုပ်လို့ရလဲ။ function definition ရှိတဲ့နေရာကို တန်းရောက်သွားနိုင်ပါတယ်။
အခု Claude Code မှာလည်း ဒီလိုလုပ်လို့ရပါပြီ။
"processRequest function ကို ဘယ်မှာ define လုပ်ထားလဲ။ LSP နဲ့ ရှာပေး" လို့ မေးလိုက်ပါ။
သူက ဖိုင်အားလုံးကို အဓိပ္ပာယ်မရှိ ရှာဖွေနေမှာ မဟုတ်ပါဘူး။
သူက language server ကို တိုက်ရိုက်မေးပြီး စက္ကန့်ပိုင်းအတွင်း အဖြေပေးပါလိမ့်မယ်။ ဖိုင်နာမည်၊ လိုင်းနံပါတ်၊ တိကျတဲ့နေရာ အားလုံးကို ပြောပြပါလိမ့်မယ်။
2. findReferences - အားလုံးကို ရှာဖွေကိုးကားခြင်း
ဒါက အရမ်းအသုံးဝင်တဲ့ လုပ်ဆောင်ချက်ပါ။
Function တစ်ခုကို ပြန်လည်တည်ဆောက်ချင်ပေမဲ့ မပြောင်းရဲဘူး။ တခြားနေရာတွေ ပျက်သွားမှာ ကြောက်လို့ပါ။
ဘာလုပ်ရမလဲ။
အရင်တုန်းက Claude Code ကို ဖိုင်တစ်ခုချင်းစီ ဖတ်ခိုင်းရလို့ အရမ်းကြာပါတယ်။
အခု "displayError function ကို ဘယ်နေရာတွေမှာ ခေါ်သုံးထားလဲ။ LSP နဲ့ ရှာပေး" လို့ တိုက်ရိုက်မေးလိုက်ပါ။
Language server က ကိုးကားထားတဲ့ နေရာအားလုံးကို တန်းစီပြီး ပြပေးပါလိမ့်မယ်။
မြန်ဆန်ပြီး တိကျပါတယ်။
3. hover - document နဲ့ type အကြောင်းအရာကို ရယူခြင်း
VS Code မှာ mouse တင်လိုက်တာနဲ့ function signature, parameter type, document အကြောင်းအရာတွေကို တွေ့နိုင်ပါတယ်။
Claude Code မှာလည်း အခု တွေ့နိုင်ပါပြီ။
"displayBooks function က ဘာ parameter တွေကို လက်ခံလဲ။ LSP နဲ့ ရှာပေး" လို့ မေးလိုက်ပါ။
သူက ခန့်မှန်းနေစရာမလိုဘဲ language server က ပြန်ပေးတဲ့ signature ကို တိုက်ရိုက်ဖတ်ပါလိမ့်မယ်။
အထူးသဖြင့် Python လို dynamic language တွေမှာဆိုရင် အရင်တုန်းက Claude က context ကို ကြည့်ပြီး type ကို ခန့်မှန်းရပါတယ်။ယခု LSP ဖြင့် အမျိုးအစားအချက်အလက်များကို ချက်ချင်းမြင်နိုင်သည်။
4. documentSymbol - ဖိုင်တစ်ခုရှိ သင်္ကေတအားလုံးကို စာရင်းပြုစုပါ
ဖိုင်တစ်ခုတွင် မည်သည့်အတန်းများ၊ လုပ်ဆောင်ချက်များ၊ variable များရှိသည်ကို အမြန်သိလိုပါသလား။
Claude ကိုမေးပါ- "backend/index.js တွင် မည်သည့်သင်္ကေတများရှိသနည်း။ LSP ကိုသုံးပါ"
၎င်းသည် သင့်အား ဖွဲ့စည်းတည်ဆောက်ထားသောစာရင်းကို ရှင်းရှင်းလင်းလင်းပြန်ပေးပါလိမ့်မည်။
5. workspaceSymbol - ပရောဂျက်တစ်ခုလုံးရှိ သင်္ကေတရှာဖွေမှု
ဤအရာသည် ပို၍ပင်အစွမ်းထက်သည်။
စာသားကိုရှာဖွေခြင်းမဟုတ်ဘဲ သင်္ကေတများကိုရှာဖွေခြင်းဖြစ်သည်။
"innerHTML" ပါဝင်သော နည်းလမ်းအားလုံးကို ရှာဖွေလိုပါသလား။
ဘာသာစကားဆာဗာသည် သင့်အတွက် တိုက်ရိုက်ရှာဖွေပေးမည်ဖြစ်ပြီး စာသားနှင့်ကိုက်ညီခြင်းမဟုတ်ဘဲ အမှန်တကယ်ကုဒ်သင်္ကေတဖြစ်သည်။
လက်တွေ့အသုံးချခြင်း- LSP သည် မည်သည့်ပြဿနာများကို ဖြေရှင်းနိုင်သနည်း။
အဓိပ္ပါယ်မရှိသောအရာများကို မပြောပါနှင့်၊ လက်တွေ့ဖြစ်ရပ်များကို ကြည့်ပါ။
ဖြစ်ရပ် ၁- လုပ်ဆောင်ချက်ခေါ်ဆိုမှုကို ခြေရာခံပါ
AseBook Finder ဟုခေါ်သော ပရောဂျက်တစ်ခုရှိပြီး frontend တွင် displayBooks လုပ်ဆောင်ချက်တစ်ခုရှိသည်။
ဤလုပ်ဆောင်ချက်ကို မည်သည့်နေရာများတွင် ခေါ်ဆိုထားသည်ကို သိလိုသည်။
ယခင်က မည်သို့လုပ်ဆောင်ခဲ့သနည်း။ Claude Code သည် တစ်ကြိမ် grep လုပ်ပြီး လွတ်သွားနိုင်သည်၊ သို့မဟုတ် မှားယွင်းစွာအစီရင်ခံနိုင်သည်။
ယခု တိုက်ရိုက်မေးပါ- "LSP ကိုသုံးပြီး displayBooks ၏ ကိုးကားချက်အားလုံးကို ရှာဖွေပါ"
ရလဒ်များ-
-
လုပ်ဆောင်ချက်၏တည်နေရာကို သတ်မှတ်ခြင်း
-
fetch အောင်မြင်ပြီးနောက် ခေါ်ဆိုသည့်နေရာ
-
အခြားကိုးကားချက်အားလုံးရှိရာနေရာ
တိကျမြန်ဆန်ပြီး မည်သည့်အရာကိုမျှ မလွတ်စေပါ။
ဖြစ်ရပ် ၂- လုပ်ဆောင်ချက်ပါရာမီတာများကို နားလည်ပါ
Claude ကို displayError လုပ်ဆောင်ချက်ကို ခေါ်ဆိုသည့်ကုဒ်အပိုင်းအစတစ်ခုကို ထုတ်လုပ်စေလိုသည်။
သို့သော် ဤလုပ်ဆောင်ချက်သည် မည်သည့်ပါရာမီတာများကို လက်ခံသည်ကို သင်မသေချာပါ။
၎င်းကိုမေးပါ- "displayError သည် မည်သည့်ပါရာမီတာများကို လက်ခံသနည်း။ LSP ကိုသုံးပါ"
ဘာသာစကားဆာဗာသည် message ပါရာမီတာတစ်ခုကို လက်ခံကြောင်း တိုက်ရိုက်ပြန်ပေးသည်။
Claude သိသောကြောင့် ထုတ်လုပ်ထားသောကုဒ်သည် မှားယွင်းမည်မဟုတ်ပါ။
ဖြစ်ရပ် ၃- API ခေါ်ဆိုမှုကို ရှာဖွေပါ
ပရောဂျက်တွင် /api/recommendations interface ကို မည်သည့်နေရာတွင် ခေါ်ဆိုထားသည်ကို ရှာဖွေလိုသည်။
Claude ကိုမေးပါ- "LSP ကိုသုံးပြီး /api/recommendations ၏ ကိုးကားချက်အားလုံးကို ရှာဖွေပါ"
၎င်းသည် fetch ခေါ်ဆိုသည့်နေရာကို ရှာဖွေပြီး လိုင်းအထိ တိကျသည်။
API ပြဿနာများကို debug လုပ်ခြင်း၊ ဒေတာစီးဆင်းမှုကို ခြေရာခံခြင်းအတွက် အလွန်အသုံးဝင်သည်။
ဖြစ်ရပ် ၄- အမှားများကို ကြိုတင်ရှာဖွေပါ
ကုဒ်ကို ပြန်လည်တည်ဆောက်နေစဉ် variable အမည်ကို မှားယွင်းစွာရေးမိသည်။
ပုံမှန်အားဖြင့် ကုဒ်ကို run ပြီးမှသာ တွေ့ရှိနိုင်သည်။
သို့သော် LSP ဖြင့် ဘာသာစကားဆာဗာသည် အချိန်နှင့်တပြေးညီ စစ်ဆေးပြီး ပြဿနာကို ချက်ချင်း Claude Code သို့ အစီရင်ခံသည်။
Claude သည် ကုဒ်ကို run မလုပ်မီ သင့်အား ဤနေရာတွင် မှားယွင်းနေကြောင်း ပြောပြသည်။
မည်သို့တပ်ဆင်ရမည်နည်း။ ၅ ဆင့်ဖြင့် ပြီးစီးပါ
မစိုးရိမ်ပါနှင့်၊ တပ်ဆင်ခြင်းသည် ရိုးရှင်းပါသည်။
အဆင့် ၁- LSP ကိရိယာကို ဖွင့်ပါ
သင်၏ shell configuration file တွင် (.bashrc သို့မဟုတ် .zshrc) တွင် ဤလိုင်းကိုထည့်ပါ-
exportENABLE_LSP_TOOLS=1 ထို့နောက် source ~/.zshrc ကို run ပြီး အသက်ဝင်စေပါ။
အဆင့် ၂- ဘာသာစကားဆာဗာ plugin ကို တပ်ဆင်ပါ
Claude Code ကိုဖွင့်ပြီး ရိုက်ထည့်ပါ-
/plugin သင်အသုံးပြုသည့်ဘာသာစကားနှင့် သက်ဆိုင်သည့် plugin ကိုရှာဖွေပါ-
-
Python: pyright-lsp ကိုရွေးချယ်ပါ
-
TypeScript/JavaScript: vtsls သို့မဟုတ် typescript-lsp ကိုရွေးချယ်ပါ
-
Go: gopls ကိုရွေးချယ်ပါ
-
Rust: rust-analyzer ကိုရွေးချယ်ပါ
"Install for me only" ကိုရွေးချယ်ပြီး တပ်ဆင်ပါ။
အဆင့် ၃- ဘာသာစကားဆာဗာ binary ဖိုင်ကို တပ်ဆင်ပါ
Plugin သည် interface သာဖြစ်ပြီး အမှန်တကယ်အလုပ်လုပ်သည်မှာ ဘာသာစကားဆာဗာဖြစ်သည်။
Python:
pip install pyrightTypeScript/JavaScript:
npm install -g @vtsls/language-server typescriptGo:
go install golang.org/x/tools/gopls@latestRust:
rustup component add rust-analyzer
အဆင့် ၄- Claude Code ကို ပြန်လည်စတင်ပါclaude
အဆင့် ၅- အလုပ်လုပ်မလုပ် စစ်ဆေးပါ
/plugin ရိုက်ထည့်ပြီး "Installed" tab ကိုစစ်ဆေးပါ။ သင်၏ plugin ကိုတွေ့လျှင် အဆင်ပြေပါသည်။
စမ်းသပ်ကြည့်ပါ:
LSP ကို အသုံးပြု၍ someFunction ၏ ကိုးကားချက်အားလုံးကို ရှာဖွေပါ Claude Code သည် grep အစား find_references tool ကိုအသုံးပြုပါက အောင်မြင်ပါသည်။
LSP ကို ဘယ်အချိန်မှာ သုံးမလဲ။ ဘယ်အချိန်မှာ မသုံးလဲ။
LSP သည် အရာအားလုံးအတွက် မဟုတ်ပါ။
LSP ကို အသုံးပြုရန် သင့်လျော်သော အခြေအနေများ:
-
ကြီးမားသော project များ (ဖိုင်ရာပေါင်းများစွာ)
-
ဖိုင်များအနှံ့ လုပ်ဆောင်ချက်ခေါ်ဆိုမှုများကို ခြေရာခံခြင်း
-
တိကျသော လုပ်ဆောင်ချက် လက်မှတ်များ လိုအပ်ခြင်း (အထူးသဖြင့် dynamic language များ)
-
bug များဖြစ်ပေါ်လာမှာစိုး၍ code ကို ပြန်လည်တည်ဆောက်ခြင်း
LSP ကို အသုံးပြုရန် မသင့်လျော်သော အခြေအနေများ:
-
သေးငယ်သော project များ၊ အမြန် script များ
-
ရိုးရှင်းသော စာသားရှာဖွေခြင်း
-
စာကြောင်းတစ်ကြောင်းကို ဘယ်မှာရှာရမလဲဆိုတာကို ရှာဖွေခြင်း
ရိုးရိုးရှင်းရှင်းပြောရရင် grep မြန်တဲ့အခါ grep ကိုသုံးပါ။ LSP တိကျတဲ့အခါ LSP ကိုသုံးပါ။
ကိရိယာများသည် လူကိုအစေခံရန်ဖြစ်ပြီး အသုံးပြုရန်အတွက် အသုံးပြုရန်မဟုတ်ပါ။
ကြိုတင်သိထားသင့်သော အခက်အခဲအချို့
အခက်အခဲ ၁- language server သည် PATH တွင် ရှိရမည်
Claude Code က "No LSP server available" လို့ပြောရင် သင်၏ language server ကို မှန်ကန်စွာ ထည့်သွင်းထားခြင်းမရှိခြင်း သို့မဟုတ် PATH တွင် မရှိခြင်း ဖြစ်နိုင်ပါသည်။
terminal တွင် which pyright (သို့မဟုတ် သင်၏ language server) ကို run ပြီး ရှာတွေ့နိုင်မလား ကြည့်ပါ။
အခက်အခဲ ၂- plugin ကို ထည့်သွင်းပြီးနောက် restart လုပ်ရန် လိုအပ်သည်
plugin အသစ်တစ်ခုကို ထည့်သွင်းပြီးနောက် သို့မဟုတ် language server ကို update လုပ်ပြီးနောက် Claude Code ကို restart လုပ်ရန် သေချာပါစေ။
language server ကို စတင်ချိန်တွင် load လုပ်ပါသည်။
အခက်အခဲ ၃- တစ်ခါတစ်ရံ "LSP ကိုသုံးပါ" ဟု ရှင်းရှင်းလင်းလင်း ပြောရန် လိုအပ်သည်
Claude Code သည် LSP အစား grep ကို အသုံးပြုနေသေးသည်ကို တွေ့ရှိပါက "LSP ကိုသုံးပါ" ဟု ထည့်ပြောပါ:
LSP ကို အသုံးပြု၍ authenticateUser ၏ ကိုးကားချက်အားလုံးကို ရှာဖွေပါ ထိုအခါ language server ကို အသုံးပြုသင့်ကြောင်း သိပါလိမ့်မည်။
အခက်အခဲ ၄- visual အရိပ်အမြွက်များ မရှိပါ
VS Code နှင့်မတူဘဲ Claude Code သည် LSP server လည်ပတ်နေသလားကို သင့်အား အသိပေးမည်မဟုတ်ပါ။
status bar icon မရှိပါ၊ အကြောင်းကြားချက် မရှိပါ။
အတည်ပြုရန် တစ်ခုတည်းသောနည်းလမ်းမှာ အမှန်တကယ် စမ်းသပ်ခြင်းဖြစ်သည်။
နောက်ဆုံးအနေနဲ့ စကားနှစ်ခွန်းလောက် ပြောချင်ပါတယ်
Claude Code သည် LSP ကို support လုပ်ခြင်းသည် သေးငယ်သော update တစ်ခုမဟုတ်ဘဲ အရည်အသွေးပိုင်းဆိုင်ရာ ပြောင်းလဲမှုတစ်ခုဖြစ်သည်။
ယခင်က "စာသားရှာဖွေခြင်း + AI ခန့်မှန်းခြင်း" ဖြစ်ခဲ့သည်။
ယခု "language server + AI နားလည်မှု" ဖြစ်သည်။
သင်သည် ဖုန်းစာအုပ်ကို လှန်လှောကြည့်ခြင်းမှ ရှာဖွေရေးအင်ဂျင်ကို အသုံးပြုခြင်းသို့ ပြောင်းလဲသွားသကဲ့သို့ ဖြစ်သည်။
ထိရောက်မှု ကွာခြားချက်သည် ကြီးမားလှသည်။
Claude Code ကို အသုံးပြု၍ တကယ့် project တစ်ခုကို လုပ်ဆောင်နေပါက LSP ကို စနစ်ထည့်သွင်းရန် ၅ မိနစ် အချိန်ပေးပါ။
ဒီ ၅ မိနစ်က တန်ပါတယ်။
လုပ်ဆောင်ရန် စာရင်း:
-
shell configuration တွင်
export ENABLE_LSP_TOOLS=1ကို ထည့်ပါ -
Claude Code ကိုဖွင့်ပြီး သင်၏ language plugin ကို ထည့်သွင်းရန်
/pluginကို run ပါ -
သက်ဆိုင်ရာ language server binary file ကို ထည့်သွင်းပါ
-
Claude Code ကို restart လုပ်ပါ
-
"LSP ကို အသုံးပြု၍ XXX ၏ ကိုးကားချက်အားလုံးကို ရှာဖွေပါ" ကို စမ်းသပ်ပါ
ထည့်သွင်းပြီးနောက် သင်တွေ့ရှိလိမ့်မည်မှာ-မူရင်း Claude Code က ဒီလောက်မြန်နိုင်တယ်လို့ မထင်ထားဘူး။





