تصور کنید دستیاری دارید که میداند شما قهوه دوست دارید، اما فراموش میکند که دیروز سه بار برای رزرو پرواز شما تلاش کرده و شکست خورده است؛ این همان شکافی است که عاملهای هوشمند فعلاً با آن دستوپنجه نرم میکنند. جیمز میلر، توسعهدهنده مستقل، راهکاری برای پایان دادن به این «فراموشی دائمی» یافته است. او متوجه شد که اکثر عاملهای خودمختار با یک مشکل همیشگی روبرو هستند: آنها در هر جلسه با یک صفحهٔ سفید بیدار میشوند و حافظه بلندمدت واقعی ندارند.
به نقل از گزارش dev.to، میلر در ۷ ژوئیه ۲۰۲۶ پیادهسازی فنی جدیدی را به اشتراک گذاشت که به عاملهای OpenClaw اجازه میدهد سوابقی ساختاریافته و دائمی از هر اقدام خود داشته باشند. در این روش، برخلاف متدهای رایج، دیگر لازم نیست عامل بر اساس قضاوتهای ناقص خود تصمیم بگیرد چه چیزی «مهم» است و چه چیزی را باید به خاطر بسپارد؛ بلکه سیستمی ایجاد شده که هر اتفاق را بدون دخالت مدل ثبت میکند.
بسیاری از عاملها در هر جلسه با یک صفحهٔ سفید بیدار میشوند. اگرچه OpenClaw امکان استفاده از فایلهای حافظه استاتیک را میدهد، اما این عکسبرداریهای لحظهای نمیتوانند تاریخچه زنده یک جریان کاری را ثبت کنند. همانطور که در تحلیلهای قبلی ما دربارهی حافظهٔ عامل (Agent Memory) اشاره کردیم، تکیه بر حافظه داخلی مدلها اغلب به توهم منجر میشود. این یعنی مدل ممکن است تصور کند کاری را انجام داده در حالی که در واقعیت شکست خورده است. این چالشها ما را به یاد راهکارهای Lorekeeper برای کاهش فراموشی میاندازد که از چرخههای بازاندیشی برای تثبیت حافظه استفاده میکند.
زمینه: شکست حافظههای دستی
میلر پیش از رسیدن به این راهکار، حدود شش ماه با OpenClaw کار کرد و دریافت روشهای سنتی مانند ایجاد فایلهای Markdown در مسیر memory/YYYY-MM-DD.md کاملاً ناکارآمد هستند. طبق مستندات OpenClaw، این روش پیشنهادی است، اما یک نقطه ضعف بزرگ دارد: این متد به تصمیم خودِ عامل وابسته است تا تعیین کند چه زمانی و چه مطلبی را بنویسد.
در عمل، مدیریت دستی حافظه خستهکننده و مستعد خطا است. میلر خاطرنشان کرد که عاملها اغلب تصمیمات بدی میگیرند؛ بهخصوص در ساعات انتهایی کار (مثلاً ساعت ۲ صبح که مدل اصطلاحاً «خسته» است)، منجر به ایجاد خلاصههای بیفایده میشوند یا کلاً زمینههای حیاتی را حذف میکنند. از آنجایی که «فایل روح» (Soul File) عامل و فایلهای کاربر اسنپشاتهای استاتیک هستند، نمیتوانند به عنوان سوابق زنده برای یک جریان کاری پویا عمل کنند. این نقص در مدیریت سوابق، مشابه همان تلهٔ بازنویسی سوابقی است که در پژوهشهای UIUC منجر به افت شدید دقت عاملها شد.
او برای حل این مشکل، مسئولیت ثبت وقایعات را از دوش عامل برداشت و به سطح زمان اجرا (Runtime) منتقل کرد. او یک پایگاهداده سبک SQLite (اسکیلایت) — مثل یک دفترچه یادداشت دیجیتالِ بسیار سریع که هر اتفاق را با برچسب زمان ثبت میکند — در مسیر ~/.openclaw/memory/agent_memory.db پیاده کرد. این رویکرد تضمین میکند که دادهها بهطور خودکار کپچر شوند، به جای اینکه از هوش مصنوعی خواسته شود «یادش بیاید» پیشرفت خود را ثبت کند؛ تکلیفی که عاملها معمولاً در حین انجام وظایف پیچیده در آن شکست میخورند.
جزئیات فنی و نقشه راه
ساختار فنی این سیستم بر پایه یک جدول واحد به نام events است که با کتابخانههای sqlite3 و json مدیریت میشود. این جدول بهگونهای طراحی شده که پرسوجوهای سریع را ممکن سازد و شامل فیلدهای زیر است: id (کلید اصلی)، timestamp (برچسب زمانی)، session_id (شناسه جلسه)، event_type (نوع رویداد)، summary (خلاصه)، details (جزئیات) و tags (تگها).
ویژگیهای کلیدی این معماری عبارتند از:
- محرکهای خودکار: سیستم بهجای سطح عامل، به زمان اجرا متصل است و موارد زیر را ثبت میکند:
- فراخوانی ابزارها: ثبت نام ابزار، آرگومانهای پاکسازی شده و وضعیت نتیجه (مثلاً با بررسی
success: result.get("ok", False)). - مرزهای جلسه: ثبت دقیق زمان بیدار شدن یا به خواب رفتن عامل.
- محرکهای Cron: ثبت اینکه کدام شغل (Job) خاص اجرا شده and نتیجه آن چه بوده است.
- خطاها: ثبت تمام استثناها (Exceptions)، شامل نوع دقیق خطا و متن پیام آن.
- پیامهای انسانی: ثبت متن واقعی ارسالی توسط کاربر، همراه با یک پرچم (Flag) برای شناسایی محتوای حساس.
- فراخوانی ابزارها: ثبت نام ابزار، آرگومانهای پاکسازی شده و وضعیت نتیجه (مثلاً با بررسی
- دادههای ساختاریافته: جزئیات و تگها بهصورت رشتههای کدگذاری شده JSON ذخیره میشوند تا انعطافپذیری متادادهها بدون نیاز به تغییر در اسکیما (ساختار) جدول حفظ شود.
- بهینهسازی جستوجو: با استفاده از ایندکس SQL روی
session_idوtimestamp(موسوم بهidx_session)، عامل میتواند از طریق توابعی مانندget_recent_events()، یک خط زمانی دقیق یا فعالیتهای ۲۴ ساعت گذشته را در چند میلیثانیه بازیابی کند.
میلر پیش از رسیدن به این نتیجه، سه معماری مختلف را آزمایش کرد. او دریافت فایلهای متنی ساده برای پرسوجوهای موثر غیرممکن هستند؛ اگرچه grep برای رشتههای دقیق کار میکند، اما نمیتواند پرسوجوهای پیچیدهای مثل «تمام فراخوانیهای شکستخورده ابزارها در روز گذشته را نشان بده» را مدیریت کند. او همچنین JSON Lines را امتحان کرد که برای پرسوجوها بهتر بود اما چون فقط قابلیت Append (افزودن به انتها) داشت و فاقد ایندکس بود، با رشد فایلها سرعت سیستم کاهش مییافت. در مقابل، نسخه SQLite حتی پس از شش ماه ثبت مداوم لاگها، حجمش زیر ۱ مگابایت باقی ماند.
این تغییر، گذاری از «حافظه مبهم» به «سنجش دقیق» (Exact Instrumentation) است. با تبدیل حافظه به یک پایگاهداده از رویدادهای سیستمی به جای دفترچه خاطراتی از خلاصهها، ریسک توهم (Hallucination) — یعنی وقتی مدل با اطمینان چیزی میگوید که وجود ندارد — حذف شده است. اکنون عامل دیگر «حدس نمیزند» هفته پیش چه اتفاق افتاده، بلکه یک مسیر حسابرسی (Audit Trail) واقعی و مستند را جستوجو میکند. این رویکرد در واقع تأکیدی بر این است که مدیریت حافظه بیش از آنکه یک قابلیت فنی ساده باشد، یک مسئلهی حکمرانی داده است تا از هرگونه تخریب یا تداخل اطلاعاتی جلوگیری شود.
برای یک توسعهدهنده عملیاتی، این یعنی قابلیت اطمینان عامل دیگر به کیفیت پرامپت وابسته نیست؛ بلکه ابزارهای سنجش جایگزین مهندسی پرامپت میشوند. اگر زمان اجرا شکست یک ابزار را ثبت کند، عامل پس از بازراهاندازی این حقیقت را بهصورت عینی میبیند و میتواند بلافاصله استراتژی خود را تغییر دهد.
میلر اکنون در حال تبدیل این سیستم به یک مدل دو لایه است. او یک مرحله «فشردهسازی حافظه» را اضافه میکند: یک شغل شبانه (Cron Job) که وقایع ۲۴ ساعت گذشته SQLite را میخواند و آنها را در یک پاراگراف خلاصه میکند تا در یک فایل متنی روزانه ذخیره شود. این کار تضمین میکند که اگر روزی پایگاهداده از دسترس خارج شود، فایلهای متنی همچنان یک خلاصه ساختاریافته از تاریخچه را ارائه دهند.
اگر با عدم اطمینان عاملها در محیط عملیاتی دستوپنجه نرم میکنید، به جای اصلاح مداوم پرامپتهای سیستمی، یک مسیر حسابرسی در سطح سیستم بسازید. کل این پیادهسازی حدود ۱۵۰ خط کد پایتون است و میتوان آن را با مجوز MIT به هر چارچوب عاملی که از قلابهای (Hooks) فراخوانی ابزار پشتیبانی میکند، اضافه کرد.
گام بعدی شما
- بررسی ساختار جدول
eventsمیلر برای پیادهسازی در پروژههای شخصی. - جایگزینی لاگهای متنی ساده با SQLite برای کاهش تأخیر در بازیابی حافظه.
- پیادهسازی یک Cron Job برای خلاصهسازی شبانه وقایع دیتابیس.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو