MODULO 3.3

πŸ’Ύ Memoria e Persistencia em Swarms

Do problema stateless dos LLMs as solucoes praticas: memoria em disco, Redis para estado efemero, Vector DB para longo prazo, rastreabilidade de decisoes e a evolucao RAG para Agent Memory.

6
Topicos
45
Minutos
Avancado
Nivel
Teoria
Tipo
1

πŸ’Ύ O problema: LLMs sao stateless

Todo LLM tem uma limitacao fundamental: ele e stateless. Cada chamada de API e uma interacao independente β€” o modelo nao "lembra" do que aconteceu na chamada anterior. O que simula memoria e o contexto da conversa (o historico de mensagens enviado junto com cada request), mas isso tem limites severos: a janela de contexto e finita (128k-1M tokens dependendo do modelo), o custo cresce linearmente com o tamanho do contexto e informacoes antigas sao progressivamente "esquecidas" a medida que o contexto cresce.

Para um chatbot simples, isso nao e problema. Mas para um swarm em producao que trabalha em projetos ao longo de dias ou semanas, a falta de memoria e fatal. O orquestrador precisa lembrar do plano, das decisoes tomadas, dos resultados de tasks anteriores e do estado atual de cada agente. Sem memoria persistente, o swarm comeca cada sessao do zero, repetindo trabalho, contradizendo decisoes e perdendo contexto critico. Memoria e o que transforma um demo em ferramenta de producao.

πŸ’‘ O Problema Concreto

  • β€’ Janela de contexto finita: Mesmo com 1M tokens, um projeto real com centenas de arquivos e decisoes excede rapidamente o limite
  • β€’ Custo crescente: Enviar todo o historico a cada chamada multiplica custos β€” 100k tokens de contexto a cada interacao nao e sustentavel
  • β€’ Perda de sessao: Se o processo do swarm morre (crash, timeout, reinicio), todo o estado em memoria e perdido permanentemente
  • β€’ Multiplos agentes: Em um swarm, cada agente tem seu proprio contexto β€” nao ha forma nativa de compartilhar "memorias" entre agentes diferentes

πŸ“Š Impacto real

  • Sem memoria: Swarm demora 3x mais em projetos longos porque repete analises e decisoes a cada sessao
  • Inconsistencia: Sem registro de decisoes, o agente pode escolher uma abordagem diferente a cada sessao, gerando codigo inconsistente
  • Custo desnecessario: Reconstruir contexto consome tokens que poderiam ser usados para trabalho real
  • Impossibilidade de auditoria: Sem logs de decisao, e impossivel saber por que o swarm tomou determinada decisao
2

πŸ“ Memoria em disco: padrao .swarm/

A solucao mais pragmatica e elegante para memoria em swarms e o padrao .swarm/ β€” um diretorio persistente no projeto que armazena todo o estado do swarm em arquivos estruturados. Essa abordagem, usada pelo opencode-swarm, nao requer nenhuma infraestrutura extra: funciona com arquivos no disco local, e versionavel com Git e legivel por humanos. O diretorio tipicamente contem: plan.md (o plano atual com status de cada task), context.md (resumo do estado do projeto), evidence/ (resultados de testes e revisoes) e history/ (log de todas as acoes).

Cada vez que o swarm inicia uma sessao, ele le o .swarm/ para reconstruir o contexto. Em vez de enviar todo o historico de conversas, o orquestrador le o plan.md (que tem apenas as tasks e seus status) e o context.md (que tem um resumo conciso do projeto). Isso reduz drasticamente o contexto necessario β€” de milhares de mensagens para algumas centenas de tokens. E como manter um "caderno de notas" que o swarm consulta antes de comecar a trabalhar.

πŸ’‘ Estrutura do .swarm/

  • β€’ plan.md / plan.json: Lista de tasks com status (pending, in_progress, done, failed), responsavel, dependencias e criterios de aceitacao
  • β€’ context.md: Resumo executivo do projeto β€” stack, decisoes-chave, estado atual, proximos passos. Atualizado a cada sessao
  • β€’ evidence/: Resultados de revisoes (APPROVED/NEEDS_REVISION), outputs de testes, screenshots β€” provas de que o trabalho foi feito
  • β€’ history/: Log cronologico de acoes β€” qual agente fez o que, quando, com qual resultado. Essencial para debugging

