Technical reference

Протокол расширенного вывода

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

  • структурированные поля mediaUrl / mediaUrls для доставки вложений
  • [[audio_as_voice]] для подсказок представления аудио
  • [[reply_to_current]] / [[reply_to:<id>]] для метаданных ответа
  • [embed ...] для расширенного рендеринга в Control UI

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

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

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

Эти директивы независимы. Структурированные поля медиа и теги ответа/голоса являются метаданными доставки; [embed ...] — это веб-ориентированный путь расширенного рендеринга.

Когда включена потоковая передача блоков, медиа должны передаваться в структурированных полях полезной нагрузки. Если один и тот же URL медиа отправлен в потоковом блоке и повторен в финальной полезной нагрузке ассистента, OpenClaw доставляет вложение один раз и удаляет дубликат из финальной полезной нагрузки.

[embed ...]

[embed ...] — единственный обращенный к агенту синтаксис расширенного рендеринга для Control UI.

Самозакрывающийся пример:

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

Правила:

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

Связанное

Was this useful?
On this page

On this page