تصور کنید هر بار که کامپیوتر خود را روشن میکنید، تمام تجربه کاری هفته گذشته را فراموش میکنید و باید دوباره یاد بگیرید چرا یک متد خاص در پروژه شکست خورد. این دقیقاً همان وضعیتی است که اکثر عاملهای کدنویس فعلاً با آن دستوپنجه نرم میکنند. عاملهای کدنویسی معمولاً با هر جلسه جدید، گویی برای اولین بار با پروژه مواجه شدهاند؛ آنها تمام استدلالها و تلاشهای ناموفقی که در روزهای گذشته صورت گرفته را پاک میکنند.
Hugging Face در ۳ سپتامبر ۲۰۲۶ برای حل این مشکل، ابزار funes را منتشر کرد؛ یک لایه حافظه بادوام که لاگهای جلسات را به یک نمایهساز محلی و قابل جستوجو تبدیل میکند. طبق اعلام این شرکت، این ابزار اجازه میدهد عاملهای مختلف بدون اشباع کردن پنجره زمینه (Context Window) — که شبیه میز کاری است که فقط جای چند ورق کاغذ دارد و نمیتوان کل کتابخانه را روی آن پهن کرد — تاریخچهای مشترک از تصمیمات و منطقهای فنی را به اشتراک بگذارند.
بسیاری از توسعهدهندگان بسته به نوع تسک، بین عاملهای مختلف یا ماشینهای گوناگون جابهجا میشوند. در حالت عادی، وقتی یک جلسه تمام میشود، دلیل یک انتخاب معماری خاص برای همیشه ناپدید میشود. اگرچه عاملها ردپای (Trace) دقیقی از کارهایشان — مثل جستوجو در کدها، امتحان کردن رویکردهای مختلف، مواجهه با خطاها و خواندن مستندات — بر جای میگذارند، اما این لاگها معمولاً آرشیوهایی هستند که جستوجوی بهینه در میان هزاران نوبت گفتگو در آنها تقریباً غیرممکن است. شما نمیتوانید صرفاً با استفاده از دستور grep در میان ده هزار نوبت گفتگو، پاسخی برای این سوال پیدا کنید که «چرا ما از پارسر استریمینگ فاصله گرفتیم؟». این چالش در ردیابی خطاهای پیچیده، مشابه موانعی است که ترکیب Copilot CLI و MCP برای شناسایی خطاهای خاموش در عاملها برطرف میکند.
عامل هوش مصنوعی شما را مانند یک توسعهدهنده جونیور تصور کنید که هر بار سیستمش را ریاستارت میکند، دچار فراموشی کامل میشود. شما نیمی از وقت خود را صرف توضیح دوباره این میکنید که چرا از یک پارسر خاص دست کشیدید یا چرا یک باگ خاص همچنان پابرجاست. funes مانند یک دفترچه یادداشت دائمی عمل میکند که عامل میتواند بهطور خودکار در آن بنویسد و از آن بخواند. این ابزار با فراهم کردن قابلیتهای نمایهسازی، بازیابی، رتبهبندی و منشأ دقیق دادهها (Provenance)، حافظه غیرفعال را به ابزاری کاربردی تبدیل میکند.
سازوکار خطلوله حافظه
این ابزار بهصورت یک فایل باینری اجرا میشود و با عاملهایی مثل Claude Code، Codex، pi و Hermes یکپارچه میگردد. funes برای کار خود به محیطهای سنگین یادگیری ماشین نیاز ندارد و در عوض از یک خطلوله قطعی (Deterministic Pipeline) برای تبدیل ردپاها به ساختارهای منظم «نوبت-و-بلاک» (turn-and-block) استفاده میکند:
- نمایهسازی (Indexing): دادههای جلسه تکهبندی شده و با استفاده از یک مدل محلی تثبیتشده به بردار معنایی (Embedding) — مثل کارت معرفی عددی برای هر واژه که همسایگی آن با کلمات دیگر را مشخص میکند — تبدیل میشوند. این فرآیند افزایشی است، به این معنی که اجراهای جدید صرفاً نوبتهای جدید را اضافه میکنند و نیازی نیست کل تاریخچه دوباره پردازش شود. محتوای قدیمیتر را میتوان در گامهای محدود بازپروری (Backfill) کرد.
- ذخیرهسازی: دادهها در یک مجموعه داده محلی Lance نوشته میشوند. این امر تضمین میکند که شواهد خام دستنخورده باقی بمانند؛ در زمان نوشتن، هیچ دادهای به یک «فکت» تلخیصشده تبدیل نمیشود.
- بازیابی (Retrieval): سیستم از ترکیبی از جستوجوی برداری و جستوجوی BM25 استفاده میکند. سپس رتبهبندیهای این دو را با هم ادغام کرده، کاندیداها را با یک cross-encoder بازرتبهبندی میکند، آنها را بر اساس تازگی دادهها وزندهی کرده و تکههای مجاور را نیز به نتیجه میچسباند.

