Technical reference
Protocolo de saída rica
A saída do assistente pode carregar um pequeno conjunto de diretivas de entrega/renderização:
MEDIA:para entrega de anexos[[audio_as_voice]]para dicas de apresentação de áudio[[reply_to_current]]/[[reply_to:<id>]]para metadados de resposta[embed ...]para renderização rica da UI de controle
Anexos MEDIA: remotos devem ser URLs https: públicas. http: puro,
loopback, link-local, nomes de host privados e internos são ignorados como
diretivas de anexo; buscadores de mídia do lado do servidor ainda aplicam suas
próprias proteções de rede.
Anexos MEDIA: locais podem usar caminhos absolutos, caminhos relativos ao
workspace ou caminhos relativos à home ~/. Eles ainda passam pela política de
leitura de arquivos do agente e por verificações de tipo de mídia antes da
entrega.
A sintaxe Markdown simples de imagem permanece como texto por padrão. Canais que
intencionalmente mapeiam respostas de imagem Markdown para anexos de mídia
aderem a isso em seu adaptador de saída; o Telegram faz isso para que
 ainda possa se tornar uma resposta de mídia.
Essas diretivas são separadas. MEDIA: e tags de resposta/voz permanecem como metadados de entrega; [embed ...] é o caminho de renderização rica exclusivo da web.
Mídia confiável de resultado de ferramenta usa o mesmo parser MEDIA: / [[audio_as_voice]] antes da entrega, então saídas de texto de ferramentas ainda podem marcar um anexo de áudio como nota de voz.
Quando streaming em blocos está habilitado, MEDIA: permanece como metadado de
entrega única para um turno. Se a mesma URL de mídia for enviada em um bloco
transmitido em streaming e repetida no payload final do assistente, o OpenClaw
entrega o anexo uma vez e remove a duplicata do payload final.
[embed ...]
[embed ...] é a única sintaxe de renderização rica voltada para agentes para a UI de controle.
Exemplo autofechado:
[embed ref="cv_123" title="Status" /]
Regras:
[view ...]não é mais válido para novas saídas.- Shortcodes de embed são renderizados apenas na superfície de mensagem do assistente.
- Apenas embeds baseados em URL são renderizados. Use
ref="..."ouurl="...". - Shortcodes de embed HTML inline em forma de bloco não são renderizados.
- A UI web remove o shortcode do texto visível e renderiza o embed inline.
MEDIA:não é um alias de embed e não deve ser usado para renderização rica de embed.
Formato de renderização armazenado
O bloco normalizado/armazenado de conteúdo do assistente é um item estruturado 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
}
}
Blocos ricos armazenados/renderizados usam esse formato canvas diretamente. present_view não é reconhecido.