channels.<channel>.streaming.mode: "progress" y OpenClaw crea el mensaje cuando empieza el trabajo real, lo edita mientras el agente lee, planifica, llama herramientas o espera aprobación, y luego lo convierte en la respuesta final.
Discord ya usa
streaming.mode: "progress" de forma predeterminada cuando
channels.discord.streaming.mode/streamMode no están configurados, por lo que los borradores de progreso
aparecen allí sin ninguna configuración. Todos los demás canales usan partial
u off de forma predeterminada; consulta Streaming y fragmentación
para ver la tabla completa de valores predeterminados por canal.Inicio rápido
Lo que ven los usuarios
| Parte | Propósito |
|---|---|
| Etiqueta | Línea breve inicial/de estado como Working o Shelling. |
| Líneas de progreso | Actualizaciones compactas de ejecución que usan los mismos iconos de herramientas y formateador de detalles que /verbose. |
🛠️ Bash: run tests,
🔎 Web Search: for "discord edit message" o ✍️ Write: to /tmp/file.
La respuesta final reemplaza el borrador en el mismo lugar cuando el canal puede hacerlo de forma segura;
de lo contrario, OpenClaw envía la respuesta final mediante la entrega normal y
limpia o deja de actualizar el borrador (consulta Finalización).
Elegir un modo
channels.<channel>.streaming.mode controla el comportamiento visible mientras está en progreso:
| Modo | Ideal para | Qué aparece en el chat |
|---|---|---|
off | Canales silenciosos | Solo la respuesta final. |
partial | Ver aparecer el texto de la respuesta | Un borrador editado con el texto más reciente de la respuesta. |
block | Fragmentos más grandes de vista previa de respuesta | Una vista previa actualizada o añadida en fragmentos más grandes. |
progress | Turnos con muchas herramientas o de larga duración | Un borrador de estado y luego la respuesta final. |
progress cuando a los usuarios les importe más “qué está ocurriendo” que ver
el texto de la respuesta transmitirse token por token; partial cuando el propio texto de la respuesta sea
la señal de progreso; block para fragmentos más grandes de vista previa. En Discord y
Telegram, streaming.mode: "block" sigue siendo streaming de vista previa, no entrega normal
de respuestas en bloque; usa streaming.block.enabled (o el heredado
blockStreaming) para eso.
Configurar etiquetas
Las etiquetas de progreso viven enchannels.<channel>.streaming.progress. La
label predeterminada es "auto", que elige entre el conjunto integrado de OpenClaw de
etiquetas de una sola palabra:
label: "auto"):
Controlar líneas de progreso
Las líneas de progreso provienen de eventos reales de ejecución: inicios de herramientas, actualizaciones de elementos, planes de tareas, aprobaciones, salida de comandos, resúmenes de parches y actividad similar del agente. Están habilitadas de forma predeterminada (progress.toolProgress, valor predeterminado true).
Las herramientas también pueden emitir progreso tipado mientras una llamada individual sigue en ejecución. Así es
como una obtención o búsqueda lenta actualiza el borrador visible antes de que la herramienta
devuelva su resultado final. La actualización de progreso es un resultado parcial de herramienta con
contenido de modelo vacío y metadatos explícitos de canal público:
progress.text en la interfaz de progreso del canal. El resultado normal
de la herramienta sigue llegando más tarde como content/details y es la única parte
devuelta al modelo.
Al añadir progreso a una herramienta, emite un mensaje breve y genérico, y retrásalo
hasta que la operación haya estado pendiente el tiempo suficiente para ser útil. web_fetch
hace exactamente esto con un retraso de 5 segundos:
Modo de detalle
OpenClaw usa el mismo formateador para borradores de progreso y/verbose:
"explain" es el valor predeterminado y mantiene los borradores estables con etiquetas concisas.
"raw" añade el comando subyacente cuando está disponible, lo cual es útil durante
la depuración pero genera más ruido en el chat. Por ejemplo, una llamada node --check /tmp/app.js
se representa de forma distinta según el modo:
| Modo | Línea de progreso |
|---|---|
explain | 🛠️ check js syntax for /tmp/app.js |
raw | 🛠️ check js syntax for /tmp/app.js · node --check /tmp/app.js |
Texto de comando/exec
streaming.progress.commandText (valor predeterminado "raw") controla cuánto detalle del comando
se muestra junto a las líneas de progreso de exec/bash, independientemente del modo de detalle
anterior. Establécelo en "status" para mantener visible una línea de progreso de herramienta mientras se oculta
por completo el texto del comando:
Carril de comentario
streaming.progress.commentary (valor predeterminado false) intercala la narración de comentario/preámbulo
previa a la herramienta del modelo (💬, por ejemplo “I’ll check… then
…”) con las líneas de herramienta en el borrador. Consulta
Streaming y fragmentación para ver la
forma de configuración compartida entre canales.
Límites de líneas
Limita cuántas líneas permanecen visibles (valor predeterminado 8):Representación enriquecida (Slack)
Slack puede representar las líneas de progreso como campos estructurados de Block Kit en lugar de texto sin formato:Ocultar líneas de herramienta/tarea
Mantén el único borrador de progreso, pero oculta las líneas de herramienta y tarea:toolProgress: false, OpenClaw sigue suprimiendo los mensajes independientes antiguos
de progreso de herramienta para ese turno: el canal permanece visualmente silencioso hasta
la respuesta final, excepto por la etiqueta si hay una configurada.
Comportamiento del canal
| Canal | Transporte de progreso | Notas |
|---|---|---|
| Discord | Envía un mensaje y luego lo edita. | Usa el modo progress de forma predeterminada; el texto final se edita en el mismo lugar cuando cabe en un mensaje de vista previa seguro. |
| Matrix | Envía un evento y luego lo edita. | La configuración de streaming a nivel de cuenta controla los borradores a nivel de cuenta. |
| Microsoft Teams | Stream nativo de Teams en chats personales. | streaming.mode: "block" se asigna en su lugar a la entrega por bloques de Teams. |
| Slack | Stream nativo o publicación de borrador editable. | Necesita un destino de hilo de respuesta; los MD de nivel superior sin uno siguen recibiendo publicaciones de vista previa de borrador y ediciones. |
| Telegram | Envía un mensaje y luego lo edita. | Si llega un mensaje entre el borrador de progreso y la respuesta, el borrador se vuelve a publicar debajo de él (publicar nuevo y luego eliminar antiguo) en lugar de desplazar bruscamente el cliente. |
| Mattermost | Publicación de borrador editable. | La actividad de herramientas se integra en la misma publicación de estilo borrador. |
Finalización
Cuando la respuesta final está lista, OpenClaw intenta mantener el chat limpio:- Si el borrador puede convertirse de forma segura en la respuesta final, OpenClaw lo edita en el lugar.
- Si el canal usa transmisión de progreso nativa, OpenClaw finaliza esa transmisión cuando el transporte nativo acepta el texto final.
- De lo contrario (medios, una solicitud de aprobación, un destino de respuesta explícito, demasiados fragmentos, o un fallo al editar/enviar), OpenClaw envía la respuesta final a través de la ruta normal de entrega del canal en lugar de sobrescribir el borrador.
Solución de problemas
Solo veo la respuesta final. Comprueba quechannels.<channel>.streaming.mode sea progress para la cuenta
o el canal que gestionó el mensaje. Algunas rutas de grupo o de respuesta con cita desactivan
las vistas previas de borrador para un turno cuando el canal no puede editar de forma segura el
mensaje correcto.
Veo la etiqueta, pero no líneas de herramientas.
Comprueba streaming.progress.toolProgress. Si es false, OpenClaw mantiene el
comportamiento de borrador único, pero oculta las líneas de progreso de herramientas y tareas.
Veo un mensaje final nuevo en lugar de un borrador editado.
Esa es la alternativa de seguridad descrita en Finalización. Puede
ocurrir con respuestas multimedia, respuestas largas, destinos de respuesta explícitos, borradores antiguos de Telegram,
destinos de hilo de Slack ausentes, mensajes de vista previa eliminados o finalización fallida
de transmisión nativa.
Sigo viendo mensajes de progreso independientes.
El modo de progreso suprime los mensajes independientes predeterminados de progreso de herramientas siempre que haya un
borrador activo. Si siguen apareciendo mensajes independientes, confirma que el turno está
usando realmente el modo progress y no streaming.mode: "off" ni una ruta de
canal que no pueda crear un borrador para ese mensaje.
Teams se comporta de forma diferente a Discord o Telegram.
Microsoft Teams usa una transmisión nativa en chats personales en lugar del transporte genérico
de vista previa de enviar y editar, y asigna streaming.mode: "block" a la entrega en bloque de Teams
porque no tiene un modo de bloque con vista previa de borrador como Discord y
Telegram.