نصب و راهاندازی
افزودن حافظه به یک عامل موجود، یک فرآیند تکدستوری است. کاربران میتوانند با اجرای یک اسکریپت curl، باینری را نصب کنند:
curl -fsSL https://huggingface.co/buckets/huggingface/funes/resolve/install.sh | sh
پس از نصب، دستور funes add (مثلاً funes add claude) اولین نمایهساز را میسازد، ابزارهای recall و get را در اختیار عامل قرار میدهد و اتوماسیونی را نصب میکند که هر نوبت تکمیلشده را بهطور خودکار نمایهسازی کند.
تداوم میانعاملی
به دلیل استانداردسازی شکل حافظه، funes یک «مغز مشترک» میان مدلهای مختلف ایجاد میکند. شما میتوانید یک بازسازی کد (Refactor) پیچیده را با Claude Code شروع کنید و یک هفته بعد، مدل Codex دقیقاً دلیل آن تغییرات را به یاد آورد. هر نتیجه بازیابیشده در حافظه، دقیقاً مشخص میکند که کدام عامل نتیجه اصلی را تولید کرده است.

این تداوم حتی فراتر از یک ماشین میرود. با متصل کردن حافظه به یک مجموعه داده خصوصی در Hugging Face با استفاده از دستوری مانند funes add codex acme/funes-memory، حافظه توسعهدهنده را در میزبانهای مختلف دنبال میکند. در این حالت، حافظه محلی همچنان یک مجموعه داده Lance باقی میماند، در حالی که حافظه مشترک یک مجموعه داده Hugging Face (که بهطور پیشفرض خصوصی است) و متعلق به کاربر است.
برای تضمین امنیت، اطلاعات حساس (Credentials) در حین فرآیند نمایهسازی حذف میشوند. پیش از آنکه هر دادهای به Hub برسد، یک اسکنر (که در فایل SECURITY.md مستند شده است) هر تکه داده را مجدداً بررسی میکند تا هر چیزی که شبیه به یک رمز یا کلید است را حذف کند. هنگامی که یک عامل حافظه راه دور را میخواند، funes فایلهای مجموعه داده را بهصورت محلی کش (Cache) میکند تا پرسوجوهای بعدی با سرعت محلی پاسخ داده شوند.
بازیابی مستند در برابر تلخیص
برخلاف روشهای رایج «فشردهسازی» (Compaction) در عاملها — که در آن مدل یک چت طولانی را خلاصه میکند تا فضا ذخیره شود — funes از ابزار recall استفاده میکند. این ابزار متن خام و اصلی جلسه را به همراه نام عامل، برچسب زمان، شناسه جلسه و شماره نوبت بازمیگرداند، نه یک خلاصه تغییریافته. هر نتیجه شامل یک دستور get است که نوبت کامل و زمینه (Context) اطراف آن را باز میکند.

