التوجيه متعدد الوكلاء
الهدف: عدة وكلاء معزولون (مساحة عمل +agentDir + جلسات منفصلة)، بالإضافة إلى عدة حسابات قنوات (مثل حسابي WhatsApp) ضمن Gateway واحد قيد التشغيل. يتم توجيه الوارد إلى وكيل عبر الارتباطات.
ما المقصود بـ “وكيل واحد”؟
الوكيل هو عقل محدد النطاق بالكامل وله ما يلي:- مساحة عمل (ملفات، وAGENTS.md/SOUL.md/USER.md، وملاحظات محلية، وقواعد الشخصية).
- دليل الحالة (
agentDir) لملفات تعريف المصادقة، وسجل النماذج، وتكوين كل وكيل. - مخزن الجلسات (سجل الدردشة + حالة التوجيه) ضمن
~/.openclaw/agents/<agentId>/sessions.
sessions_history أيضًا المسار الأكثر أمانًا للاسترجاع عبر الجلسات هنا: فهو يعيد
عرضًا محدودًا ومنقحًا، وليس تفريغًا خامًا للنصوص. ويزيل استرجاع المساعد
وسوم التفكير، وبنية <relevant-memories>، وحمولات XML النصية الصريحة لاستدعاءات الأدوات
(بما في ذلك <tool_call>...</tool_call>،
و<function_call>...</function_call>،
و<tool_calls>...</tool_calls>،
و<function_calls>...</function_calls>،
وكتل استدعاء الأدوات المقتطعة)، وبنية استدعاء الأدوات المخفّضة،
ورموز التحكم بالنموذج المسرّبة بتنسيق ASCII/العرض الكامل،
وXML المشوه لاستدعاء أدوات MiniMax قبل التنقيح/الاقتطاع.
لا تتم مشاركة بيانات اعتماد الوكيل الرئيسي تلقائيًا. لا تعِد استخدام agentDir
بين الوكلاء مطلقًا (فهذا يسبب تعارضات في المصادقة/الجلسات). وإذا كنت تريد مشاركة بيانات الاعتماد،
فانسخ auth-profiles.json إلى agentDir الخاص بالوكيل الآخر.
يتم تحميل Skills من مساحة عمل كل وكيل بالإضافة إلى الجذور المشتركة مثل
~/.openclaw/skills، ثم تُرشَّح بحسب قائمة السماح الفعالة لمهارات الوكيل عند
تكوينها. استخدم agents.defaults.skills كأساس مشترك و
agents.list[].skills كبديل لكل وكيل. راجع
Skills: لكل وكيل مقابل المشتركة و
Skills: قوائم السماح لمهارات الوكيل.
يمكن لـ Gateway استضافة وكيل واحد (الافتراضي) أو عدة وكلاء جنبًا إلى جنب.
ملاحظة مساحة العمل: مساحة عمل كل وكيل هي cwd الافتراضي، وليست
sandbox صارمًا. تُحل المسارات النسبية داخل مساحة العمل، لكن يمكن للمسارات المطلقة
الوصول إلى مواقع أخرى على المضيف ما لم يتم تمكين sandboxing. راجع
Sandboxing.
المسارات (خريطة سريعة)
- التكوين:
~/.openclaw/openclaw.json(أوOPENCLAW_CONFIG_PATH) - دليل الحالة:
~/.openclaw(أوOPENCLAW_STATE_DIR) - مساحة العمل:
~/.openclaw/workspace(أو~/.openclaw/workspace-<agentId>) - دليل الوكيل:
~/.openclaw/agents/<agentId>/agent(أوagents.list[].agentDir) - الجلسات:
~/.openclaw/agents/<agentId>/sessions
وضع الوكيل الواحد (الافتراضي)
إذا لم تفعل شيئًا، فسيشغّل OpenClaw وكيلًا واحدًا:- تكون قيمة
agentIdالافتراضية هيmain. - تُفهرس الجلسات على شكل
agent:main:<mainKey>. - تكون مساحة العمل الافتراضية هي
~/.openclaw/workspace(أو~/.openclaw/workspace-<profile>عند تعيينOPENCLAW_PROFILE). - تكون الحالة الافتراضية هي
~/.openclaw/agents/main/agent.
مساعد الوكيل
استخدم معالج الوكلاء لإضافة وكيل جديد معزول:bindings (أو دع المعالج يفعل ذلك) لتوجيه الرسائل الواردة.
تحقق باستخدام:
البدء السريع
أنشئ مساحة عمل كل وكيل
استخدم المعالج أو أنشئ مساحات العمل يدويًا:يحصل كل وكيل على مساحة العمل الخاصة به مع
SOUL.md وAGENTS.md وUSER.md الاختيارية، بالإضافة إلى agentDir مخصص ومخزن جلسات ضمن ~/.openclaw/agents/<agentId>.أضف الوكلاء والحسابات والارتباطات
أضف الوكلاء تحت
agents.list، وحسابات القنوات تحت channels.<channel>.accounts، ثم صِل بينها باستخدام bindings (الأمثلة أدناه).عدة وكلاء = عدة أشخاص، عدة شخصيات
مع عدة وكلاء، يصبح كلagentId شخصية معزولة بالكامل:
- أرقام هواتف/حسابات مختلفة (لكل
accountIdفي القناة). - شخصيات مختلفة (لكل وكيل ملفات مساحة عمل مثل
AGENTS.mdوSOUL.md). - مصادقة + جلسات منفصلة (من دون تداخل إلا إذا تم تمكين ذلك صراحةً).
بحث ذاكرة QMD عبر الوكلاء
إذا كان ينبغي لوكيل ما أن يبحث في نصوص جلسات QMD الخاصة بوكيل آخر، فأضف مجموعات إضافية تحتagents.list[].memorySearch.qmd.extraCollections.
استخدم agents.defaults.memorySearch.qmd.extraCollections فقط عندما
يجب أن يرث كل وكيل مجموعات النصوص المشتركة نفسها.
رقم WhatsApp واحد، عدة أشخاص (تقسيم الرسائل الخاصة)
يمكنك توجيه رسائل WhatsApp الخاصة المختلفة إلى وكلاء مختلفين مع البقاء على حساب WhatsApp واحد. طابق على E.164 للمرسل (مثل+15551234567) باستخدام peer.kind: "direct". ستظل الردود تخرج من رقم WhatsApp نفسه (ولا توجد هوية مرسل لكل وكيل).
تفصيل مهم: تنهار المحادثات المباشرة إلى مفتاح الجلسة الرئيسي للوكيل، لذا يتطلب العزل الحقيقي وكيلًا واحدًا لكل شخص.
مثال:
- التحكم في الوصول إلى الرسائل الخاصة عام لكل حساب WhatsApp (الاقتران/قائمة السماح)، وليس لكل وكيل.
- بالنسبة إلى المجموعات المشتركة، اربط المجموعة بوكيل واحد أو استخدم Broadcast groups.
قواعد التوجيه (كيف تختار الرسائل وكيلًا)
الارتباطات حتمية والأكثر تحديدًا يفوز:- مطابقة
peer(معرّف الدردشة الخاصة/المجموعة/القناة الدقيق) - مطابقة
parentPeer(وراثة السلسلة) guildId + roles(توجيه الأدوار في Discord)guildId(Discord)teamId(Slack)- مطابقة
accountIdلقناة - مطابقة على مستوى القناة (
accountId: "*") - الرجوع إلى الوكيل الافتراضي (
agents.list[].default، وإلا أول إدخال في القائمة، الافتراضي:main)
peer + guildId)، فكل الحقول المحددة مطلوبة (دلالات AND).
تفصيل مهم حول نطاق الحساب:
- الارتباط الذي يحذف
accountIdيطابق الحساب الافتراضي فقط. - استخدم
accountId: "*"كبديل على مستوى القناة عبر جميع الحسابات. - إذا أضفت لاحقًا الارتباط نفسه للوكيل نفسه مع معرّف حساب صريح، فسيقوم OpenClaw بترقية الارتباط القائم على مستوى القناة إلى نطاق الحساب بدلًا من تكراره.
عدة حسابات / عدة أرقام هواتف
تستخدم القنوات التي تدعم عدة حسابات (مثل WhatsApp) قيمةaccountId لتحديد
كل تسجيل دخول. ويمكن توجيه كل accountId إلى وكيل مختلف، بحيث يمكن لخادم واحد استضافة
عدة أرقام هواتف من دون خلط الجلسات.
إذا كنت تريد حسابًا افتراضيًا على مستوى القناة عند حذف accountId، فاضبط
channels.<channel>.defaultAccount (اختياري). وعند عدم تعيينه، يعود OpenClaw
إلى default إذا كانت موجودة، وإلا إلى أول معرّف حساب مكوَّن (مرتب).
تشمل القنوات الشائعة التي تدعم هذا النمط ما يلي:
whatsappوtelegramوdiscordوslackوsignalوimessageircوlineوgooglechatوmattermostوmatrixوnextcloud-talkbluebubblesوzaloوzalouserوnostrوfeishu
المفاهيم
agentId: “عقل” واحد (مساحة عمل، ومصادقة لكل وكيل، ومخزن جلسات لكل وكيل).accountId: مثيل حساب قناة واحد (مثل حساب WhatsApp "personal"مقابل"biz").binding: يوجّه الرسائل الواردة إلىagentIdبواسطة(channel, accountId, peer)ومعرّفات guild/team اختياريًا.- تنهار المحادثات المباشرة إلى
agent:<agentId>:<mainKey>(الحالة “الرئيسية” لكل وكيل؛session.mainKey).
أمثلة المنصات
Discord bots لكل وكيل
يُطابق كل حساب Discord bot قيمةaccountId فريدة. اربط كل حساب بوكيل واحتفظ بقوائم السماح لكل bot.
- ادعُ كل bot إلى guild وفعّل Message Content Intent.
- توجد الرموز المميزة ضمن
channels.discord.accounts.<id>.token(يمكن للحساب الافتراضي استخدامDISCORD_BOT_TOKEN).
Telegram bots لكل وكيل
- أنشئ bot واحدًا لكل وكيل باستخدام BotFather وانسخ كل رمز مميز.
- توجد الرموز المميزة ضمن
channels.telegram.accounts.<id>.botToken(يمكن للحساب الافتراضي استخدامTELEGRAM_BOT_TOKEN).
أرقام WhatsApp لكل وكيل
اربط كل حساب قبل بدء تشغيل gateway:~/.openclaw/openclaw.json (JSON5):
مثال: دردشة يومية على WhatsApp + عمل عميق على Telegram
قسّم حسب القناة: وجّه WhatsApp إلى وكيل سريع يومي وTelegram إلى وكيل Opus.- إذا كانت لديك عدة حسابات لقناة ما، فأضف
accountIdإلى الارتباط (مثل{ channel: "whatsapp", accountId: "personal" }). - لتوجيه رسالة خاصة/مجموعة واحدة إلى Opus مع إبقاء الباقي على chat، أضف ارتباط
match.peerلذلك الـ peer؛ إذ تفوز مطابقة peer دائمًا على القواعد الواسعة على مستوى القناة.
مثال: القناة نفسها، وpeer واحد إلى Opus
أبقِ WhatsApp على الوكيل السريع، لكن وجّه رسالة خاصة واحدة إلى Opus:وكيل عائلي مرتبط بمجموعة WhatsApp
اربط وكيلًا عائليًا مخصصًا بمجموعة WhatsApp واحدة، مع ضبط بالإشارة وسياسة أدوات أكثر إحكامًا:- قوائم السماح/المنع للأدوات تخص الأدوات، لا Skills. وإذا احتاجت Skill إلى تشغيل
ملف تنفيذي، فتأكد من السماح بـ
execوأن الملف التنفيذي موجود داخل sandbox. - لمزيد من الضبط الصارم، عيّن
agents.list[].groupChat.mentionPatternsوأبقِ قوائم السماح للمجموعات مفعلة للقناة.
تكوين Sandbox والأدوات لكل وكيل
يمكن أن يكون لكل وكيل sandbox وقيود أدوات خاصة به:setupCommand تحت sandbox.docker ويعمل مرة واحدة عند إنشاء الحاوية.
يتم تجاهل تجاوزات sandbox.docker.* لكل وكيل عندما يكون النطاق المحلول هو "shared".
الفوائد:
- عزل أمني: تقييد الأدوات للوكلاء غير الموثوقين
- التحكم في الموارد: وضع بعض الوكلاء داخل sandbox مع إبقاء آخرين على المضيف
- سياسات مرنة: أذونات مختلفة لكل وكيل
tools.elevated عام ويعتمد على المرسل؛ وهو غير قابل للتكوين لكل وكيل.
إذا كنت تحتاج إلى حدود لكل وكيل، فاستخدم agents.list[].tools لمنع exec.
وبالنسبة إلى استهداف المجموعات، استخدم agents.list[].groupChat.mentionPatterns بحيث تُطابق إشارات @ الوكيل المقصود بوضوح.
راجع Sandbox والأدوات متعددة الوكلاء للحصول على أمثلة مفصلة.
ذو صلة
- توجيه القنوات — كيف تُوجَّه الرسائل إلى الوكلاء
- الوكلاء الفرعيون — إنشاء تشغيلات وكلاء في الخلفية
- وكلاء ACP — تشغيل بيئات برمجة خارجية
- الحضور — حضور الوكيل وتوفره
- الجلسة — عزل الجلسات وتوجيهها