Sessions and memory

هرس نشست

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

چرا اهمیت دارد

در نشست‌های طولانی، خروجی ابزارها انباشته می‌شود و پنجره زمینه را متورم می‌کند. این امر هزینه را افزایش می‌دهد و ممکن است Compaction را زودتر از حد لازم تحمیل کند.

هرس به‌ویژه برای ذخیره‌سازی موقت پرامپت Anthropic ارزشمند است. پس از انقضای TTL حافظه موقت، درخواست بعدی کل پرامپت را دوباره در حافظه موقت ذخیره می‌کند. هرس اندازه نوشتن در حافظه موقت را کاهش می‌دهد و مستقیماً هزینه را پایین می‌آورد.

نحوه کار

هرس در حالت cache-ttl اجرا می‌شود و به عبور هم‌زمان از بررسی زمان و بررسی اندازه زمینه مشروط است:

  1. تا انقضای TTL حافظه موقت صبر کنید (هنگام تنظیم دستی، مقدار پیش‌فرض ۵ دقیقه است؛ برای پیش‌فرض خودکار Anthropic، پیش‌فرض‌های هوشمند را ببینید). پیش از پایان TTL، هرس کاملاً نادیده گرفته می‌شود تا استفاده مجدد از حافظه موقت پرامپت برای نوبت‌های نزدیک حفظ شود.
  2. پس از پایان TTL، اندازه کل زمینه را نسبت به پنجره زمینه مدل تخمین بزنید. اگر نسبت کمتر از softTrimRatio (مقدار پیش‌فرض ۰٫۳) باشد، هرس را نادیده بگیرید و ساعت TTL را در حال اجرا نگه دارید.
  3. نتایج بیش‌ازحد بزرگ ابزارها در بالای این نسبت را به‌صورت نرم کوتاه کنید: ابتدا و انتهای آن‌ها را نگه دارید (به‌طور پیش‌فرض هرکدام ۱۵۰۰ نویسه، با سقف مجموع ۴۰۰۰ نویسه) و در میان آن‌ها ... درج کنید.
  4. اگر نسبت همچنان برابر یا بیشتر از hardClearRatio (مقدار پیش‌فرض ۰٫۵) باشد و دست‌کم minPrunableToolChars (مقدار پیش‌فرض ۵۰٬۰۰۰) نویسه از محتوای قابل هرس ابزار باقی مانده باشد، آن نتایج را به‌طور کامل پاک کنید: محتوای آن‌ها را با یک جای‌نگهدار (به‌طور پیش‌فرض [محتوای نتیجه قدیمی ابزار پاک شد]) جایگزین کنید.
  5. ساعت TTL را فقط زمانی بازنشانی کنید که هرس واقعاً زمینه را تغییر داده باشد؛ به‌این‌ترتیب، درخواست‌های پیگیری از حافظه موقت تازه استفاده مجدد می‌کنند.

دو قاعده ایمنی مستقل از آستانه‌ها اعمال می‌شود: جدیدترین نوبت‌های دستیار به تعداد keepLastAssistants (مقدار پیش‌فرض ۳) هرگز هرس نمی‌شوند و هیچ‌چیز پیش از نخستین پیام کاربر در نشست هرگز هرس نمی‌شود (این کار از خواندن‌های راه‌اندازی مانند SOUL.md/USER.md محافظت می‌کند).

فقط پیام‌های toolResult واجد شرایط هستند؛ متن عادی مکالمه دست‌نخورده باقی می‌ماند. برای تعیین دامنه نام ابزارهای قابل هرس، از agents.defaults.contextPruning.tools.{allow,deny} استفاده کنید.

پاک‌سازی قدیمی تصاویر

OpenClaw همچنین برای نشست‌هایی که بلوک‌های خام تصویر یا نشانگرهای رسانه‌ای آب‌رسانی پرامپت را در تاریخچه نگه می‌دارند، یک نمای بازپخش مجزای هم‌توان می‌سازد.

  • این نما ۳ نوبت تکمیل‌شده اخیر را بایت‌به‌بایت حفظ می‌کند تا پیشوندهای حافظه موقت پرامپت برای پیگیری‌های اخیر پایدار بمانند. این تعداد همه نوبت‌های تکمیل‌شده را شامل می‌شود، نه فقط نوبت‌های دارای تصویر؛ بنابراین نوبت‌های صرفاً متنی نیز این پنجره را مصرف می‌کنند.
  • در نمای بازپخش، بلوک‌های قدیمی و ازقبل‌پردازش‌شده تصویر از تاریخچه user یا toolResult با [داده تصویر حذف شد - قبلاً توسط مدل پردازش شده است] جایگزین می‌شوند.
  • ارجاع‌های متنی قدیمی رسانه مانند [رسانه پیوست‌شده: ...]، [تصویر: منبع: ...] و media://inbound/... با [ارجاع رسانه حذف شد - قبلاً توسط مدل پردازش شده است] جایگزین می‌شوند. نشانگرهای پیوست نوبت جاری دست‌نخورده می‌مانند تا مدل‌های بینایی همچنان بتوانند تصاویر تازه را آب‌رسانی کنند.
  • رونوشت خام نشست بازنویسی نمی‌شود؛ بنابراین نمایشگرهای تاریخچه همچنان می‌توانند ورودی‌های اصلی پیام و تصاویر آن‌ها را نمایش دهند.
  • این سازوکار از هرس عادی مبتنی بر TTL حافظه موقت در بالا جدا است. هدف آن جلوگیری از شکستن حافظه‌های موقت پرامپت در نوبت‌های بعدی بر اثر تکرار محموله‌های تصویری یا ارجاع‌های رسانه‌ای منسوخ است.

پیش‌فرض‌های هوشمند

Plugin همراه Anthropic، نخستین باری که یک نمایه احراز هویت Anthropic (یا Claude CLI) را حل می‌کند، هرس و تناوب Heartbeat را به‌طور خودکار پیکربندی می‌کند؛ اما فقط برای فیلدهایی که قبلاً به‌صراحت تنظیم نکرده‌اید:

حالت احراز هویت contextPruning.mode contextPruning.ttl heartbeat.every
OAuth/توکن (شامل استفاده مجدد از Claude CLI) cache-ttl 1h 1h
کلید API cache-ttl 1h 30m

اگر agents.defaults.contextPruning.mode یا agents.defaults.heartbeat.every را خودتان تنظیم کنید، OpenClaw آن‌ها را بازنویسی نمی‌کند. این پیش‌فرض خودکار فقط برای احراز هویت خانواده Anthropic فعال می‌شود؛ برای سایر ارائه‌دهندگان، هرس off است مگر اینکه آن را پیکربندی کنید.

فعال یا غیرفعال‌کردن

هرس برای ارائه‌دهندگان غیر Anthropic به‌طور پیش‌فرض غیرفعال است. برای فعال‌کردن:

json5
{  agents: {    defaults: {      contextPruning: { mode: "cache-ttl", ttl: "5m" },    },  },}

برای غیرفعال‌کردن: mode: "off" را تنظیم کنید.

هرس در برابر Compaction

هرس Compaction
چه کاری؟ نتایج ابزارها را کوتاه می‌کند مکالمه را خلاصه می‌کند
ذخیره می‌شود؟ خیر (برای هر درخواست) بله (در رونوشت)
دامنه فقط نتایج ابزارها کل مکالمه

این دو مکمل یکدیگرند؛ هرس، خروجی ابزارها را بین چرخه‌های Compaction کم‌حجم نگه می‌دارد.

مطالعه بیشتر

مرتبط

Was this useful?
On this page

On this page