Community translations by veiseule.ai — Help improve them on Crowdin
Skip to main content

سیشن مینجمنٹ

براہِ راست چیٹس agent:<agentId>:<mainKey> (ڈیفالٹ main) میں سمٹ جاتی ہیں، جبکہ گروپ/چینل چیٹس کو اپنی الگ keys ملتی ہیں۔ session.mainKey کو مدنظر رکھا جاتا ہے۔ per-account-channel-peer: اکاؤنٹ + چینل + بھیجنے والے کے لحاظ سے علیحدگی (ملٹی اکاؤنٹ اِن باکسز کے لیے تجویز کردہ)۔

براہِ راست پیغامات کو کیسے گروپ کیا جائے، اس کو کنٹرول کرنے کے لیے session.dmScope استعمال کریں:

  • main (بطورِ طے شدہ): تسلسل کے لیے تمام DMs مرکزی سیشن شیئر کرتے ہیں۔
  • per-peer: چینلز کے پار بھیجنے والے کی شناخت کے مطابق علیحدگی۔
  • per-channel-peer: چینل + بھیجنے والے کے مطابق علیحدگی (کثیر صارف اِن باکسز کے لیے سفارش کردہ)۔
  • session.identityLinks استعمال کریں تاکہ provider-پریفکس والے peer ids کو ایک canonical شناخت سے میپ کیا جا سکے، تاکہ per-peer، per-channel-peer، یا per-account-channel-peer استعمال کرتے وقت ایک ہی شخص مختلف چینلز میں ایک ہی DM سیشن شیئر کرے۔ سیکیورٹی وارننگ: اگر آپ کا ایجنٹ متعدد لوگوں سے DMs وصول کر سکتا ہے، تو آپ کو مضبوطی سے secure DM موڈ فعال کرنے پر غور کرنا چاہیے۔

محفوظ DM موڈ (کثیر صارف سیٹ اپس کے لیے سفارش کردہ)

اس کے بغیر، تمام صارفین ایک ہی گفتگو کا سیاق و سباق شیئر کرتے ہیں، جس سے صارفین کے درمیان نجی معلومات لیک ہو سکتی ہیں۔ 29. اس کے بغیر، تمام صارفین ایک ہی گفتگو کے کانٹیکسٹ کو شیئر کرتے ہیں، جس سے صارفین کے درمیان نجی معلومات لیک ہو سکتی ہیں۔

بطورِ طے شدہ سیٹنگز کے ساتھ مسئلے کی مثال:

  • ایلس (<SENDER_A>) آپ کے ایجنٹ کو کسی نجی موضوع پر پیغام بھیجتی ہے (مثلاً طبی ملاقات)
  • باب (<SENDER_B>) آپ کے ایجنٹ کو پیغام بھیجتا ہے: "ہم کس بارے میں بات کر رہے تھے؟"
  • چونکہ دونوں DMs ایک ہی سیشن شیئر کرتے ہیں، ماڈل باب کو ایلس کے سابقہ سیاق کے ساتھ جواب دے سکتا ہے۔

حل: سیشنز کو ہر صارف کے لیے علیحدہ کرنے کے لیے dmScope سیٹ کریں:

// ~/.openclaw/openclaw.json
{
  session: {
    // Secure DM mode: isolate DM context per channel + sender.
    dmScope: "per-channel-peer",
  },
}

اسے کب فعال کریں:

  • آپ کے پاس ایک سے زیادہ بھیجنے والوں کے لیے pairing approvals ہوں
  • آپ متعدد اندراجات کے ساتھ DM allowlist استعمال کرتے ہوں
  • آپ dmPolicy: "open" سیٹ کرتے ہوں
  • متعدد فون نمبرز یا اکاؤنٹس آپ کے ایجنٹ کو پیغام بھیج سکتے ہوں

