---
read_when:
    - أنت تغيّر تنسيق Markdown أو تقسيم المحتوى إلى مقاطع للقنوات الصادرة
    - أنت تضيف منسّق قناة جديدًا أو تعيينًا لنمط
    - أنت تصحّح أخطاء تراجعات التنسيق عبر القنوات
summary: مسار تنسيق Markdown للقنوات الصادرة
title: تنسيق Markdown
x-i18n:
    generated_at: "2026-05-12T12:50:54Z"
    model: gpt-5.5
    provider: openai
    source_hash: 8db92aaf1063ebcbd8630dfcb8ca0a4e9eeb1c64f5b8868bf11c836777180515
    source_path: concepts/markdown-formatting.md
    workflow: 16
---

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

## الأهداف

- **الاتساق:** خطوة تحليل واحدة، وعدة عارضات.
- **تجزئة آمنة:** تقسيم النص قبل العرض بحيث لا ينكسر التنسيق المضمن أبدا
  عبر الأجزاء.
- **ملاءمة القناة:** تعيين IR نفسه إلى Slack mrkdwn، وHTML في Telegram، ونطاقات
  الأنماط في 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`: تحويل كل صف إلى نقاط تعداد (الافتراضي لـ Matrix و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 الخام بأمان.
- يتطلب HTML في Telegram تهريب النص خارج الوسوم لتجنب ترميز معطل.
- تعتمد نطاقات أنماط Signal على إزاحات UTF-16؛ لا تستخدم إزاحات نقاط الكود.
- حافظ على الأسطر الجديدة اللاحقة لكتل الكود المسيجة كي تقع علامات الإغلاق على
  سطرها الخاص.

## ذات صلة

<CardGroup cols={2}>
  <Card title="Streaming and chunking" href="/ar/concepts/streaming" icon="bars-staggered">
    سلوك البث الصادر، وحدود الأجزاء، والتسليم الخاص بكل قناة.
  </Card>
  <Card title="System prompt" href="/ar/concepts/system-prompt" icon="message-lines">
    ما يراه النموذج قبل المحادثة، بما في ذلك ملفات مساحة العمل المحقونة.
  </Card>
</CardGroup>
