channels.<channel>.streaming.mode: "progress" e o OpenClaw cria a
mensagem assim que o trabalho real começa, edita-a à medida que o agente lê, planeja, chama
ferramentas ou aguarda aprovação e, por fim, transforma-a na resposta final.
O Discord já usa
streaming.mode: "progress" por padrão quando
channels.discord.streaming não está definido, portanto os rascunhos de progresso
aparecem nele sem qualquer configuração. Todos os outros canais usam partial
ou off por padrão; consulte Streaming e divisão em blocos
para ver a tabela completa de padrões por canal.Início rápido
O que os usuários veem
Para o progresso bruto de ferramentas, o rótulo aparece quando o agente inicia um trabalho significativo
e permanece ocupado durante o atraso inicial.
Ele fica no topo da lista contínua de linhas de progresso e, portanto, sai da área visível quando
linhas suficientes de trabalho concreto aparecem. Um título de status mostra apenas o status
em linguagem simples do agente, a menos que um rótulo seja configurado explicitamente. Respostas
somente de texto simples nunca mostram um rascunho de progresso; uma linha aparece apenas para atualizações de trabalho real,
por exemplo,
🛠️ Bash: run tests, 🔎 Web Search: for "discord edit message"
ou ✍️ Write: to /tmp/file.
A resposta final substitui o rascunho no mesmo lugar quando o canal pode fazer isso com
segurança; caso contrário, o OpenClaw envia a resposta final pela entrega normal e
limpa ou para de atualizar o rascunho (consulte Finalização).
Escolha um modo
channels.<channel>.streaming.mode controla o comportamento visível durante o processamento:
Escolha
progress quando os usuários se importarem mais com “o que está acontecendo” do que em observar
o texto da resposta ser transmitido token por token; partial quando o próprio texto da resposta for
o sinal de progresso; block para blocos maiores de pré-visualização. No Discord e
Telegram, streaming.mode: "block" ainda é streaming de pré-visualização, não a entrega normal de
respostas em blocos — use streaming.block.enabled para isso.
Configure rótulos
Os rótulos de progresso ficam emchannels.<channel>.streaming.progress. O rótulo padrão
das linhas brutas de ferramentas é "auto", que usa o rótulo interno simples Working.
Um título de status oculta esse rótulo implícito; defina
label: "auto" explicitamente se também quiser um rótulo acima dele:
label: "auto"):
Controle as linhas de progresso
As linhas de progresso vêm de eventos reais da execução: início de ferramentas, atualizações de itens, planos de tarefas, aprovações, saída de comandos, resumos de patches e atividades semelhantes do agente. Elas ficam habilitadas por padrão (progress.toolProgress, padrão true).
As ferramentas também podem emitir progresso tipado enquanto uma única chamada ainda está em execução. É
assim que uma busca ou recuperação lenta atualiza o rascunho visível antes que a ferramenta
retorne seu resultado final. A atualização de progresso é um resultado parcial da ferramenta com
conteúdo vazio para o modelo e metadados públicos explícitos do canal:
progress.text na interface de progresso do canal. O resultado normal
da ferramenta ainda chega depois como content/details e é a única parte
retornada ao modelo.
Ao adicionar progresso a uma ferramenta, emita uma mensagem curta e genérica e adie-a
até que a operação esteja pendente por tempo suficiente para ser útil. web_fetch
faz exatamente isso com um atraso de 5 segundos:
Modo de detalhes
O OpenClaw usa o mesmo formatador para rascunhos de progresso e/verbose:
"explain" é o padrão e mantém os rascunhos estáveis com rótulos concisos.
"raw" acrescenta o comando subjacente quando disponível, o que é útil durante
a depuração, mas gera mais ruído no chat. Por exemplo, uma chamada node --check /tmp/app.js
é renderizada de modo diferente em cada modo:
Texto de comando/execução
streaming.progress.commandText (padrão "raw") controla quantos detalhes do comando
aparecem ao lado das linhas de progresso de exec/bash, independentemente do modo de detalhes
acima. Defina-o como "status" para manter uma linha de progresso da ferramenta visível enquanto oculta
completamente o texto do comando:
Faixa de comentários
streaming.progress.commentary (padrão false) intercala a narração de
comentário/preâmbulo do modelo anterior à ferramenta (💬, por exemplo, “Vou verificar… e depois
…”) com as linhas de ferramentas no rascunho. Consulte
Streaming e divisão em blocos para ver o
formato de configuração compartilhado entre canais.
Com a faixa de comentários habilitada, os preâmbulos são renderizados apenas como essas linhas
💬 intercaladas; o título de status abaixo não interfere, para que a faixa mantenha seu
formato documentado.
Título de status
No Discord e Telegram no modo de progresso, o preâmbulo tipado do modelo anterior à ferramenta se torna o título de status do rascunho sempre que estiver disponível. Outros canais no modo de progresso mantêm seu comportamento de status existente. O título fica ativado por padrão e não ignora o bloqueio normal de atividade em turnos curtos; habilitarstreaming.progress.commentary encaminha os preâmbulos para a faixa intercalada
de comentários.
No Discord, quando um modelo utilitário é resolvido para o agente — um
utilityModel explícito ou o padrão
de modelo pequeno declarado pelo provedor principal (OpenAI → gpt-5.6-luna,
Anthropic → claude-haiku-4-5) — ele fornece um texto auxiliar curto em linguagem simples
quando o modelo não emite um preâmbulo ou permanece sem atualizações por cerca de 20 segundos
(atualmente, o título do Telegram usa apenas o preâmbulo):
streaming.progress.narration, padrão
true) e nunca recorre ao modelo principal: ela é executada apenas com um
utilityModel explícito ou um padrão declarado pelo provedor principal
do agente. Defina utilityModel: "" para desabilitar completamente o roteamento utilitário. As linhas de ferramentas
continuam se acumulando abaixo e voltam a aparecer se ambas as fontes de status pararem. As edições do
rascunho ainda aguardam o bloqueio normal de atividade e uma alteração real
no texto, o que evita flashes em turnos rápidos e reduz a rotatividade de edições em canais
movimentados. Defina narration: false para desabilitar apenas o texto auxiliar do modelo utilitário; os títulos
de preâmbulo do modelo permanecem habilitados:
commandText: "status", a entrada da narração também omite o texto de comandos exec/bash,
correspondendo ao que o rascunho mostra.
Limites de linhas
Limite quantas linhas permanecem visíveis (padrão 8):Renderização avançada (Slack)
O Slack pode renderizar linhas de progresso como campos estruturados do Block Kit em vez de texto simples:Ocultar linhas de ferramentas/tarefas
Mantenha o único rascunho de progresso, mas oculte as linhas de ferramentas e tarefas:toolProgress: false, o OpenClaw ainda suprime as mensagens independentes
mais antigas de progresso das ferramentas nessa interação — o canal permanece
visualmente silencioso até a resposta final, exceto pelo rótulo, caso algum esteja configurado.
Comportamento do canal
Os canais sem suporte seguro à edição usam indicadores de digitação ou
entrega somente da resposta final como alternativa. Consulte Streaming e divisão em partes para ver
a análise completa do comportamento em tempo de execução de cada canal.
Finalização
Quando a resposta final está pronta, o OpenClaw tenta manter o chat organizado:- No modo
progressno Discord, a resposta final é enviada como uma nova mensagem com um pequeno comprovante de atividade-#anexado (por exemplo,-# 🧠 2 thoughts · 🛠️ 5 tool calls · ⏱️ 12s), e o rascunho de status é excluído assim que essa resposta é entregue. Canais movimentados não mantêm nenhum log órfão de ferramentas acima da resposta; respostas finais com erro mantêm o rascunho como registro visível da interação que falhou. - Se o rascunho puder se tornar a resposta final com segurança (modos
partial/block), o OpenClaw o edita no mesmo lugar. - Se o canal usar streaming nativo de progresso, o OpenClaw finaliza esse stream quando o transporte nativo aceita o texto final.
- Caso contrário (mídia, uma solicitação de aprovação, um destino explícito de resposta, partes demais ou falha na edição ou no envio), o OpenClaw envia a resposta final pelo fluxo normal de entrega do canal, em vez de substituir o rascunho.
Solução de problemas
Vejo apenas a resposta final. Verifique sechannels.<channel>.streaming.mode está definido como progress para a conta
ou o canal que processou a mensagem. Alguns fluxos de grupo ou de resposta com citação desativam
as prévias de rascunho em uma interação quando o canal não consegue editar com segurança a
mensagem correta.
Vejo o rótulo, mas nenhuma linha de ferramenta.
Verifique streaming.progress.toolProgress. Se estiver definido como false, o OpenClaw mantém o
comportamento de rascunho único, mas oculta as linhas de progresso das ferramentas e tarefas.
Vejo uma nova mensagem final em vez de um rascunho editado.
Essa é a alternativa de segurança descrita em Finalização. Isso pode
acontecer em respostas com mídia, respostas longas, destinos explícitos de resposta, rascunhos antigos do Telegram,
destinos de thread ausentes no Slack, mensagens de prévia excluídas ou falha na
finalização do stream nativo.
Ainda vejo mensagens independentes de progresso.
O modo de progresso suprime as mensagens independentes padrão de progresso das ferramentas sempre que um
rascunho está ativo. Se as mensagens independentes ainda aparecerem, confirme se a interação está
realmente usando o modo progress, e não streaming.mode: "off" ou um fluxo do canal
que não consegue criar um rascunho para essa mensagem.
O Teams se comporta de maneira diferente do Discord ou Telegram.
O Microsoft Teams usa um stream nativo em chats pessoais, em vez do transporte genérico
de prévia com envio e edição, e associa streaming.mode: "block" à
entrega em blocos do Teams porque não possui um modo de bloco de prévia de rascunho como o Discord e o
Telegram.