SSD Nodes Learn 8GB RAM — $66/سال
تعلیمی Matt Connorتحریر: Matt Connor · اپ ڈیٹ شدہ 2026-08-01

VPS پر Claude Code کی یادداشت کیسے شامل کریں

Recall ایک مقامی plugin ہے جو Claude Code sessions کا log اور resumable summary بناتا ہے۔ VPS پر setup، version 0.4.0 اور token بچت کی پیمائش دیکھیں۔

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, July 30, 2026.

Claude Code کی یادداشت کے لیے Recall کیا کرتا ہے

Recall ایک Claude Code plugin ہے جو ہر project کو sessions کے درمیان یادداشت فراہم کرتا ہے۔ یہ آپ کے project کے اندر موجود .recall/ folder میں دو markdown files لکھتا ہے: پیش آنے والے واقعات کا صرف اضافہ کیے جانے والا log، اور اس مقام کا مختصر خلاصہ جہاں آپ نے کام روکا تھا۔ دونوں files اس machine پر مقامی Python summarizer تیار کرتا ہے جس پر آپ کام کر رہے ہیں، اس لیے خود memory کے لیے API tokens کی کوئی لاگت نہیں آتی۔

یہ ایک چھوٹا مگر مستقل خلا پُر کرتا ہے۔ آپ منگل کو اپنے VPS پر session بند کرتے ہیں۔ بدھ کو Claude Code منگل کے بارے میں کچھ نہیں جانتا۔ آپ project کی وضاحت دوبارہ خود کرتے ہیں، یا model کو repository کا آدھا حصہ دوبارہ پڑھنے دیتے ہیں تاکہ وہ صورتِ حال سمجھ سکے۔ دونوں طریقوں میں tokens خرچ ہوتے ہیں، اور دوسرے طریقے میں بہت زیادہ tokens خرچ ہوتے ہیں۔

Recall version 0.4.0 July 2026 تک موجودہ version ہے، اور project MIT licensed ہے۔ یہ ایک plugin ہے۔ اس میں کوئی چیز network call نہیں کرتی۔

VPS پر آپ کو کیا درکار ہے

Recall کے capture hooks وہ Python scripts ہیں جو plugin کے ساتھ جاری کیے جاتے ہیں۔ ان کے لیے third-party dependencies نہیں ہیں، اس لیے اصل ضرورت صرف ایک interpreter ہے۔

python3 -V

Ubuntu 24.04 میں Python 3.12.3 کا جواب آتا ہے۔ Recall، Python 3.9 اور اس کے بعد کے ورژنز کو سپورٹ کرتا ہے۔ Minimal container images میں کبھی کبھی کوئی interpreter موجود نہیں ہوتا، اور اس صورت میں shell python3: command not found کا جواب دیتی ہے۔ آگے بڑھنے سے پہلے ایک interpreter انسٹال کریں۔

sudo apt update && sudo apt install -y python3

NumPy summarizer کے ایک مرحلے کے لیے optional accelerator ہے۔ آپ کو اس کی ضرورت نہیں ہے۔

python3 -c "import numpy"

ModuleNotFoundError: No module named 'numpy' یہاں قابل قبول جواب ہے۔ Summarizer میں pure-Python راستہ موجود ہے، اور project کی test suite تصدیق کرتی ہے کہ دونوں راستے ایک ہی sentences منتخب کرتے ہیں۔

Server پر session memory کی اہمیت laptop کے مقابلے میں زیادہ ہوتی ہے، کیونکہ server کا کام کئی دنوں میں مختصر visits کی صورت میں آتا ہے۔ اگر آپ کے پاس پہلے ہی VPS پر tmux میں Claude Code چل رہا ہے، تو Recall وہ جزو ہے جو کل کے session کو آج کے session تک منتقل کرتا ہے۔

پلگ اِن مارکیٹ پلیس سے Recall انسٹال کریں

