টার্মিনাল AI-এর জন্য একটি স্বয়ংক্রিয়ভাবে আপডেট হওয়া নলেজ বেস

আমি আমার দিনের বেশিরভাগ সময় একটি AI কোডিং অ্যাসিস্ট্যান্টের সাথে টার্মিনালে কাটাই।

আমি প্রায়ই একটি সেশনের সময় কঠিন সমস্যার সমাধান করি। আমি কোনো জটিল ফিক্স বা নির্দিষ্ট কনফিগ সেটিং খুঁজে পাই। তারপর আমি ট্যাবটি বন্ধ করে দিই এবং সেই জ্ঞান হারিয়ে যায়। এক মাস পরে, আমি ঠিক একই সমস্যার সমাধান আবার করি।

আমি Claude Code hooks ব্যবহার করে আমার অ্যাসিস্ট্যান্টকে তার নিজস্ব নোট রক্ষণাবেক্ষণ করার জন্য একটি সিস্টেম তৈরি করেছি।

সিস্টেমটি তিনটি অংশ ব্যবহার করে:

  • কনটেক্সট প্রদানের জন্য প্রতিটি প্রম্পটে একটি ছোট Markdown নলেজ বেস সার্চ করা।
  • একটি সেশন শেষ হলে দরকারী নোটগুলো ক্যাপচার করা।
  • একটি সেশন শুরু হলে ইনডেক্স লোড করা।

আপনার কাজের গতি না কমিয়ে এটি কীভাবে তৈরি করবেন তা নিচে দেওয়া হলো।

  1. রিট্রিভালের জন্য UserPromptSubmit ব্যবহার করুন

এই হুকটি প্রতিবার আপনি একটি প্রম্পট পাঠানোর সময় চলে। এটি আপনার টেক্সট গ্রহণ করে এবং মডেল রেসপন্স করার আগে কনটেক্সট ইনজেক্ট করতে পারে।

মডেলকে সিদ্ধান্ত নিতে দেবেন না যে কখন আপনার নোটগুলো দেখতে হবে। প্রাসঙ্গিক ফাইলগুলি খুঁজে পেতে grep-এর মতো একটি দ্রুত সার্চ ব্যবহার করুন। শুধুমাত্র সেরা পাঁচটি ম্যাচ ইনজেক্ট করুন। এটি প্রসেসটিকে ১০০ মিলি-সেকেন্ডের নিচে রাখে।

সার্চ হুকের জন্য দুটি নিয়ম:

  • এটি সাশ্রয়ী রাখুন। প্রাথমিক সার্চের জন্য LLM-এর পরিবর্তে grep ব্যবহার করুন।
  • এটি হালকা রাখুন। শুধুমাত্র শিরোনাম এবং ফাইল পাথ ইনজেক্ট করুন। মডেলের আরও বিস্তারিত প্রয়োজন হলে সে ফাইলটি ওপেন করতে পারবে।
  1. ভারী কাজের জন্য Stop hook এড়িয়ে চলুন

অ্যাসিস্ট্যান্ট প্রতিবার একটি রিপ্লাই শেষ করার সময় Stop hook চলে। আপনি যদি এখানে কোনো দীর্ঘ কাজ চালান, তবে আপনার অ্যাসিস্ট্যান্ট ধীর হয়ে যাবে। একটি ৩০-টার্ন সেশন ৩০টি ভারী কাজ ট্রিগার করবে।

পরিবর্তে, পুরো সেশনটি একবার ক্যাপচার করতে SessionEnd ব্যবহার করুন।

  1. SessionEnd-এর সীমাবদ্ধতা সমাধান করুন

SessionEnd হলো নন-ব্লকিং। আপনি যদি এখানে কোনো দীর্ঘ ব্যাকগ্রাউন্ড টাস্ক শুরু করেন, তবে সেশন বন্ধ হওয়ার সময় সিস্টেমটি সেটি বন্ধ করে দিতে পারে।

এর সমাধান হলো দুটি হুক ব্যবহার করা:

  • SessionEnd: দ্রুত ট্রান্সক্রিপ্ট পাথটি একটি কিউ (queue) ফাইলে যোগ করুন।
  • SessionStart: সেই কিউটি খালি করুন এবং ব্যাকগ্রাউন্ডে ভারী ক্যাপচার টাস্কটি চালান।

যেহেতু পরবর্তী সেশনটি সক্রিয় থাকে, তাই ব্যাকগ্রাউন্ড প্রসেসটি টিকে থাকবে।

  1. ইনফিনিট লুপ প্রতিরোধ করুন

যখন আপনি নোট লেখার জন্য একটি হেডলেস (headless) AI চালু করেন, তখন এটি আপনার এনভায়রনমেন্ট উত্তরাধিকারসূত্রে পায়। এর মানে হলো নতুন AIটি তার নিজস্ব হুকগুলো ট্রিগার করবে। এটি অন্তহীন AI কলের একটি লুপ তৈরি করে।

আপনার স্ক্রিপ্টের শুরুতে সর্বদা একটি রিকার্সন গার্ড (recursion guard) যোগ করুন:

[ -n "$KB_CAPTURE" ] && exit 0

আপনার ব্যাকগ্রাউন্ড ক্যাপচার টাস্ক চালু করার সময় KB_CAPTURE=1 সেট করুন।

সেটআপের সারসংক্ষেপ:

  • তাৎক্ষণিক কনটেক্সট ইনজেকশনের জন্য UserPromptSubmit ব্যবহার করুন।
  • টাস্কগুলো কিউতে রাখার জন্য SessionEnd ব্যবহার করুন।
  • আসল কাজ করার জন্য SessionStart ব্যবহার করুন।
  • টাকা বাঁচাতে নোটগুলো সামারি করার জন্য একটি সাশ্রয়ী মডেল ব্যবহার করুন।

একবার একটি সমস্যা পুনরায় সমাধান করা এড়ানো অনেকগুলো ক্যাপচারের খরচ পুষিয়ে দেয়।

Source: https://dev.to/just_an_electron/a-self-updating-knowledge-base-for-my-terminal-ai-assistant-claude-code-hooks-28jb

Optional learning community: https://t.me/GyaanSetuAi