মূল কনটেন্টে যান
এআই টিউটোরিয়াল

Rust টার্মিনাল AI কোডিং সহকারী CometixCode তৈরি ও চালান

Rust ও ICU4C ব্যবহার করে CometixCode তৈরি, এর টার্মিনাল ইন্টারফেস চালু, ripgrep রেজোলিউশন কনফিগার, সক্রিয় সার্চ বাইনারি শনাক্ত এবং প্রকল্পের বিচ্ছিন্ন টেস্ট ওয়ার্কফ্লো সঠিকভাবে চালানো শিখুন।

Rust টার্মিনাল AI কোডিং সহকারী CometixCode তৈরি ও চালান

CometixCode কী?

CometixCode হলো Rust-এ লেখা একটি টার্মিনাল-ভিত্তিক AI কোডিং সহকারী। এটি Anthropic-এর Claude Code টার্মিনাল ইন্টারফেসের একটি স্বাধীন, ফাইলভিত্তিক পুনঃবাস্তবায়ন, কোনো অফিসিয়াল Anthropic পণ্য নয়।

CometixCode অনানুষ্ঠানিক, Anthropic-এর সঙ্গে সংশ্লিষ্ট নয় এবং Anthropic দ্বারা অনুমোদিত বা সমর্থিত নয়। Claude ও Claude Code হলো Anthropic, PBC-এর ট্রেডমার্ক।

মূল Claude Code টার্মিনাল UI-তে React ও Ink-সহ TypeScript ব্যবহার করা হয়েছে। CometixCode CometixTUI ব্যবহার করে Rust-এ সেই কাঠামো পুনর্নির্মাণ করে। CometixTUI হলো iocraft retained-mode টার্মিনাল UI ফ্রেমওয়ার্কের একটি ফর্ক। TypeScript কম্পোনেন্টগুলো Rust কম্পোনেন্টে এবং হুকগুলো হুকে রূপান্তরিত হয়েছে; ইচ্ছাকৃত স্থাপত্যগত পার্থক্যগুলো সোর্সে নথিভুক্ত করা আছে।

প্রকল্পটি এখনও উন্নয়নাধীন। ইন্টারঅ্যাকটিভ লুপ, টুল এক্সিকিউশন, অনুমতি, Model Context Protocol ইন্টিগ্রেশন এবং স্ল্যাশ কমান্ডের বড় অংশ বাস্তবায়িত হয়েছে, তবে কিছু অংশ এখনও অসম্পূর্ণ।

প্রধান বৈশিষ্ট্য ও স্থাপত্য

  • Rust-ভিত্তিক টার্মিনাল UI: ইন্টারফেসটি React-ধাঁচের কম্পোনেন্ট ও হুক মডেল ব্যবহার করে বাস্তবায়িত।
  • ঘনিষ্ঠ স্থাপত্যগত পোর্ট: নতুন কোনো ডিজাইন দিয়ে প্রতিস্থাপনের বদলে প্রকল্পটি ফাইল ধরে Claude Code-এর প্রকাশিত CLI কাঠামো অনুসরণ করে।
  • ইন্টারঅ্যাকটিভ কোডিং কর্মপ্রবাহ: সহকারী লুপ ও টুল এক্সিকিউশন সিস্টেমের প্রধান অংশগুলো বাস্তবায়িত।
  • অনুমতি ও কমান্ড: অনুমতি ব্যবস্থাপনা এবং স্ল্যাশ-কমান্ড সমর্থন উল্লেখযোগ্যভাবে বাস্তবায়িত।
  • MCP সমর্থন: Model Context Protocol-এর কার্যকারিতা অন্তর্ভুক্ত আছে, যদিও পুরো প্রকল্পটি এখনও উন্নয়নাধীন।
  • উন্নত টার্মিনাল প্রিমিটিভ: CometixTUI সারি-স্তরের ডিফিং, ইভেন্ট প্রোপাগেশন, SIGCONT পুনরুদ্ধার, IME কার্সর সমর্থন, ব্র্যাকেটেড পেস্ট এবং গ্রিড লেআউট সরবরাহ করে।
  • বাহ্যিক ফাইল অনুসন্ধান: CometixCode নিজস্ব বাইনারিতে ripgrep কম্পাইল করার বদলে আলাদা ripgrep এক্সিকিউটেবল ব্যবহার করে।

পূর্বশর্ত

CometixCode বিল্ড করার আগে নিম্নলিখিত নির্ভরতাগুলো ইনস্টল করুন:

  • Rust 1.87 বা পরবর্তী সংস্করণ, Rust edition 2024 ব্যবহার করে।
  • ICU4C, যা pkg-config-এর মাধ্যমে rust_icu_* ক্রেটগুলোর জন্য প্রয়োজন।

