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

«پایان فراموشی در جلسات»؛ راهکاری برای حافظه بلندمدت عامل‌های هوشمند

·۲۵ مهر ۱۴۰۵۵ دقیقه مطالعه
راهنما
عامل هوش مصنوعی ساده‌ای که از ابتدا ساخته شده و حافظه دارد.
عامل هوش مصنوعی ساده‌ای که از ابتدا ساخته شده و حافظه دارد.
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

استفاده از فایل‌های Markdown به جای Vector DB برای حافظه بلندمدت عامل‌ها؛ این کار باعث می‌شود حافظه عامل بدون نیاز به زیرساخت‌های پیچیده و بدون اشغال فضای پنجره زمینه، بین جلسات مختلف حفظ شود.

تصور کنید هر بار که برنامه‌ای را باز می‌کنید، دستیار هوشمند شما تمام ترجیحات شما و جزئیات پروژه‌تان را فراموش کرده باشد و مجبور شوید همه چیز را از اول توضیح دهید. در حالی که یک عامل هوش مصنوعی پایه، هر ترجیح یادگرفته شده را در لحظه بسته شدن برنامه از دست می‌دهد و او را مجبور می‌کند در هر جلسه جدید، قراردادهای پروژه را دوباره کشف کند، راهکاری برای ایجاد تداوم در حافظه عامل‌ها ارائه شده است.

به نقل از راهنمای فنی منتشر شده در dev.to در ۱۷ اکتبر ۲۰۲۶، می‌توان با پیاده‌سازی یک ذخیره‌ساز حافظه مبتنی بر فایل (File-backed memory store) که پس از ری‌استارت شدن فرآیندها باقی می‌ماند، این مشکل را حل کرد. این قابلیت در ادامه بهبودهای قبلی روی عامل‌ها اضافه شده است؛ عامل‌هایی که پیش از این توانمند، خودمختار و ایمن‌تر شده بودند. این عامل در حال حاضر می‌تواند از ابزارها در یک محیط ایزوله Docker استفاده کند، برای کارهای طولانی برنامه‌ریزی نماید، در صورت نیاز درخواست کمک کند، سیاست‌های ابزاری را رعایت کند و هنگامی که به محدودیت منابع رسید، متوقف شود. با این حال، بدون حافظه بلندمدت، عامل هر بار که برنامه بسته شود، زمینه‌های حیاتی را فراموش می‌کند؛ مثلاً این حقیقت که یک پروژه از uv استفاده می‌کند یا اینکه یک عملیات مهاجرت (migration) دیروز به طور ناقص انجام شده است.

بسیاری از عامل‌های فعلی تنها به حافظه کوتاه‌مدت متکی هستند؛ یعنی لیستی از پیام‌ها که به عنوان زمینه (Context) به مدل ارسال می‌شود. این لیست شامل پرامپت سیستمی، پیام‌های کاربر، پاسخ‌های مدل و نتایج ابزارهاست. در حالی که این روش برای کارهای فوری مؤثر است، اما در بلندمدت شکست می‌خورد؛ زیرا مدل دارای یک پنجره زمینه محدود است و هر توکن اضافی، تأخیر (Latency) و هزینه را افزایش می‌دهد. برای عبور از این محدودیت، توسعه‌دهندگان می‌توانند داده‌های گذرا و مربوط به جلسه را از حقایق پایدار و بلندمدت جدا کنند. این رویکرد ساده‌ساز در مقابل متدهای پیچیده‌تری قرار می‌گیرد، مانند استفاده از گراف‌های تصمیم Brethof-Brain برای مقابله با فراموشی عامل‌ها که ساختاری متفاوت برای مدیریت حافظه ارائه می‌دهد.

طبق گزارش dev.to، به جای استفاده از پایگاه‌داده‌های برداری پیچیده، بهینه‌ترین نقطه شروع برای حافظه بلندمدت، یک دایرکتوری ساده شامل فایل‌های Markdown است. در این ساختار، یک کلاس به نام MemoryStore وظیفه خواندن و نوشتن در فایل‌های خاصی را بر عهده دارد که در مسیر ~/.agent-harness/memory/ قرار دارند.

معماری حافظه

