Passar para o conteúdo principal

Como adicionar memória ao seu agente de IA de criptomoedas

Agente IA sem memória recomeça do zero toda vez — mesmas perguntas, redescobrindo tudo, mesmas preferências esquecidas. Esse guia cobre como dar persistência pra ele lembrar o que viu, o que você disse.

Escrito por Pete Darby

Nota de Escopo. O MCP da Cryptohopper foi projetado para ser stateless — cada chamada de ferramenta é independente, e o servidor não persiste nada entre as requisições. A memória reside no lado do cliente ou em armazenamento que você controla. Este guia é sobre essa camada.

Pré-requisitos

  • Um cliente MCP com uma conexão MCP da Cryptohopper funcionando. Veja visão geral da configuração.

  • Um local para armazenar dados. Pode ser um arquivo local, um banco de dados SQLite, um blob JSON armazenado na nuvem, ou uma ferramenta como Notion. Nenhuma infraestrutura é necessária para começar.

O que conta como "memória"

Três camadas, cada uma útil por diferentes motivos:

Camada

Exemplo

Localização Típica

Memória de Sessão

Dentro de uma conversa, o modelo lembra o que você disse anteriormente.

Janela de contexto do modelo (embutido)

Memória entre Execuções

A execução do agente de hoje lembra o que a execução da semana passada observou.

Arquivo, banco de dados, Notion, etc.

Perfil do Usuário

O agente conhece sua watchlist, exchange preferida, preferência de risco.

O mesmo que entre execuções; carregado no início da sessão.

A memória de sessão é gratuita e automática. A memória entre execuções e de perfil do usuário exige que você configure o armazenamento.

Configuração — perfil do usuário

  1. Escreva um pequeno arquivo markdown descrevendo você como um usuário de cripto. Mantenha-o com menos de uma página:


    Sobre o usuário
    Opera principalmente na Binance.
    Watchlist: BTC, ETH, SOL, AVAX, ARB, OP, LINK, AAVE, UNI.
    Mantém posições spot; opera bots de grade na SOL e AVAX via Cryptohopper.
    Preocupa-se mais com o risco de drawdown do que em perder o upside.
    Não opera futuros.

    Padrões
    Exchange: Binance
    Moeda de Cotação: USDT
    Timeframe de TA: 4h (200 barras)
    Tolerância ao Risco: moderada

    Preferências de Prompt
    Prefere números concretos a adjetivos.
    Sinaliza especulação como especulação.
    Se um ticker for ambíguo, pergunte em vez de adivinhar.

  2. Carregue-o no início de cada conversa com o agente. Duas abordagens:

    • Colar Manualmente: a primeira coisa em cada sessão, cole o arquivo.

    • Integrado ao Cliente: use o recurso de memória persistente do seu cliente (Projetos do Claude desktop, regras do Cursor, contexto do Zed) para injetar automaticamente.

  3. Mantenha o arquivo pequeno. Qualquer coisa acima de ~300 linhas se torna ruído que o modelo ignora. O ponto são as restrições, não uma autobiografia.

  4. Versionamento. Quando você mudar sua watchlist ou preferências, comite a mudança para o git (ou histórico do Notion). O comportamento do seu agente mudará com o perfil; você vai querer ver o porquê.

Configuração — memória entre execuções (simples)

A memória entre execuções mais simples é um único arquivo markdown que o agente lê no início e anexa no final:

  1. Crie `memory.md` com um esqueleto:

    Memória do Agente  Observações Recentes (Anexe entradas aqui após cada execução.)  Itens pendentes para monitorar (Coisas que o agente sinalizou para atenção futura.)  Decisões Passadas (Decisões notáveis e seus raciocínios.)

  2. No início de cada execução do agente, injete o conteúdo do arquivo:

    [MEMÓRIA DO AGENTE] {conteúdo de memory.md}  [TAREFA] Tarefa de hoje: executar o resumo diário.

  3. No final de cada execução, anexe novas observações. Peça ao agente para produzi-las explicitamente:

    Após completar a tarefa, escreva 2-4 linhas resumindo qualquer coisa notável que valha a pena lembrar para a próxima vez. Use este formato:  [AAAA-MM-DD] {observação}  Exemplos: [2026-05-27] Volume de SOL elevado por 3 dias seguidos; mantendo uma faixa de aproximadamente 83-87. [2026-05-27] Watchlist: sinalizado LINK como quieto, mas vale a pena verificar em 7 dias.  Vou anexar estes ao memory.md manualmente.

  4. Revise e limpe periodicamente. Mais ou menos uma vez por semana, recorte `memory.md` — delete entradas antigas, consolide padrões. Um arquivo de memória não gerenciado cresce indefinidamente e se torna ruído.

