1.5 KiB
1.5 KiB
Correção: compactação de contexto LLM
Problema
O estado operacional preserva resultados completos de MCP/workflows para auditoria e continuidade. Esses objetos podem conter cópias recursivas de state, input, session, agent_profile, business_events, trace, nodes e outros dados técnicos. Quando build_messages() serializava diretamente mcp_results e transaction_evidence, o prompt podia ultrapassar a janela do modelo.
Caso observado: Input length (134212) exceeds model's maximum context length (131072) no ContestacaoAgent.
Correção
build_messages()passa a renderizar business context, MCP results, transaction evidence, RAG metadata e extra sections por um compactador genérico com orçamento de caracteres.- Objetos técnicos recursivos permanecem no estado/checkpoint para auditoria, mas não são reenviados integralmente ao LLM.
- Fatos de negócio (tool, subject, status, valores, protocolos e resultados úteis) são preservados dentro do orçamento.
- Se o provider ainda rejeitar por limite de contexto,
_invoke_llm_cached()executa uma única segunda tentativa com orçamento emergencial de mensagens. - Não há loop de retries; qualquer outra exceção continua propagando normalmente.
Invariantes
- Estado operacional completo != contexto de prompt.
- Compactação não altera a execução das tools/workflows.
- Context-limit error recebe no máximo um retry compactado.
- A correção é genérica e não contém regra específica do Contas/TIM.