Перейти к основному содержанию
Вывод ассистента может содержать небольшой набор директив доставки/рендеринга:
  • структурированные поля mediaUrl / mediaUrls для доставки вложений
  • [[audio_as_voice]] для подсказок представления аудио
  • [[reply_to_current]] / [[reply_to:<id>]] для метаданных ответа
  • [embed ...] для расширенного рендеринга в Control UI
Удаленные медиа-вложения должны быть публичными URL https:. Обычные http:, loopback, link-local, приватные и внутренние имена хостов игнорируются как директивы вложений; серверные загрузчики медиа по-прежнему применяют собственные сетевые защиты. Локальные медиа-вложения могут использовать абсолютные пути, пути относительно рабочей области или пути относительно домашнего каталога ~/. Перед доставкой они все равно проходят через политику чтения файлов агентом и проверки типа медиа.
Не выводите текстовые команды для вложений из инструментов, plugins, потоковых блоков, вывода браузера или действий сообщений. Вместо этого используйте структурированные поля медиа.Допустимая полезная нагрузка инструмента сообщений:
{ "message": "Here is your image.", "mediaUrl": "/workspace/image.png" }
Устаревший текст финального ответа ассистента все еще может нормализоваться для совместимости, но это не общий протокол plugin/инструментов.
Обычный синтаксис изображений Markdown по умолчанию остается текстом. Каналы, которые намеренно сопоставляют Markdown-ответы с изображениями с медиа-вложениями, включают это в своем исходящем адаптере; Telegram делает это, чтобы ![alt](url) все еще мог стать медиа-ответом. Эти директивы независимы. Структурированные поля медиа и теги ответа/голоса являются метаданными доставки; [embed ...] — это веб-ориентированный путь расширенного рендеринга. Когда включена потоковая передача блоков, медиа должны передаваться в структурированных полях полезной нагрузки. Если один и тот же URL медиа отправлен в потоковом блоке и повторен в финальной полезной нагрузке ассистента, OpenClaw доставляет вложение один раз и удаляет дубликат из финальной полезной нагрузки.

[embed ...]

[embed ...] — единственный обращенный к агенту синтаксис расширенного рендеринга для Control UI. Самозакрывающийся пример:
[embed ref="cv_123" title="Status" /]
Правила:
  • [view ...] больше не действителен для нового вывода.
  • Короткие коды embed рендерятся только в поверхности сообщения ассистента.
  • Рендерятся только embed-элементы, основанные на URL. Используйте ref="..." или url="...".
  • Встроенные HTML-короткие коды embed в блочной форме не рендерятся.
  • Веб-интерфейс удаляет короткий код из видимого текста и рендерит embed-элемент встроенно.
  • Структурированное медиа не является псевдонимом 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 не распознается.

Связанное