---
read_when:
    - تغییر نحوهٔ نمایش خروجی دستیار در رابط کاربری کنترل
    - اشکال‌زدایی از دستورالعمل‌های ارائهٔ `[embed ...]`، `MEDIA:`، پاسخ یا صوتی
summary: پروتکل کد کوتاه خروجی غنی برای جاسازی‌ها، رسانه، راهنماهای صوتی و پاسخ‌ها
title: پروتکل خروجی غنی
x-i18n:
    generated_at: "2026-05-02T22:25:31Z"
    model: gpt-5.5
    provider: openai
    source_hash: 8e0c365029c26d198090e1f181703e3979394afb0dfa1742f9c088885650de8b
    source_path: reference/rich-output-protocol.md
    workflow: 16
---

خروجی دستیار می‌تواند مجموعهٔ کوچکی از دستورالعمل‌های تحویل/رندر را حمل کند:

- `MEDIA:` برای تحویل پیوست
- `[[audio_as_voice]]` برای راهنمایی‌های نمایش صوت
- `[[reply_to_current]]` / `[[reply_to:<id>]]` برای فرادادهٔ پاسخ
- `[embed ...]` برای رندر غنی Control UI

پیوست‌های راه‌دور `MEDIA:` باید URLهای عمومی `https:` باشند. `http:` ساده،
loopback، link-local، خصوصی، و نام‌های میزبان داخلی به‌عنوان دستورالعمل‌های پیوست
نادیده گرفته می‌شوند؛ دریافت‌کننده‌های رسانهٔ سمت سرور همچنان محافظ‌های شبکهٔ خودشان را اعمال می‌کنند.

پیوست‌های محلی `MEDIA:` می‌توانند از مسیرهای مطلق، مسیرهای نسبی به workspace، یا
مسیرهای نسبی به خانه با `~/` استفاده کنند. آن‌ها همچنان پیش از تحویل از سیاست خواندن فایل agent و
بررسی‌های نوع رسانه عبور می‌کنند.

نحو سادهٔ تصویر Markdown به‌طور پیش‌فرض به‌صورت متن باقی می‌ماند. کانال‌هایی که عمداً
پاسخ‌های تصویر Markdown را به پیوست‌های رسانه‌ای نگاشت می‌کنند، در adapter خروجی خود
به این قابلیت ملحق می‌شوند؛ Telegram این کار را انجام می‌دهد تا `![alt](url)` همچنان بتواند به پاسخ رسانه‌ای تبدیل شود.

این دستورالعمل‌ها جدا هستند. `MEDIA:` و برچسب‌های پاسخ/صدا همچنان فرادادهٔ تحویل باقی می‌مانند؛ `[embed ...]` مسیر رندر غنی فقط وب است.
رسانهٔ قابل‌اعتمادِ نتیجهٔ ابزار پیش از تحویل از همان parser مربوط به `MEDIA:` / `[[audio_as_voice]]` استفاده می‌کند، بنابراین خروجی‌های متنی ابزار همچنان می‌توانند یک پیوست صوتی را به‌عنوان یادداشت صوتی علامت‌گذاری کنند.

وقتی stream کردن بلوکی فعال باشد، `MEDIA:` برای یک نوبت همچنان فرادادهٔ تک‌تحویلی باقی می‌ماند.
اگر همان URL رسانه در یک بلوک streamشده ارسال شود و در payload نهایی
دستیار تکرار شود، OpenClaw پیوست را یک بار تحویل می‌دهد و نسخهٔ تکراری را
از payload نهایی حذف می‌کند.

## `[embed ...]`

`[embed ...]` تنها نحو رندر غنیِ روبه‌روی agent برای Control UI است.

نمونهٔ خودبسته:

```text
[embed ref="cv_123" title="Status" /]
```

قواعد:

- `[view ...]` دیگر برای خروجی جدید معتبر نیست.
- shortcodeهای embed فقط در سطح پیام دستیار رندر می‌شوند.
- فقط embedهایی که پشتوانهٔ URL دارند رندر می‌شوند. از `ref="..."` یا `url="..."` استفاده کنید.
- shortcodeهای embed در قالب بلوکیِ HTML درون‌خطی رندر نمی‌شوند.
- UI وب shortcode را از متن قابل‌مشاهده حذف می‌کند و embed را به‌صورت درون‌خطی رندر می‌کند.
- `MEDIA:` نام مستعار embed نیست و نباید برای رندر embed غنی استفاده شود.

## شکل رندر ذخیره‌شده

بلوک محتوای نرمال‌سازی‌شده/ذخیره‌شدهٔ دستیار یک آیتم ساخت‌یافتهٔ `canvas` است:

```json
{
  "type": "canvas",
  "preview": {
    "kind": "canvas",
    "surface": "assistant_message",
    "render": "url",
    "viewId": "cv_123",
    "url": "/__openclaw__/canvas/documents/cv_123/index.html",
    "title": "Status",
    "preferredHeight": 320
  }
}
```

بلوک‌های غنیِ ذخیره‌شده/رندرشده مستقیماً از این شکل `canvas` استفاده می‌کنند. `present_view` شناخته نمی‌شود.

## مرتبط

- [adapterهای RPC](/fa/reference/rpc)
- [Typebox](/fa/concepts/typebox)