Claude Code سیشن کے اندر یہ دو کمانڈز درج کریں:

/plugin marketplace add raiyanyahya/recall
/plugin install recall@recall

دوسری کمانڈ plugin@marketplace کو پڑھتی ہے۔ یہاں دونوں نام recall ہیں۔ یہ بظاہر کاپی پیسٹ کی غلطی لگتی ہے، لیکن ایسا نہیں ہے۔

پلگ اِن کی اپنی کسی کمانڈ کو چلا کر انسٹالیشن کی جانچ کریں:

/recall:show

/recall:show موجودہ خلاصہ دکھاتا ہے۔ بالکل نئے پروجیکٹ میں ابھی دکھانے کے لیے کچھ نہیں ہوتا۔ اس لیے آپ دراصل یہ جانچ رہے ہیں کہ کمانڈ موجود ہے یا نہیں۔ اگر Claude Code /recall:show کو نہیں پہچانتا، تو پلگ اِن لوڈ نہیں ہوا اور کوئی hook فعال نہیں ہوگا۔

چیک آؤٹ سے چلانے کے لیے پہلے repository کو clone کریں اور اس کی توثیق کریں:

git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .

claude plugin validate .، .claude-plugin/ میں موجود manifest پڑھتا ہے اور بتاتا ہے کہ پلگ اِن درست ساخت رکھتا ہے یا نہیں۔ پھر اپنے پروجیکٹ کی directory سے claude --plugin-dir ~/recall کے ساتھ Claude Code شروع کریں۔

hooks کیا لکھتے ہیں اور کب

Recall تین Claude Code hooks رجسٹر کرتا ہے۔ ہر hook plugin directory سے Python script چلاتا ہے۔

  • SessionStart startup، resume اور clear پر چلتا ہے۔ یہ context.md دکھاتا ہے تاکہ session کھلتے ہی آپ کا summary سامنے ہو۔
  • Stop ہر بار Claude کے response مکمل کرنے پر چلتا ہے۔ یہ اس turn کو log میں شامل کرتا ہے۔
  • SessionEnd session بند ہونے پر چلتا ہے اور summary دوبارہ تیار کر سکتا ہے۔

اس عمل سے دو files بنتی ہیں، اور دونوں .recall/ کے اندر ہوتی ہیں۔

  • history.md صرف append ہونے والا record ہے: prompts، responses، چھوئی گئی files اور چلائے گئے commands۔
  • context.md تیار کردہ digest ہے: مقصد، summary، اگلے اقدامات، چھوئی گئی files، چلائے گئے commands اور git context۔

ایک حقیقی session کے بعد directory دیکھیں۔

ls -la .recall/

آپ کو history.md نظر آنا چاہیے، اور اس میں content موجود ہونا چاہیے۔ ممکن ہے context.md بالکل نہ ہو۔ یہ خرابی کے بجائے default behaviour ہے۔ 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 استعمال کرتا ہے۔ یہ deterministic اور extractive ہے، یعنی یہ آپ کے log میں پہلے سے موجود sentences منتخب کرتا ہے۔ کوئی model نہیں چلایا جاتا، اس لیے یہ step مفت ہے اور machine کے offline ہونے پر بھی کام کرتا ہے۔

ایک پروجیکٹ کے لیے Recall کو ترتیب دیں

ترتیب recall.config.json فائل میں محفوظ ہوتی ہے، جو پروجیکٹ کی root directory میں موجود ہوتی ہے۔ یہ فراہم کردہ طے شدہ ترتیبات ہیں:

{
  "output_dir": ".recall",
  "capture_history": true,
  "summary_sentences": 8,
  "redact": true,
  "include_git": true,
  "max_input_chars": 200000
}
  • output_dir یہ متعین کرتا ہے کہ دونوں فائلیں کہاں محفوظ ہوں گی۔ اسے پروجیکٹ کے اندر رکھیں۔
  • capture_history history.md لاگ کو فعال یا غیر فعال کرتا ہے۔
  • auto_save_context off یا on_end قبول کرتا ہے، اور طے شدہ قدر off ہے۔
  • summary_sentences یہ متعین کرتا ہے کہ کتنے جملے context.md میں باقی رہیں گے۔ اسے بڑھانے سے خلاصہ طویل ہو جاتا ہے اور سیشن شروع ہونے پر لوڈ کچھ بڑھ جاتا ہے۔
  • redact کسی بھی مواد کو ڈسک پر لکھنے سے پہلے عام خفیہ معلومات کے نمونوں کو ہٹا دیتا ہے۔
  • include_git موجودہ diff اور حالیہ commits کو خلاصے میں شامل کرتا ہے۔
  • max_input_chars یہ حد مقرر کرتا ہے کہ summarizer ایک بار میں history.md کا کتنا حصہ پڑھے گا۔

VPS پر موجود پروجیکٹ کے لیے مفید تبدیلی خودکار saving فعال کرنا ہے، کیونکہ server پر سیشن اکثر آپ کے رکنے کا فیصلہ کرنے کے بجائے terminal ختم ہونے پر اختتام پذیر ہوتا ہے۔

{
  "auto_save_context": "on_end",
  "summary_sentences": 12
}

ترتیب کو تبدیل کیے بغیر عارضی طور پر capture روکنے کے لیے pause marker بنائیں۔ دوبارہ capture شروع کرنے کے لیے اسے حذف کر دیں۔

touch .recall/.capture-paused

یہ کام اس سیشن سے پہلے کریں جس میں آپ production credentials استعمال کریں گے، کیونکہ redaction ایک filter ہے، ضمانت نہیں۔ یہی وجہ عمومی طور پر AI agents سے secrets دور رکھنے پر بھی لاگو ہوتی ہے: محفوظ secret وہ ہے جسے agent کبھی دیکھ ہی نہ سکے۔

Recall سے کتنے tokens کی بچت ہوتی ہے؟

یہ اس بات پر منحصر ہے کہ متبادل کیا تھا۔ سیشن کے آغاز میں خلاصہ لوڈ کرنا کم خرچ ہے۔ اس کے بدلے ہونے والا عمل مہنگا ہو سکتا ہے، کیونکہ آپ کے project کی یادداشت نہ رکھنے والا model فائلیں پڑھ کر اسے دوبارہ سمجھتا ہے۔

ChartTypical cost of resuming work, per session
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 کا خلاصہ تقریباً 1,200 tokens میں لوڈ ہوتا ہے، جو resume کے لیے project کے شائع کردہ ایک سے دو ہزار tokens کے دعوے سے مطابقت رکھتا ہے۔ مکمل سابقہ transcript دوبارہ چلانے سے پوری گفتگو دوبارہ لوڈ ہوتی ہے، جو تقریباً 85,000 tokens بنتی ہے۔ model کو فائلیں پڑھ کر project دوبارہ سمجھنے دینے کی لاگت ان دونوں کے درمیان، تقریباً 30,000 tokens، ہوتی ہے، اور repository کے بڑھنے کے ساتھ یہ تعداد بھی بڑھتی ہے۔ CLAUDE.md row پیمانے کے لیے ہے: یہ مختصر اور مستقل ہونے کی وجہ سے کم خرچ ہے، اور model کو گزشتہ رات کیا ہوا بتانے کے بجائے آپ کے مستقل قواعد بتاتی ہے۔

اپنے اعداد خود ناپیں۔ ایک token میں انگریزی نثر کے تقریباً چار حروف ہوتے ہیں، جبکہ code میں یہ مقدار کچھ کم ہوتی ہے۔

wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))

