الانتقال إلى المحتوى الرئيسي

القنوات والتوجيه

يقوم OpenClaw بتوجيه الردود مرة أخرى إلى القناة التي جاء منها message. لا يختار النموذج قناةً؛ فالتوجيه حتميّ ويتم التحكم فيه بواسطة تهيئة المضيف.

المصطلحات الأساسية

  • Channel: whatsapp، telegram، discord، slack، signal، imessage، webchat.
  • AccountId: مثيل حساب لكل قناة (عند الدعم).
  • AgentId: مساحة عمل معزولة + مخزن جلسات («العقل»).
  • SessionKey: مفتاح الحاوية المستخدم لتخزين السياق والتحكم في التزامن.

أشكال مفاتيح الجلسة (أمثلة)

تندمج الرسائل المباشرة في جلسة الوكيل الرئيسية:
  • agent:<agentId>:<mainKey> (الافتراضي: agent:main:main)
تبقى المجموعات والقنوات معزولة لكل قناة:
  • المجموعات: agent:<agentId>:<channel>:group:<id>
  • القنوات/الغرف: agent:<agentId>:<channel>:channel:<id>
المواضيع (Threads):
  • تضيف مواضيع Slack/Discord :thread:<threadId> إلى المفتاح الأساسي.
  • تُضمِّن موضوعات منتديات Telegram :topic:<topicId> ضمن مفتاح المجموعة.
أمثلة:
  • agent:main:telegram:group:-1001234567890:topic:42
  • agent:main:discord:channel:123456:thread:987654

قواعد التوجيه (كيفية اختيار الوكيل)

يختار التوجيه وكيلاً واحدًا لكل رسالة واردة:
  1. مطابقة النظير الدقيقة (bindings مع peer.kind + peer.id).
  2. مطابقة النقابة (Discord) عبر guildId.
  3. مطابقة Guild + الأدوار (Discord) عبر guildId + roles.
  4. مطابقة الحساب (accountId على القناة).
  5. مطابقة الفريق (Slack) عبر teamId.
  6. مطابقة القناة (أي حساب على تلك القناة).
  7. مطابقة القناة (أي حساب على تلك القناة، accountId: "*").
  8. الوكيل الافتراضي (agents.list[].default، وإلا فأول إدخال في القائمة، مع الرجوع إلى main).
عندما يتضمن الربط عدة حقول مطابقة (peer، guildId، teamId، rolesيجب أن تتطابق جميع الحقول المقدمة ليتم تطبيق هذا الربط. يحدد الوكيل المطابق مساحة العمل ومخزن الجلسات المستخدمين.

مجموعات البث (تشغيل عدة وكلاء)

تتيح مجموعات البث تشغيل عدة وكلاء للنظير نفسه عندما يقوم OpenClaw عادةً بالرد (على سبيل المثال: في مجموعات WhatsApp، بعد بوابة الذكر/التفعيل). التهيئة:
{
  broadcast: {
    strategy: "parallel",
    "[email protected]": ["alfred", "baerbel"],
    "+15555550123": ["support", "logger"],
  },
}
انظر: مجموعات البث.

نظرة عامة على التهيئة

  • agents.list: تعريفات الوكلاء المسماة (مساحة العمل، النموذج، إلخ).
  • bindings: ربط القنوات/الحسابات/الأقران الواردة بالوكلاء.
مثال:
{
  agents: {
    list: [{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }],
  },
  bindings: [
    { match: { channel: "slack", teamId: "T123" }, agentId: "support" },
    { match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" },
  ],
}

تخزين الجلسات

توجد مخازن الجلسات ضمن دليل الحالة (الافتراضي ~/.openclaw):
  • ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • تُحفظ سجلات JSONL بجوار المخزن
يمكنك تجاوز مسار المخزن عبر قوالب session.store و{agentId}.

سلوك WebChat

يرتبط WebChat بالوكيل المحدد ويستخدم افتراضيًا الجلسة الرئيسية للوكيل. وبسبب ذلك، يتيح WebChat عرض سياق عابر للقنوات لهذا الوكيل في مكان واحد.

سياق الرد

تتضمن الردود الواردة:
  • ReplyToId وReplyToBody وReplyToSender عند توفرها.
  • يُلحَق السياق المُقتبَس بـ Body على هيئة كتلة [Replying to ...].
هذا السلوك متسق عبر القنوات.