πŸ“Š Vantagens do .swarm/

  • Zero infraestrutura: Nao precisa de banco de dados, Redis ou servico externo β€” funciona com arquivos no disco
  • Versionavel: Todo o estado e versionado com Git β€” voce pode fazer checkout de qualquer ponto no tempo
  • Legivel por humanos: Arquivos Markdown e JSON que qualquer pessoa pode abrir e entender
  • Validacao com Zod: Schemas Zod garantem que plan.json mantΓ©m estrutura consistente β€” agentes nao corrompem o estado
3

⚑ Memoria efemera: Redis para estado de execucao

Enquanto o .swarm/ cuida da memoria persistente, Redis resolve o problema da memoria efemera β€” dados que precisam estar disponiveis rapidamente durante a execucao do swarm mas nao precisam sobreviver apos o processo terminar. Exemplos incluem: locks de arquivos (para evitar conflitos em escrita paralela), estado de tasks em execucao (para que o dashboard saiba o que esta acontecendo em tempo real), cache de resultados de API (para evitar chamadas duplicadas) e filas de mensagens entre agentes.

Redis e ideal para swarms porque e extremamente rapido (operacoes em microsegundos), suporta TTL (time-to-live β€” dados expiram automaticamente) e oferece pub/sub (agentes podem publicar e assinar eventos em tempo real). Um padrao comum e usar Redis como "quadro branco" compartilhado: o orquestrador escreve tarefas na fila, agentes pegam tarefas e atualizam status, e o dashboard le o estado em tempo real sem precisar consultar cada agente individualmente.

πŸ’‘ Casos de Uso do Redis em Swarms

  • β€’ File Locks: SET file:src/app.ts LOCKED EX 300 β€” lock com expiracao automatica de 5 minutos para evitar deadlocks
  • β€’ Task Queue: LPUSH tasks task_json / RPOP tasks β€” fila FIFO de tarefas para agentes consumirem
  • β€’ API Cache: Cache de resultados de ferramentas externas β€” se dois agentes precisam da mesma info, so chama API uma vez
  • β€’ Pub/Sub Events: Agente publica "task_completed" β†’ orquestrador recebe e decide proximo passo em tempo real
4

🧠 Memoria de longo prazo: Vector DB

A memoria de longo prazo vai alem do projeto atual β€” e o conhecimento acumulado que sobrevive entre projetos e sessoes. Enquanto .swarm/ armazena o estado de um projeto especifico, um Vector Database armazena embeddings (representacoes numericas de texto) que permitem busca por similaridade semantica. Isso significa que o swarm pode "lembrar" de solucoes que funcionaram em projetos anteriores, padroes de arquitetura recorrentes e preferencias do usuario.

Na pratica, o swarm gera embeddings de decisoes, snippets de codigo e resultados de revisoes, e os armazena em um Vector DB como ChromaDB (local, simples) ou Pinecone (cloud, escalavel). Quando um novo projeto comeca, o orquestrador pode buscar "projetos similares que usaram React + Prisma" e recuperar patterns que funcionaram. E como ter um colega experiente que lembra de tudo que a equipe ja fez.

πŸ’‘ Componentes do Vector DB

  • β€’ Embeddings: Texto convertido em vetores numericos (1536 dimensoes tipicamente) usando modelos como text-embedding-3-small
  • β€’ Semantic Search: Busca por similaridade β€” "como implementamos autenticacao?" retorna snippets relevantes mesmo com palavras diferentes
  • β€’ ChromaDB (local): Banco vetorial que roda localmente sem infraestrutura β€” ideal para projetos individuais e desenvolvimento
  • β€’ Pinecone (cloud): Servico gerenciado que escala para milhoes de vetores β€” ideal para equipes e producao enterprise

πŸ“Š Exemplos praticos

  • Code patterns: "Como fizemos paginacao no projeto Y?" β†’ Recupera implementacao completa com contexto
  • Decision recall: "Por que nao usamos MongoDB neste tipo de projeto?" β†’ Recupera decisao com racional
  • Bug patterns: "Quais bugs comuns aparecem em integracao com Stripe?" β†’ Recupera issues resolvidos anteriormente
  • User preferences: "Este usuario prefere TypeScript com Vitest" β†’ Personaliza stack sem perguntar de novo
5

πŸ“Š Decision Trace: rastreabilidade

