Technical reference

Протокол розширеного виводу

Вивід асистента може містити невеликий набір директив доставки/рендерингу:

  • MEDIA: для доставки вкладень
  • [[audio_as_voice]] для підказок щодо подання аудіо
  • [[reply_to_current]] / [[reply_to:<id>]] для метаданих відповіді
  • [embed ...] для розширеного рендерингу Control UI

Віддалені вкладення MEDIA: мають бути публічними URL-адресами https:. Звичайні http:, loopback, link-local, приватні та внутрішні імена хостів ігноруються як директиви вкладень; серверні завантажувачі медіа все одно застосовують власні мережеві захисти.

Локальні вкладення MEDIA: можуть використовувати абсолютні шляхи, шляхи відносно робочої області або шляхи ~/, відносні до домашнього каталогу. Перед доставкою вони все одно проходять політику читання файлів агентом і перевірки типу медіа.

Звичайний синтаксис зображень Markdown за замовчуванням лишається текстом. Канали, які навмисно зіставляють відповіді із зображеннями Markdown із медіавкладеннями, вмикають це у своєму вихідному адаптері; Telegram робить це, щоб ![alt](url) усе ще могло стати медіавідповіддю.

Ці директиви окремі. MEDIA: і теги відповіді/голосу лишаються метаданими доставки; [embed ...] є веб-орієнтованим шляхом розширеного рендерингу. Медіа з довірених результатів інструментів використовує той самий парсер MEDIA: / [[audio_as_voice]] перед доставкою, тому текстовий вивід інструментів усе ще може позначити аудіовкладення як голосову нотатку.

Коли ввімкнено потокове передавання блоків, MEDIA: лишається метаданими одноразової доставки для ходу. Якщо ту саму URL-адресу медіа надіслано у потоковому блоці й повторено у фінальному payload асистента, OpenClaw доставляє вкладення один раз і вилучає дублікат із фінального payload.

[embed ...]

[embed ...] є єдиним агент-орієнтованим синтаксисом розширеного рендерингу для Control UI.

Приклад із самозакриттям:

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

Правила:

  • [view ...] більше не є допустимим для нового виводу.
  • Embed-shortcode рендеряться лише на поверхні повідомлення асистента.
  • Рендеряться лише embed, підкріплені URL. Використовуйте ref="..." або url="...".
  • Блокові inline HTML embed-shortcode не рендеряться.
  • Веб-UI прибирає shortcode з видимого тексту й рендерить embed inline.
  • 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 не розпізнається.

Пов’язане