OpenClawSkills
GitHub
Conceptos Básicos • 5 min de lectura

Streaming y Fragmentación

Comportamiento de streaming + fragmentación (respuestas en bloque, streaming de borrador, límites)

El "streaming" de OpenClaw involucra tres capas de mecanismos que son fáciles de confundir:

1. Streaming de tokens LLM: el modelo devuelve texto token por token (detalle de implementación interna).

2. Streaming de bloques: entrega bloques de texto completados al canal temprano (los usuarios pueden ver múltiples actualizaciones).

3. Fragmentación: divide una respuesta en múltiples mensajes basándose en límites de caracteres del canal (independiente del streaming).

Tutorial.step

Streaming de bloques (entrega por bloque)

Objetivo del streaming de bloques: mostrar a los usuarios "párrafos parcialmente completados" antes de que el modelo termine completamente, manteniendo los límites de párrafo lo más naturales posible.

Interruptor:

- Predeterminado global:''agents.defaults.blockStreamingDefault: "on"''

- Anulación de canal: la mayoría de canales requieren ''channels.<channel>.blockStreaming: true'' explícito

- Telegram es la excepción: también tiene streaming de borrador (ver abajo).

Ajustar parámetros:

- ''agents.defaults.blockStreamingBreak'': cuándo vaciar (ej., ''text_end'').

- ''agents.defaults.blockStreamingChunk'': ''minChars'', ''maxChars'', ''breakPreference''.

- ''agents.defaults.blockStreamingCoalesce'': fusiona bloques pequeños demasiado densos para reducir inundación de pantalla.

- ''agents.defaults.humanDelay'': hace que la entrega parezca más "humana".

Tutorial.step

Fragmentación (división por límites de canal)

La fragmentación es una "división dura" antes de la entrega:

- Telegram / WhatsApp: ~4000 caracteres por defecto

- Discord: 2000 caracteres + límite de líneas

- Slack: 4000 caracteres

Configurar:

- ''channels.<channel>.textChunkLimit''

- ''channels.<channel>.chunkMode'' (''length'' o ''newline'')

La fragmentación intenta evitar dividir bloques de código cercados, pero en casos extremos la división puede seguir siendo necesaria.

Tutorial.step

Streaming de borrador de Telegram (burbujas de borrador)

Telegram soporta "actualizar el mismo mensaje" usando modo borrador en temas/hilos de chat privado. OpenClaw controla esto vía ''channels.telegram.streamMode'':

- ''"off"'': deshabilita streaming de borrador, permite streaming de bloques (múltiples mensajes)

- ''"partial"'' (predeterminado): usa actualizaciones de borrador en temas de chat privado (los usuarios ven un mensaje creciendo continuamente)

- ''"block"'': escribe bloques de streaming de bloques al borrador (reduce múltiples mensajes)

Nota:

- Solo soportado en chats privados de Telegram + temas/hilos.

- El streaming de borrador y streaming de bloques son mutuamente excluyentes (cuando está habilitado, el streaming de bloques está deshabilitado).

Tutorial.step

Por qué podrías no ver streaming

Razones comunes:

- ''agents.defaults.blockStreamingDefault'' sigue siendo ''off''

- Estableciste ''blockStreamingDefault'' pero no habilitaste ''channels.<channel>.blockStreaming: true'' en el canal

- ''blockStreamingCoalesce'' fusionó bloques, así que parecieron enviados de una vez

- El modelo produjo un bloque grande de una vez (sin puntos de vaciado)

- El streaming de borrador de Telegram está habilitado (parece "actualización del mismo mensaje", no múltiples)

Tutorial.step

Recomendaciones prácticas

- Ten cuidado al habilitar streaming de bloques en chats grupales públicos (inundación de pantalla); prefiere ''minChars'' más grande o coalesce más fuerte.

- El streaming de bloques funciona mejor en chats privados.

- Si el canal soporta hilos de respuesta, los múltiples mensajes del streaming de bloques parecerán más "dispersos". Usa ''replyToMode'' y política de canal para optimizar el hilado.