VPS پر Claude Code کو مستقل memory کیسے دیں؟
Recall 0.4.0 Claude Code sessions کا مقامی log اور resumable summary بناتا ہے۔ VPS پر setup کریں، `.recall/` files دیکھیں اور tokens کی بچت ناپیں۔
Claude Code memory کے لیے Recall کیا کرتا ہے
Recall ایک Claude Code plugin ہے جو ہر project کے لیے sessions کے درمیان memory فراہم کرتا ہے۔ یہ آپ کے project کے اندر موجود .recall/ folder میں دو markdown files لکھتا ہے: ایک append-only log جس میں پیش آنے والے واقعات درج ہوتے ہیں، اور ایک مختصر summary جس میں آخری کام کی حالت بیان ہوتی ہے۔ دونوں files آپ کی machine پر local Python summarizer تیار کرتا ہے، اس لیے memory کے لیے API tokens کی کوئی لاگت نہیں آتی۔
یہ ایک محدود مگر مستقل مسئلہ حل کرتا ہے۔ آپ منگل کو اپنے VPS پر ایک session بند کرتے ہیں۔ بدھ کو نیا session منگل کی conversation خودکار طور پر load نہیں کرتا، اگرچہ Claude Code کی built-in auto memory sessions کے درمیان notes محفوظ کر سکتی ہے۔ اگر ان notes میں یہ نہ بتایا گیا ہو کہ آپ کہاں رکے تھے، تو آپ کو project دوبارہ manually سمجھانا پڑتا ہے، یا model کو repository کا نصف حصہ دوبارہ پڑھنے دینا پڑتا ہے تاکہ وہ صورتِ حال سمجھ سکے۔ دونوں طریقوں میں tokens خرچ ہوتے ہیں، اور دوسرے طریقے میں ان کی مقدار بہت زیادہ ہوتی ہے۔
Recall version 0.4.0، جو 18 July 2026 کو released ہوا، October 2026 تک اب بھی latest release ہے، اور project MIT licensed ہے۔ یہ ایک plugin ہے۔ اس میں کوئی چیز network call نہیں کرتی۔
VPS پر آپ کو کیا درکار ہے
Recall کے capture hooks وہ Python scripts ہیں جو plugin کے ساتھ شامل آتے ہیں۔ ان کے لیے third-party dependencies درکار نہیں ہوتیں، اس لیے واحد حقیقی ضرورت ایک interpreter ہے۔
python3 -VUbuntu 24.04 اس ضرورت کو پورا کرتا ہے Python 3.12.3۔ Recall، Python 3.9 اور اس کے بعد کے ورژنز کو support کرتا ہے۔ Minimal container images میں کبھی کبھی 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 تصدیق کرتی ہے کہ دونوں paths ایک ہی sentences منتخب کرتے ہیں۔
Server پر session memory کی اہمیت laptop کے مقابلے میں زیادہ ہوتی ہے، کیونکہ server کا کام کئی دنوں میں مختصر visits کی صورت میں آتا ہے۔ اگر آپ کے پاس پہلے ہی VPS پر tmux میں Claude Code چل رہا ہے، تو Recall وہ حصہ ہے جو گزشتہ روز کا session آج کے session تک منتقل کرتا ہے۔
plugin marketplace سے Recall انسٹال کریں
Claude Code session کے اندر درج ذیل 2 کمانڈز درج کریں:
/plugin marketplace add raiyanyahya/recall
/plugin install recall@recallدوسری کمانڈ plugin@marketplace کو پڑھتی ہے۔ یہاں دونوں نام recall ہیں۔ یہ copy-paste کی غلطی دکھائی دیتی ہے، لیکن ایسا نہیں ہے۔
plugin کی اپنی کسی ایک کمانڈ کو چلا کر انسٹالیشن کی جانچ کریں:
/recall:show/recall:show موجودہ summary دکھاتا ہے۔ بالکل نئے project میں ابھی دکھانے کے لیے کچھ نہیں ہوتا، اس لیے اصل جانچ یہ ہے کہ کمانڈ موجود ہے یا نہیں۔ اگر Claude Code /recall:show کو نہیں پہچانتا تو plugin load نہیں ہوا، اور کوئی hook بھی run نہیں ہوگا۔
checkout سے چلانے کے لیے پہلے repository clone کریں اور پھر اس کی توثیق کریں:
git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .claude plugin validate .، .claude-plugin/ میں موجود manifest پڑھتا ہے اور بتاتا ہے کہ plugin درست ساخت رکھتا ہے یا نہیں۔ اس کے بعد اپنے project directory سے claude --plugin-dir ~/recall کے ساتھ Claude Code شروع کریں۔
hooks کیا لکھتے ہیں، اور کب
Recall تین Claude Code hooks رجسٹر کرتا ہے۔ ہر hook plugin directory سے ایک Python script چلاتا ہے۔
SessionStartstartup، resume اور clear پر چلتا ہے۔ یہcontext.mdدکھاتا ہے تاکہ session کھلتے ہی آپ کا summary سامنے ہو۔Stopہر بار Claude کے response مکمل کرنے پر چلتا ہے۔ یہ اس turn کو log میں شامل کرتا ہے۔SessionEndsession بند ہونے پر چلتا ہے اور summary دوبارہ generate کر سکتا ہے۔
اس عمل سے دو files بنتی ہیں، اور دونوں .recall/ کے اندر ہوتی ہیں۔
history.mdappend-only record ہے: prompts، responses، استعمال ہونے والی files، اور چلائے گئے commands۔context.mdgenerated digest ہے: goal، summary، next steps، استعمال ہونے والی files، چلائے گئے commands، اور git context۔
ایک حقیقی session کے بعد directory دیکھیں۔
ls -la .recall/Capture enabled ہو، pause marker موجود نہ ہو، اور transcript دستیاب ہو، تو history.md میں content موجود ہونا چاہیے۔ ممکن ہے آپ کو کوئی context.md نظر نہ آئے۔ یہ default behaviour ہے، fault نہیں۔ auto_save_context، off ہوتا ہے جب تک آپ اسے set نہ کریں۔ اس لیے summary صرف اس وقت لکھی جاتی ہے جب آپ اس کی درخواست کریں:
/recall:saveیہ command history.md پر local summarizer چلاتی ہے اور context.md کو دوبارہ لکھتی ہے۔ Algorithm TF-IDF (term frequency, inverse document frequency) scoring استعمال کرتا ہے، جو TextRank sentence ranking کو input فراہم کرتی ہے۔ یہ deterministic اور extractive ہے، یعنی یہ وہی sentences منتخب کرتا ہے جو پہلے سے آپ کے log میں موجود ہوں۔ کوئی model call نہیں کیا جاتا، اس لیے یہ step مفت ہے اور machine offline ہونے کی صورت میں بھی کام کرتا ہے۔
ایک پروجیکٹ کے لیے Recall کو configure کریں
Configuration پروجیکٹ کے root میں موجود recall.config.json فائل میں رہتی ہے۔ یہ فراہم کردہ default settings ہیں:
{
"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_contextoffیاon_endقبول کرتا ہے، اور default طور پرoffاستعمال کرتا ہے۔summary_sentencesیہ متعین کرتا ہے کہ کتنے جملےcontext.mdمیں محفوظ رہیں گے۔ اسے بڑھانے سے summary طویل ہو جاتی ہے اور session شروع ہوتے وقت load قدرے بڑھ جاتا ہے۔redactکسی بھی چیز کو disk پر لکھنے سے پہلے عام secret patterns حذف کرتا ہے۔include_gitموجودہ diff statistics اور حالیہ commits کو summary میں شامل کرتا ہے۔max_input_charsیہ حد مقرر کرتا ہے کہ summarizer ایک بار میںhistory.mdکا کتنا حصہ پڑھے گا۔
VPS پر موجود پروجیکٹ کے لیے مفید تبدیلی automatic saving فعال کرنا ہے، کیونکہ server پر session اکثر آپ کے رکنے کا فیصلہ کرنے کے بجائے terminal بند ہونے پر ختم ہو جاتا ہے۔
{
"auto_save_context": "on_end",
"summary_sentences": 12
}Configuration تبدیل کیے بغیر کچھ دیر کے لیے capture روکنے کے لیے pause marker بنائیں۔ دوبارہ capture شروع کرنے کے لیے اسے delete کر دیں۔
touch .recall/.capture-pausedیہ کام اس session سے پہلے کریں جس میں آپ production credentials استعمال کریں گے، کیونکہ redaction ایک filter ہے، ضمانت نہیں۔ یہی وجہ عمومی طور پر AI agents سے secrets دور رکھنے کی بھی ہے: محفوظ secret وہ ہے جسے agent کبھی دیکھ ہی نہ سکے۔
Recall کتنے tokens بچاتا ہے؟
یہ اس بات پر منحصر ہے کہ متبادل کیا تھا۔ session شروع ہوتے وقت summary لوڈ کرنا کم خرچ ہے۔ یہ جس چیز کی جگہ لیتی ہے، وہ مہنگی ہو سکتی ہے، کیونکہ جس model کو آپ کے project کی کوئی یادداشت نہ ہو وہ files پڑھ کر اسے دوبارہ سمجھتا ہے۔
اس چارٹ کے پیچھے کا ڈیٹا
[
{
"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"
}
]یہ mid-size project کے لیے عام اعداد ہیں، آپ کے project کی پیمائش نہیں۔ Recall summary تقریباً 1,200 tokens میں لوڈ ہوتی ہے، جو project کے شائع کردہ ایک سے دو ہزار tokens کے resume تخمینے سے مطابقت رکھتا ہے۔ سابقہ مکمل transcript دوبارہ لوڈ کرنے سے پوری گفتگو واپس آتی ہے، جو تقریباً 85,000 tokens کے قریب ہوتی ہے۔ Files پڑھ کر model کو project دوبارہ سمجھنے دینا ان دونوں کے درمیان آتا ہے، تقریباً 30,000 tokens کے قریب، اور repository کے بڑھنے کے ساتھ یہ تعداد بھی بڑھتی ہے۔ CLAUDE.md row پیمانے کے لیے شامل ہے: یہ مختصر اور static ہونے کی وجہ سے کم خرچ ہے، اور model کو گزشتہ رات کیا ہوا تھا بتانے کے بجائے آپ کے مستقل rules بتاتی ہے۔
اپنے اعداد خود ناپیں۔ English نثر میں ایک token تقریباً چار characters کے برابر ہوتا ہے، جبکہ code میں یہ مقدار کچھ کم ہوتی ہے۔ اگر آپ summary کو اسی VPS پر local model کو بھی دیتے ہیں تو resume پر اعتماد کرنے سے پہلے دیکھیں کہ وہ کس window میں جا رہی ہے، کیونکہ Ollama کی default context length دستیاب VRAM پر منحصر ہوتی ہے۔
wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))session کے اندر /context اس وقت context window میں لوڈ شدہ مواد دکھاتا ہے، جبکہ /cost session کے مجموعی اعداد بتاتا ہے۔ ایک session کو شروع میں خالی context کے ساتھ چلائیں، پھر اگلا session summary کے ساتھ شروع کریں، اور دونوں کا موازنہ کریں۔ session کے tokens حقیقت میں کہاں خرچ ہوتے ہیں، اس کی مکمل تصویر کے لیے Claude Code tokens کیسے خرچ کرتا ہے میں تفصیل موجود ہے۔
ایک احتیاط اس دعوے کو درست رکھتی ہے۔ summary ہر session کے آغاز پر لوڈ ہوتی ہے، اس لیے جس summary پر آپ کبھی عمل نہ کریں وہ بچت کے بجائے ایک معمولی اضافی خرچ ہے۔ summary_sentences کو default کے قریب رکھیں، الا یہ کہ آپ کے sessions طویل چلتے ہوں۔ پرسکون session دوسری طرف بھی فائدہ دیتا ہے، کیونکہ ایسا agent جو کام کرنے والی کم سے کم تبدیلی کی طرف رہنمائی پائے summarizer کے لیے مختصر log چھوڑتا ہے جسے وہ درجہ بند کر سکے۔
سیشن کے بغیر خلاصہ دوبارہ بنائیں
اگر آپ نے repository clone کی ہے تو summarizer کا اپنا command line entry point موجود ہے۔ یہ VPS پر اس وقت مفید ہے جب terminal کے ساتھ session بھی ختم ہو جائے اور آپ کو digest پھر بھی درکار ہو۔
python3 ~/recall/scripts/make_context.py --helphelp output اس کے منظور کردہ flags دکھاتا ہے: --cwd project root کے لیے، --transcript واضح transcript file کے لیے، --quiet output روکنے کے لیے، اور --harness کے ذریعے claude اور opencode میں سے انتخاب کرنے کے لیے۔ اسے کسی project کی طرف point کریں:
python3 ~/recall/scripts/make_context.py --cwd /srv/projects/apiیہ session transcript پڑھتا ہے اور history.md، پھر آپ کی دی ہوئی directory کے تحت context.md لکھتا ہے۔ اگر آپ نے marketplace کے ذریعے install کیا ہے تو plugin ایسی directory میں موجود ہوتا ہے جسے Claude Code manage کرتا ہے، اور یہی کام کرنے کا supported طریقہ /recall:save ہے۔
کچھ بھی کیوں نہیں لکھا جا رہا
مکمل session کے بعد .recall/ directory موجود نہیں۔ یہ نتیجہ نکالنے سے پہلے کہ hooks کبھی چلے ہی نہیں، دیکھیں کہ capture disabled تو نہیں، output directory کہیں اور configure تو نہیں کی گئی، یا کوئی transcript ملا ہی نہیں۔ Plugin load ہونے کی تصدیق کے لیے /recall:show لکھیں، پھر python3 -V چلائیں۔ Hook command پہلے python3 اور پھر python آزماتی ہے، اس لیے جس box میں دونوں موجود نہ ہوں وہاں stderr اور exit status 127 کے ساتھ failure ہوتا ہے۔ Claude Code پہلے stderr کی ایک سطر کے ساتھ non-blocking hook error notice دکھاتا ہے۔
history.md بڑھ رہی ہے لیکن context.md میں کبھی تبدیلی نہیں آتی۔ auto_save_context بطور default off ہے۔ /recall:save چلائیں، یا key کو on_end پر set کریں اور SessionEnd hook کو یہ کام کرنے دیں۔
Files غلط project کے تحت ظاہر ہوتی ہیں۔ Recall، Claude Code کے شروع کیے جانے والے directory کے لحاظ سے relative paths پر لکھتا ہے، اس لیے home directory سے session شروع کرنے پر memory وہیں محفوظ ہوتی ہے۔ Project root سے session شروع کریں، اور files کے اصل مقام کا پتا لگانے کے لیے ls -la .recall/ استعمال کریں۔
Capture رک گئی اور کسی نے خبردار نہیں کیا۔ ls -a .recall/ کے ذریعے pause marker تلاش کریں۔ گزشتہ ہفتے بنائی گئی .capture-paused file اب بھی اپنا کام کر رہی ہے۔
طویل session کے بعد summary بہت مختصر ہے۔ max_input_chars summarizer input کو 200000 characters تک محدود کرتا ہے، اس لیے بہت طویل log کا کچھ حصہ کاٹ دیا جاتا ہے۔ اسے rotate کریں۔
mv .recall/history.md .recall/history-2026-07-30.mdاس کے بعد ایک مختصر session چلائیں اور ls -la .recall/ دوبارہ check کریں تاکہ تصدیق ہو جائے کہ نیا history.md بن گیا ہے۔
Recall کہاں رک جاتا ہے
Recall ایک log اور summarizer ہے، اور یہ واضح رہنا چاہیے کہ اس میں کیا شامل نہیں ہے۔
summarizer extractive ہے۔ TextRank ایسے جملے منتخب کرتا ہے جو پہلے ہی history.md میں موجود ہوتے ہیں، اس لیے یہ کبھی فیصلہ نہیں کرتا کہ کوئی فیصلہ درست تھا یا نہیں۔ منگل کو درج کیا گیا غلط رخ بدھ کو کیے گئے اچھے فیصلے کی طرح ہی دکھائی دیتا ہے۔ جب معاملہ اہم ہو تو context.md پڑھیں اور اسے دستی طور پر درست کریں۔ یہ markdown فائل ہے، اور آپ کو اس میں ترمیم کرنے سے کوئی چیز نہیں روکتی۔
اس میں search نہیں ہے۔ ہر project کے لیے آپ کو ایک موجودہ summary اور ایک بڑھتا ہوا log ملتا ہے، تمام projects میں query کے قابل memory نہیں ملتی۔ اگر سوال یہ ہو کہ آپ نے database کے بارے میں تین ہفتے پہلے کیا فیصلہ کیا تھا، تو آپ history.md میں grep کر رہے ہوں گے۔ یہ live coordination بھی فراہم نہیں کرتا: ایک ہی project میں دو sessions ایک ہی log file استعمال کرتے ہیں، لیکن Recall نئے log entries دوسرے session کے context میں نہیں بھیجتا۔ اس لیے جب ایک session کو معلوم کرنا ہو کہ دوسرا کیا کر رہا ہے، تو sessions چلتے ہوئے براہ راست ایک دوسرے کو متن بھیج سکتے ہیں۔
یہ session کے اندر مدد نہیں کرتا۔ session کے دوران context window کا بھر جانا ایک مختلف مسئلہ ہے، جس کے حل بھی مختلف ہیں، اور ایک session کے اندر context window کا انتظام اس guide کا متعلقہ companion piece ہے۔
summary کو دانستہ طور پر untrusted input سمجھا جاتا ہے۔ context.md کو fenced اور label کے ساتھ inject کیا جاتا ہے، اور Claude اس پر انحصار کرنے سے پہلے پوچھتا ہے۔ یہ design اس لیے موجود ہے کہ committed .recall/ directory ایسی جگہ ہے جہاں commit access رکھنے والا ہر شخص وہ متن لکھ سکتا ہے جسے آپ کا agent پڑھے گا۔ agent اپنے پڑھے ہوئے متن کے بارے میں کتنی بار رک کر سوال کرے گا، اس کا تعین اس permission mode سے ہوتا ہے جس میں session شروع ہوتا ہے۔ Claude Code v2.1.283 یا اس کے بعد کے versions میں، auto mode پہلے ہی ہر plan اور provider کے لیے interactive terminal اور VS Code sessions کا built-in starting mode ہے، اس لیے زیادہ تر actions کا جائزہ آپ کے بجائے ایک classifier لیتا ہے؛ HIPAA configuration والی organizations اب بھی Manual mode میں شروع ہوتی ہیں۔ ایک بار طے کریں کہ .recall/ ذاتی ہے یا shared: ذاتی memory کے لیے اسے .gitignore میں شامل کریں، یا اسے commit کریں اور کسی بھی دوسری contribution کی طرح اس کا review کریں۔ اگر agent unattended چلتا ہے تو VPS پر Claude Code محفوظ طریقے سے چلانا اس وسیع boundary کا احاطہ کرتا ہے۔
Redaction best effort ہے۔ یہ عام patterns کو ہدف بناتی ہے، مثلاً API keys، tokens، PEM blocks اور .env assignments۔ اسے commit کرنے سے پہلے .recall/ پڑھیں۔
version number maturity کے بارے میں حقیقت بیان کرتا ہے۔ 0.4.0 پر، جو October 2026 میں اب بھی latest release ہے، config keys اور file layout releases کے درمیان اب بھی تبدیل ہو سکتے ہیں، اس لیے کسی ایسے setup کو upgrade کرنے سے پہلے جس پر آپ انحصار کرتے ہیں، changelog پڑھیں۔
FAQ
کیا Recall میرا code یا transcripts کہیں بھی بھیجتا ہے؟
نہیں۔ capture hooks اور summarizer ایسی Python scripts ہیں جو آپ کی اپنی machine پر چلتی ہیں، plugin میں کوئی API key موجود نہیں، اور یہ کوئی network call نہیں کرتا۔ Summarising کے لیے model کے بجائے TF-IDF اور TextRank استعمال ہوتے ہیں، اس لیے یہ مرحلہ بلا معاوضہ ہے اور machine کے offline ہونے پر بھی کام کرتا ہے۔ اس کا trade-off یہ ہے کہ summary extractive ہوتی ہے: یہ آپ کے log سے sentences منتخب کرتی ہے، نئے sentences نہیں لکھتی۔
میری .recall/context.md کیوں missing یا out of date ہے؟
auto_save_context کی default قدر off ہے، اس لیے summary صرف اس وقت دوبارہ generate ہوتی ہے جب آپ /recall:save چلاتے ہیں۔ recall.config.json میں "auto_save_context": "on_end" set کریں تاکہ ہر session ختم ہونے پر اسے دوبارہ لکھا جائے۔ اگر history.md بھی missing ہو تو capture_history، .capture-paused marker، اور اس بات کو check کریں کہ session transcript دستیاب ہے یا نہیں: ان صورتوں میں running hooks history لکھنا skip کر دیتے ہیں۔ /recall:show کے ساتھ تصدیق کریں کہ plugin loaded ہے، پھر اس machine پر python3 -V کے جواب کی بھی تصدیق کریں، کیونکہ hooks Python scripts ہیں۔
Recall فی session کتنی بچت کرتا ہے؟
Summary load کرنے میں تقریباً 1,200 tokens خرچ ہوتے ہیں، جبکہ عام طور پر ایک model کو یہ سمجھنے کے لیے آپ کی repository دوبارہ پڑھنی پڑتی ہے کہ وہ کہاں ہے، جس پر 30,000 tokens لگتے ہیں۔ یہ عام اندازے ہیں۔ wc -c .recall/context.md اور session کے اندر /context command استعمال کرکے اپنی پیمائش کریں، اور cold start کا summary سے resume ہونے والے session کے ساتھ موازنہ کریں۔
کیا مجھے اب بھی CLAUDE.md file درکار ہے؟
ہاں، اور دونوں مختلف کام کرتے ہیں۔ CLAUDE.md وہ مواد ہے جو آپ جان بوجھ کر لکھتے ہیں: مستقل rules اور build commands۔ context.md گزشتہ session میں حقیقتاً ہونے والے کام سے generate ہوتی ہے، اس لیے اس میں وہ نامکمل migration محفوظ ہوتی ہے جسے آپ خود کبھی لکھنے کے بارے میں نہ سوچتے۔ دونوں کو برقرار رکھیں۔
کیا ایک VPS کئی projects کے لیے memory رکھ سکتا ہے؟
ہاں۔ Recall ہر project directory کے اندر .recall/ میں memory محفوظ کرتا ہے، اس لیے ایک ہی server پر موجود دو projects کے logs اور summaries الگ رہتے ہیں۔ ہر بار project root سے Claude Code شروع کریں، کیونکہ files working directory کے ساتھ منسلک ہوتی ہیں، user account کے ساتھ نہیں۔