Em sistemas criticos, nao basta que o swarm produza resultado β€” e preciso rastrear como e por que cada decisao foi tomada. O Decision Trace e um log estruturado que registra, para cada acao significativa: qual agente executou, qual prompt foi enviado, qual resposta foi recebida, qual resultado foi produzido e como foi avaliado. Esse log e essencial para debugging ("por que o swarm escolheu essa abordagem?"), auditoria ("quem aprovou esse codigo?") e reproducibilidade ("consigo replicar o mesmo resultado?").

A coleta de evidencias vai alem de logs de texto. O evidence/ directory armazena resultados de testes (stdout/stderr), screenshots de UI, diffs de revisao (o que o reviewer encontrou), metricas de qualidade (complexity scores, coverage) e timestamps de cada operacao. Em ambientes enterprise com requisitos de compliance, o Decision Trace prova que o processo de desenvolvimento seguiu os controles necessarios β€” cada linha de codigo foi revisada, testada e aprovada por um agente com credenciais especificas.

πŸ’‘ Componentes do Decision Trace

  • β€’ Action Log: Timestamp + agente + acao + input + output para cada operacao significativa
  • β€’ Evidence Collection: Artefatos que comprovam o resultado β€” test outputs, review diffs, build logs, screenshots
  • β€’ Decision Rationale: Para decisoes de arquitetura, registrar alternativas consideradas e motivo da escolha
  • β€’ Reproducibility Hash: Hash do prompt + modelo + temperatura para cada chamada β€” permite reproduzir resultados identicos
6

πŸ”„ Progressao: RAG β†’ Agentic RAG β†’ Agent Memory

A evolucao da memoria em sistemas de IA segue uma progressao clara de tres estagios. O primeiro estagio e RAG basico (Retrieval-Augmented Generation): o sistema busca documentos relevantes em um banco vetorial e injeta no contexto do LLM antes de gerar a resposta. E eficaz mas passivo β€” o sistema so busca quando solicitado e nao decide o que lembrar ou esquecer. A maioria dos chatbots com base de conhecimento usa RAG basico.

O segundo estagio e Agentic RAG: o agente decide quando, o que e onde buscar. Em vez de uma busca fixa, o agente avalia se precisa de informacao adicional, formula a query otima, busca em multiplas fontes e avalia a relevancia dos resultados antes de usar. O terceiro estagio β€” Agent Memory β€” vai alem: o agente nao apenas busca, mas tambem decide o que lembrar. Apos cada projeto, o agente avalia quais decisoes e patterns foram uteis e os armazena proativamente. Ele tambem esquece informacoes obsoletas (versoes antigas de APIs, patterns deprecados). E memoria curada, nao acumulacao bruta.

πŸ’‘ Os Tres Estagios

  • β€’ RAG Basico: Busca passiva em documentos. O sistema recupera chunks relevantes e injeta no contexto. Funciona para FAQs e bases de conhecimento
  • β€’ Agentic RAG: O agente controla a busca. Decide quando buscar, formula queries otimas, avalia resultados e faz buscas iterativas se necessario
  • β€’ Agent Memory: O agente cura sua propria memoria. Armazena proativamente o que aprendeu, esquece o que ficou obsoleto, melhora com o tempo
  • β€’ Memoria Episodica: Lembrar de "experiencias" β€” "da ultima vez que tentei essa abordagem, deu errado porque..." β€” muda o comportamento futuro

πŸ“Š Estado da arte em 2026

  • RAG Basico: Maduro e amplamente adotado β€” funciona bem para 80% dos casos de uso
  • Agentic RAG: Emergente β€” IBM, LangChain e CrewAI oferecem implementacoes de referencia
  • Agent Memory: Experimental β€” projetos como MemGPT e Letta exploram memoria curada por agentes
  • Proximo passo: Memoria compartilhada entre swarms de diferentes organizacoes via protocolos abertos (MCP + A2A)

πŸ“š Resumo do Modulo

βœ“
LLMs sao stateless - Sem memoria explicita, cada interacao comeca do zero
βœ“
Padrao .swarm/ - Memoria em disco com plan.md, context.md, evidence/, history/
βœ“
Redis efemero - Locks, filas, cache e pub/sub para estado de execucao em tempo real
βœ“
Vector DB longo prazo - Embeddings e busca semantica para conhecimento entre projetos
βœ“
Decision Trace - Logs estruturados para debugging, auditoria e reproducibilidade
βœ“
RAG β†’ Agent Memory - Evolucao de busca passiva para agentes que curam sua propria memoria

Proximo Modulo:

3.4 - Qualidade e Seguranca em Swarms