---
read_when:
    - می‌خواهید فشرده‌سازی خودکار و /compact را درک کنید
    - در حال اشکال‌زدایی نشست‌های طولانی هستید که به محدودیت‌های زمینه می‌رسند
summary: OpenClaw چگونه مکالمه‌های طولانی را خلاصه می‌کند تا در محدودهٔ محدودیت‌های مدل باقی بماند
title: Compaction
x-i18n:
    generated_at: "2026-07-16T16:40:04Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: f00fb0cf59184ef450f1fc4d39a21a40ee4e8327d872766bca7f3642c0145514
    source_path: concepts/compaction.md
    workflow: 16
---

هر مدل یک پنجرهٔ زمینه دارد: حداکثر تعداد توکن‌هایی که می‌تواند پردازش کند. وقتی یک مکالمه به این حد نزدیک می‌شود، OpenClaw پیام‌های قدیمی‌تر را در یک خلاصه **فشرده می‌کند** تا گفتگو بتواند ادامه یابد.

## نحوهٔ کار

1. نوبت‌های قدیمی‌تر مکالمه در یک مدخل فشرده خلاصه می‌شوند.
2. خلاصه در رونوشت نشست ذخیره می‌شود.
3. پیام‌های اخیر دست‌نخورده نگه داشته می‌شوند.

OpenClaw هنگام انتخاب نقطهٔ تقسیم برای Compaction، فراخوانی‌های ابزار دستیار را همراه با مدخل‌های `toolResult` متناظرشان نگه می‌دارد. اگر نقطه درون یک بلوک ابزار قرار بگیرد، OpenClaw مرز را جابه‌جا می‌کند تا جفت کنار هم بماند و دنبالهٔ خلاصه‌نشدهٔ فعلی حفظ شود.

تاریخچهٔ کامل مکالمه روی دیسک باقی می‌ماند. Compaction فقط آنچه مدل در نوبت بعدی می‌بیند تغییر می‌دهد.

<Note>
پیکربندی‌های جدید به‌طور پیش‌فرض `agents.defaults.compaction.mode` را روی `"safeguard"` تنظیم می‌کنند (محافظ‌های سخت‌گیرانه‌تر، ممیزی کیفیت خلاصه). برای انصراف، `mode: "default"` را صریحاً تنظیم کنید.
</Note>

## Compaction خودکار

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

موارد زیر را خواهید دید:

- `embedded run auto-compaction start` / `complete` در گزارش‌های عادی Gateway.
- `🧹 Auto-compaction complete` در حالت پرجزئیات.
- `/status` که `🧹 Compactions: <count>` را نشان می‌دهد.

<Info>
پیش از Compaction، OpenClaw به‌طور خودکار به عامل یادآوری می‌کند یادداشت‌های مهم را در فایل‌های [حافظه](/fa/concepts/memory) ذخیره کند. این کار از ازدست‌رفتن زمینه جلوگیری می‌کند.
</Info>

<AccordionGroup>
  <Accordion title="الگوهای خطای سرریزی که OpenClaw تشخیص می‌دهد">
    OpenClaw ده‌ها رشتهٔ خطای سرریز مختص ارائه‌دهندگان مختلف (Anthropic، OpenAI، Bedrock، Gemini، Ollama، OpenRouter و موارد دیگر) را تطبیق می‌دهد. نمونه‌های رایج:

    - `request_too_large`
    - `context length exceeded`
    - `input exceeds the maximum number of tokens`
    - `input token count exceeds the maximum number of input tokens` (Bedrock)
    - `input is too long for the model`
    - `ollama error: context length exceeded`

  </Accordion>
</AccordionGroup>

## Compaction دستی

برای اجبار Compaction، در هر گفتگو `/compact` را تایپ کنید. برای هدایت خلاصه، دستورالعمل اضافه کنید:

```text
/compact روی تصمیم‌های طراحی API تمرکز کن
```

وقتی `agents.defaults.compaction.keepRecentTokens` تنظیم شده باشد (پیش‌فرض: 20,000)، Compaction دستی آن نقطهٔ برش را رعایت می‌کند و دنبالهٔ اخیر را در زمینهٔ بازسازی‌شده نگه می‌دارد. بدون بودجهٔ نگه‌داری صریح، Compaction دستی مانند یک نقطهٔ بازرسی قطعی عمل می‌کند و فقط از خلاصهٔ جدید ادامه می‌یابد.

## پیکربندی

Compaction را در بخش `agents.defaults.compaction` فایل `openclaw.json` خود پیکربندی کنید. رایج‌ترین گزینه‌ها در ادامه آمده‌اند؛ برای مرجع کامل، به [بررسی عمیق مدیریت نشست](/fa/reference/session-management-compaction) مراجعه کنید.

