Sessions and memory

هرس نشست

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

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

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

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

نحوه کار

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

  1. منتظر بمانید تا TTL کش منقضی شود (هنگام تنظیم دستی، مقدار پیش‌فرض 5 دقیقه است؛ برای پیش‌فرض خودکار Anthropic به پیش‌فرض‌های هوشمند مراجعه کنید). پیش از سپری‌شدن TTL، هرس به‌طور کامل رد می‌شود تا استفاده مجدد از کش پرامپت برای نوبت‌های نزدیک حفظ شود.
  2. پس از سپری‌شدن TTL، اندازه کل زمینه را نسبت به پنجره زمینه مدل تخمین بزنید. اگر نسبت کمتر از softTrimRatio (پیش‌فرض 0.3) باشد، هرس را رد کنید و شمارش زمان TTL را ادامه دهید.
  3. نتایج بیش‌ازحد بزرگ ابزارها را که بالاتر از نسبت هستند، به‌صورت نرم کوتاه کنید: ابتدا و انتهای آن‌ها را نگه دارید (به‌طور پیش‌فرض هرکدام 1500 نویسه و در مجموع حداکثر 4000 نویسه) و ... را میان آن‌ها درج کنید.
  4. اگر نسبت همچنان برابر یا بیشتر از hardClearRatio (پیش‌فرض 0.5) باشد و دست‌کم minPrunableToolChars (پیش‌فرض 50,000) از محتوای قابل‌هرس ابزارها باقی مانده باشد، آن نتایج را به‌طور کامل پاک کنید: محتوای آن‌ها را با یک جای‌نگهدار (پیش‌فرض [Old tool result content cleared]) جایگزین کنید.
  5. شمارش زمان TTL را فقط زمانی بازنشانی کنید که هرس واقعاً زمینه را تغییر داده باشد، تا درخواست‌های بعدی از کش تازه استفاده مجدد کنند.

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

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

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

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

  • این نما 3 نوبت تکمیل‌شده اخیر را بایت‌به‌بایت حفظ می‌کند تا پیشوندهای کش پرامپت برای پیگیری‌های اخیر پایدار بمانند. این تعداد همه نوبت‌های تکمیل‌شده، نه فقط نوبت‌های دارای تصویر، را شامل می‌شود؛ بنابراین نوبت‌های صرفاً متنی نیز این بازه را مصرف می‌کنند.
  • در نمای بازپخش، بلوک‌های تصویری قدیمی و ازپیش‌پردازش‌شده از تاریخچه user یا toolResult با [image data removed - already processed by model] جایگزین می‌شوند.
  • ارجاع‌های متنی قدیمی رسانه مانند [media attached: ...]، [Image: source: ...] و media://inbound/... با [media reference removed - already processed by model] جایگزین می‌شوند. نشانگرهای پیوست نوبت جاری دست‌نخورده می‌مانند تا مدل‌های بینایی همچنان بتوانند تصاویر تازه را آب‌رسانی کنند.
  • رونوشت خام نشست بازنویسی نمی‌شود، بنابراین نمایشگرهای تاریخچه همچنان می‌توانند ورودی‌های اصلی پیام و تصاویر آن‌ها را نمایش دهند.
  • این فرایند از هرس عادی مبتنی بر 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