Interface StreamingClient
O streaming e implementado como uma interface opcional que provedores podem adotar:StreamingClient recebem streaming automaticamente:
Provedores que não implementam
StreamingClient continuam funcionando normalmente. O ChatCLI faz fallback para SendPrompt (resposta completa) automaticamente.StreamChunk
Cada chunk do streaming carrega:Contrato de Streaming
- O canal retorna zero ou mais chunks de texto
- O chunk final tem
Done=truee pode incluirUsageeStopReason - Se ocorrer erro, um chunk com
Errore enviado e o canal fecha - O canal fecha após o chunk final ou erro
- O caller pode cancelar via contexto
Provedores com Suporte
Stream Watchdog
O Stream Watchdog monitora o stream para detectar stalls (interupcoes sem dados) e prevenir que o ChatCLI fique travado esperando indefinidamente:- Timeouts
- Resultado
Ambos os timers sao resetados a cada chunk recebido. Se o provedor parar de enviar dados por 90 segundos, o watchdog interrompe o stream e retorna o texto já acumulado.
Configuração do Watchdog
Fallback para Não-Streaming
Quando o streaming não esta disponÃvel (provedor não suporta ou erro na conexão), o ChatCLI faz fallback automático:DrainStream permite converter um stream em resposta completa quando necessário:
Integração com TUI
No modo interativo (Bubble Tea), o streaming integra-se diretamente com o renderizador:- Cada chunk e emitido como evento via
TUIEmitter - O modelo Bubble Tea atualiza a view incrementalmente
- Markdown e renderizado progressivamente via Glamour
- A barra de status mostra o estado do streaming em tempo real
No modo one-shot (
-p), o streaming e desabilitado e DrainStream e usado para coletar a resposta completa antes de imprimir.Próximos Passos
Recuperação de Contexto
O que acontece quando max_tokens e atingido durante streaming.
Provider Fallback
Chain de fallback entre provedores com e sem streaming.
Tool Use Nativo
Streaming com tool calls nativas.
UI de Progresso
Indicadores visuais durante streaming do agente.