يصيغ OpenClaw رسائل Markdown الصادرة بتحويلها إلى تمثيل وسيط مشترك (IR) قبل عرض المخرجات الخاصة بكل قناة. يحافظ IR على نص المصدر كما هو مع حمل نطاقات الأنماط/الروابط كي تبقى التجزئة والعرض متسقين عبر القنوات.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
الأهداف
- الاتساق: خطوة تحليل واحدة، وعدة عارضات.
- تجزئة آمنة: تقسيم النص قبل العرض بحيث لا ينكسر التنسيق المضمن أبدا عبر الأجزاء.
- ملاءمة القناة: تعيين IR نفسه إلى Slack mrkdwn، وHTML في Telegram، ونطاقات الأنماط في Signal من دون إعادة تحليل Markdown.
المسار
- تحليل Markdown -> IR
- IR هو نص عادي بالإضافة إلى نطاقات أنماط (غامق/مائل/مشطوب/كود/مخفى) ونطاقات روابط.
- الإزاحات هي وحدات كود UTF-16 كي تتوافق نطاقات أنماط Signal مع API الخاص به.
- لا يتم تحليل الجداول إلا عندما تختار قناة تفعيل تحويل الجداول.
- تجزئة IR (التنسيق أولا)
- تحدث التجزئة على نص IR قبل العرض.
- لا ينقسم التنسيق المضمن عبر الأجزاء؛ تقطع النطاقات لكل جزء.
- العرض لكل قناة
- Slack: رموز mrkdwn (غامق/مائل/مشطوب/كود)، والروابط بصيغة
<url|label>. - Telegram: وسوم HTML (
<b>,<i>,<s>,<code>,<pre><code>,<a href>). - Signal: نص عادي + نطاقات
text-style؛ تصبح الروابطlabel (url)عندما تختلف التسمية.
- Slack: رموز mrkdwn (غامق/مائل/مشطوب/كود)، والروابط بصيغة
مثال IR
Markdown المدخل:أين يستخدم
- تعرض محولات Slack وTelegram وSignal الصادرة من IR.
- لا تزال القنوات الأخرى (WhatsApp وiMessage وMicrosoft Teams وDiscord) تستخدم نصا عاديا أو قواعد التنسيق الخاصة بها، مع تطبيق تحويل جداول Markdown قبل التجزئة عند تفعيله.
التعامل مع الجداول
جداول Markdown غير مدعومة بشكل متسق عبر عملاء الدردشة. استخدمmarkdown.tables للتحكم في التحويل لكل قناة (ولكل حساب).
code: عرض الجداول ككتل كود (الافتراضي لمعظم القنوات).bullets: تحويل كل صف إلى نقاط تعداد (الافتراضي لـ Matrix وSignal وWhatsApp).off: تعطيل تحليل الجداول وتحويلها؛ يمر نص الجدول الخام كما هو.
قواعد التجزئة
- تأتي حدود الأجزاء من محولات/إعدادات القنوات وتطبق على نص IR.
- تحفظ أسوار الكود ككتلة واحدة مع سطر جديد لاحق كي تعرضها القنوات بشكل صحيح.
- بادئات القوائم وبادئات الاقتباس الكتلي جزء من نص IR، لذلك لا تقسم التجزئة داخل البادئة.
- لا تقسم الأنماط المضمنة (غامق/مائل/مشطوب/كود مضمن/مخفى) أبدا عبر الأجزاء؛ يعيد العارض فتح الأنماط داخل كل جزء.
سياسة الروابط
- Slack:
[label](url)-><url|label>؛ تبقى عناوين URL المجردة مجردة. يتم تعطيل Autolink أثناء التحليل لتجنب الربط المزدوج. - Telegram:
[label](url)-><a href="url">label</a>(وضع تحليل HTML). - Signal:
[label](url)->label (url)إلا إذا طابقت التسمية عنوان URL.
العناصر المخفية
لا تحلل علامات الإخفاء (||spoiler||) إلا لـ Signal، حيث تعين إلى
نطاقات نمط SPOILER. تتعامل القنوات الأخرى معها كنص عادي.
كيفية إضافة منسق قناة أو تحديثه
- حلل مرة واحدة: استخدم المساعد المشترك
markdownToIR(...)مع الخيارات المناسبة للقناة (autolink، نمط العنوان، بادئة الاقتباس الكتلي). - اعرض: نفذ عارضا باستخدام
renderMarkdownWithMarkers(...)وخريطة علامات أنماط (أو نطاقات أنماط Signal). - جزئ: استدع
chunkMarkdownIR(...)قبل العرض؛ واعرض كل جزء. - صل المحول: حدث محول القناة الصادر لاستخدام المجزئ والعارض الجديدين.
- اختبر: أضف أو حدث اختبارات التنسيق واختبار تسليم صادر إذا كانت القناة تستخدم التجزئة.
أخطاء شائعة
- يجب الحفاظ على رموز Slack ذات الأقواس الزاوية (
<@U123>,<#C123>,<https://...>)؛ اهرب HTML الخام بأمان. - يتطلب HTML في Telegram تهريب النص خارج الوسوم لتجنب ترميز معطل.
- تعتمد نطاقات أنماط Signal على إزاحات UTF-16؛ لا تستخدم إزاحات نقاط الكود.
- حافظ على الأسطر الجديدة اللاحقة لكتل الكود المسيجة كي تقع علامات الإغلاق على سطرها الخاص.
ذات صلة
Streaming and chunking
سلوك البث الصادر، وحدود الأجزاء، والتسليم الخاص بكل قناة.
System prompt
ما يراه النموذج قبل المحادثة، بما في ذلك ملفات مساحة العمل المحقونة.