تصور کنید هر بار که ترمینال را باز میکنید، باید دوباره تمام اهداف پروژه را برای دستیار هوش مصنوعی خود توضیح دهید. این یک چرخه تکراری و خستهکننده است، زیرا تاریخچهٔ یک پروژه اغلب در لحظهای که یک جلسه (Session) به پایان میرسد، از بین میرود. Recall، یک پلاگین محلی جدید برای Claude Code، با ایجاد یک سامانهٔ حافظهٔ ماندگار و کاملاً آفلاین که بین نشستهای مختلف باقی میماند، این مشکل را حل میکند.
این توسعه در زمانی عرضه شده که توسعهدهندگان بهطور فزایندهای بهدنبال ابزارهای هوش مصنوعی «محلی-محور» (Local-first) هستند تا از اصطکاکات مربوط به مدیریت وضعیت در فضای ابری فاصله بگیرند. همانطور که پیشتر پوشش دادیم، فرآیندهای سختگیرانهٔ احراز هویت در شرکت Anthropic باعث شده تا برخی کاربران به سمت مدلهای متنباز بروند. در این میان، Recall یک راه میانه برای کاربرانی فراهم میکند که اشتراک دارند و قدرت Claude را میخواهند، اما برای رونوشتهای (Transcripts) پروژههایشان به حریم خصوصی مطلق نیاز دارند.
مکانیزم ماندگاری محلی
Recall از طریق قلابهای نشست (Session Hooks) خود را در جریان کاری Claude Code جایگذاری میکند. طبق مستندات این پروژه، این ابزار یک سامانه با «وابستگی صفر» (Zero-dependency) است که دو فایل اصلی را در یک دایرکتوری به نام .recall/ در ریشهٔ پروژه میسازد:
- history.md: یک گزارش تکمیلی (Append-only log) که هر پرامپت، پاسخ، فایلهای تغییریافته و دستورات اجراشده را بهصورت لحظهای ثبت میکند. هر نشست دقیقاً در همان لحظهای که اتفاق میافتد، در اینجا ذخیره میشود.
- context.md: یک خلاصهٔ فشرده که برای «از سرگیری» نشست بعدی استفاده میشود. این فایل توسط یک خلاصهساز محلی بازنویسی میشود تا یک snapshot از وضعیت فعلی ارائه دهد؛ این snapshot شامل هدف پروژه، خلاصه، گامهای بعدی، بحثهای باز، فایلهای دستخورده و نقطهای است که توسعهدهنده در آنجا کار را رها کرده است.
برخلاف اکثر ابزارهای حافظه که بستر (Context) را به یک API راه دور میفرستند، Recall از یک خلاصهساز کلاسیک پایتونی استفاده میکند. این ابزار از ترکیبی از TF-IDF (فرکانس ترم-معکوس سند) و TextRank — الگوریتمی الهامگرفته از PageRank گوگل — بهره میگیرد تا مرکزیترین جملات یک نشست را شناسایی و استخراج کند. این یعنی بدون نیاز به استنتاج (Inference) ابری، محتوای کلیدی استخراج میشود.
جزئیات جریان عملیاتی و گردش کار
Recall از طریق توالی مشخصی از قلابهای رویداد و دستورات عمل میکند تا انتقال حافظه بدوندرز باشد:
- در طول نشست: قلابهای
StopوSessionEndبهطور تدریجی فعالیتهای جدید را بهhistory.mdاضافه میکنند. این فرآیند ثبت کاملاً محلی است و تنها نوبتهای (Turns) جدید گفتگو را ضبط میکند. - در شروع نشست: قلاب
SessionStartفایلcontext.mdرا surfaced میکند (به سطح میآورد). سپس کلود دو سوال مشخص از کاربر میپرسد: اول اینکه آیا میخواهد از بستر ذخیرهشده از سر بگیرد و دوم اینکه آیا میخواهد ثبت نشست فعلی را ادامه دهد یا خیر. - جمعبندی و پایان: کاربران میتوانند بهصورت دستی با اجرای دستور
/recall:saveیک خلاصه ایجاد کنند. متناوباً، با تنظیم گزینهauto_save_context: "on_end"در فایل پیکربندی، فایلcontext.mdهر بار در پایان نشست بهطور خودکار بازسازی میشود.
اقتصاد توکنها و عملکرد
با انتقال فرآیند خلاصهسازی از یک مدل زبانی بزرگ (LLM) به کد محلی، Recall هزینهٔ نگهداری بافر حافظه را حذف کرده است. این ابزار ادعا میکند از دو طریق در اعتبار توکنها صرفهجویی میکند: نخست، تولید خلاصه هیچ توکنی هزینه ندارد زیرا بهصورت محلی اجرا میشود؛ دوم، بارگذاری یک فایل context.md فشرده (که معمولاً بین ۱۰۰۰ تا ۲۰۰۰ توکن است) بسیار بهینهتر از این است که توسعهدهنده هر بار توضیحات حجیم پروژه را از ابتدا آپلود کند.
برای تضمین عملکرد، سامانه دارای یک مسیر محاسباتی منعطف در فایل summarizer.py است. اگر کتابخانه numpy روی ماشین کاربر موجود باشد، Recall از آن برای برداریسازی ریاضی (Vectorize math) جهت پردازش سریعتر نشستهای طولانی استفاده میکند. در غیر این صورت، یک پیادهسازی دقیق از TextRank با پایتون خالص اجرا میشود تا نتایج بدون توجه به محیط سیستم یکسان بماند. در خروجیِ ذخیرهسازی (Save output)، بهطور صریح به کاربر اعلام میشود که کدام مسیر محاسباتی اجرا شده است.
حفاظهای امنیتی و حریم خصوصی
Recall با معماری «صفر-شبکه» (Zero-network) ساخته شده است. در کد این پلاگین هیچ ارجاعی به کلیدهای API، درخواستهای HTTP یا متغیرهای احراز هویت Anthropic مانند ANTHROPIC_* وجود ندارد. این امر یک مرز اعتماد سخت ایجاد میکند که در آن رونوشتها — که اغلب شامل مسیرهای حساس فایل یا اسرار داخلی پروژه هستند — هرگز از ماشین محلی خارج نمیشوند.
اگر کاربر با خطای "Invalid API key" مواجه شود، Recall تصریح میکند که این یک مشکل احراز هویت مربوط به CLI است (که اغلب به دلیل قدیمی شدن متغیر محیطی ANTHROPIC_API_KEY رخ میدهد) و کاملاً با عملیات پلاگین بیارتباط است.
امنیت این ابزار از طریق چهار محدودیت مشخص سختتر شده است:
- پاکسازی (Redaction): ابزار یک گذر best-effort انجام میدهد تا اشکال رایج اسرار (Secrets) شامل کلیدهای API، توکنها، تخصیصهای
.envو کلیدهای PEM را پیش از نوشتن روی دیسک حذف کند. این مورد حیاتی است زیرا فایلهای.recall/ممکن است به سیستم کنترل نسخه (Git) ارسال شوند. - نوشتارهای محدودشده: دایرکتوری خروجی (
output_dir) مجبور است داخل پروژه باقی بماند. یک پیکربندی ارسالشده با پروژه نمیتواند مسیرهای نوشتن را به یک مسیر مطلق یا دایرکتوریهای والد (../) تغییر دهد. - سختسازی Git: هنگام اجرای دستورات
git diff --statو لاگها برای خلاصهسازی، ابزار گزینههایcore.fsmonitor،diff.external،hooks و pager را غیرفعال میکند. این کار از اجرای کدهای مخرب توسط یک مخزن کلونشده غیرمعتبر (از طریق تنظیمات git آن) جلوگیری میکند. - رونوشتهای محدود (Scoped): Recall تنها رونوشتهای مربوط به پروژه جاری را که با دایرکتوری کاری فعلی (cwd) مطابقت دارد میخواند و هرگز به پروژههای دیگر رجوع نمیکند.
تنظیمات فنی و دستورات
کاربران میتوانند رفتار Recall را از طریق فایل recall.config.json در ریشه پروژه شخصیسازی کنند. گزینههای کلیدی شامل موارد زیر است:
- summary_sentences: مقدار پیشفرض ۸ است و تعیین میکند که خلاصه استخراجی چه تعداد جمله را حفظ کند.
- capture_history: پیشفرض آن
trueاست تا لاگhistory.mdحفظ شود. - include_git: پیشفرض آن
trueاست تاgit diff --statو کامیتهای اخیر به بستر (Context) اضافه شوند. - max_input_chars: متن ارسالی به خلاصهساز را به ۲۰۰,۰۰۰ نویسه محدود میکند و در صورت تجاوز از این حد، قدیمیترین متون را حذف میکند.
برای پروژههایی که کاربر نمیخواهد فایل تنظیمات را ویرایش کند، میتوان با ایجاد یک فایل ساده به نام .recall/.capture-paused فرآیند ثبت را متوقف کرد.
دستورات در دسترس عبارتند از:
/recall:save: اجرای خلاصهساز محلی برای بازنویسیcontext.md./recall:show: چاپ محتوای فعلیcontext.md./recall:log: نمایش لحظهای (Tail) فایلhistory.md.
ادغام در اکوسیستم
کاربران میتوانند این ابزار را مستقیماً از طریق مارکتپلیس با دستور /plugin marketplace add raiyanyahya/recall یا /plugin install recall@recall نصب کنند. برای توسعه محلی، کاربران میتوانند آن را از طریق claude --plugin-dir /path/to/recall بارگذاری کنند. این تجربه بهگونهای طراحی شده که هیچ اصطکاکی نداشته باشد و نیازی به pip install نیست، زیرا خلاصهساز بهصورت داخلی (Vendored) است و به کتابخانه استاندارد پایتون تکیه دارد.
این رویکرد محلیمحور بازتابدهنده سایر ابزارهای نوظهور برای اکوسیستم Claude Code است، مانند Claude Pulse که یک داشبورد محلی برای رصد هزینه توکنها و تأیید فراخوانی ابزارها (Tool calls) فراهم میکند. این ابزارها در کنار هم، تجربه رابط خط فرمان (CLI) را از مجموعهای از گفتگوهای گسسته به یک محیط توسعه پایدار تبدیل میکنند.
برای توسعهدهنده، این بدان معناست که مشکل «راهاندازی سرد» (Cold-start) بهطور مؤثری از بین رفته است. با اجرای /recall:save وضعیت فعلی یک بازسازی (Refactor) پیچیده در چند جمله و یک لیست فایل منجمد میشود و اجازه میدهد نشست بعدی با یک پرسش ساده «آیا از بستر ذخیرهشده شروع کنیم؟» آغاز شود. این تغییر سیگنالی از یک روند گستردهتر به سمت معماریهای «هیبریدی» AI است؛ جایی که استدلالهای سنگین در ابر رخ میدهد، اما «چسب» معماری — یعنی خلاصهسازی، گزارشگیری و مدیریت وضعیت — توسط کدهای محلی، سبک و قطعی (Deterministic) مدیریت میشود.
گام بعدی شما
- نصب Recall از مارکتپلیس Claude Code برای حذف توقفات بین جلسات برنامهنویسی.
- بررسی فایل
.recall/context.mdبرای بهینهسازی نحوهٔ توصیف اهداف پروژه. - ترکیب این ابزار با Claude Pulse برای مدیریت همزمان هزینه و حافظه.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو