Phase 14 - Lesson 08
Blocos de Memória e Sleep-Time Compute (Letta)
O MemGPT tornou-se Letta em 2024. A evolução de 2026 adiciona duas ideias: blocos de memória funcionais discretos que o modelo pode editar diretamente, e um agente de tempo de sono (sleep-time agent) que consolida a memória de forma assíncrona enquanto o agente principal está ocioso. É assim que você escala a memória além de uma conversa.
Type: Build Languages: Python (stdlib) Prerequisites: Phase 14 · 07 (MemGPT) Time: ~75 minutes
Objetivos de Aprendizado
- Nomear as três camadas de memória que o Letta usa (core, recall, archival) e o papel de cada uma.
- Explicar o padrão de bloco de memória: Bloco Human, bloco Persona e blocos definidos pelo usuário como objetos tipados de primeira classe.
- Descrever o que é sleep-time compute, por que ele fica fora do caminho crítico e por que pode executar um modelo mais forte que o agente principal.
- Implementar um loop programado de dois agentes onde um agente principal atende às respostas e um agente de tempo de sono consolida os blocos entre os turnos.
O Problema
O MemGPT (Lição 07) resolveu o fluxo de controle de memória virtual. Três problemas de produção surgiram:
- Latência. Cada operação de memória fica no caminho crítico. Se o agente tiver que podar, resumir ou reconciliar enquanto o usuário espera, a latência de cauda explode.
- Degradação de memória. As gravações se acumulam. Fatos contraditórios permanecem. A recuperação se afoga em conteúdo desatualizado.
- Perda de estrutura. Um repositório de arquivamento plano não consegue expressar "o bloco Human está sempre no prompt; o bloco Persona está sempre no prompt; o bloco Task muda por sessão."
O Letta (letta.com) é a reescrita de 2026. Os blocos de memória tornam a estrutura explícita; o sleep-time compute move a consolidação para fora do caminho crítico.
O Conceito
Três camadas
| Camada | Escopo | Onde reside | Escrito por |
|---|---|---|---|
| Core | Sempre visível | Dentro do prompt principal | Chamada de ferramenta do agente + reescritas em tempo de sono |
| Recall | Histórico da conversa | Recuperável | Registro automático de turnos |
| Archival | Fatos arbitrários | Vetor + KV + grafo | Chamada de ferramenta do agente + ingestão em tempo de sono |
Core é o núcleo do MemGPT. Recall é o buffer de conversa com sua cauda despejada. Archival é o armazenamento externo. A divisão limpa a sobrecarga de duas camadas do MemGPT.
Blocos de memória
Um bloco é uma seção tipada, persistente e editável da camada core. O artigo original do MemGPT definiu dois:
- Bloco Human — fatos sobre o usuário (nome, cargo, preferências, objetivos).
- Bloco Persona — o autoconceito do agente (identidade, tom, restrições).
O Letta generaliza para blocos arbitrários definidos pelo usuário: um bloco Task para o objetivo atual, um bloco Project para fatos da base de código, um bloco Safety para restrições rígidas. Cada bloco possui um id, label, value, limit (limite de caracteres), description (para que o modelo saiba quando editá-lo).
Os blocos são editáveis por meio da superfície de ferramentas:
block_append(label, text)block_replace(label, old, new)block_read(label)block_summarize(label)— condensa um bloco que está próximo do seu limite.
Sleep-time compute
A adição do Letta de 2025: executar um segundo agente em segundo plano, fora do caminho crítico. Agentes de tempo de sono processam transcrições de conversas e o contexto da base de código, escrevem learned_context em blocos compartilhados e consolidam ou invalidam registros de arquivamento.
Propriedades decorrentes:
- Sem custo de latência. As respostas principais não esperam por operações de memória.
- Modelo mais forte permitido. O agente de tempo de sono pode ser um modelo mais caro e lento porque não é limitado por latência.
- Janela natural de consolidação. Desduplicar, resumir, invalidar fatos contraditórios quando o usuário não estiver esperando.
O formato corresponde à forma como os humanos funcionam: você faz a tarefa, você dorme sobre ela, a memória de longo prazo se consolida durante a noite.
Letta V1 e raciocínio nativo
O Letta V1 (letta_v1_agent, 2026) descontinua send_message/heartbeat e tokens Thought: inline em favor do raciocínio nativo. A API de Respostas (OpenAI) e a API de Mensagens com pensamento estendido (Anthropic) emitem raciocínio em um canal separado, transmitido entre os turnos (criptografado entre provedores em produção). O loop de controle ainda é ReAct. O rastreamento de pensamento é estrutural, não em formato de prompt.
Onde esse padrão falha
- Inchaço de blocos.
block_appendinfinito atinge o limite rapidamente. Conecte um resumidor de blocos antes da escrita que ultrapasse o limite. - Desvio silencioso. O agente de tempo de sono reescreve um bloco e o agente principal nunca percebe. Versione os blocos e apresente os diffs no rastreamento.
- Consolidação envenenada. O agente de tempo de sono processa conteúdo acessível a atacantes no core. A Lição 27 também se aplica à superfície de tempo de sono.
Build It
O code/main.py implementa:
Block— id, label, value, limit, description.BlockStore— CRUD + auxiliarnear_limit(label).- Dois agentes programados —
PrimaryAgentatende a um turno,SleepTimeAgentconsolida entre os turnos. - Um rastreamento que mostra uma conversa de três turnos com escritas de blocos, além de uma etapa de tempo de sono que resume um bloco e invalida um fato desatualizado.
Execute-o:
python3 code/main.py
A transcrição mostra a divisão: os turnos principais são rápidos e produzem escritas brutas; a etapa de sono compacta e limpa.
Use It
- Letta (letta.com) para a implementação de referência. Auto-hospedado ou nuvem gerenciada.
- Claude Agent SDK skills como conhecimento em formato de bloco — uma skill é um bloco de instruções nomeado, versionado e recuperável que o agente carrega sob demanda.
- Builds customizados para equipes que desejam controle sobre o backend de armazenamento. Use o contrato da API do Letta para que você possa migrar mais tarde.
Ship It
O outputs/skill-memory-blocks.md gera um sistema de blocos no formato Letta com ganchos de tempo de sono para qualquer runtime, incluindo regras de segurança e fiação de citações.
Exercícios
- Adicione uma ferramenta
block_summarizeque substitui o valor do bloco por um resumo gerado pelo modelo quandonear_limitretornar verdadeiro. Qual limite de gatilho minimiza as chamadas de sumarização e o estouro do bloco? - Implemente a desduplicação em tempo de sono sobre o arquivamento: dois registros cujo texto tem mais de 90% de sobreposição de tokens colapsam em um. Faça isso apenas na etapa de sono, nunca no caminho crítico.
- Versione os blocos. A cada escrita, registre o valor antigo e um diff. Exponha
block_history(label)para que os operadores possam depurar "por que o agente esqueceu X". - Trate os agentes de tempo de sono como escritores não confiáveis. Quando eles tocarem no bloco Persona ou Safety, exija a revisão de um segundo agente antes de confirmar.
- Adapte o exemplo para usar a API do Letta (
letta_v1_agent). O que muda no esquema do bloco e como o raciocínio nativo altera o formato do rastreamento?
Termos-Chave
| Termo | O que as pessoas dizem | O que realmente significa |
|---|---|---|
| Bloco de memória | "Seção de prompt editável" | Segmento de memória core persistente, tipado e editável por LLM |
| Bloco Human | "Memória do usuário" | Fatos sobre o usuário, fixados no core |
| Bloco Persona | "Identidade do agente" | Autoconceito, tom, restrições, fixados no core |
| Sleep-time compute | "Trabalho de memória assíncrono" | Segundo agente fazendo consolidação fora do caminho crítico |
| Core / Recall / Archival | "Camadas" | Divisão de memória em três camadas: sempre visível / conversa / externa |
| Limite do bloco | "Capacidade" | Limite de caracteres por bloco; força a sumarização |
| Raciocínio nativo | "Canal de pensamento" | Saída de raciocínio no nível do provedor, não Thought: no nível do prompt |
| Contexto aprendido | "Saída do sono" | Fatos que o agente de tempo de sono escreve em blocos compartilhados |
Leituras Adicionais
- Letta, Memory Blocks blog — o padrão de blocos
- Letta, Sleep-time Compute blog — consolidação assíncrona
- Letta, Rearchitecting the Agent Loop — reescrita do raciocínio nativo
- Packer et al., MemGPT (arXiv:2310.08560) — a origem