@openclaw/feishu: الرسائل المباشرة مع البوت، ومحادثات المجموعات، وردود البطاقات المتدفقة، وأدوات مستندات Feishu والويكي والتخزين السحابي وBitable.
الحالة: جاهز للإنتاج للرسائل المباشرة مع البوت ومحادثات المجموعات. يُعد WebSocket وسيلة نقل الأحداث الافتراضية (ولا يلزم عنوان URL عام)؛ ووضع Webhook اختياري.
البدء السريع
يتطلب OpenClaw 2026.5.29 أو إصدارًا أحدث. شغّل
openclaw --version للتحقق. رقِّ باستخدام openclaw update.1
تشغيل معالج إعداد القناة
@openclaw/feishu إذا لم يكن موجودًا، ثم يرشدك خلال الإعداد:- الإعداد اليدوي: الصق App ID وApp Secret من Feishu Open Platform (
https://open.feishu.cn) أو Lark Developer (https://open.larksuite.com). - الإعداد عبر رمز QR: امسح رمز QR ضوئيًا في تطبيق Feishu لإنشاء بوت تلقائيًا. تقصر هذه العملية الرسائل المباشرة على حسابك فقط (
dmPolicy: "allowlist"باستخدامopen_idالخاص بك).
2
بعد اكتمال الإعداد، أعد تشغيل Gateway لتطبيق التغييرات
التحكم في الوصول
الرسائل المباشرة
اضبطchannels.feishu.dmPolicy (الافتراضي: pairing) للتحكم في مَن يمكنه إرسال رسالة مباشرة إلى البوت:
الموافقة على طلب إقران:
محادثات المجموعات
سياسة المجموعة (channels.feishu.groupPolicy، الافتراضي: allowlist):
اشتراط الإشارة (
channels.feishu.requireMention):
- الافتراضي: يلزم توجيه @إشارة، إلا عندما تكون سياسة المجموعة الفعلية هي
"open"؛ إذ تكون القيمة الافتراضية هناكfalseكي تظل الرسائل التي لا يمكن أن تتضمن إشارات (مثل الصور) تصل إلى الوكيل. - اضبط
trueأوfalseصراحةً للتجاوز؛ والتجاوز لكل مجموعة هو:channels.feishu.groups.<chat_id>.requireMention. - لا تُعامل إشارتا البث فقط
@allو@_allعلى أنهما إشارتان إلى البوت. وتظل الرسالة التي تشير إلى كل من@allوالبوت مباشرةً محسوبةً كإشارة إلى البوت.
أمثلة على إعداد المجموعات
السماح بجميع المجموعات، دون اشتراط @إشارة
السماح بجميع المجموعات، مع استمرار اشتراط @إشارة
السماح بمجموعات محددة فقط
allowlist، يمكنك أيضًا قبول مجموعة بإضافة إدخال groups.<chat_id> صريح. لا تتجاوز الإدخالات الصريحة groupPolicy: "disabled". تضبط الإعدادات الافتراضية ذات حرف البدل ضمن groups.* المجموعات المطابقة، لكنها لا تقبل المجموعات بمفردها.
تقييد المرسلين داخل مجموعة
channels.feishu.groupSenderAllowFrom قائمة السماح نفسها للمرسلين في جميع المجموعات؛ ويكون لـ allowFrom الخاص بكل مجموعة الأولوية.
الحصول على معرّفات المجموعات والمستخدمين
معرّفات المجموعات (chat_id، التنسيق: oc_xxx)
افتح المجموعة في Feishu/Lark، وانقر على أيقونة القائمة في الزاوية العلوية اليمنى، ثم انتقل إلى Settings. يُدرج معرّف المجموعة (chat_id) في صفحة الإعدادات.

