---
read_when:
    - أنت تغيّر تنسيق Markdown أو تقطيعه للقنوات الصادرة
    - أنت تضيف مُنسّق قناة جديدًا أو تعيين نمط جديدًا
    - أنت تصحّح تراجعات التنسيق عبر القنوات
summary: خط أنابيب تنسيق Markdown للقنوات الصادرة
title: تنسيق Markdown
x-i18n:
    generated_at: "2026-04-24T07:37:31Z"
    model: gpt-5.4
    provider: openai
    source_hash: cf052e11fe9fd075a4337ffa555391c7003a346240b57bb65054c3f08401dfd9
    source_path: concepts/markdown-formatting.md
    workflow: 15
---

يقوم OpenClaw بتنسيق Markdown الصادر عبر تحويله إلى تمثيل وسيط مشترك
(IR) قبل عرض مخرجات خاصة بكل قناة. ويحافظ IR على
النص المصدر كما هو مع حمل امتدادات النمط/الروابط بحيث يظل التقطيع والعرض
متسقين عبر القنوات.

## الأهداف

- **الاتساق:** خطوة تحليل واحدة، وعدة عارضات.
- **تقطيع آمن:** تقسيم النص قبل العرض حتى لا ينكسر
  التنسيق المضمن عبر المقاطع.
- **الملاءمة للقناة:** تعيين IR نفسه إلى Slack mrkdwn وTelegram HTML ونطاقات أنماط Signal
  من دون إعادة تحليل Markdown.

## خط الأنابيب

1. **تحليل Markdown -> IR**
   - IR هو نص عادي بالإضافة إلى امتدادات أنماط (عريض/مائل/شطب/كود/محتوى مخفي) وامتدادات روابط.
   - تكون الإزاحات بوحدات UTF-16 البرمجية بحيث تتوافق نطاقات أنماط Signal مع API الخاص بها.
   - لا تُحلَّل الجداول إلا عندما تشترك قناة ما في تحويل الجداول.
2. **تقطيع IR (التنسيق أولًا)**
   - يحدث التقطيع على نص IR قبل العرض.
   - لا ينقسم التنسيق المضمن عبر المقاطع؛ وتُقسَّم الامتدادات لكل مقطع.
3. **العرض لكل قناة**
   - **Slack:** رموز mrkdwn (عريض/مائل/شطب/كود)، والروابط على شكل `<url|label>`.
   - **Telegram:** وسوم HTML (`<b>`, `<i>`, `<s>`, `<code>`, `<pre><code>`, `<a href>`).
   - **Signal:** نص عادي + نطاقات `text-style`؛ وتصبح الروابط `label (url)` عندما يختلف العنوان.

## مثال IR

Markdown المدخل:

```markdown
Hello **world** — see [docs](https://docs.openclaw.ai).
```

IR (تمثيل تخطيطي):

```json
{
  "text": "Hello world — see docs.",
  "styles": [{ "start": 6, "end": 11, "style": "bold" }],
  "links": [{ "start": 19, "end": 23, "href": "https://docs.openclaw.ai" }]
}
```

## أين يُستخدم

- تعرض محولات الإرسال الصادر في Slack وTelegram وSignal انطلاقًا من IR.
- ما تزال القنوات الأخرى (WhatsApp وiMessage وMicrosoft Teams وDiscord) تستخدم النص العادي أو
  قواعد التنسيق الخاصة بها، مع تطبيق تحويل جداول Markdown قبل
  التقطيع عند التفعيل.

## التعامل مع الجداول

لا توجد دعامة متسقة لجداول Markdown عبر عملاء الدردشة. استخدم
`markdown.tables` للتحكم في التحويل لكل قناة (ولكل حساب).

- `code`: عرض الجداول ككتل كود (الافتراضي لمعظم القنوات).
- `bullets`: تحويل كل صف إلى نقاط تعداد (الافتراضي لـ Signal + WhatsApp).
- `off`: تعطيل تحليل الجداول وتحويلها؛ ويمر نص الجدول الخام كما هو.

مفاتيح الإعداد:

```yaml
channels:
  discord:
    markdown:
      tables: code
    accounts:
      work:
        markdown:
          tables: off
```

## قواعد التقطيع

- تأتي حدود التقطيع من محولات/إعدادات القنوات وتُطبَّق على نص IR.
- تُحفَظ أسوار الكود ككتلة واحدة مع سطر جديد لاحق حتى تعرضها القنوات
  بشكل صحيح.
- تُعد بادئات القوائم واقتباسات الكتل جزءًا من نص IR، لذا لا ينقسم التقطيع
  في منتصف البادئة.
- لا يتم أبدًا تقسيم الأنماط المضمنة (عريض/مائل/شطب/كود مضمن/محتوى مخفي) عبر
  المقاطع؛ ويعيد العارض فتح الأنماط داخل كل مقطع.

إذا كنت بحاجة إلى مزيد من المعلومات حول سلوك التقطيع عبر القنوات، فراجع
[البث + التقطيع](/ar/concepts/streaming).

## سياسة الروابط

- **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. أما القنوات الأخرى فتعاملها كنص عادي.

## كيفية إضافة مُنسّق قناة أو تحديثه

1. **حلّل مرة واحدة:** استخدم المساعد المشترك `markdownToIR(...)` مع
   خيارات مناسبة للقناة (autolink، ونمط العناوين، وبادئة الاقتباس).
2. **اعرض:** نفّذ عارضًا باستخدام `renderMarkdownWithMarkers(...)` و
   خريطة علامات أنماط (أو نطاقات أنماط Signal).
3. **قطّع:** استدعِ `chunkMarkdownIR(...)` قبل العرض؛ ثم اعرض كل مقطع.
4. **وصّل المحول:** حدّث محول الإرسال الصادر للقناة لاستخدام المقطّع الجديد
   والعارض.
5. **اختبر:** أضف أو حدّث اختبارات التنسيق واختبار تسليم صادر إذا كانت
   القناة تستخدم التقطيع.

## مآزق شائعة

- يجب الحفاظ على رموز Slack بين الأقواس الزاوية (`<@U123>`, `<#C123>`, `<https://...>`)؛
  مع تهريب HTML الخام بأمان.
- يتطلب Telegram HTML تهريب النص خارج الوسوم لتجنب تنسيق معطوب.
- تعتمد نطاقات أنماط Signal على إزاحات UTF-16؛ لا تستخدم إزاحات نقاط الرمز.
- حافظ على الأسطر الجديدة اللاحقة لكتل الكود المسوّرة بحيث تقع علامات الإغلاق
  في سطر مستقل.

## ذو صلة

- [البث والتقطيع](/ar/concepts/streaming)
- [System prompt](/ar/concepts/system-prompt)
