Technical reference

پروتکل خروجی غنی

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

  • 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 است.

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

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

قواعد:

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

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

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

{
  "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 شناخته نمی‌شود.

مرتبط