### استفاده از مدلی متفاوت

به‌طور پیش‌فرض، Compaction از مدل اصلی عامل استفاده می‌کند. برای واگذاری خلاصه‌سازی به مدلی توانمندتر یا تخصصی‌تر، `agents.defaults.compaction.model` را تنظیم کنید. مقدار جایگزین یک رشتهٔ `provider/model-id` یا یک نام مستعار سادهٔ پیکربندی‌شده در `agents.defaults.models` را می‌پذیرد:

```json
{
  "agents": {
    "defaults": {
      "compaction": {
        "model": "openrouter/anthropic/claude-sonnet-4-6"
      }
    }
  }
}
```

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

این قابلیت با مدل‌های محلی نیز کار می‌کند؛ برای مثال، یک مدل دوم Ollama که به خلاصه‌سازی اختصاص یافته است:

```json
{
  "agents": {
    "defaults": {
      "compaction": {
        "model": "ollama/llama3.1:8b"
      }
    }
  }
}
```

وقتی تنظیم نشده باشد، Compaction با مدل فعال نشست آغاز می‌شود. اگر خلاصه‌سازی با خطای ارائه‌دهنده‌ای که واجد شرایط بازگشت به مدل جایگزین است شکست بخورد، OpenClaw آن تلاش Compaction را از طریق زنجیرهٔ جایگزین مدل موجود نشست دوباره امتحان می‌کند. انتخاب جایگزین موقتی است و در وضعیت نشست بازنویسی نمی‌شود. مقدار جایگزین صریح `agents.defaults.compaction.model` دقیق باقی می‌ماند و زنجیرهٔ جایگزین نشست را به ارث نمی‌برد.

### حفظ شناسه‌ها

خلاصه‌سازی Compaction به‌طور پیش‌فرض شناسه‌های مات را حفظ می‌کند (`identifierPolicy: "strict"`). برای غیرفعال‌سازی از `identifierPolicy: "off"`، یا برای راهنمایی سفارشی از `identifierPolicy: "custom"` به‌همراه `identifierInstructions` استفاده کنید.

### محافظ بایتی رونوشت فعال

وقتی `agents.defaults.compaction.maxActiveTranscriptBytes` تنظیم شده باشد، اگر تاریخچهٔ رونوشت پیش از یک اجرا به آن اندازه برسد، OpenClaw
Compaction محلی عادی را فعال می‌کند. این قابلیت برای نشست‌های طولانی‌مدتی مفید است که در آن‌ها مدیریت زمینه در سمت ارائه‌دهنده
ممکن است زمینهٔ مدل را سالم نگه دارد، درحالی‌که تاریخچهٔ رونوشت پایدارشده
همچنان رشد می‌کند. این قابلیت بایت‌های خام را تقسیم نمی‌کند؛ بلکه از خط لولهٔ عادی Compaction
می‌خواهد یک خلاصهٔ معنایی ایجاد کند.

<Warning>
محافظ بایتی بر تاریخچهٔ رونوشت فعال SQLite اعمال می‌شود. مصنوعات قدیمی نقطهٔ بازرسی JSONL
هدف فعال Compaction نیستند.
</Warning>

### رونوشت‌های جانشین

وقتی `agents.defaults.compaction.truncateAfterCompaction` فعال باشد، OpenClaw رونوشت موجود را درجا بازنویسی نمی‌کند. یک رونوشت جانشین فعال جدید از خلاصهٔ Compaction، وضعیت حفظ‌شده و دنبالهٔ خلاصه‌نشده ایجاد می‌کند، سپس فرادادهٔ نقطهٔ بازرسی را ثبت می‌کند که جریان‌های انشعاب/بازیابی را به آن جانشین فشرده‌شده هدایت می‌کند.
رونوشت‌های جانشین همچنین نوبت‌های طولانی کاربر را که عیناً تکراری‌اند و
در یک بازهٔ کوتاه تلاش مجدد می‌رسند حذف می‌کنند تا طوفان‌های تلاش مجدد کانال پس از Compaction
به رونوشت فعال بعدی منتقل نشوند.

OpenClaw دیگر برای Compactionهای جدید نسخه‌های جداگانهٔ `.checkpoint.*.jsonl` نمی‌نویسد.
فایل‌های قدیمی نقطهٔ بازرسی موجود تا زمانی که به آن‌ها ارجاع داده می‌شود همچنان قابل استفاده‌اند
و پاک‌سازی عادی نشست آن‌ها را حذف می‌کند.

### اعلان‌های Compaction