macOS-এ ICU4C ইনস্টল

Homebrew ICU4C-কে keg-only প্যাকেজ হিসেবে ইনস্টল করে। এটি ইনস্টল করুন এবং এর pkgconfig ডিরেক্টরি লুকআপ পাথে যোগ করুন:

brew install icu4c
export PKG_CONFIG_PATH="$(brew --prefix icu4c)/lib/pkgconfig"

যে শেলে CometixCode বিল্ড করবেন, সেখানে export কমান্ডটি চালান। নিয়মিত প্রকল্পটিতে কাজ করলে ভেরিয়েবলটি উপযুক্ত শেল কনফিগারেশন ফাইলে যোগ করুন।

Debian বা Ubuntu-তে ICU4C ইনস্টল

sudo apt install libicu-dev pkg-config

CometixCode বিল্ড

রিপোজিটরির রুটে একটি টার্মিনাল খুলে অপ্টিমাইজড রিলিজ বিল্ড তৈরি করুন:

cargo build --release

তৈরি হওয়া বাইনারিটির নাম cometix। স্বাভাবিক ব্যবহারের জন্য রিলিজ বিল্ড উপযুক্ত, কারণ এতে Rust-এর রিলিজ অপ্টিমাইজেশন সক্রিয় থাকে।

সহকারী চালান

নিম্নলিখিত কমান্ড দিয়ে Cargo-এর মাধ্যমে CometixCode বিল্ড ও চালু করুন:

cargo run --release

এটি রিলিজ প্রোফাইল ব্যবহার করে টার্মিনাল ইন্টারফেস চালু করে। প্রকল্পটি সক্রিয় উন্নয়নাধীন হওয়ায়, প্রধান ইন্টারঅ্যাকটিভ, টুল, অনুমতি, MCP এবং কমান্ড-সংক্রান্ত কার্যকারিতা থাকলেও কিছু কর্মপ্রবাহ অসম্পূর্ণ থাকতে পারে।

মৌলিক ডায়াগনস্টিক কমান্ড

কনফিগার করা পরিবেশ পরিদর্শন করতে CometixCode-এর ভেতরে নিম্নলিখিত স্ল্যাশ কমান্ডটি ব্যবহার করুন। এতে কোন ripgrep এক্সিকিউটেবল ব্যবহৃত হচ্ছে তাও দেখা যায়:

/doctor

ফাইল অনুসন্ধান অনুপলব্ধ হলে বা CometixCode প্যাকেজ করা নাকি হোস্টে ইনস্টল করা rg বাইনারি নির্বাচন করেছে তা নিশ্চিত করতে এটি বিশেষভাবে কার্যকর।

ফাইল অনুসন্ধানের জন্য ripgrep কনফিগার করুন

CometixCode ফাইল অনুসন্ধানের দায়িত্ব rg-কে দেয়, যা ripgrep কমান্ড-লাইন টুল। ripgrep এক্সিকিউটেবলটি একটি বাহ্যিক সম্পদ হিসেবে থাকে এবং কখনো cometix এক্সিকিউটেবলের মধ্যে কম্পাইল করা হয় না।

CometixCode নিম্নলিখিত ক্রমে ripgrep অনুসন্ধান করে:

  1. এক্সিকিউটেবলের পাশে থাকা vendor/ripgrep/<arch>-<os>/rg, যা রিলিজ আর্কাইভে ব্যবহৃত হয়।
  2. সোর্স ট্রিতে থাকা vendor/ripgrep/<arch>-<os>/rg, যা উন্নয়নের সময় ব্যবহৃত হয়।
  3. PATH-এর মাধ্যমে পাওয়া হোস্ট সিস্টেমের rg কমান্ড।

তাই আপনি সংশ্লিষ্ট vendor/ripgrep/ প্ল্যাটফর্ম ডিরেক্টরিতে একটি নির্দিষ্ট ripgrep বিল্ড রাখতে পারেন, অথবা হোস্টে ripgrep ইনস্টল করে নিশ্চিত করতে পারেন যে rg PATH-এ আছে।

হোস্টের ripgrep বাইনারি বাধ্যতামূলকভাবে ব্যবহার

vendored ripgrep সম্পদ এড়িয়ে হোস্টের এক্সিকিউটেবল ব্যবহার করতে চাইলে USE_BUILTIN_RIPGREP-এর মান 0 সেট করুন:

USE_BUILTIN_RIPGREP=0 cargo run --release

চালু করার পর নির্বাচিত বাইনারি যাচাই করতে /doctor চালান।

টেস্ট স্যুট সঠিকভাবে চালান