Configuração — memória entre execuções (estruturada)

Para agentes que se beneficiam de histórico consultável, um pequeno banco de dados SQLite funciona bem. Sugestão de esquema:

sql

CREATE TABLE observations (
id INTEGER PRIMARY KEY,
run_at TEXT NOT NULL, -- ISO-8601
agent_name TEXT NOT NULL, -- ex: "daily-digest"
category TEXT, -- ex: "volume-spike", "trend-change"
token TEXT, -- ex: "SOL"
content TEXT NOT NULL, -- o texto da observação
metadata JSON -- quaisquer campos estruturados
);

CREATE INDEX idx_run_at ON observations(run_at);
CREATE INDEX idx_agent_token ON observations(agent_name, token);

Isso permite que você faça consultas como: "quais observações fizemos sobre SOL nos últimos 14 dias?" — e alimente a resposta ao agente como contexto para a execução de hoje.

O agente escreve nesta tabela através de um pequeno helper Python:

python

def log_observation(agent_name: str, category: str,
token: str, content: str) -> None:
conn.execute(
"INSERT INTO observations (run_at, agent_name, category, token, content) "
"VALUES (?, ?, ?, ?, ?)",
(datetime.utcnow().isoformat(), agent_name, category, token, content),
)
conn.commit()

Use isso com moderação. Memória estruturada só vale a pena a configuração se você realmente for consultá-la; para um resumo simples, o arquivo markdown geralmente é suficiente.

O que lembrar, o que não lembrar

Bons candidatos à memória:

  • "SOL tem negociado lateralmente em uma faixa de 83–87 por 5 dias" — contexto de faixa que uma única vela de um dia não mostrará na execução de amanhã.

  • "Sinalizamos LINK para uma anomalia de volume ontem; acompanhe hoje."

  • "Usuário perguntou sobre bots de grade para AVAX em 2026-05-20; parâmetros foram X, Y, Z."

Não são bons candidatos à memória:

  • Dados brutos do mercado. Eles mudam — puxe novamente do MCP em vez de confiar em um cache desatualizado.

  • Transcrições completas de conversas. A relação sinal-ruído é muito baixa.

  • Resumos automáticos de cada execução. Sem curadoria, eles se tornam praticamente inúteis.

Um bom teste: "se eu deletar esta entrada de memória, o agente se comportará pior na próxima semana?" Se não, delete-a.

Solução de Problemas

O agente cita memória que é contradita por dados atuais.

Este é o risco fundamental do contexto em cache. O agente "lembra" que SOL estava em tendência de alta, mas desde então reverteu. Correção: instrua o agente a sempre verificar as afirmações de memória contra os dados atuais do MCP antes de usá-las como fatos. "Antes de confiar em uma entrada de memória, verifique os dados atuais e sinalize se a memória estiver desatualizada."

Arquivos de memória crescem descontroladamente.

Você está anexando sem limpar. Defina uma regra rígida: uma vez por semana, revise as entradas da última semana e delete / mescle. Ou rotacione arquivos de memória mensalmente (memory-2026-04.md, memory-2026-05.md).

O agente ignora o bloco de memória.

O prompt não exige que o agente o use. Seja explícito: "revise o bloco de memória acima antes de responder. Referencie entradas específicas quando relevante. Se uma entrada contradiz dados recentes, sinalize isso explicitamente."

A memória introduz respostas confiantes, mas erradas.

O agente está tratando a memória como autoritativa. Enquadre a memória como pistas, não como verdade: "a memória contém observações passadas; trate como contexto, não fato. Sempre verifique contra dados atuais."

Você quer que o agente atualize a memória sem sua intervenção.
Possível, mas arriscado — a memória somente de anexação não monitorada acumula entradas ruins tão rápido quanto as boas. Se você automatizar, sempre combine com uma etapa de revisão semanal. Nunca deixe a memória crescer por um mês sem ser lida.

Memória multi-agente fica confusa.
Se vários agentes compartilham um arquivo de memória, use o campo `agent_name` para criar namespaces para as entradas. Cada agente lê apenas suas próprias entradas, ou lê o arquivo completo, mas sabe qual agente escreveu qual linha.

O arquivo de perfil do usuário fica desatualizado. As preferências mudam. Se você notar o agente usando um timeframe ou exchange que você não usa mais, atualize o perfil — não contorne isso com substituições por prompt.

Respondeu à sua pergunta?