VPS-এ Claude Code-এর মেমরি যোগ করতে Recall সেটআপ
Recall 0.4.0 একটি fully local plugin, যা প্রতিটি Claude Code session-এর log ও resumable summary রাখে। VPS-এ সেটআপ, Python প্রয়োজনীয়তা এবং token সাশ্রয় মাপুন।
Claude Code মেমরির জন্য Recall যা করে
Recall হলো Claude Code-এর একটি plugin, যা প্রতিটি project-এর জন্য বিভিন্ন session জুড়ে memory সংরক্ষণ করে। এটি আপনার project-এর ভেতরের একটি .recall/ folder-এ দুটি markdown file লেখে: কী ঘটেছে তার একটি append-only log এবং আপনি কোথায় কাজ থামিয়েছেন তার একটি সংক্ষিপ্ত summary। আপনি যে machine-এ কাজ করছেন, সেখানেই একটি local Python summarizer এই দুটি file তৈরি করে। তাই memory সংরক্ষণে কোনো API token খরচ হয় না।
এটি একটি ছোট কিন্তু নিয়মিত সমস্যার সমাধান করে। মঙ্গলবার আপনার VPS-এ একটি session শেষ করেন। বুধবার Claude Code মঙ্গলবারের কোনো তথ্য জানে না। আপনাকে project-টি হাতে আবার ব্যাখ্যা করতে হয়, অথবা কাজটি বোঝার জন্য model-কে repository-এর অর্ধেক আবার পড়তে দিতে হয়। উভয় ক্ষেত্রেই token খরচ হয়। দ্বিতীয় পদ্ধতিতে token খরচ অনেক বেশি হয়।
July 2026 অনুযায়ী Recall version 0.4.0 বর্তমান, এবং project-টি MIT licensed। এটি একটি plugin। এর কোনো অংশ network call করে না।
VPS-এ যা প্রয়োজন
Recall-এর capture hook হলো plugin-এর সঙ্গে প্রকাশিত Python script। কোনো third-party dependency নেই, তাই প্রকৃত প্রয়োজন শুধু একটি interpreter।
python3 -VUbuntu 24.04-এর ক্ষেত্রে উত্তর হলো Python 3.12.3। Recall Python 3.9 এবং পরবর্তী version সমর্থন করে। Minimal container image-এ কখনও কোনো interpreter থাকে না। তখন shell python3: command not found উত্তর দেয়। পরবর্তী ধাপে যাওয়ার আগে একটি interpreter install করুন।
sudo apt update && sudo apt install -y python3Summarizer-এর একটি ধাপ দ্রুত করার জন্য NumPy ঐচ্ছিকভাবে ব্যবহার করা যায়। এটি আপনার প্রয়োজন নেই।
python3 -c "import numpy"এখানে ModuleNotFoundError: No module named 'numpy' গ্রহণযোগ্য উত্তর। Summarizer-এর pure-Python path আছে। Project-এর test suite যাচাই করে যে উভয় path একই sentence নির্বাচন করে।
Laptop-এর তুলনায় server-এ session memory বেশি গুরুত্বপূর্ণ। কারণ server-সংক্রান্ত কাজ কয়েক দিন ধরে স্বল্প সময়ের visit-এ সম্পন্ন হয়। আপনার VPS-এ tmux-এর মধ্যে Claude Code চালু থাকলে, Recall গতকালের session আজকের session-এ নিয়ে আসে।
plugin marketplace থেকে Recall ইনস্টল করুন
Claude Code session-এর ভিতরে 2টি command টাইপ করুন:
/plugin marketplace add raiyanyahya/recall
/plugin install recall@recallদ্বিতীয় command-টি plugin@marketplace পড়ে। এখানে উভয় নামই recall, যা copy-paste-এর ভুল বলে মনে হতে পারে, কিন্তু তা নয়।
Plugin-এর নিজস্ব একটি command চালিয়ে ইনস্টলেশন পরীক্ষা করুন:
/recall:show/recall:show বর্তমান summary দেখায়। একেবারে নতুন project-এ দেখানোর মতো কিছু থাকে না। তাই এখানে আসল পরীক্ষা হলো command-টি আদৌ আছে কি না। Claude Code যদি /recall:show চিনতে না পারে, তাহলে plugin load হয়নি এবং কোনো hook চলবে না।
Checkout থেকে চালাতে চাইলে repository clone করে প্রথমে সেটি validate করুন:
git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .claude plugin validate ., .claude-plugin/-এ থাকা manifest পড়ে plugin-এর গঠন সঠিক কি না জানায়। এরপর claude --plugin-dir ~/recall দিয়ে আপনার project directory থেকে Claude Code চালু করুন।
হুকগুলো কী লিখে, এবং কখন
Recall তিনটি Claude Code hook নিবন্ধন করে। প্রতিটি hook plugin directory থেকে একটি Python script চালায়।
SessionStartstartup, resume এবং clear-এর সময় চালু হয়। এটিcontext.mdদেখায়, যাতে session শুরু হলে আপনার summary সামনে থাকে।StopClaude প্রতিবার response শেষ করলে চালু হয়। এটি সেই turn log-এ যোগ করে।SessionEndsession বন্ধ হলে চালু হয় এবং summary পুনরায় তৈরি করতে পারে।
এতে দুটি file তৈরি হয়, দুটিই .recall/-এর ভিতরে।
history.mdহলো শুধু-সংযোজনযোগ্য record: prompt, response, ব্যবহৃত file এবং চালানো command।context.mdহলো তৈরি করা digest: লক্ষ্য, summary, পরবর্তী ধাপ, ব্যবহৃত file, চালানো command এবং git context।
একটি বাস্তব session শেষ হওয়ার পরে directory দেখুন।
ls -la .recall/history.md-এ content থাকা উচিত। context.md একেবারেই নাও থাকতে পারে। এটিই default behaviour, কোনো fault নয়। auto_save_context হলো off, যদি আপনি এটি set না করেন। তাই summary কেবল আপনি চাইলে লেখা হয়:
/recall:saveএই command history.md-এর ওপর local summarizer চালিয়ে context.md পুনরায় লেখে। Algorithm-টি হলো term frequency, inverse document frequency (TF-IDF) scoring-এর মাধ্যমে TextRank sentence ranking। এটি deterministic এবং extractive। অর্থাৎ এটি আপনার log-এ আগে থেকেই থাকা sentence নির্বাচন করে। কোনো model call করা হয় না। তাই এই ধাপের জন্য খরচ নেই এবং machine offline থাকলেও এটি কাজ করে।
একটি প্রকল্পের জন্য Recall কনফিগার করুন
কনফিগারেশন প্রকল্পের root-এ থাকা একটি recall.config.json ফাইলে সংরক্ষিত থাকে। এটি ডিফল্ট কনফিগারেশন:
{
"output_dir": ".recall",
"capture_history": true,
"summary_sentences": 8,
"redact": true,
"include_git": true,
"max_input_chars": 200000
}output_dirদুটি ফাইল কোথায় থাকবে তা নির্ধারণ করে। এটি প্রকল্পের ভেতরেই রাখুন।capture_historyhistory.mdlog চালু বা বন্ধ করে।auto_save_context-তেoffঅথবাon_endগ্রহণ করা হয়। ডিফল্ট মান হলোoff।summary_sentencesনির্ধারণ করে কতটি sentencecontext.md-এ রাখা হবে। এই মান বাড়ালে summary দীর্ঘ হয় এবং session শুরু হওয়ার সময় load সামান্য বাড়ে।redactকোনো কিছু disk-এ লেখার আগে সাধারণ secret pattern সরিয়ে দেয়।include_gitবর্তমান diff এবং সাম্প্রতিক commit summary-তে যোগ করে।max_input_charsএকবারে summarizer কতটাhistory.mdপড়বে, তার সর্বোচ্চ সীমা নির্ধারণ করে।
VPS-এ চলা প্রকল্পের জন্য automatic saving চালু করাই সাধারণত কার্যকর পরিবর্তন। কারণ server-এ terminal বন্ধ হয়ে গেলে session প্রায়ই আপনার ইচ্ছায় নয়, বরং terminal বিচ্ছিন্ন হওয়ার কারণে শেষ হয়।
{
"auto_save_context": "on_end",
"summary_sentences": 12
}কনফিগারেশন পরিবর্তন না করে কিছু সময়ের জন্য capture বন্ধ রাখতে pause marker তৈরি করুন। আবার capture শুরু করতে এটি মুছে দিন।
touch .recall/.capture-pausedProduction credential নিয়ে কাজ করার session-এর আগে এটি করুন। কারণ redaction একটি filter, নিশ্চয়তা নয়। একই কারণে সাধারণভাবে AI agent-এর কাছ থেকে secret দূরে রাখুন: নিরাপদ secret হলো সেটিই, যা agent কখনো দেখতে পায় না।
Recall টোকেনে কতটা সাশ্রয় করে?
এটি নির্ভর করে বিকল্পটি কী ছিল তার ওপর। সেশন শুরুতে একটি summary load করা সাশ্রয়ী। কিন্তু এটি যে কাজটি প্রতিস্থাপন করে, সেটি ব্যয়বহুল হতে পারে। আপনার project সম্পর্কে কোনো memory না থাকা model file পড়ে সেটি আবার বুঝে নিতে সময় ও token ব্যবহার করে।
The data behind this chart
[
{
"label": "Recall context.md",
"char_count": "4,800",
"est_tokens": "1,200"
},
{
"label": "Hand-written CLAUDE.md",
"char_count": "3,200",
"est_tokens": "800"
},
{
"label": "Re-reading the repo",
"char_count": "120,000",
"est_tokens": "30,000"
},
{
"label": "Full transcript replay",
"char_count": "340,000",
"est_tokens": "85,000"
}
]এগুলো মাঝারি আকারের একটি project-এর সাধারণ হিসাব; আপনার project-এর সরাসরি পরিমাপ নয়। একটি Recall summary প্রায় 1,200 token-এ load হয়। এটি resume-এর জন্য project-এর প্রকাশিত এক থেকে দুই হাজার token-এর দাবির সঙ্গে সামঞ্জস্যপূর্ণ। আগের সম্পূর্ণ transcript আবার চালালে পুরো conversation load হয়, যা প্রায় 85,000 token হতে পারে। File পড়ে model-কে project আবার বুঝে নিতে দিলে খরচটি এই দুইটির মাঝামাঝি থাকে, প্রায় 30,000 token। Repository বড় হলে এই সংখ্যা বাড়ে। CLAUDE.md row-টি তুলনার জন্য রাখা হয়েছে। এটি ছোট ও স্থির হওয়ায় সাশ্রয়ী, এবং আগের রাতের ঘটনাগুলোর বদলে model-কে আপনার স্থায়ী নিয়ম জানায়।
আপনার নিজের সংখ্যা মাপুন। English prose-এ একটি token প্রায় চারটি character-এর সমান, আর code-এর ক্ষেত্রে সাধারণত এর চেয়ে কিছু কম। একই VPS-এ local model-কে summary পাঠালে resume ব্যবহার করার আগে দেখুন এটি কোন context window-এ load হচ্ছে। কারণ Ollama ছোট default context length-এ দীর্ঘ prompt truncate করে, prompt-এর শেষ অংশ বাদ পড়েছে—এ কথা আলাদা করে জানায় না।
wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))একটি session-এর মধ্যে /context বর্তমানে context window-এ load থাকা বিষয়গুলো দেখায়, আর /cost session-এর মোট হিসাব জানায়। প্রথমে একটি session summary ছাড়া শুরু করুন। পরেরটি summary সহ শুরু করুন। তারপর তুলনা করুন। একটি session-এর token আসলে কোথায় খরচ হচ্ছে তার সম্পূর্ণ চিত্রের জন্য Claude Code কীভাবে token ব্যবহার করে অংশে breakdown দেওয়া আছে।
একটি বিষয় মনে রাখলে এই দাবিটি বাস্তবসম্মত থাকে। প্রতিটি session শুরুর সময় summary load হয়। তাই যে summary-এর ওপর আপনি কখনো কাজ করেন না, সেটি সাশ্রয়ের বদলে সামান্য অতিরিক্ত খরচ তৈরি করে। আপনার session দীর্ঘ না হলে summary_sentences-কে default-এর কাছাকাছি রাখুন। অন্য দিক থেকেও শান্ত ও সংক্ষিপ্ত session উপকারী, কারণ যে agent-কে কার্যকর সবচেয়ে ছোট পরিবর্তনের দিকে পরিচালিত করা হয় সে summarizer-এর জন্য ছোট log রেখে যায়।
সেশন ছাড়া সারসংক্ষেপ পুনর্নির্মাণ করুন
আপনি repository clone করে থাকলে summarizer-এর নিজস্ব command line entry point আছে। VPS-এ terminal-সহ কোনো session বন্ধ হয়ে গেলে এবং তবু digest প্রয়োজন হলে এটি কাজে লাগে।
python3 ~/recall/scripts/make_context.py --helpসহায়তা আউটপুটে গ্রহণযোগ্য flag-গুলো তালিকাভুক্ত থাকে: project root-এর জন্য --cwd, নির্দিষ্ট transcript file-এর জন্য --transcript, output দমন করতে --quiet এবং claude ও opencode-এর মধ্যে বেছে নিতে --harness। এটিকে একটি project-এ নির্দেশ করুন:
python3 ~/recall/scripts/make_context.py --cwd /srv/projects/apiএটি session transcript পড়ে history.md, তারপর আপনার দেওয়া directory-এর অধীনে context.md লেখে। marketplace-এর মাধ্যমে install করলে plugin-টি Claude Code পরিচালিত একটি directory-তে থাকে, এবং একই কাজ করার জন্য /recall:save হলো সমর্থিত পদ্ধতি।
কিছুই লেখা হচ্ছে না কেন
সম্পূর্ণ session-এর পর কোনো .recall/ directory নেই। Hook কখনো চলেনি। Plugin loaded কি না নিশ্চিত করতে /recall:show লিখুন, তারপর python3 -V চালান। Hook command প্রথমে python3 এবং পরে python ব্যবহার করার চেষ্টা করে। তাই কোনো সিস্টেমে দুটির একটিও না থাকলে কিছু লেখা হয় না এবং এ বিষয়ে কোনো বার্তাও দেখানো হয় না।
history.md বাড়ছে, কিন্তু context.md কখনো পরিবর্তিত হচ্ছে না। ডিফল্টভাবে auto_save_context হলো off। /recall:save চালান, অথবা key-এর মান on_end সেট করুন এবং SessionEnd hook-এর মাধ্যমে কাজটি করতে দিন।
ফাইলগুলো ভুল project-এর অধীনে তৈরি হচ্ছে। Claude Code যে directory থেকে শুরু করা হয়, তার relative path অনুযায়ী Capture লিখে। তাই home directory থেকে session শুরু করলে memory সেখানেই লেখা হয়। Project root থেকে শুরু করুন এবং ফাইলগুলো আসলে কোথায় তৈরি হয়েছে তা দেখতে ls -la .recall/ ব্যবহার করুন।
Capture বন্ধ হয়ে গেছে, কিন্তু কোনো সতর্কবার্তা দেখানো হয়নি। ls -a .recall/ দিয়ে pause marker আছে কি না পরীক্ষা করুন। গত সপ্তাহে তৈরি করা .capture-paused file এখনও কাজ করছে।
দীর্ঘ session-এর পর summary খুব সংক্ষিপ্ত। max_input_chars summarizer input সর্বোচ্চ 200000 characters-এ সীমাবদ্ধ রাখে। তাই খুব দীর্ঘ log কেটে যায়। Log rotate করুন।
mv .recall/history.md .recall/history-2026-07-30.mdএরপর একটি সংক্ষিপ্ত session চালান এবং নতুন history.md তৈরি হয়েছে কি না নিশ্চিত করতে আবার ls -la .recall/ পরীক্ষা করুন।
Recall যেখানে থামে
Recall একটি log এবং summarizer। এটি কী কী করতে পারে না, তা স্পষ্টভাবে জানা গুরুত্বপূর্ণ।
summarizer extractive পদ্ধতি ব্যবহার করে। TextRank history.md-এ আগে থেকেই থাকা sentence বেছে নেয়। তাই কোনো সিদ্ধান্ত সঠিক ছিল কি না, এটি তা নির্ধারণ করে না। মঙ্গলবার record করা একটি ভুল সিদ্ধান্ত বুধবারের একটি ভালো সিদ্ধান্তের মতোই দেখায়। ঝুঁকি বাস্তব হলে context.md পড়ুন এবং হাতে সংশোধন করুন। এটি একটি markdown file, তাই এটি সম্পাদনা করতে কোনো বাধা নেই।
এতে search নেই। প্রতিটি project-এর জন্য আপনি একটি বর্তমান summary এবং ক্রমবর্ধমান একটি log পান। project-গুলোর মধ্যে query করা যায় এমন memory পান না। তিন সপ্তাহ আগে database সম্পর্কে কী সিদ্ধান্ত নিয়েছিলেন, তা জানতে হলে history.md-এ grep করতে হবে। এটি session-গুলোর মধ্যে তথ্যও পাঠায় না। একই VPS-এ একসঙ্গে দুটি session খোলা থাকলেও তারা একে অপরের log দেখতে পারে না। তাই একটি session-এর কাজ সম্পর্কে অন্যটির জানা প্রয়োজন হলে, চলমান অবস্থায় session-গুলো সরাসরি নিজেদের মধ্যে text পাঠাতে পারে।
একটি session-এর ভেতরে এটি সাহায্য করে না। session চলার মাঝখানে context window পূর্ণ হয়ে যাওয়া ভিন্ন সমস্যা, যার সমাধানও ভিন্ন। একটি session-এর ভেতরে context window পরিচালনা করা এই guide-এর সহায়ক বিষয়।
নকশা অনুযায়ী summary-কে untrusted input হিসেবে বিবেচনা করা হয়। context.md fenced এবং label-সহ inject করা হয়, আর Claude এটি ব্যবহার করার আগে জিজ্ঞাসা করে। এই নকশার কারণ হলো, commit access থাকা যেকোনো ব্যক্তি একটি committed .recall/ directory-তে এমন text লিখতে পারে যা আপনার agent পড়বে। agent তার পড়া বিষয় নিয়ে কতবার থেমে প্রশ্ন করবে, তা session শুরু হওয়ার সময় নির্ধারিত permission mode-এর ওপর নির্ভর করে। 14 August 2026-এ auto mode Claude Code-এর default হয়ে যায়। .recall/ personal নাকি shared, তা একবার ঠিক করুন। personal memory-এর জন্য এটি .gitignore-এ যোগ করুন, অথবা commit করে অন্য যেকোনো contribution-এর মতো review করুন। agent unattended অবস্থায় চললে, VPS-এ Claude Code নিরাপদে চালানো বৃহত্তর security boundary ব্যাখ্যা করে।
Redaction best effort ভিত্তিতে কাজ করে। এটি API key, token, PEM block এবং .env assignment-এর মতো সাধারণ pattern শনাক্ত করার চেষ্টা করে। এটি commit করার আগে .recall/ পড়ুন।
Version number-টি software-এর maturity সম্পর্কে সঠিক ধারণা দেয়। July 2026-এ 0.4.0 version-এ config key এবং file layout release-গুলোর মধ্যে এখনও পরিবর্তিত হতে পারে। তাই যে setup-এর ওপর আপনি নির্ভর করেন, সেটি upgrade করার আগে changelog পড়ুন।
FAQ
Recall কি আমার code বা transcript কোথাও পাঠায়?
না। Capture hook এবং summarizer হলো Python script, যা আপনার নিজের machine-এ চলে। Plugin-এ কোনো API key নেই এবং এটি কোনো network call করে না। Summarising-এর জন্য model-এর পরিবর্তে TF-IDF এবং TextRank ব্যবহার করা হয়। তাই এই ধাপের কোনো খরচ নেই এবং machine offline থাকলেও এটি কাজ করে। এর সীমাবদ্ধতা হলো summary extractive: এটি আপনার log থেকে sentence বেছে নেয়, নতুন sentence লেখে না।
আমার .recall/context.md কেন অনুপস্থিত বা পুরোনো?
auto_save_context-এর default মান off। তাই আপনি /recall:save চালালেই শুধু summary নতুন করে তৈরি হয়। প্রতিটি session শেষ হলে এটি পুনরায় লেখার জন্য recall.config.json-এ "auto_save_context": "on_end" সেট করুন। history.md-ও অনুপস্থিত হলে hook একেবারেই চলছে না। /recall:show দিয়ে plugin loaded আছে কি না নিশ্চিত করুন। এরপর ওই machine-এ python3 -V সাড়া দিচ্ছে কি না পরীক্ষা করুন, কারণ hook-গুলো Python script।
প্রতি session-এ Recall কতটা সাশ্রয় করে?
একটি summary load করতে প্রায় 1,200 token লাগে। তুলনায়, কোনো model-কে repository আবার পড়ে বর্তমান অবস্থান বুঝতে হলে সাধারণত 30,000 token লাগে। এগুলো সাধারণ হিসাব। আপনার নিজের session-এ wc -c .recall/context.md এবং /context command ব্যবহার করে মাপুন। একটি cold start-এর সঙ্গে summary থেকে resume করা session-এর তুলনা করুন।
আমার কি এখনও একটি CLAUDE.md file দরকার?
হ্যাঁ, এবং দুটির কাজ আলাদা। CLAUDE.md হলো আপনি ইচ্ছাকৃতভাবে যা লেখেন: স্থায়ী নিয়ম এবং build command। context.md গত session-এ বাস্তবে যা ঘটেছে তা থেকে তৈরি হয়। তাই এতে সেই অসম্পূর্ণ migration-ও থাকে, যা আপনি নিজে লিখে রাখার কথা ভাবতেন না। দুটিই রাখুন।
একটি VPS কি একাধিক project-এর memory রাখতে পারে?
হ্যাঁ। Recall প্রতিটি project directory-র ভিতরে .recall/-এ memory রাখে। তাই একই server-এ থাকা দুটি project-এর log এবং summary আলাদা থাকে। প্রতিবার project root থেকে Claude Code চালু করুন। কারণ file-গুলো user account নয়, working directory অনুসরণ করে।