برای جلوگیری از آلودگی داده‌ها (Data Pollution)، سیستم تداوم را به دو محدوده (Scope) مجزا تقسیم می‌کند:

  • حافظه پروژه (project.md): ذخیره درس‌های بادشتاه و پایدار درباره محیط پروژه و قراردادهای آن، مانند «برای دستورات پایتون از uv استفاده کن».
  • حافظه کاربر (user.md): ذخیره ترجیحات و انتظارات پایدار کاربر، مانند «پاسخ‌های کوتاه و مختصر را ترجیح می‌دهد».

جزئیات پیاده‌سازی

کلاس MemoryStore دایرکتوری ریشه و یک زیردایرکتوری خاص به نام sessions را مدیریت می‌کند. این کلاس از یک متد کمکی به نام _notes_path استفاده می‌کند تا اطمینان حاصل شود که مدل نمی‌تواند نام فایل‌های دلخواه را انتخاب کند؛ این متد فقط «project» یا «user» را به عنوان محدوده‌های معتبر می‌پذیرد و در غیر این صورت، خطای ValueError صادر می‌کند.

  • read_notes: متن فایل مورد نظر در محدوده درخواستی را با کدگذاری UTF-8 می‌خواند. اگر فایل وجود نداشته باشد، عبارت «(empty)» را برمی‌گرداند.
  • append_notes: فایل را در حالت append (افزودن) باز می‌کند. اگر فایل از قبل حاوی داده باشد، پیش از نوشتن محتوای جدید و پاک‌سازی شده (stripped)، یک خط جدید اضافه می‌کند تا قالب‌بندی تمیز باقی بماند.

عامل برای تعامل با این فایل‌ها از دو ابزار خاص read_memory و append_memory استفاده می‌کند. این‌ها در دسته «ابزارهای برنامه‌ریزی» (Planning Tools) قرار می‌گیرند، به این معنی که در داخل فرآیند (In-process) اجرا می‌شوند و برای هر فراخوانی نیاز به اجازه انسانی ندارند، که این امر جریان کاری خودمختار عامل را تسهیل می‌کند. از آنجایی که این ابزارها وضعیتِ بدنه (Harness state) را مدیریت می‌کنند و روی فایل‌های پروژه اثر نمی‌گذارند، در کنار scratchpad و لیست کارهای (to-do list) عامل اجرا می‌شوند.

حفاظ‌های امنیتی و حریم خصوصی

حافظه پایدار ریسک‌های امنیتی قابل توجهی را ایجاد می‌کند، زیرا یک یادداشت اشتباه می‌تواند رفتار عامل را به طور نامحدود تحت تأثیر قرار دهد. برای کاهش این ریسک، پیاده‌سازی فعلی قوانین سخت‌گیرانه‌ای را در پرامپت سیستمی اعمال می‌کند. عامل صراحتاً از ذخیره اسرار (Secrets)، کلیدهای API یا جزئیات گذرا مانند «در این سند از عنوان آبی استفاده کن» منع شده است.

محدودیت‌های امنیتی خاص شامل موارد زیر است:

  • حفاظت از اعتبارنامه‌ها: کلیدهای API، رمزهای عبور و توکن‌ها هرگز نباید در زمینه مدل یا یک فایل پایدار قرار گیرند.
  • جلوگیری از تزریق (Injection): محتوای تزریق‌شده از طریق پرامپت (Prompt-injection) که از یک صفحه وب یا فایل وارد شده است، هرگز نباید به حافظه بلندمدت ارتقا یابد.
  • بازبینی انسانی: یادداشت‌ها باید مختصر باقی بمانند تا بتوانند به راحتی توسط یک انسان بازبینی و اصلاح شوند.

علاوه بر این، دایرکتوری حافظه خارج از محیط mount پروژه در Docker نگه داشته می‌شود. این امر تضمین می‌کند که عامل به جای استفاده از ابزارهای عمومی سیستم‌فایل، از طریق رابط کنترل‌شده MemoryStore به حافظه خود دسترسی داشته باشد و از حملات تزریق پرامپت برای انتقال محتوای مخرب وب به ذخیره‌ساز بلندمدت جلوگیری شود. از آنجایی که دایرکتوری حافظه حاوی داده‌های حساس کاربر است، باید با مجوزهای استاندارد سیستم‌عامل و سیستم‌های پشتیبان (Backup) محافظت شود.

تست جریان کاری