CometixCode-এ পরিবেশ ভেরিয়েবল এবং OnceLock ক্যাশসহ পুরো প্রসেসজুড়ে ব্যবহৃত অবস্থা রয়েছে। একই প্রসেসে থ্রেড হিসেবে সব টেস্ট চালালে টেস্টগুলোর মধ্যে অবস্থা ফাঁস হতে পারে। তাই সাধারণ cargo test-কে এই ক্রেটের বৈধ গুণমান যাচাইয়ের ধাপ হিসেবে বিবেচনা করা হয় না।

এর বদলে প্রকল্পটি just-এর মাধ্যমে চালিত cargo-nextest ব্যবহার করে। এতে প্রতিটি টেস্ট নিজস্ব প্রসেস পায় এবং টেস্ট অন্যথায় যে হোস্ট অবস্থা উত্তরাধিকারসূত্রে পেতে পারে, তা নির্দিষ্ট থাকে।

সম্পূর্ণ স্যুট চালান

just test

এটাই প্রকল্পের প্রয়োজনীয় পূর্ণ টেস্ট গেট।

প্যাটার্ন মেলা টেস্ট চালান

just t <pattern>

আপনি যে টেস্টগুলো চালাতে চান, সেগুলো ফিল্টার করতে ব্যবহৃত সাবস্ট্রিং দিয়ে <pattern> প্রতিস্থাপন করুন।

দ্রুত কোড যাচাই করুন

just check

এটি লিংক না করেই টাইপ ও বোরো চেকিং সম্পন্ন করে, তাই Rust কোড সম্পাদনার সময় দ্রুত প্রতিক্রিয়া পাওয়ার জন্য এটি উপযোগী।

উন্নত ডেভেলপমেন্ট টিপস

  • স্বাভাবিক ব্যবহারে রিলিজ মোড পছন্দ করুন: প্রকল্পের ডকুমেন্টেশনে নির্দিষ্ট অপ্টিমাইজড বিল্ড চালাতে cargo run --release ব্যবহার করুন।
  • প্রথমে ICU শনাক্তকরণ পরীক্ষা করুন: macOS-এ ICU-সংক্রান্ত বিল্ড ব্যর্থতা নির্দেশ করতে পারে যে PKG_CONFIG_PATH-এ Homebrew-এর ICU4C মেটাডেটা ডিরেক্টরি অন্তর্ভুক্ত নেই।
  • /doctor দিয়ে ফাইল অনুসন্ধান নির্ণয় করুন: vendored ফাইল বা সিস্টেম কনফিগারেশন পরিবর্তনের আগে নির্বাচিত সঠিক ripgrep এক্সিকিউটেবলটি নিশ্চিত করুন।
  • পুনরুৎপাদনযোগ্যতা গুরুত্বপূর্ণ হলে ripgrep নির্দিষ্ট করে দিন: বিশ্বব্যাপী ইনস্টল করা যেকোনো সংস্করণের ওপর নির্ভর না করে নির্ধারিত বাইনারিটি প্ল্যাটফর্ম-নির্দিষ্ট vendor/ripgrep/ পাথে রাখুন।
  • প্রকল্পের গেটের বদলে cargo test ব্যবহার করবেন না: কোডবেসে প্রত্যাশিত প্রসেস আইসোলেশনসহ টেস্ট চালাতে just test ব্যবহার করুন।
  • টেস্টের কারণ জানতে justfile দেখুন: এর হেডারে নির্বাচিত টেস্টিং কৌশলের পেছনের পরিমাপগুলো নথিবদ্ধ আছে।

লাইসেন্স-সংক্রান্ত বিবেচনা

CometixCode AGPL-3.0-only লাইসেন্সের অধীনে বিতরণ করা হয়। এই লাইসেন্সে নেটওয়ার্ক-ব্যবহারের একটি ধারা রয়েছে: আপনি যদি কোনো পরিবর্তিত সংস্করণ নেটওয়ার্ক সার্ভিস হিসেবে পরিচালনা করেন, তাহলে এর ব্যবহারকারীরা সংশ্লিষ্ট পরিবর্তিত সোর্স কোড পাওয়ার অধিকারী।

উপসংহার

CometixCode, CometixTUI ব্যবহার করে Claude Code টার্মিনাল আর্কিটেকচারের একটি Rust-ভিত্তিক পুনর্নির্মাণ প্রদান করে। Rust, ICU4C এবং উপযুক্ত একটি ripgrep এক্সিকিউটেবল उपलब्ध থাকলে আপনি Cargo দিয়ে এটি বিল্ড ও চালু করতে পারবেন, /doctor-এর মাধ্যমে অনুসন্ধান কনফিগারেশন পরিদর্শন করতে পারবেন এবং প্রকল্পের প্রসেস-আইসোলেটেড just test ওয়ার্কফ্লো দিয়ে পরিবর্তন যাচাই করতে পারবেন।