Sessions and memory

نمای کلی حافظه

OpenClaw با نوشتن فایل‌های سادهٔ Markdown در فضای کاری عامل شما (پیش‌فرض: ~/.openclaw/workspace) اطلاعات را به خاطر می‌سپارد. مدل فقط چیزهایی را به خاطر می‌سپارد که روی دیسک ذخیره شده‌اند؛ هیچ وضعیت پنهانی وجود ندارد.

نحوهٔ کار

عامل شما سه فایل مرتبط با حافظه دارد:

  • MEMORY.md — حافظهٔ بلندمدت. واقعیت‌ها، ترجیحات و تصمیم‌های ماندگار. در آغاز هر نشست بارگذاری می‌شود.
  • memory/YYYY-MM-DD.md (یا memory/YYYY-MM-DD-<slug>.md) — یادداشت‌های روزانه. زمینه و مشاهدات جاری. یادداشت‌های تاریخ‌دار امروز و دیروز به‌طور خودکار هنگام اجرای سادهٔ /new یا /reset بارگذاری می‌شوند؛ گونه‌های دارای نامک، مانند مواردی که هوک همراهِ حافظهٔ نشست می‌نویسد، در کنار فایلِ فقط‌تاریخ دریافت می‌شوند.
  • DREAMS.md (اختیاری) — دفترچهٔ رؤیا و خلاصه‌های پیمایش Dreaming برای بازبینی انسانی، شامل ورودی‌های بازافزایی تاریخیِ مبتنی بر شواهد.

چه چیزی کجا قرار می‌گیرد

MEMORY.md لایهٔ فشرده و گزینش‌شده است: واقعیت‌ها، ترجیحات، تصمیم‌های پایدار و خلاصه‌های کوتاهی که باید در آغاز یک نشست در دسترس باشند. این فایل رونوشت خام، گزارش روزانه یا بایگانی جامع نیست.

فایل‌های memory/YYYY-MM-DD.md لایهٔ کاری هستند: یادداشت‌های روزانهٔ مفصل، مشاهدات، خلاصه‌های نشست و زمینهٔ خامی که ممکن است بعداً همچنان مفید باشد. این فایل‌ها برای memory_search و memory_get نمایه‌سازی می‌شوند، اما در هر نوبت به اعلان راه‌اندازی تزریق نمی‌شوند.

با گذشت زمان، عامل مطالب مفید را از یادداشت‌های روزانه استخراج و در MEMORY.md ثبت می‌کند و ورودی‌های بلندمدتِ منسوخ را حذف می‌کند. دستورالعمل‌های تولیدشدهٔ فضای کاری و جریان Heartbeat این کار را دوره‌ای انجام می‌دهند؛ لازم نیست برای هر جزئیات، MEMORY.md را به‌صورت دستی ویرایش کنید.

