---
read_when:
    - می‌خواهید مسیریابی و جداسازی نشست را درک کنید
    - می‌خواهید محدودهٔ پیام مستقیم را برای راه‌اندازی‌های چندکاربره پیکربندی کنید
    - در حال اشکال‌زدایی بازنشانی‌های روزانه یا ناشی از بیکاری نشست هستید
summary: OpenClaw چگونه جلسه‌های گفتگو را مدیریت می‌کند
title: مدیریت نشست
x-i18n:
    generated_at: "2026-05-07T13:16:48Z"
    model: gpt-5.5
    provider: openai
    source_hash: 4e5ec741a33262ce5c42caf021ad81892e89b3315db31ac7b141d5a13e8b22a2
    source_path: concepts/session.md
    workflow: 16
---

OpenClaw گفت‌وگوها را در **نشست‌ها** سازمان‌دهی می‌کند. هر پیام بر اساس
مبدأ آن به یک نشست هدایت می‌شود -- پیام‌های مستقیم، چت‌های گروهی، کارهای Cron و غیره.

## پیام‌ها چگونه هدایت می‌شوند

| منبع          | رفتار                  |
| --------------- | ------------------------- |
| پیام‌های مستقیم | به‌طور پیش‌فرض نشست مشترک |
| چت‌های گروهی     | جداشده برای هر گروه        |
| اتاق‌ها/کانال‌ها  | جداشده برای هر اتاق         |
| کارهای Cron       | نشست تازه برای هر اجرا     |
| Webhookها        | جداشده برای هر هوک         |

## جداسازی DM

به‌طور پیش‌فرض، همه DMها برای حفظ پیوستگی یک نشست مشترک دارند. این برای
راه‌اندازی‌های تک‌کاربره مناسب است.

<Warning>
اگر چند نفر می‌توانند به عامل شما پیام بدهند، جداسازی DM را فعال کنید. بدون آن، همه
کاربران زمینه گفت‌وگوی یکسانی را به اشتراک می‌گذارند -- پیام‌های خصوصی Alice برای
Bob قابل مشاهده خواهد بود.
</Warning>

**راه‌حل:**

```json5
{
  session: {
    dmScope: "per-channel-peer", // isolate by channel + sender
  },
}
```

گزینه‌های دیگر:

- `main` (پیش‌فرض) -- همه DMها یک نشست مشترک دارند.
- `per-peer` -- جداسازی بر اساس فرستنده (در سراسر کانال‌ها).
- `per-channel-peer` -- جداسازی بر اساس کانال + فرستنده (توصیه‌شده).
- `per-account-channel-peer` -- جداسازی بر اساس حساب + کانال + فرستنده.

<Tip>
اگر یک نفر از چند کانال با شما تماس می‌گیرد، از
`session.identityLinks` برای پیوند دادن هویت‌های او استفاده کنید تا یک نشست مشترک داشته باشد.
</Tip>

### داک کردن کانال‌های پیوندخورده

فرمان‌های داک به کاربر اجازه می‌دهند مسیر پاسخ نشست فعلی چت مستقیم را بدون
شروع نشست جدید به کانال پیوندخورده دیگری منتقل کند. برای نمونه‌ها، پیکربندی و
عیب‌یابی، [داک کردن کانال](/fa/concepts/channel-docking) را ببینید.

راه‌اندازی خود را با `openclaw security audit` تأیید کنید.

## چرخه عمر نشست

نشست‌ها تا زمان انقضا دوباره استفاده می‌شوند:

- **بازنشانی روزانه** (پیش‌فرض) -- نشست جدید در ساعت 4:00 بامداد به‌وقت محلی روی میزبان
  Gateway. تازگی روزانه بر اساس زمان شروع `sessionId` فعلی است، نه
  بر اساس نوشتن‌های بعدی فراداده.
- **بازنشانی بیکاری** (اختیاری) -- نشست جدید پس از یک دوره عدم فعالیت. مقدار
  `session.reset.idleMinutes` را تنظیم کنید. تازگی بیکاری بر اساس آخرین
  تعامل واقعی کاربر/کانال است، بنابراین رویدادهای سیستمی Heartbeat، Cron و exec
  نشست را زنده نگه نمی‌دارند.
- **بازنشانی دستی** -- در چت `/new` یا `/reset` را تایپ کنید. `/new <model>` همچنین
  مدل را تغییر می‌دهد.

وقتی هر دو بازنشانی روزانه و بیکاری پیکربندی شده باشند، هرکدام زودتر منقضی شود
اعمال می‌شود. نوبت‌های رویداد سیستمی Heartbeat، Cron، exec و موارد دیگر ممکن است فراداده نشست را بنویسند،
اما این نوشتن‌ها تازگی بازنشانی روزانه یا بیکاری را تمدید نمی‌کنند. وقتی بازنشانی
نشست را جابه‌جا می‌کند، اعلان‌های رویداد سیستمی در صف برای نشست قدیمی
دور انداخته می‌شوند تا به‌روزرسانی‌های پس‌زمینه قدیمی به نخستین پرامپت در
نشست جدید اضافه نشوند.

نشست‌هایی که یک نشست CLI فعال متعلق به ارائه‌دهنده دارند با پیش‌فرض روزانه ضمنی
قطع نمی‌شوند. وقتی این نشست‌ها باید بر اساس زمان‌سنج منقضی شوند، از `/reset` استفاده کنید یا `session.reset` را صراحتاً پیکربندی کنید.

## وضعیت کجا ذخیره می‌شود

همه وضعیت نشست متعلق به **Gateway** است. کلاینت‌های UI از Gateway داده‌های
نشست را پرس‌وجو می‌کنند.

- **ذخیره‌گاه:** `~/.openclaw/agents/<agentId>/sessions/sessions.json`
- **رونوشت‌ها:** `~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl`

`sessions.json` مهرزمان‌های چرخه عمر جداگانه نگه می‌دارد:

- `sessionStartedAt`: زمانی که `sessionId` فعلی آغاز شد؛ بازنشانی روزانه از این استفاده می‌کند.
- `lastInteractionAt`: آخرین تعامل کاربر/کانال که طول عمر بیکاری را تمدید می‌کند.
- `updatedAt`: آخرین جهش ردیف ذخیره‌گاه؛ برای فهرست کردن و هرس مفید است، اما
  مرجع معتبر برای تازگی بازنشانی روزانه/بیکاری نیست.

ردیف‌های قدیمی‌تر بدون `sessionStartedAt`، در صورت وجود، از سرآیند نشست JSONL رونوشت
حل می‌شوند. اگر یک ردیف قدیمی‌تر همچنین `lastInteractionAt` نداشته باشد،
تازگی بیکاری به زمان شروع همان نشست برمی‌گردد، نه به نوشتن‌های حسابداری
بعدی.

## نگهداری نشست

OpenClaw به‌طور خودکار اندازه ذخیره‌سازی نشست را در طول زمان محدود می‌کند. به‌طور پیش‌فرض، در حالت
`warn` اجرا می‌شود (گزارش می‌دهد چه چیزی پاک می‌شد). برای پاک‌سازی خودکار، `session.maintenance.mode`
را روی `"enforce"` تنظیم کنید:

```json5
{
  session: {
    maintenance: {
      mode: "enforce",
      pruneAfter: "30d",
      maxEntries: 500,
    },
  },
}
```

برای محدودیت‌های `maxEntries` در اندازه تولید، نوشتن‌های زمان اجرای Gateway از یک بافر کوچک high-water استفاده می‌کنند و در دسته‌ها دوباره تا سقف پیکربندی‌شده پاک‌سازی می‌کنند. خواندن‌های ذخیره‌گاه نشست هنگام راه‌اندازی Gateway ورودی‌ها را هرس یا محدود نمی‌کنند. این کار از اجرای پاک‌سازی کامل ذخیره‌گاه در هر راه‌اندازی یا نشست Cron جداشده جلوگیری می‌کند. `openclaw sessions cleanup --enforce` سقف را فوراً اعمال می‌کند.

نگهداری، اشاره‌گرهای بادوام گفت‌وگوی خارجی، از جمله نشست‌های گروهی
و نشست‌های چت با دامنه رشته را حفظ می‌کند، درحالی‌که همچنان اجازه می‌دهد ورودی‌های مصنوعی Cron،
هوک، Heartbeat، ACP و زیرعامل‌ها به‌مرور منقضی شوند.

اگر قبلاً از جداسازی پیام مستقیم استفاده کرده‌اید و بعداً
`session.dmScope` را به `main` برگردانده‌اید، ردیف‌های DM قدیمی کلیدگذاری‌شده با همتا را با
`openclaw sessions cleanup --dry-run --fix-dm-scope` پیش‌نمایش کنید. اعمال همان پرچم
آن ردیف‌های قدیمی direct-DM را بازنشسته می‌کند و رونوشت‌هایشان را به‌عنوان آرشیوهای حذف‌شده
نگه می‌دارد.

با `openclaw sessions cleanup --dry-run` پیش‌نمایش کنید.

## بررسی نشست‌ها

- `openclaw status` -- مسیر ذخیره‌گاه نشست و فعالیت اخیر.
- `openclaw sessions --json` -- همه نشست‌ها (با `--active <minutes>` فیلتر کنید).
- `/status` در چت -- میزان استفاده از زمینه، مدل و کلیدهای تغییر وضعیت.
- `/context list` -- آنچه در پرامپت سیستمی است.

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

- [هرس نشست](/fa/concepts/session-pruning) -- کوتاه کردن نتایج ابزار
- [Compaction](/fa/concepts/compaction) -- خلاصه‌سازی گفت‌وگوهای طولانی
- [ابزارهای نشست](/fa/concepts/session-tool) -- ابزارهای عامل برای کار میان‌نشستی
- [بررسی عمیق مدیریت نشست](/fa/reference/session-management-compaction) --
  طرح‌واره ذخیره‌گاه، رونوشت‌ها، سیاست ارسال، فراداده مبدأ و پیکربندی پیشرفته
- [چندعاملی](/fa/concepts/multi-agent) — هدایت و جداسازی نشست در میان عامل‌ها
- [کارهای پس‌زمینه](/fa/automation/tasks) — کار جداشده چگونه رکوردهای کار را با ارجاع‌های نشست ایجاد می‌کند
- [هدایت کانال](/fa/channels/channel-routing) — پیام‌های ورودی چگونه به نشست‌ها هدایت می‌شوند

## مرتبط

- [هرس نشست](/fa/concepts/session-pruning)
- [ابزارهای نشست](/fa/concepts/session-tool)
- [صف فرمان](/fa/concepts/queue)
