ক্লদ কোড গোপনে আপগ্রেড হয়েছে, অবশেষে আর "টেক্সট সার্চ মেশিন" নয়
কোড লেখার সময়, কখনও কি এই প্রশ্নটা মাথায় এসেছে:
কেন VS Code-এ Ctrl + ক্লিক করলে সরাসরি ফাংশন ডেফিনেশনে যাওয়া যায়? কেন ফাংশনের উপর মাউস রাখলে সম্পূর্ণ প্যারামিটারের ব্যাখ্যা দেখা যায়? কেন কোড রান করার আগেই এডিটর বলে দেয় কোথায় ভুল হয়েছে?
এই সুবিধাগুলো তোমরা প্রতিদিন ব্যবহার করছ, এবং খুব ভালো লাগছে।
কিন্তু তোমরা হয়তো জানো না, এর পেছনে রয়েছে LSP (Language Server Protocol) নামক একটি জিনিস।
আরও গুরুত্বপূর্ণ বিষয় হল, ক্লদ কোড 2.0.74 সংস্করণ থেকে LSP সাপোর্ট করে।
এর মানে কী?
এর মানে হল ক্লদ কোড অবশেষে "টেক্সট সার্চ মেশিন" থেকে সত্যিকারের কোড বুঝতে পারা AI হয়ে উঠেছে।
LSP কী? সহজ ভাষায় বলা যাক
LSP হল মাইক্রোসফটের তৈরি করা একটি প্রোটোকল, যার উদ্দেশ্য খুব সহজ:
যাতে কোড ইন্টেলিজেন্সের সুবিধা যেকোনো এডিটরে পাওয়া যায়।
দেখো:
-
টাইপস্ক্রিপ্টের ভাষা সার্ভার, VS Code-এ ব্যবহার করা যায়, JetBrains-এ ব্যবহার করা যায়, Cursor-এ ব্যবহার করা যায়
-
এখন, ক্লদ কোডেও ব্যবহার করা যাচ্ছে
LSP হল সেই জিনিস যা তোমার এডিটরকে আরও বুদ্ধিমান করে তোলে:
-
স্বয়ংক্রিয়ভাবে ফাংশনের নাম এবং প্যারামিটার পূরণ করা
-
সংজ্ঞাতে যাওয়া
-
সমস্ত রেফারেন্স খুঁজে বের করা
-
হোভারে ডকুমেন্ট দেখানো
-
রিয়েল-টাইমে এরর এবং ওয়ার্নিং দেখানো
তোমরা প্রতিদিন কোড লেখার সময় এই সুবিধাগুলো অসংখ্যবার ব্যবহার করো।
কিন্তু কখনও ভাবোনি এটা কীভাবে কাজ করে।
এখন আর ভাবতে হবে না, শুধু এটা জানো: ক্লদ কোডেও এখন এই ক্ষমতাগুলো আছে।
ক্লদ কোড আগে কীভাবে কাজ করত?
LSP সাপোর্ট করার আগে, ক্লদ কোড যদি কোনো ফাংশন কোথায় সংজ্ঞায়িত করা হয়েছে তা জানতে চাইত, তাহলে কী করত?
grep সার্চের উপর নির্ভর করত।
সোজা কথায়, পুরো টেক্সট সার্চ করে দেখত "displayBooks" এই অক্ষরগুলো কোথায় আছে।
এটা কি কাজ করত? হ্যাঁ, করত।
AI মডেল প্রচুর কোড দিয়ে প্রশিক্ষিত, তাই টেক্সট থেকে অনেক কিছু অনুমান করতে পারত।
কিন্তু সমস্যা কোথায়?
এটা সত্যিই কোডের গঠন বুঝতে পারত না।
যেমন তুমি যদি কাউকে "张三" (ঝাং সান) খুঁজতে বলো, সে শুধু ফোনবুকের পাতা উল্টে "张三" এই অক্ষর দুটো খুঁজবে।
আর তুমি যদি ফোনে "张三" সার্চ করো, তাহলে সরাসরি ডেটাবেস থেকে খুঁজে বের করবে, এবং মুহূর্তের মধ্যে রেজাল্ট পেয়ে যাবে।
এটাই পার্থক্য।
আগে ক্লদ কোড: একটি একটি করে ফাইল পড়ত, টেক্সট মিলিয়ে দেখত এখনকার ক্লদ কোড: সরাসরি ভাষা সার্ভারকে জিজ্ঞাসা করে, নির্ভুলভাবে খুঁজে বের করে
দক্ষতার পার্থক্য অনেক।
LSP ক্লদ কোডের জন্য কী নিয়ে এসেছে?
5টি মূল ক্ষমতা, প্রত্যেকটিই কর্মদক্ষতা বাড়াতে সহায়ক:
1. goToDefinition - সংজ্ঞাতে যাওয়া
VS Code-এ Ctrl+Click করলে কী হয়? সরাসরি ফাংশনের সংজ্ঞার জায়গায় চলে যায়।
এখন ক্লদ কোডও এটা করতে পারে।
তুমি যদি জিজ্ঞাসা করো: "processRequest ফাংশনটি কোথায় সংজ্ঞায়িত করা হয়েছে? LSP ব্যবহার করে"
তাহলে এটা বোকার মতো সমস্ত ফাইল খুঁজে দেখবে না।
সরাসরি ভাষা সার্ভারকে জিজ্ঞাসা করবে, এবং মুহূর্তের মধ্যে উত্তর দেবে: ফাইলের নাম, লাইনের নম্বর, সঠিক অবস্থান।
2. findReferences - সমস্ত রেফারেন্স খুঁজে বের করা
এটা একটা গুরুত্বপূর্ণ বৈশিষ্ট্য।
তুমি একটা ফাংশন রিফ্যাক্টর করতে চাও, কিন্তু পরিবর্তন করতে ভয় পাচ্ছ, কারণ ভয় লাগছে অন্য কোথাও ভেঙে যেতে পারে।
তখন কী করবে?
আগে ক্লদ কোডকে একটি একটি করে ফাইল পড়তে বলতে হত, যা খুবই ধীরগতির ছিল।
এখন সরাসরি জিজ্ঞাসা করো: "displayError ফাংশনটি কোথায় কোথায় কল করা হয়েছে? LSP ব্যবহার করে"
ভাষা সার্ভার সরাসরি সমস্ত রেফারেন্সের তালিকা দিয়ে দেবে।
দ্রুত, নির্ভুল এবং কার্যকরী।
3. hover - ডকুমেন্ট এবং টাইপ তথ্য পাওয়া
VS Code-এ মাউস হোভার করলে ফাংশনের সিগনেচার, প্যারামিটারের টাইপ, ডকুমেন্টের ব্যাখ্যা দেখতে পাওয়া যায়।
ক্লদ কোডও এখন এটা দেখতে পায়।
জিজ্ঞাসা করো: "displayBooks ফাংশনটি কী কী প্যারামিটার গ্রহণ করে? LSP ব্যবহার করে"
এটা অনুমান করার দরকার নেই, সরাসরি ভাষা সার্ভার থেকে আসা সিগনেচার পড়বে।
বিশেষ করে পাইথনের মতো ডাইনামিক ভাষার ক্ষেত্রে, আগে ক্লদ শুধু কন্টেক্সট থেকে টাইপ অনুমান করত।এখন LSP এর মাধ্যমে টাইপ তথ্য সহজেই দেখা যায়।
4. documentSymbol - ফাইলের সমস্ত প্রতীক তালিকাভুক্ত করুন
একটি ফাইলের মধ্যে কী কী ক্লাস, ফাংশন, ভেরিয়েবল আছে তা দ্রুত জানতে চান?
ক্লডকে জিজ্ঞাসা করুন: "backend/index.js এ কী কী প্রতীক আছে? LSP ব্যবহার করে"
এটি আপনাকে একটি কাঠামোগত তালিকা ফেরত দেবে, সবকিছু পরিষ্কারভাবে দেখাবে।
5. workspaceSymbol - পুরো প্রোজেক্টের প্রতীক অনুসন্ধান
এটা আরও শক্তিশালী।
এটা টেক্সট সার্চ করে না, প্রতীক সার্চ করে।
আপনি "innerHTML" আছে এমন সব মেথড খুঁজে বের করতে চান?
ভাষা সার্ভার সরাসরি খুঁজে বের করে দেবে, এটা স্ট্রিং ম্যাচিং নয়, এটা সত্যিকারের কোড প্রতীক।
বাস্তব প্রয়োগ: LSP আসলে কী সমস্যা সমাধান করতে পারে?
ফালতু কথা ছাড়ুন, বাস্তব উদাহরণ দেখুন।
উদাহরণ 1: ফাংশন কল ট্র্যাক করা
AseBook Finder নামে একটি প্রোজেক্ট আছে, ফ্রন্টএন্ডে displayBooks নামে একটি ফাংশন আছে।
আপনি জানতে চান এই ফাংশনটি কোথায় কোথায় কল করা হয়েছে।
আগে কী করতেন? ক্লড কোড grep করতেন, কিছু বাদ যেতে পারত, ভুল রিপোর্টও দিতে পারত।
এখন সরাসরি জিজ্ঞাসা করুন: "LSP ব্যবহার করে displayBooks এর সমস্ত রেফারেন্স খুঁজে বের করো"
ফলাফল:
-
ফাংশনটি যেখানে সংজ্ঞায়িত করা হয়েছে
-
fetch সফল হওয়ার পরে যেখানে কল করা হয়েছে
-
অন্যান্য সমস্ত রেফারেন্সের স্থান
সঠিক, দ্রুত, এবং কোনো কিছু বাদ যায় না।
উদাহরণ 2: ফাংশনের প্যারামিটার বোঝা
আপনি ক্লডকে displayError ফাংশন কল করার জন্য একটি কোড তৈরি করতে বলছেন।
কিন্তু আপনি নিশ্চিত নন এই ফাংশনটি কী প্যারামিটার গ্রহণ করে।
তাকে জিজ্ঞাসা করুন: "displayError কী প্যারামিটার গ্রহণ করে? LSP ব্যবহার করে"
ভাষা সার্ভার সরাসরি ফেরত দেবে: এটি একটি message প্যারামিটার গ্রহণ করে।
ক্লড জানতে পারল, তাই তৈরি করা কোডে ভুল হবে না।
উদাহরণ 3: API কল খুঁজে বের করা
আপনি প্রোজেক্টের মধ্যে কোথায় /api/recommendations API কল করা হয়েছে তা খুঁজে বের করতে চান।
ক্লডকে জিজ্ঞাসা করুন: "LSP ব্যবহার করে /api/recommendations এর সমস্ত রেফারেন্স খুঁজে বের করো"
এটি fetch কল করার স্থান খুঁজে বের করবে, একেবারে লাইন নম্বর সহ।
API সমস্যা ডিবাগিং, ডেটা ফ্লো ট্র্যাক করার জন্য এটা খুবই উপযোগী।
উদাহরণ 4: আগে থেকে ভুল খুঁজে বের করা
আপনি কোড রিফ্যাক্টর করছেন, অসাবধানতাবশত একটি ভেরিয়েবলের নাম ভুল লিখেছেন।
সাধারণত, আপনাকে কোড রান করে দেখতে হতো ভুলটি কোথায়।
কিন্তু LSP থাকার কারণে, ভাষা সার্ভার রিয়েল-টাইমে পরীক্ষা করে এবং সমস্যা খুঁজে পেলে সঙ্গে সঙ্গে ক্লড কোডকে রিপোর্ট করে।
ক্লড কোড রান করার আগেই আপনাকে জানিয়ে দেবে: এখানে একটি ভুল আছে।
কীভাবে সেটআপ করবেন? ৫টি ধাপে কাজ শেষ
ভয় পাওয়ার কিছু নেই, সেটআপ করা খুবই সহজ।
প্রথম ধাপ: LSP টুল সক্রিয় করুন
আপনার শেল কনফিগারেশন ফাইলে (.bashrc অথবা .zshrc) একটি লাইন যোগ করুন:
exportENABLE_LSP_TOOLS=1 তারপর source ~/.zshrc রান করে কার্যকর করুন।
দ্বিতীয় ধাপ: ভাষা সার্ভার প্লাগইন ইনস্টল করুন
ক্লড কোড খুলুন, লিখুন:
/plugin আপনার ব্যবহৃত ভাষার জন্য প্লাগইনটি খুঁজে বের করুন:
-
Python: pyright-lsp নির্বাচন করুন
-
TypeScript/JavaScript: vtsls অথবা typescript-lsp নির্বাচন করুন
-
Go: gopls নির্বাচন করুন
-
Rust: rust-analyzer নির্বাচন করুন
"Install for me only" নির্বাচন করে ইনস্টল করুন।
তৃতীয় ধাপ: ভাষা সার্ভার বাইনারি ফাইল ইনস্টল করুন
প্লাগইন শুধুমাত্র ইন্টারফেস, আসল কাজটা করে ভাষা সার্ভার।
Python:
pip install pyright
TypeScript/JavaScript:
npm install -g @vtsls/language-server typescript
Go:
go install golang.org/x/tools/gopls@latest
Rust:
rustup component add rust-analyzer
চতুর্থ ধাপ: ক্লড কোড রিস্টার্ট করুনইনস্টল করার পরে, ক্লড কোড রিস্টার্ট করুন।
claude
ধাপ ৫: যাচাই করুন যে এটি কাজ করছে কিনা
/plugin লিখুন, "Installed" ট্যাবে দেখুন, আপনার প্লাগইনটি দেখতে পেলে বুঝবেন ঠিক আছে।
পরীক্ষা করুন:
LSP ব্যবহার করে someFunction এর সমস্ত রেফারেন্স খুঁজুন যদি ক্লড কোড grep এর পরিবর্তে find_references টুল ব্যবহার করে, তাহলে বুঝবেন সফল হয়েছেন।
কখন LSP ব্যবহার করবেন? কখন করবেন না?
LSP কোনো জাদুকাঠি নয়।
LSP ব্যবহারের জন্য উপযুক্ত পরিস্থিতি:
-
বড় প্রোজেক্ট (কয়েকশো ফাইল)
-
ফাইলের মধ্যে ফাংশন কল ট্র্যাক করা
-
সঠিক ফাংশন সিগনেচারের প্রয়োজন (বিশেষ করে ডাইনামিক ভাষায়)
-
কোড রিফ্যাক্টর করা, বাগ হওয়ার ভয় থাকলে
LSP ব্যবহারের জন্য উপযুক্ত নয় এমন পরিস্থিতি:
-
ছোট প্রোজেক্ট, দ্রুত স্ক্রিপ্ট
-
সাধারণ টেক্সট সার্চ
-
শুধু একটি স্ট্রিং কোথায় আছে তা খুঁজে বের করা
সোজা কথায়, যখন grep দ্রুত কাজ করে তখন grep ব্যবহার করুন, আর যখন LSP নির্ভুল হয় তখন LSP ব্যবহার করুন।
টুল মানুষের সেবার জন্য, ব্যবহারের জন্য ব্যবহার নয়।
কয়েকটি সমস্যা, আগে থেকে জেনে রাখুন
সমস্যা ১: ভাষা সার্ভার PATH-এ থাকতে হবে
যদি ক্লড কোড বলে "No LSP server available", তাহলে সম্ভবত আপনার ভাষা সার্ভারটি সঠিকভাবে ইনস্টল করা হয়নি, অথবা PATH-এ নেই।
টার্মিনালে which pyright (অথবা আপনার ভাষা সার্ভার) চালান, দেখুন খুঁজে পাওয়া যায় কিনা।
সমস্যা ২: প্লাগইন ইনস্টল করার পরে রিস্টার্ট করতে হবে
নতুন প্লাগইন ইনস্টল করার পরে বা ভাষা সার্ভার আপডেট করার পরে, ক্লড কোড রিস্টার্ট করতে ভুলবেন না।
ভাষা সার্ভারটি শুরু করার সময় লোড হয়।
সমস্যা ৩: মাঝে মাঝে স্পষ্টভাবে "LSP ব্যবহার করুন" বলতে হবে
যদি আপনি দেখেন ক্লড কোড এখনও grep ব্যবহার করছে LSP-এর পরিবর্তে, তাহলে একটি বাক্য যোগ করুন "LSP ব্যবহার করুন":
LSP ব্যবহার করে authenticateUser এর সমস্ত রেফারেন্স খুঁজুন তাহলে এটি বুঝবে যে ভাষা সার্ভার ব্যবহার করতে হবে।
সমস্যা ৪: কোনো ভিজ্যুয়াল ইঙ্গিত নেই
VS Code-এর মতো নয়, ক্লড কোড আপনাকে জানাবে না LSP সার্ভার চলছে কিনা।
কোনো স্ট্যাটাস বার আইকন নেই, কোনো নোটিফিকেশন নেই।
নিশ্চিত হওয়ার একমাত্র উপায়: পরীক্ষা করা।
শেষ কথা
ক্লড কোড LSP সমর্থন করে, এটা ছোট আপডেট নয়, এটা একটা গুণগত পরিবর্তন।
আগে এটি ছিল "টেক্সট সার্চ + AI অনুমান"।
এখন এটি "ভাষা সার্ভার + AI বোঝা"।
যেমন আপনি ফোনবুক থেকে সার্চ ইঞ্জিন ব্যবহার করছেন।
দক্ষতার পার্থক্য আকাশ-পাতাল।
যদি আপনি ক্লড কোড ব্যবহার করে কোনো গুরুত্বপূর্ণ প্রোজেক্ট করেন, তাহলে ৫ মিনিট সময় নিয়ে LSP সেটআপ করুন।
এই ৫ মিনিট মূল্যবান।
করণীয় তালিকা:
-
শেল কনফিগারেশনে
export ENABLE_LSP_TOOLS=1যোগ করুন -
ক্লড কোড খুলুন,
/pluginচালিয়ে আপনার ভাষা প্লাগইন ইনস্টল করুন -
সংশ্লিষ্ট ভাষা সার্ভারের বাইনারি ফাইল ইনস্টল করুন
-
ক্লড কোড রিস্টার্ট করুন
-
পরীক্ষা করুন "LSP ব্যবহার করে XXX এর সমস্ত রেফারেন্স খুঁজুন"
ইনস্টল করার পরে, আপনি দেখবেন: আগে জানতাম না Claude Code এত দ্রুত হতে পারে।