سیشن کے اندر /context دکھاتا ہے کہ اس وقت context window میں کیا لوڈ ہے، جبکہ /cost سیشن کے مجموعی اعداد فراہم کرتا ہے۔ ایک سیشن کو ابتدا میں خالی حالت سے شروع کریں، پھر اگلا سیشن خلاصہ موجود ہونے کی حالت میں شروع کریں، اور دونوں کا موازنہ کریں۔ سیشن کے tokens حقیقت میں کہاں خرچ ہوتے ہیں، اس کی مکمل تفصیل کے لیے Claude Code tokens کیسے استعمال کرتا ہے دیکھیں۔

ایک احتیاط اس دعوے کو درست رکھتی ہے۔ خلاصہ ہر سیشن کے آغاز پر لوڈ ہوتا ہے، اس لیے جس خلاصے پر آپ کبھی عمل نہ کریں وہ بچت کے بجائے معمولی اضافی لاگت ہے۔ summary_sentences کو default کے قریب رکھیں، جب تک آپ کے سیشن طویل نہ چلتے ہوں۔

سیشن کے بغیر خلاصہ دوبارہ بنائیں

اگر آپ نے repository کو clone کیا ہے تو summarizer کا اپنا command-line entry point موجود ہے۔ یہ VPS پر اس وقت مفید ہے جب terminal کے ساتھ session بھی ختم ہو جائے اور آپ کو digest پھر بھی درکار ہو۔

python3 ~/recall/scripts/make_context.py --help

مدد کا output ان flags کی فہرست دکھاتا ہے جنہیں یہ قبول کرتا ہے: 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 ایسی directory میں موجود ہوتا ہے جس کا انتظام Claude Code کرتا ہے، اور یہی کام کرنے کا supported طریقہ /recall:save ہے۔

کچھ بھی کیوں نہیں لکھا جا رہا

مکمل سیشن کے بعد .recall/ ڈائریکٹری موجود نہیں ہے۔ Hooks کبھی چلے ہی نہیں۔ پلگ اِن کے لوڈ ہونے کی تصدیق کے لیے /recall:show ٹائپ کریں، پھر python3 -V چلائیں۔ Hook command پہلے python3 اور پھر python آزماتی ہے، اس لیے جس machine میں دونوں موجود نہ ہوں وہاں کچھ بھی نہیں لکھا جاتا اور کوئی اطلاع بھی نہیں دی جاتی۔

history.md بڑھتا جا رہا ہے، لیکن context.md کبھی تبدیل نہیں ہوتا۔ auto_save_context بطور ڈیفالٹ off ہے۔ /recall:save چلائیں، یا key کو on_end پر set کریں اور SessionEnd hook کو یہ کام کرنے دیں۔

Files غلط project کے تحت ظاہر ہوتی ہیں۔ Recall اس directory کے لحاظ سے relative paths میں لکھتا ہے جہاں سے Claude Code شروع کیا گیا تھا، اس لیے home directory سے session شروع کرنے پر memory وہیں محفوظ ہوتی ہے۔ Project root سے session شروع کریں، اور یہ معلوم کرنے کے لیے ls -la .recall/ استعمال کریں کہ files حقیقت میں کہاں لکھی گئی ہیں۔

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/ چیک کریں تاکہ تصدیق ہو جائے کہ نیا 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 کر رہے ہوں گے۔

یہ ایک session کے اندر مدد نہیں کرتا۔ session کے دوران context window کا بھر جانا ایک مختلف مسئلہ ہے، جس کے حل بھی مختلف ہیں، اور ایک session کے اندر context window کا نظم کرنا اس guide کا companion piece ہے۔