توسعهدهندگان میتوانند بهصورت دستی با دستور ask از حافظه سوال بپرسند. این دستور یک همزاد «فقط-خواندنی» و تکسوالی برای دستور add است. برای مثال، یک توسعهدهنده میتواند اجرا کند:
funes ask claude "what did we decide about the streaming parser"
یا آن را به یک حافظه مشترک متصل کند تا تاریخچه یک پروژه را بفهمد:
funes ask claude "why is funes append-only" --memory huggingface/funes-memory
اگر قطعات بازیابیشده پاسخی را پشتیبانی نکنند، عامل برنامهریزی شده است تا بهجای توهم (Hallucination) — یعنی وقتی مدل با اطمینان چیزی میگوید که وجود ندارد، شبیه دوستی که خاطرهای را اشتباه تعریف میکند — اعتراف کند که پاسخ را نمیداند. این امر تضمین میکند که پاسخها مستند به تاریخچه واقعی جلسات باشند.
هزینه حافظه
بررسیهای Hugging Face نشان میدهد که در تحقیقات طولانی، جلسات بهقدری حجیم میشوند که هزینه حمل بستر متنی (Context) در هر نوبت، از هزینه انجام خودِ کار بیشتر میشود. آنها سه روش «فشردهسازی»، «انتقال مکتوب» (Written Handoffs) و «بازیابی funes» را در یک محک (Benchmark) مقایسه کردند. این بنچمارک شامل دو تسک بود که برای حل آنها نیاز به دانش جلسات قبلی بود.

بر اساس این نتایج، funes بهینه ترین روش بود. این ابزار در یک تسک ۸ برابر و در تسک دیگر ۴ برابر ارزانتر از انتقال مکتوب عمل کرد. نکته کلیدی این است که در مواردی که فشردهسازی به دلیل حذف جزئیات حیاتی در خلاصه شکست خورد، funes موفق بود چون ابزار recall خودِ قطعات متن را بازمیگرداند و یافتهها مجبور نیستند از یک فرآیند تلخیص عبور کنند.
گسترش دامنه حافظه
با تبدیل حافظه به یک مجموعه داده (Dataset) بهجای یک سرویس، مالکیت دادهها نزد کاربر باقی میماند و نیازی به حساب کاربری مجزا یا اجاره API نیست. این رویکرد چندین کاربرد دارد:
- میان ماشینها: متصل کردن عاملها به یک حافظه واحد و بازیابی تاریخچه از هر میزبان.
- میان تیمها: عاملِ یک عضو جدید تیم میتواند در روز اول به تصمیمات چندین ماه پیش، از جمله بنبستهای فنی و منطقهایی که هرگز به Pull Request راه نیافتند، دسترسی داشته باشد.
- پروژههای متنباز: نگهداران پروژه میتوانند جلسات را در پسِ یک نسخه (Release) منتشر کنند. این کار مانند یک فایل
CLAUDE.mdقابل جستوجو عمل میکند که تاریخچه «چرایی» وضعیت فعلی پروژه را نگه میدارد، بهجای یک صفحه استاتیک که نیاز به بازنویسی دستی دارد.
حافظههای منتشر شده دارای یک کارت مجموعه داده (Dataset Card) و تگ funes هستند که آنها را در Hub قابل کشف میکند. این امر «حافظه کاری باز» (Open Working Memory) را به کتابخانه موجودِ وزنهای باز و مجموعهدادههای Hub اضافه میکند.
این تغییر به این معناست که توسعهدهندگان دیگر مجبور نیستند بین جلسات گرانقیمت و حجیم یا ریسک از دست دادن زمینه حیاتی در یک شروع تازه، یکی را انتخاب کنند. همانطور که خورخه لوئیس بورخس در کتاب فونس حافظه نوشت: «اندیشیدن یعنی فراموش کردن تفاوتها، تعمیم دادن و انتزاع کردن». funes تضمین میکند که در حالی که عامل میتواند تعمیم دهد، تفاوتهای خاص و حیاتی تاریخچه یک پروژه هرگز واقعاً گم نشوند.
این پروژه کاملاً متنباز است و در github.com/huggingface/funes در دسترس است. این ابزار با تکیه بر مدلهای بردار معنایی باز، مجموعهدادههای append-only لنس و قابلیتهای کشینگ و حذف دادههای تکراری در Hub، سوابق جلسات را به حافظهای کاربردی تبدیل میکند.
گام بعدی شما
- اگر از عاملهای کدنویس محلی استفاده میکنید، funes را نصب کنید تا از تکرار توضیحِ معماری پروژه در هر جلسه جدید خلاص شوید.
- برای پروژههای تیمی، یک حافظه مشترک خصوصی در Hugging Face ایجاد کنید تا دانش فنی بین اعضا به صورت خودکار منتقل شود.
- در پروژههای Open Source، از انتشار حافظه جلسات برای جایگزینی مستندات خشکِ «چرایی تغییرات» استفاده کنید.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما درباره تراشههای Blackwell مراجعه کنید.




گفتگو