معرّفات المستخدمين (open_id، التنسيق: ou_xxx)
شغّل Gateway، وأرسل رسالة مباشرة إلى البوت، ثم تحقق من السجلات:
open_id في مخرجات السجل. يمكنك أيضًا التحقق من طلبات الإقران المعلقة:
الأوامر الشائعة
لا يدعم Feishu/Lark قوائم أوامر الشرطة المائلة الأصلية، لذا أرسل هذه الأوامر كرسائل نصية عادية.
استكشاف الأخطاء وإصلاحها
لا يستجيب البوت في محادثات المجموعات
- تأكد من إضافة البوت إلى المجموعة
- تأكد من توجيه @إشارة إلى البوت (مطلوب افتراضيًا)
- تحقق من أن
groupPolicyليس"disabled" - تحقق من السجلات:
openclaw logs --follow
لا يتلقى البوت الرسائل
- تأكد من نشر البوت والموافقة عليه في Feishu Open Platform / Lark Developer
- تأكد من أن اشتراك الأحداث يتضمن
im.message.receive_v1 - تأكد من تحديد persistent connection (WebSocket)
- تأكد من منح جميع نطاقات الأذونات المطلوبة
- تأكد من تشغيل Gateway:
openclaw gateway status - تحقق من السجلات:
openclaw logs --follow
لا يتفاعل إعداد رمز QR في تطبيق Feishu على الهاتف المحمول
- أعد تشغيل الإعداد:
openclaw channels login --channel feishu - اختر الإعداد اليدوي
- أنشئ تطبيقًا ذاتي الإنشاء في Feishu Open Platform وانسخ App ID وApp Secret الخاصين به
- الصق بيانات الاعتماد هذه في معالج الإعداد
تسرّب App Secret
- أعد تعيين App Secret في Feishu Open Platform / Lark Developer
- حدّث القيمة في إعداداتك
- أعد تشغيل Gateway:
openclaw gateway restart
الإعداد المتقدم
حسابات متعددة
defaultAccount في الحساب المستخدم عندما لا تحدد واجهات API الصادرة accountId. ترث إدخالات الحساب إعدادات المستوى الأعلى؛ ويمكن تجاوز معظم مفاتيح المستوى الأعلى لكل حساب.
يستخدم accounts.<id>.tts البنية نفسها التي يستخدمها messages.tts، ويُدمج بعمق فوق إعداد TTS العام، بحيث يمكن لإعدادات Feishu متعددة البوتات إبقاء بيانات اعتماد المزوّد المشتركة عامةً مع تجاوز الصوت أو النموذج أو الشخصية أو الوضع التلقائي فقط لكل حساب.
حدود الرسائل
textChunkLimit- حجم جزء النص الصادر (الافتراضي:4000حرفًا)streaming.chunkMode- يقسم"length"(الافتراضي) عند الحد؛ ويفضل"newline"حدود الأسطر الجديدةmediaMaxMb- حد رفع الوسائط وتنزيلها (الافتراضي:30ميغابايت)
التدفق
يدعم Feishu/Lark الردود المتدفقة عبر البطاقات التفاعلية (واجهة Card Kit للتدفق). عند التمكين، يحدّث البوت البطاقة في الوقت الفعلي أثناء إنشاء النص.streaming.mode: "off" لإرسال الرد الكامل في رسالة واحدة؛ كما يعطّل renderMode: "raw" (نص عادي بدلًا من البطاقات) البطاقات المتدفقة. يكون streaming.block.enabled معطلًا افتراضيًا؛ ولا تمكّنه إلا عندما تريد إرسال كتل المساعد المكتملة قبل الرد النهائي. تُرحّل القيمة المنطقية القديمة streaming والمفاتيح المسطحة blockStreaming / blockStreamingCoalesce / chunkMode إلى هذه البنية المتداخلة عبر openclaw doctor --fix.
تحسين الحصة
قلّل عدد استدعاءات API الخاصة بـ Feishu/Lark باستخدام علامتين اختياريتين:typingIndicator(الافتراضيtrue): اضبطfalseلتخطي استدعاءات تفاعل الكتابةresolveSenderNames(الافتراضيtrue): اضبطfalseلتخطي عمليات البحث عن الملف الشخصي للمرسل
نطاق جلسة المجموعة وسلاسل المواضيع
يتحكمchannels.feishu.groupSessionScope (على المستوى الأعلى أو لكل حساب أو لكل مجموعة) في كيفية تعيين رسائل المجموعة إلى جلسات الوكيل:
بالنسبة إلى نطاقات المواضيع، تستخدم مجموعات المواضيع الأصلية في Feishu/Lark الحدث
thread_id (omt_*) بوصفه مفتاح جلسة الموضوع الأساسي. إذا أغفل حدث بدء موضوع أصلي thread_id، فإن OpenClaw يجلبه من Feishu قبل توجيه الدور. تواصل ردود المجموعات العادية التي يحولها OpenClaw إلى سلاسل استخدام معرّف الرسالة الجذرية للرد (om_*) كي يظل الدور الأول والأدوار اللاحقة في الجلسة نفسها.
اضبط replyInThread: "enabled" (على المستوى الأعلى أو لكل مجموعة) لجعل ردود البوت تنشئ سلسلة موضوع في Feishu أو تتابعها بدلًا من الرد داخل السياق. يُعد topicSessionMode السلف المهمل لـ groupSessionScope؛ ويُفضّل groupSessionScope.
أدوات مساحة عمل Feishu
يوفر Plugin أدوات للوكيل خاصة بمستندات Feishu والمحادثات وقاعدة المعرفة والتخزين السحابي والأذونات وBitable، بالإضافة إلى Skills المطابقة (feishu-doc، feishu-drive، feishu-perm، feishu-wiki). تخضع عائلات الأدوات للتحكم بواسطة channels.feishu.tools:
يمثل
tools.base اسمًا مستعارًا لـ tools.bitable؛ وتتغلب قيمة bitable الصريحة عند تعيين كليهما. توجد بوابات كل حساب ضمن accounts.<id>.tools.
امنح drive:drive.metadata:readonly لإجراء عمليات بحث مباشرة عن feishu_drive info خارج الدليل الجذر،
ما لم يكن التطبيق يمتلك بالفعل نطاق drive:drive الكامل. من دون أيٍّ من النطاقين، يُبقي info
البحث القديم في الدليل الجذر متاحًا عبر drive:drive:readonly.
جلسات ACP
يدعم Feishu/Lark بروتوكول ACP للرسائل المباشرة ورسائل سلاسل المجموعات. يعتمد ACP في Feishu/Lark على الأوامر النصية، ولا توجد قوائم أصلية لأوامر الشرطة المائلة، لذا استخدم رسائل/acp ... مباشرةً في المحادثة.
ربط ACP دائم
إنشاء ACP من الدردشة
في رسالة مباشرة أو سلسلة على Feishu/Lark:--thread here مع الرسائل المباشرة ورسائل سلاسل Feishu/Lark. تُوجَّه رسائل المتابعة في المحادثة المرتبطة مباشرةً إلى جلسة ACP تلك.
التوجيه متعدد الوكلاء
استخدمbindings لتوجيه الرسائل المباشرة أو المجموعات في Feishu/Lark إلى وكلاء مختلفين.
match.channel:"feishu"match.peer.kind:"direct"(رسالة مباشرة) أو"group"(دردشة جماعية)match.peer.id: معرّف Open ID للمستخدم (ou_xxx) أو معرّف المجموعة (oc_xxx)
عزل الوكيل لكل مستخدم (إنشاء الوكيل الديناميكي)
فعّلdynamicAgentCreation لإنشاء نسخ وكلاء معزولة تلقائيًا لكل مستخدم للرسائل المباشرة. يحصل كل مستخدم على ما يلي:
- دليل مساحة عمل مستقل
USER.md/SOUL.md/MEMORY.mdمنفصلة- سجل محادثات خاص
- Skills وحالة معزولتان
تتضمن الروابط الديناميكية قيمة Feishu الموحّدة
accountId، بحيث توجّه الحسابات الافتراضية والمسمّاة كل مرسل إلى الوكيل الديناميكي الصحيح.إذا أنشأ حساب مسمّى وكيلاً ديناميكيًا غير محدد النطاق في إصدار أقدم، فسيظل ذلك الوكيل القديم محسوبًا ضمن maxAgents. تأكد من أن الحساب الافتراضي لا يستخدمه قبل إزالته، أو زِد maxAgents مؤقتًا؛ لا يستطيع OpenClaw الاستدلال بأمان على الحساب الذي يملك الحالة القديمة الملتبسة.الإعداد السريع
آلية العمل
عندما يرسل مستخدم جديد رسالته المباشرة الأولى:- تُنشئ القناة
agentIdفريدًا:feishu-{user_open_id}للحساب الافتراضي، أو ملخص هوية محدودًا مسبوقًا بالحساب لحساب مُسمّى - تُنشئ مساحة عمل جديدة في مسار
workspaceTemplate - تُسجّل الوكيل وتُنشئ ارتباطًا لهذا المستخدم
- يضمن مساعد مساحة العمل وجود ملفات التمهيد (
AGENTS.mdوSOUL.mdوUSER.mdوغيرها) عند الوصول الأول - تُوجّه جميع الرسائل المستقبلية من هذا المستخدم إلى وكيله المخصص
خيارات الإعداد
متغيرات القالب:
{agentId}- معرّف الوكيل المُنشأ (مثلfeishu-ou_xxxxxxأوfeishu-support-<identity_digest>){userId}- معرّف Feishu المفتوح للمرسل (مثلou_xxxxxx)
نطاق الجلسة
يتحكمsession.dmScope في كيفية ربط الرسائل المباشرة بجلسات الوكيل. هذا إعداد عام يؤثر في جميع القنوات.
المقايضة: يتيح استخدام
"main" التحميل التلقائي لملفات التمهيد (USER.md وSOUL.md وMEMORY.md)، لكنه يعني أن جميع الرسائل المباشرة عبر جميع القنوات تشترك في نمط مفتاح الجلسة نفسه. بالنسبة إلى الروبوتات العامة متعددة المستخدمين التي يكون فيها العزل أهم من التحميل التلقائي لملفات التمهيد، يُنصح باستخدام "per-channel-peer" وإدارة ملفات التمهيد يدويًا.
استخدم
"per-account-channel-peer" عندما ينبغي لحسابات Feishu المسماة الاحتفاظ بجلسات منفصلة للمرسل نفسه. تحافظ الارتباطات الديناميكية على نطاق الحساب.نشر نموذجي متعدد المستخدمين
التحقق
تحقق من سجلات Gateway للتأكد من أن الإنشاء الديناميكي يعمل:ملاحظات
- عزل مساحة العمل: يحصل كل مستخدم على دليل مساحة عمل ومثيل وكيل خاصين به. لا يمكن للمستخدمين رؤية سجل محادثات بعضهم أو ملفاتهم ضمن تدفق المراسلة المعتاد.
- حدود الأمان: هذه آلية لعزل سياق المراسلة، وليست حدود أمان بين مستأجرين مشتركين عدائيين. تشترك الحسابات في عملية الوكيل وبيئة المضيف.
- يجب إبقاء الكتابة إلى الإعدادات مفعّلة: يكتب إنشاء الوكلاء الديناميكيين الوكلاء والارتباطات في الإعدادات؛ ويُتخطى عندما تكون
channels.feishu.configWritesبالقيمةfalse(الافتراضي: مفعّل). - يجب أن يكون
bindingsفارغًا: تسجّل الوكلاء الديناميكية ارتباطاتها تلقائيًا - مسار الترقية: تستمر الارتباطات اليدوية الحالية في العمل إلى جانب الوكلاء الديناميكيين
session.dmScopeعام: يؤثر هذا في جميع القنوات، وليس Feishu فقط
مرجع الإعدادات
الإعدادات الكاملة: إعدادات Gatewayأنواع الرسائل المدعومة
الاستقبال
- ✅ النص
- ✅ النص المنسّق (منشور)
- ✅ الصور
- ✅ الملفات
- ✅ الصوت
- ✅ الفيديو/الوسائط
- ✅ الملصقات
file_key. عند تكوين tools.media.audio، ينزّل OpenClaw
مورد الملاحظة الصوتية ويشغّل النسخ الصوتي المشترك قبل دور
الوكيل، بحيث يتلقى الوكيل النص المنطوق المنسوخ. إذا ضمّن Feishu
نص النسخ مباشرةً في حمولة الصوت، يُستخدم ذلك النص دون
استدعاء ASR آخر. في غياب موفّر للنسخ الصوتي، يظل الوكيل يتلقى
العنصر النائب <media:audio> مع المرفق المحفوظ، وليس حمولة
مورد Feishu الخام.
الإرسال
- ✅ النص
- ✅ الصور
- ✅ الملفات
- ✅ الصوت
- ✅ الفيديو/الوسائط
- ✅ البطاقات التفاعلية (بما في ذلك التحديثات المتدفقة)
- ⚠️ النص المنسّق (تنسيق بأسلوب المنشورات؛ لا يدعم إمكانات التأليف الكاملة في Feishu/Lark)
audio في Feishu وتتطلب
وسائط رفع Ogg/Opus (file_type: "opus"). تُرسل وسائط .opus و.ogg
الموجودة مباشرةً كصوت أصلي. تُحوَّل صيغ MP3/WAV/M4A وغيرها من صيغ الصوت المحتملة
إلى Ogg/Opus بتردد 48kHz باستخدام ffmpeg فقط عندما يطلب الرد التسليم
الصوتي (audioAsVoice / أداة الرسائل asVoice، بما في ذلك ردود الملاحظات
الصوتية عبر TTS). تظل مرفقات MP3 العادية ملفات عادية. إذا كان ffmpeg مفقودًا أو
فشل التحويل، يعود OpenClaw إلى استخدام مرفق ملف ويسجّل السبب.
سلاسل المواضيع والردود
- ✅ الردود المضمنة
- ✅ الردود ضمن سلاسل المواضيع
- ✅ تظل ردود الوسائط مرتبطة بسلسلة الموضوع عند الرد على رسالة ضمن سلسلة
ذو صلة
- نظرة عامة على القنوات - جميع القنوات المدعومة
- الإقران - مصادقة الرسائل المباشرة وتدفق الإقران
- المجموعات - سلوك الدردشة الجماعية وتقييد الإشارات
- توجيه القنوات - توجيه جلسات الرسائل
- الأمان - نموذج الوصول والتقوية