---
read_when:
    - می‌خواهید auto-compaction و /compact را درک کنید
    - شما در حال اشکال‌زدایی نشست‌های طولانی‌ای هستید که به محدودیت‌های زمینه می‌رسند
summary: OpenClaw چگونه مکالمه‌های طولانی را خلاصه می‌کند تا در محدوده‌های مدل باقی بماند
title: Compaction
x-i18n:
    generated_at: "2026-06-27T17:30:58Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 71c1665055574622926a4f13ee82b97f1c45e679a895db78da983919c0a5458f
    source_path: concepts/compaction.md
    workflow: 16
---

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

## نحوهٔ کار

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

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

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

## Compaction خودکار

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

خواهید دید:

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

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

<AccordionGroup>
  <Accordion title="امضاهای شناخته‌شدهٔ سرریز">
    OpenClaw سرریز زمینه را از این الگوهای خطای ارائه‌دهنده تشخیص می‌دهد:

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

  </Accordion>
</AccordionGroup>

## Compaction دستی

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

```
/compact Focus on the API design decisions
```

وقتی `agents.defaults.compaction.keepRecentTokens` تنظیم شده باشد، Compaction دستی آن نقطهٔ برش OpenClaw را رعایت می‌کند و دنبالهٔ اخیر را در زمینهٔ بازسازی‌شده نگه می‌دارد. بدون بودجهٔ نگه‌داری صریح، 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 به ارائه‌دهنده و مدل متعارف خود حل می‌شوند. اگر یک مقدار ساده هم با یک نام مستعار و هم با یک شناسهٔ مدل literal پیکربندی‌شده مطابقت داشته باشد، شناسهٔ مدل literal برنده می‌شود. مقدار سادهٔ نامطابق، روی ارائه‌دهندهٔ فعال به‌عنوان شناسهٔ مدل باقی می‌ماند.

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

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

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

### حفظ شناسه

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

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

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

<Warning>
محافظ بایت به `truncateAfterCompaction: true` نیاز دارد. بدون چرخش رونوشت، فایل فعال کوچک نمی‌شود و محافظ غیرفعال می‌ماند.
</Warning>

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

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

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

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

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

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

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

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

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

بازنویسی مدل memory-flush دقیق است و زنجیرهٔ fallback نشست فعال را به ارث نمی‌برد. برای جزئیات و پیکربندی، [Memory](/fa/concepts/memory) را ببینید.

## ارائه‌دهندگان Compaction قابل اتصال

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

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

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

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

<Note>
اگر ارائه‌دهنده شکست بخورد یا نتیجه‌ای خالی برگرداند، OpenClaw به خلاصه‌سازی LLM داخلی fallback می‌کند.
</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): نحوهٔ ساخته‌شدن زمینه برای نوبت‌های عامل.
- [Hooks](/fa/automation/hooks): hookهای چرخهٔ عمر Compaction (`before_compaction`, `after_compaction`).