summary کو جان بوجھ کر untrusted input سمجھا جاتا ہے۔ context.md کو fenced اور label شدہ شکل میں inject کیا جاتا ہے، اور Claude اس پر انحصار کرنے سے پہلے پوچھتا ہے۔ یہ ڈیزائن اس لیے ہے کہ committed .recall/ directory ایسی جگہ ہے جہاں commit access رکھنے والا کوئی بھی شخص وہ text لکھ سکتا ہے جسے آپ کا agent پڑھے گا۔ ایک بار طے کریں کہ .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 کے بارے میں حقیقت بیان کرتا ہے۔ July 2026 میں 0.4.0 پر config keys اور file layout اب بھی releases کے درمیان تبدیل ہو سکتے ہیں، اس لیے جس setup پر آپ انحصار کرتے ہیں اسے upgrade کرنے سے پہلے changelog پڑھیں۔

FAQ

کیا Recall میرا کوڈ یا ٹرانسکرپٹس کہیں بھی بھیجتا ہے؟

نہیں۔ capture hooks اور summarizer ایسی Python scripts ہیں جو آپ کی اپنی مشین پر چلتی ہیں۔ plugin میں کوئی API key موجود نہیں ہوتی اور یہ کوئی network call نہیں کرتا۔ خلاصہ تیار کرنے کے لیے model کے بجائے TF-IDF اور TextRank استعمال ہوتے ہیں۔ اس مرحلے کی کوئی لاگت نہیں ہوتی اور یہ مشین کے offline ہونے کی صورت میں بھی کام کرتا ہے۔ اس کا سمجھوتا یہ ہے کہ خلاصہ extractive ہوتا ہے: یہ آپ کے log سے جملے منتخب کرتا ہے، نئے جملے نہیں لکھتا۔

میرا .recall/context.md کیوں غائب ہے یا تازہ ترین نہیں ہے؟

auto_save_context کی default قدر off ہے، اس لیے خلاصہ صرف اس وقت دوبارہ تیار ہوتا ہے جب آپ /recall:save چلاتے ہیں۔ "auto_save_context": "on_end" کو recall.config.json میں set کریں تاکہ ہر session ختم ہونے پر اسے دوبارہ لکھا جائے۔ اگر history.md بھی موجود نہیں ہے تو hooks بالکل نہیں چل رہے۔ /recall:show کے ذریعے تصدیق کریں کہ plugin load ہو چکا ہے، پھر اس مشین پر python3 -V کے جواب کی تصدیق کریں، کیونکہ hooks Python scripts ہیں۔

Recall ہر session میں کتنی بچت کرتا ہے؟

خلاصہ load کرنے میں تقریباً 1,200 tokens صرف ہوتے ہیں، جبکہ ایک عام model کو repository دوبارہ پڑھ کر موجودہ حالت معلوم کرنے کے لیے عموماً 30,000 tokens درکار ہوتے ہیں۔ یہ عمومی اعداد ہیں۔ wc -c .recall/context.md اور session کے اندر /context command استعمال کر کے اپنی صورتِ حال کی پیمائش کریں۔ اس کے لیے cold start کا موازنہ ایسے session سے کریں جو خلاصے سے resume ہوتا ہے۔

کیا مجھے اب بھی CLAUDE.md file کی ضرورت ہے؟

ہاں، اور دونوں مختلف کام کرتے ہیں۔ CLAUDE.md وہ مواد ہے جو آپ جان بوجھ کر لکھتے ہیں: مستقل قواعد اور build commands۔ context.md پچھلے session میں حقیقتاً پیش آنے والی کارروائیوں سے تیار ہوتا ہے، اس لیے اس میں وہ نامکمل migration بھی شامل ہوتی ہے جسے آپ خود کبھی لکھنے کا نہیں سوچتے۔ دونوں برقرار رکھیں۔

کیا ایک VPS کئی projects کے لیے memory رکھ سکتا ہے؟

ہاں۔ Recall ہر project directory کے اندر .recall/ میں memory رکھتا ہے، اس لیے ایک ہی server پر موجود دو projects کے logs اور summaries الگ رہتے ہیں۔ ہر بار project root سے Claude Code شروع کریں، کیونکہ files working directory کے مطابق ہوتی ہیں، user account کے مطابق نہیں۔