پرش به محتوای اصلی
پرش به محتوای مقاله

Recall حافظهٔ محلی و ماندگار را به Claude Code اضافه کرد

·۱ تیر ۱۴۰۵۶ دقیقه مطالعه
ریانیاهیا/ریکال: توقف هدر دادن توکن‌ها و توضیح مجدد پروژه در هر نشست. ریکال حافظه پایدار به کلاود کد می‌دهد — کاملاً آفلاین.
ریانیاهیا/ریکال: توقف هدر دادن توکن‌ها و توضیح مجدد پروژه در هر نشست. ریکال حافظه پایدار به کلاود کد می‌دهد — کاملاً آفلاین.
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

پیاده‌سازی حافظهٔ ماندگار کاملاً آفلاین در Claude Code بدون استفاده از مدل‌های زبانی برای خلاصه‌سازی، که منجر به هزینهٔ صفر توکن برای مدیریت زمینه می‌شود.

تصور کنید هر بار که ترمینال را باز می‌کنید، باید دوباره تمام اهداف پروژه را برای دستیار هوش مصنوعی خود توضیح دهید. این یک چرخه تکراری و خسته‌کننده است، زیرا تاریخچهٔ یک پروژه اغلب در لحظه‌ای که یک جلسه (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 مراجعه کنید.

چرا این موضوع مهم است؟

این ابزار با حذف وابستگی به API برای مدیریت حافظه، استانداردی جدید برای حریم خصوصی در AI-Coding ایجاد می‌کند. تجربه توسعه‌دهندگان از محیط‌های تک‌جلسه‌ای به محیط‌های توسعهٔ پایدار تغییر می‌یابد که بهره‌وری را به‌شدت افزایش می‌دهد.

تأثیر برای ایران

به‌دلیل محلی بودن کامل فرآیند ذخیره‌سازی و خلاصه‌سازی، این ابزار برای توسعه‌دهندگان ایرانی که با محدودیت‌های API یا هزینه‌های بالای توکن مواجه‌اند، بسیار کاربردی است.

·نگاه ما
تحریریه دات‌هوش

جابه‌جایی فرآیند خلاصه‌سازی از LLM به الگوریتم‌های کلاسیک مانند TextRank، یک چرخش هوشمندانه برای کاهش Latency و هزینه است. این رویکرد ثابت می‌کند که برای مدیریت «وضعیت» (State)، همیشه به مدل‌های سنگین نیاز نیست و ترکیب کد قطعی محلی با استدلال ابری، بهینه‌ترین معماری برای ابزارهای توسعه است.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.