نوٹس:

    1. تسلسل کے لیے ڈیفالٹ dmScope: "main" ہے (تمام DMs مرکزی سیشن شیئر کرتے ہیں)۔ تمام سیشن اسٹیٹ گیٹ وے ("ماسٹر" OpenClaw) کی ملکیت ہے۔
  • ایک ہی چینل پر کثیر اکاؤنٹ اِن باکسز کے لیے per-account-channel-peer کو ترجیح دیں۔
  • اگر ایک ہی شخص متعدد چینلز پر آپ سے رابطہ کرتا ہے، تو session.identityLinks استعمال کریں تاکہ ان کے DM سیشنز ایک معیاری شناخت میں ضم ہو جائیں۔
  • آپ اپنی DM سیٹنگز کی تصدیق openclaw security audit کے ساتھ کر سکتے ہیں (دیکھیں security

Gateway ہی واحد مستند ذریعہ ہے

UI کلائنٹس (macOS ایپ، WebChat، وغیرہ) 31. UI کلائنٹس (macOS ایپ، WebChat، وغیرہ) UI میں دکھائے جانے والے ٹوکن کاؤنٹس گیٹ وے کے اسٹور فیلڈز (inputTokens, outputTokens, totalTokens, contextTokens) سے آتے ہیں۔

  • ریموٹ موڈ میں، جس سیشن اسٹور کی آپ کو پرواہ ہے وہ آپ کے Mac پر نہیں بلکہ ریموٹ گیٹ وے ہوسٹ پر موجود ہوتا ہے۔
  • کلائنٹس مجموعی اعداد درست کرنے کے لیے JSONL ٹرانسکرپٹس پارس نہیں کرتے۔ اسٹور ایک میپ ہے `sessionKey -> { sessionId, updatedAt, ...

اسٹیٹ کہاں رہتی ہے

  • گیٹ وے ہوسٹ پر:
  • اسٹور فائل: ~/.openclaw/agents/<agentId>/sessions/sessions.json (ہر ایجنٹ کے لیے)۔
  • ٹرانسکرپٹس: ~/.openclaw/agents/<agentId>/sessions/<SessionId>.jsonl (Telegram ٹاپک سیشنز .../<SessionId>-topic-<threadId>.jsonl استعمال کرتے ہیں)۔
  • }۔ 32. }. OpenClaw ڈیفالٹ کے طور پر LLM کالز سے عین پہلے اِن-میموری کانٹیکسٹ سے پرانے ٹول نتائج تراش دیتا ہے۔
  • گروپ اندراجات میں UIs میں سیشنز کو لیبل کرنے کے لیے displayName، channel، subject، room، اور space شامل ہو سکتے ہیں۔
  • سیشن اندراجات میں origin میٹاڈیٹا (لیبل + روٹنگ اشارے) شامل ہوتے ہیں تاکہ UIs وضاحت کر سکیں کہ سیشن کہاں سے آیا۔
  • OpenClaw لیگیسی Pi/Tau سیشن فولڈرز نہیں پڑھتا۔

سیشن کی کٹائی (Pruning)

  1. OpenClaw ڈیفالٹ طور پر LLM کالز سے عین پہلے ان-میموری کانٹیکسٹ سے پرانے ٹول رزلٹس کو ٹرم کرتا ہے۔
  2. یہ JSONL ہسٹری کو دوبارہ نہیں لکھتا۔ جب کوئی سیشن خودکار کمپیکشن کے قریب ہوتا ہے، OpenClaw ایک خاموش میموری فلش چلا سکتا ہے turn جو ماڈل کو یاد دلاتا ہے کہ پائیدار نوٹس ڈسک پر لکھ دے۔

پری-کمپیکشن میموری فلش

یہ صرف اس وقت چلتا ہے جب ورک اسپیس قابلِ تحریر ہو۔ دیکھیں Memory اور Compaction۔ 35. دیکھیں Memory اور Compaction۔

ٹرانسپورٹس → سیشن کلیدوں کی میپنگ

  • براہِ راست چیٹس session.dmScope کی پیروی کرتی ہیں (بطورِ طے شدہ main
  • main: agent:<agentId>:<mainKey> (آلات/چینلز کے پار تسلسل)۔
    • متعدد فون نمبرز اور چینلز ایک ہی ایجنٹ مین کلید سے میپ ہو سکتے ہیں؛ وہ ایک ہی گفتگو میں داخلے کے ٹرانسپورٹس کے طور پر کام کرتے ہیں۔
  • per-peer: agent:<agentId>:dm:<peerId>۔
  • per-channel-peer: agent:<agentId>:<channel>:dm:<peerId>۔
  • per-account-channel-peer: agent:<agentId>:<channel>:<accountId>:dm:<peerId> (accountId بطورِ طے شدہ default ہے)۔
  • اگر session.identityLinks کسی فراہم کنندہ سے پہلے لگے peer id (مثلاً telegram:123) سے میچ کرے، تو معیاری کلید <peerId> کی جگہ لے لیتی ہے تاکہ ایک ہی شخص مختلف چینلز پر ایک سیشن شیئر کرے۔
  • گروپ چیٹس اسٹیٹ کو علیحدہ رکھتی ہیں: agent:<agentId>:<channel>:group:<id> (کمروں/چینلز کے لیے agent:<agentId>:<channel>:channel:<id> استعمال ہوتا ہے)۔
  • Telegram فورم ٹاپکس علیحدگی کے لیے گروپ id کے ساتھ :topic:<threadId> جوڑتے ہیں۔
  • لیگیسی group:<id> کلیدیں منتقلی (migration) کے لیے اب بھی تسلیم کی جاتی ہیں۔
  • اِن باؤنڈ سیاق اب بھی group:<id> استعمال کر سکتے ہیں؛ چینل Provider سے مستنبط کیا جاتا ہے اور معیاری agent:<agentId>:<channel>:group:<id> فارم میں نارملائز کیا جاتا ہے۔
  • دیگر ذرائع:
  • کرون جابز: cron:<job.id>
  • ویب ہکس: hook:<uuid> (جب تک ہک واضح طور پر سیٹ نہ کرے)
  • نوڈ رنز: node-<nodeId>

لائف سائیکل

  • ری سیٹ پالیسی: سیشنز ختم ہونے تک دوبارہ استعمال ہوتے ہیں، اور میعاد کا جائزہ اگلے اِن باؤنڈ پیغام پر لیا جاتا ہے۔
  • کوئی سیشن اس وقت stale سمجھا جاتا ہے جب اس کی آخری اپ ڈیٹ تازہ ترین روزانہ ری سیٹ وقت سے پہلے کی ہو۔ 36. ایک سیشن اس وقت باسی (stale) ہو جاتا ہے جب اس کی آخری اپڈیٹ حالیہ ترین روزانہ ری سیٹ وقت سے پہلے ہو۔
  • جب روزانہ اور آئیڈل دونوں ری سیٹس کنفیگر ہوں، تو جو پہلے ایکسپائر ہو وہ نیا سیشن مجبور کرتا ہے۔ 37. جب روزانہ اور آئیڈل دونوں ری سیٹس کنفیگر ہوں، تو جو بھی پہلے ایکسپائر ہو نیا سیشن مجبور کرتا ہے۔
  • لیگیسی صرف اِن ایکٹیو: اگر آپ session.idleMinutes کو بغیر کسی session.reset/resetByType کنفیگ کے سیٹ کریں، تو بیک ورڈ کمپیٹیبلٹی کے لیے OpenClaw صرف اِن ایکٹیو موڈ میں رہتا ہے۔
  • Per-type overrides (optional): resetByType lets you override the policy for direct, group, and thread sessions (thread = Slack/Discord threads, Telegram topics, Matrix threads when provided by the connector).
  • فی-چینل اوور رائیڈز (اختیاری): resetByChannel کسی چینل کے لیے ری سیٹ پالیسی اوور رائیڈ کرتا ہے (اس چینل کے تمام سیشن اقسام پر لاگو ہوتا ہے اور reset/resetByType پر فوقیت رکھتا ہے)۔
  • /new <model> ایک ماڈل alias، provider/model، یا provider نام (فزی میچ) قبول کرتا ہے تاکہ نئے سیشن کا ماڈل سیٹ ہو سکے۔ 38. /new <model> ایک ماڈل عرف، provider/model، یا فراہم کنندہ کا نام (فزی میچ) قبول کرتا ہے تاکہ نئے سیشن کا ماڈل سیٹ کیا جا سکے۔ /compact (اختیاری ہدایات کے ساتھ) کو بطور ایک علیحدہ پیغام بھیجیں تاکہ پرانے کانٹیکسٹ کا خلاصہ ہو اور ونڈو اسپیس خالی ہو۔
  • دستی ری سیٹ: اسٹور سے مخصوص کلیدیں حذف کریں یا JSONL ٹرانسکرپٹ ہٹا دیں؛ اگلا پیغام انہیں دوبارہ بنا دیتا ہے۔
  • علیحدہ کرون جابز ہر رن پر ہمیشہ ایک نیا sessionId بناتی ہیں (کوئی اِن ایکٹیو ری یوز نہیں)۔

بھیجنے کی پالیسی (اختیاری)

انفرادی ids کی فہرست دیے بغیر مخصوص سیشن اقسام کے لیے ترسیل بلاک کریں۔

{
  session: {
    sendPolicy: {
      rules: [
        { action: "deny", match: { channel: "discord", chatType: "group" } },
        { action: "deny", match: { keyPrefix: "cron:" } },
      ],
      default: "allow",
    },
  },
}

رن ٹائم اوور رائیڈ (صرف مالک):

  • /send on → اس سیشن کے لیے اجازت دیں
  • /send off → اس سیشن کے لیے انکار کریں
  • /send inherit → اوور رائیڈ صاف کریں اور کنفیگ قواعد استعمال کریں انہیں اسٹینڈ الون پیغامات کے طور پر بھیجیں تاکہ وہ رجسٹر ہوں۔

کنفیگریشن (اختیاری نام تبدیل کرنے کی مثال)

// ~/.openclaw/openclaw.json
{
  session: {
    scope: "per-sender", // keep group keys separate
    dmScope: "main", // DM continuity (set per-channel-peer/per-account-channel-peer for shared inboxes)
    identityLinks: {
      alice: ["telegram:123456789", "discord:987654321012345678"],
    },
    reset: {
      // Defaults: mode=daily, atHour=4 (gateway host local time).
      // If you also set idleMinutes, whichever expires first wins.
      mode: "daily",
      atHour: 4,
      idleMinutes: 120,
    },
    resetByType: {
      thread: { mode: "daily", atHour: 4 },
      direct: { mode: "idle", idleMinutes: 240 },
      group: { mode: "idle", idleMinutes: 120 },
    },
    resetByChannel: {
      discord: { mode: "idle", idleMinutes: 10080 },
    },
    resetTriggers: ["/new", "/reset"],
    store: "~/.openclaw/agents/{agentId}/sessions/sessions.json",
    mainKey: "main",
  },
}

معائنہ

  • openclaw status — اسٹور پاتھ اور حالیہ سیشنز دکھاتا ہے۔
  • openclaw sessions --json — ہر اندراج ڈمپ کرتا ہے ( --active <minutes> سے فلٹر کریں)۔
  • openclaw gateway call sessions.list --params '{}' — چلتے ہوئے gateway سے سیشنز حاصل کرتا ہے (ریموٹ گیٹ وے رسائی کے لیے --url/--token استعمال کریں)۔
  • چیٹ میں /status کو بطورِ اسٹینڈ الون پیغام بھیجیں تاکہ معلوم ہو کہ ایجنٹ قابلِ رسائی ہے یا نہیں، سیشن سیاق کتنا استعمال ہوا ہے، موجودہ thinking/verbose ٹوگلز، اور آپ کے WhatsApp ویب کریڈز آخری بار کب ریفریش ہوئے (ری لنک کی ضرورت شناخت کرنے میں مدد دیتا ہے)۔
  • /context list یا /context detail بھیجیں تاکہ سسٹم پرامپٹ اور انجیکٹڈ ورک اسپیس فائلز (اور سب سے بڑے سیاقی شراکت دار) دیکھ سکیں۔
  • /stop کو بطورِ اسٹینڈ الون پیغام بھیجیں تاکہ موجودہ رن کو منسوخ کیا جا سکے، اس سیشن کے لیے قطار میں موجود فالو اپس صاف کیے جا سکیں، اور اس سے پیدا ہونے والی کسی بھی ذیلی ایجنٹ رنز کو روکا جا سکے (جواب میں رُکے ہوئے کاؤنٹ شامل ہوتا ہے)۔
  • دیکھیں /concepts/compaction۔ threadId: جب چینل سپورٹ کرے تو تھریڈ/موضوع id اوریجن فیلڈز براہِ راست پیغامات، چینلز، اور گروپس کے لیے پاپولیٹ کی جاتی ہیں۔
  • JSONL ٹرانسکرپٹس کو مکمل ٹرنز کے جائزے کے لیے براہِ راست کھولا جا سکتا ہے۔

مشورے

  • بنیادی کلید کو 1:1 ٹریفک کے لیے مخصوص رکھیں؛ گروپس کو اپنی الگ کلیدیں رکھنے دیں۔
  • صفائی خودکار بناتے وقت، پورے اسٹور کے بجائے انفرادی کلیدیں حذف کریں تاکہ کہیں اور سیاق محفوظ رہے۔

سیشن کی اصل کا میٹاڈیٹا

ہر سیشن اندراج بہترین کوشش کی بنیاد پر origin میں اس کی اصل ریکارڈ کرتا ہے:

  • label: انسانی لیبل (گفتگو لیبل + گروپ سبجیکٹ/چینل سے حل شدہ)
  • provider: نارملائزڈ چینل id (ایکسٹینشنز سمیت)
  • from/to: اِن باؤنڈ لفافے سے خام روٹنگ ids
  • accountId: فراہم کنندہ اکاؤنٹ id (جب کثیر اکاؤنٹ ہو)
  • اگر کوئی کنیکٹر صرف ڈیلیوری روٹنگ اپ ڈیٹ کرتا ہے (مثال کے طور پر، DM مین سیشن کو تازہ رکھنے کے لیے)، تو اسے پھر بھی اِن باؤنڈ کانٹیکسٹ فراہم کرنا چاہیے تاکہ سیشن اپنی explainer میٹاڈیٹا برقرار رکھے۔ ایکسٹینشنز یہ کام ConversationLabel, GroupSubject, GroupChannel, GroupSpace, اور SenderName کو اِن باؤنڈ کانٹیکسٹ میں بھیج کر اور recordSessionMetaFromInbound کال کر کے (یا وہی کانٹیکسٹ updateLastRoute کو پاس کر کے) کر سکتی ہیں۔ بلاک اسٹریمنگ (چینلز): اسسٹنٹ کے لکھتے ہی مکمل بلاکس خارج کریں۔