در یک تست عملی، کاربر می‌تواند به عامل بگوید: «من پاسخ‌های مختصر را ترجیح می‌دهم. این را برای جلسات آینده به خاطر بسپار». عامل ابتدا متد read_memory({'scope': 'user'}) را فراخوانی می‌کند، متوجه خالی بودن آن می‌شود و سپس append_memory({'scope': 'user', 'content': 'The user prefers concise answers.'}) را اجرا می‌کند.

در یک جلسه بعدی، هنگامی که از عامل خواسته می‌شود در درک یک پروژه کمک کند، او به‌طور خودمختار هر دو محدوده را می‌خواند. او عبارت «برای دستورات پایتون از uv استفاده کن» را از حافظه پروژه و «کاربر پاسخ‌های مختصر را ترجیح می‌دهد» را از حافظه کاربر بازیابی می‌کند و این امر به او اجازه می‌دهد بدون نیاز به یادآوری مجدد، پاسخ خود را شخصی‌سازی کند.

این تغییر در معماری، فرض بنیادی مبنی بر اینکه عامل‌ها باید هر بار هنگام بوت شدن، محیط خود را «دوباره یاد بگیرند» را تغییر می‌دهد. با تبدیل حافظه به یک دفتر کل (Ledger) محدود و فقط-افزودنی (Append-only) از حقایق، توسعه‌دهندگان می‌توانند عامل‌هایی بسازند که واقعاً با جریان کاری کاربر تکامل می‌یابند.

برای کاربر نهایی، این به معنای داشتن عاملی است که به خاطر می‌سپارد شما پاسخ‌های مختصر را می‌پسندید یا اینکه یک مهاجرت خاص دیروز به طور ناقص انجام شده است. این قابلیت، هوش مصنوعی را از یک ابزار بدون وضعیت (Stateless) به یک همکار پایدار تبدیل می‌کند که تاریخچه‌ای مشترک با توسعه‌دهنده دارد.

توسعه‌دهندگانی که قصد پیاده‌سازی این سیستم را دارند، باید با بازبینی استفاده فعلی خود از زمینه (Context) شروع کنند تا تشخیص دهند کدام حقایق واقعاً پایدار و کدام یک گذرا هستند. گام بعدی در این تکامل، مدیریت کامل سوابق جلسات است، از جمله قابلیت لیست کردن جلسات گذشته، از سرگیری کارهای ناتمام و فشرده‌سازی تاریخچه‌های طولانی برای گنجاندن در پنجره مدل.

گام بعدی شما

  • بررسی کنید کدام داده‌های فعلی در پرامپت‌های شما «پایدار» هستند و می‌توانند به فایل‌های Markdown منتقل شوند.
  • پیاده‌سازی یک لایه بازبینی (Review) برای فایل‌های حافظه تا از عدم ورود داده‌های غلط به حافظه بلندمدت مطمئن شوید.
  • تست کنید که آیا تفکیک حافظه کاربر و پروژه، نرخ توهم مدل را در پروژه‌های بزرگ کاهش می‌دهد یا خیر.

اما مدیریت کامل سوابق جلسات و قابلیت بازگشت به کارهای ناتمام، گام بعدی این تکامل است که در تحلیل‌های آینده بررسی خواهیم کرد.

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

این روش هزینه استنتاج را با کاهش توکن‌های تکراری در پنجره زمینه پایین می‌آورد و تداوم تجربه کاربر را تضمین می‌کند. اعتبار این رویکرد در سادگی پیاده‌سازی و قابلیت بازبینی مستقیم توسط انسان است.

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

برنامه‌نویسان ایرانی می‌توانند بدون نیاز به سرویس‌های ابری گران‌قیمت یا دیتابیس‌های برداری پیچیده، با همین متد ساده، عامل‌های هوشمند با حافظه بلندمدت را به‌صورت محلی پیاده‌سازی کنند.

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

جایگزینی پایگاه‌داده‌های برداری با فایل‌های متنی ساده برای حافظه عامل‌ها، یک بازگشت به سادگی است که کارایی را بالا می‌برد. این رویکرد نشان می‌دهد که برای بسیاری از کاربردهای عملی، ساختارهای داده‌ای سنگین تنها باعث پیچیدگی استنتاج می‌شوند، در حالی که یک دفترچه یادداشت دیجیتال (Markdown) برای مدل‌های زبانی بسیار قابل‌فهم‌تر و قابل‌ویرایش‌تر است.

منابع

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

گفتگو

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

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

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

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

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

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

دات‌هوش

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

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