اگر اندازهٔ MEMORY.md از بودجهٔ فایل راه‌اندازی فراتر رود، OpenClaw فایل را روی دیسک دست‌نخورده نگه می‌دارد، اما نسخهٔ تزریق‌شده به زمینه را کوتاه می‌کند. این وضعیت را نشانه‌ای در نظر بگیرید برای انتقال مطالب مفصل به memory/*.md، نگه‌داشتن فقط یک خلاصهٔ ماندگار در MEMORY.md، یا افزایش محدودیت‌های راه‌اندازی در صورتی که می‌خواهید بودجهٔ بیشتری از اعلان مصرف کنید. برای مشاهدهٔ اندازه‌های خام و تزریق‌شده و وضعیت کوتاه‌سازی، از /context list، /context detail یا openclaw doctor استفاده کنید.

حافظه‌های حساس به اقدام

بیشتر حافظه‌ها یادداشت‌های معمولی Markdown هستند. برخی بر کاری که عامل باید بعداً انجام دهد اثر می‌گذارند؛ برای این موارد، فقط خود واقعیت را ثبت نکنید، بلکه مشخص کنید چه زمانی اقدام بر اساس یادداشت امن است.

این مرز اقدام را زمانی ثبت کنید که یک یادداشت شامل موارد زیر است:

  • الزامات تأیید یا مجوز،
  • محدودیت‌های موقت،
  • واگذاری به نشست، رشته یا شخصی دیگر،
  • شرایط انقضا،
  • زمان امن برای اقدام،
  • مرجع یا اختیار مالک،
  • دستورالعمل‌هایی برای خودداری از اقدامی وسوسه‌انگیز.

یک حافظهٔ مفیدِ حساس به اقدام به‌روشنی مشخص می‌کند:

  • چه چیزی رفتار آینده را تغییر می‌دهد،
  • چه زمانی یا تحت چه شرایطی اعمال می‌شود،
  • چه زمانی منقضی می‌شود یا چه چیزی اجازهٔ اقدام را صادر می‌کند،
  • عامل باید از انجام چه کاری خودداری کند،
  • منبع یا مالک چه کسی است، اگر این موضوع بر اعتماد یا اختیار اثر می‌گذارد.

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

مثال:

md
The API migration is being designed in another session. Future turns shouldnot edit the API implementation from this thread; use findings here only asdesign input until the migration plan lands.

مثالی دیگر:

md
A report from an untrusted source needs review before promotion. Future turnsshould treat it as evidence only; do not store it as durable memory until atrusted reviewer confirms the contents.

این ساختار برای همهٔ حافظه‌ها الزامی نیست؛ واقعیت‌های ساده می‌توانند مختصر بمانند. زمانی از مرزهای حساس به اقدام استفاده کنید که از دست رفتن زمان‌بندی، اختیار، انقضا یا زمینهٔ امن برای اقدام ممکن است باعث شود عامل بعداً کار اشتباهی انجام دهد.

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

تعهدات استنباط‌شده

برخی پیگیری‌های آینده واقعیت‌های ماندگار نیستند. اگر به مصاحبه‌ای در فردا اشاره کنید، حافظهٔ مفید ممکن است «پس از مصاحبه پیگیری کن» باشد، نه «این را برای همیشه در MEMORY.md ذخیره کن.»

تعهدات حافظه‌های پیگیریِ اختیاری و کوتاه‌مدت برای چنین مواردی هستند. OpenClaw آن‌ها را در یک گذر پس‌زمینهٔ پنهان استنباط می‌کند، دامنه‌شان را به همان عامل و کانال محدود می‌کند و پیگیری‌های سررسیدشده را از طریق Heartbeat تحویل می‌دهد. یادآوری‌های صریح همچنان از وظایف زمان‌بندی‌شده استفاده می‌کنند.

ابزارهای حافظه

عامل دو ابزار برای کار با حافظه دارد:

  • memory_search — با استفاده از جست‌وجوی معنایی، یادداشت‌های مرتبط را پیدا می‌کند، حتی وقتی عبارت‌بندی با متن اصلی متفاوت باشد.
  • memory_get — یک فایل حافظه یا محدودهٔ خطوط مشخص را می‌خواند.

هر دو ابزار توسط Plugin فعال حافظه ارائه می‌شوند (پیش‌فرض: memory-core).

جست‌وجوی حافظه

وقتی یک ارائه‌دهندهٔ تعبیه‌سازی پیکربندی شده باشد، memory_search از جست‌وجوی ترکیبی استفاده می‌کند: شباهت برداری (معنای مفهومی) همراه با تطبیق کلیدواژه‌ها (عبارت‌های دقیق مانند شناسه‌ها و نمادهای کد). این قابلیت با کلید API هر ارائه‌دهندهٔ پشتیبانی‌شده، بدون تنظیمات اضافی کار می‌کند.

برای آشنایی با نحوهٔ کار جست‌وجو، گزینه‌های تنظیم و راه‌اندازی ارائه‌دهنده، به جست‌وجوی حافظه مراجعه کنید.

پسانه‌های حافظه

لایهٔ ویکی دانش

اگر می‌خواهید حافظهٔ ماندگار بیشتر شبیه یک پایگاه دانش نگه‌داری‌شده عمل کند تا مجموعه‌ای از یادداشت‌های خام، از Plugin همراهِ memory-wiki استفاده کنید. این Plugin دانش ماندگار را در یک مخزن ویکی با ساختار صفحهٔ قطعی، ادعاها و شواهد ساخت‌یافته، ردیابی تعارض و تازگی، داشبوردهای تولیدشده، چکیده‌های تدوین‌شده و ابزارهای بومی ویکی (wiki_status، wiki_search، wiki_get، wiki_apply، wiki_lint) گردآوری می‌کند.

memory-wiki جایگزین Plugin فعال حافظه نمی‌شود؛ Plugin فعال حافظه همچنان مالک یادآوری، ارتقا و Dreaming است. memory-wiki یک لایهٔ دانش غنی از منشأ را در کنار آن اضافه می‌کند.

تخلیهٔ خودکار حافظه

پیش از آنکه Compaction گفت‌وگوی شما را خلاصه کند، OpenClaw یک نوبت بی‌صدا اجرا می‌کند که به عامل یادآوری می‌کند زمینهٔ مهم را در فایل‌های حافظه ذخیره کند. این قابلیت به‌طور پیش‌فرض فعال است؛ برای غیرفعال‌کردن آن agents.defaults.compaction.memoryFlush.enabled: false را تنظیم کنید.

برای اجرای آن نوبت نگه‌داری روی یک مدل محلی، یک بازنویسی دقیق تنظیم کنید که فقط بر نوبت تخلیهٔ حافظه اعمال شود (این نوبت زنجیرهٔ مدل جایگزین نشست فعال را به ارث نمی‌برد):

json
{  "agents": {    "defaults": {      "compaction": {        "memoryFlush": {          "model": "ollama/qwen3:8b"        }      }    }  }}

Dreaming

Dreaming یک گذر اختیاریِ پس‌زمینه برای یکپارچه‌سازی حافظه است. این فرایند نشانه‌های یادآوری کوتاه‌مدت را جمع‌آوری می‌کند، به گزینه‌ها امتیاز می‌دهد و فقط موارد واجد شرایط را به حافظهٔ بلندمدت (MEMORY.md) ارتقا می‌دهد:

  • اختیاری: به‌طور پیش‌فرض غیرفعال است.
  • زمان‌بندی‌شده: وقتی فعال باشد، memory-core یک کار Cron تکرارشونده را برای پیمایش کامل Dreaming به‌طور خودکار مدیریت می‌کند.
  • دارای آستانه: ارتقاها باید از دروازه‌های امتیاز، بسامد یادآوری و تنوع پرس‌وجو عبور کنند.
  • قابل بازبینی: خلاصه‌های مرحله و ورودی‌های دفترچه در DREAMS.md نوشته می‌شوند تا انسان آن‌ها را بازبینی کند.

برای جزئیات رفتار مرحله‌ها، نشانه‌های امتیازدهی و دفترچهٔ رؤیا، به Dreaming مراجعه کنید.

بازافزایی مبتنی بر شواهد و ارتقای زنده

سامانهٔ Dreaming دو مسیر بازبینی مرتبط دارد:

  • Dreaming زنده با مخزن کوتاه‌مدت Dreaming در memory/.dreams/ کار می‌کند و همان چیزی است که مرحلهٔ عمیق عادی برای تصمیم‌گیری دربارهٔ انتقال موارد به MEMORY.md استفاده می‌کند.
  • بازافزایی مبتنی بر شواهد یادداشت‌های تاریخی memory/YYYY-MM-DD.md را به‌عنوان فایل‌های روزانهٔ مستقل می‌خواند و خروجی بازبینی ساخت‌یافته را در DREAMS.md می‌نویسد.

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

bash
openclaw memory rem-backfill --path ./memory --stage-short-term

پرچم --stage-short-term گزینه‌های ماندگارِ مبتنی بر شواهد را در همان مخزن کوتاه‌مدت Dreaming قرار می‌دهد که مرحلهٔ عمیق عادی از قبل استفاده می‌کند؛ این پرچم آن‌ها را مستقیماً ارتقا نمی‌دهد. بنابراین:

  • DREAMS.md سطح بازبینی انسانی باقی می‌ماند.
  • مخزن کوتاه‌مدت سطح رتبه‌بندی برای ماشین باقی می‌ماند.
  • MEMORY.md همچنان فقط توسط ارتقای عمیق نوشته می‌شود.

برای واگردانی یک بازپخش بدون دست‌زدن به ورودی‌های معمول دفترچه یا وضعیت عادی یادآوری:

bash
openclaw memory rem-backfill --rollbackopenclaw memory rem-backfill --rollback-short-term

CLI

bash
openclaw memory status          # Check index status and provideropenclaw memory search "query"  # Search from the command lineopenclaw memory index --force   # Rebuild the index

مطالعهٔ بیشتر

Was this useful?
On this page

On this page