به‌طور پیش‌فرض، Compaction بی‌صدا اجرا می‌شود. برای نمایش پیام‌های کوتاه وضعیت هنگام شروع و پایان Compaction و نیز نمایش اعلان وضعیت تنزل‌یافته زمانی که تخلیهٔ حافظهٔ پیش از Compaction به پایان ظرفیت می‌رسد اما پاسخ همچنان ادامه می‌یابد، `notifyUser` را تنظیم کنید:

```json5
{
  agents: {
    defaults: {
      compaction: {
        notifyUser: true,
      },
    },
  },
}
```

### تخلیهٔ حافظه

پیش از Compaction، OpenClaw می‌تواند یک نوبت **تخلیهٔ بی‌صدای حافظه** اجرا کند تا یادداشت‌های ماندگار را روی دیسک ذخیره کند. اگر این نوبت نگه‌داری باید به‌جای مدل فعال مکالمه از یک مدل محلی استفاده کند، `agents.defaults.compaction.memoryFlush.model` را تنظیم کنید:

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

مقدار جایگزین مدل تخلیهٔ حافظه دقیق است و زنجیرهٔ جایگزین نشست فعال را به ارث نمی‌برد. برای جزئیات و پیکربندی به [حافظه](/fa/concepts/memory) مراجعه کنید.

## ارائه‌دهندگان قابل‌تعویض Compaction

Pluginها می‌توانند از طریق `registerCompactionProvider()` در API مربوط به Plugin، یک ارائه‌دهندهٔ سفارشی Compaction ثبت کنند. وقتی ارائه‌دهنده‌ای ثبت و پیکربندی شود، OpenClaw خلاصه‌سازی را به‌جای خط لولهٔ داخلی LLM به آن واگذار می‌کند.

برای استفاده از یک ارائه‌دهندهٔ ثبت‌شده، شناسهٔ آن را در پیکربندی خود تنظیم کنید:

```json
{
  "agents": {
    "defaults": {
      "compaction": {
        "provider": "my-provider"
      }
    }
  }
}
```

تنظیم یک `provider` به‌طور خودکار `mode: "safeguard"` را اجباری می‌کند. ارائه‌دهندگان همان دستورالعمل‌های Compaction و سیاست حفظ شناسهٔ مسیر داخلی را دریافت می‌کنند، و OpenClaw همچنان زمینهٔ پسوند نوبت‌های اخیر و نوبت تقسیم‌شده را پس از خروجی ارائه‌دهنده حفظ می‌کند.

<Note>
اگر ارائه‌دهنده شکست بخورد یا نتیجه‌ای خالی برگرداند، OpenClaw به خلاصه‌سازی داخلی LLM بازمی‌گردد.
</Note>

## Compaction در برابر هرس

|                  | Compaction                    | هرس                          |
| ---------------- | ----------------------------- | -------------------------------- |
| **کاری که انجام می‌دهد** | مکالمهٔ قدیمی‌تر را خلاصه می‌کند | نتایج قدیمی ابزار را کوتاه می‌کند           |
| **ذخیره می‌شود؟**       | بله (در رونوشت نشست)   | خیر (فقط در حافظه، برای هر درخواست) |
| **دامنه**        | کل مکالمه           | فقط نتایج ابزار                |

[هرس نشست](/fa/concepts/session-pruning) مکمل سبک‌تری است که خروجی ابزار را بدون خلاصه‌سازی کوتاه می‌کند.

## عیب‌یابی

**Compaction بیش‌ازحد انجام می‌شود؟** ممکن است پنجرهٔ زمینهٔ مدل کوچک باشد یا خروجی ابزارها بزرگ باشد. فعال‌کردن [هرس نشست](/fa/concepts/session-pruning) را امتحان کنید.

**پس از Compaction، زمینه قدیمی به نظر می‌رسد؟** برای هدایت خلاصه از `/compact Focus on <topic>` استفاده کنید، یا [تخلیهٔ حافظه](/fa/concepts/memory) را فعال کنید تا یادداشت‌ها باقی بمانند.

**به شروعی تازه نیاز دارید؟** `/new` یک نشست تازه را بدون Compaction آغاز می‌کند.

برای پیکربندی پیشرفته (توکن‌های رزروشده، حفظ شناسه‌ها، موتورهای سفارشی زمینه، Compaction سمت سرور OpenAI)، به [بررسی عمیق مدیریت نشست](/fa/reference/session-management-compaction) مراجعه کنید.

## مرتبط

- [نشست](/fa/concepts/session): مدیریت و چرخهٔ عمر نشست.
- [هرس نشست](/fa/concepts/session-pruning): کوتاه‌کردن نتایج ابزار.
- [زمینه](/fa/concepts/context): نحوهٔ ساخت زمینه برای نوبت‌های عامل.
- [قلاب‌ها](/fa/automation/hooks): قلاب‌های چرخهٔ عمر Compaction (`before_compaction`، `after_compaction`).
