Pular para o conteúdo
Menu

Produto

Soluções

Integrações

Desenvolvedores

Idioma

Produto

O que mais dá para fazer

Handoffs e busca são o uso do dia a dia. Estas são as outras coisas que uma memória que mora em um servidor só consegue fazer por você, de passar trabalho entre projetos a manter a memória de um cliente separada da de outro.

Um agente pede algo ao agente de outro projeto

Dois repositórios que conversam por uma API, cada um com seu próprio agente e sua própria memória. O agente do frontend conhece o protocolo. Em vez de ler o repositório inteiro da API, ele escreve um pedido completo e deixa na inbox daquele projeto.

Diagrama: um agente no projeto A manda um pedido lacrado, pelo servidor de memória, para a inbox do projeto B, onde um agente o assume uma vez só e lê uma especificação de API. Uma parede entre os projetos marca que nenhum contexto é compartilhado, e a mensagem recebida é tratada como entrada não confiável.
Só o envelope atravessa. O projeto A nunca lê os arquivos do projeto B, e o projeto B nunca lê os do projeto A.

Como fica na prática

  1. No repositório do frontend

    > Pede para o agente em default/api adicionar um endpoint /v1/export que faça stream de NDJSON, mantendo o middleware de auth atual, e manda pelo ai-memory.

    O agente chama memory_message_send com um corpo autocontido. O pedido precisa se sustentar sozinho, porque quem lê não enxerga este projeto.

  2. Mais tarde, no repositório da API

    📬 ai-memory: 1 mensagem de outro projeto esperando na inbox deste projeto.

    > Confere minha inbox do ai-memory.

    O agente chama memory_message_pop, recebe o pedido com quem mandou, e trabalha a partir dele. Um segundo pop não retorna nada.

pelo terminal
# Mande a partir do projeto atual
ai-memory message send --to-workspace default --to-project api \
    --subject "export endpoint" "Add a /v1/export endpoint that streams NDJSON…"

# No outro projeto: liste sem consumir, ou assuma a mais antiga
ai-memory message list
ai-memory message pop

# Mude de ideia antes de ela ser assumida
ai-memory message cancel --id <message-id>

O guia de mensagens

  • Endereçada a um projeto

    A mensagem vai para um workspace e um projeto, e qualquer sessão desse projeto pode assumi-la. Depois de assumida, ela sai da fila, como um handoff.

  • Nada entra no contexto sozinho

    O aviso no início da sessão traz só uma contagem. O texto da mensagem só chega ao agente por um pop deliberado, cercado e marcado como não confiável, com o remetente mostrado fora da cerca.

  • Falha fechado

    O projeto de destino precisa existir, então um erro de digitação é rejeitado em vez de cair numa inbox que ninguém lê. Cada inbox guarda no máximo 256 mensagens pendentes.

  • Cancelável, auditada

    Quem mandou pode cancelar a mensagem até ela ser assumida. Segredos são removidos no envio, o corpo tem limite de tamanho, e em um servidor compartilhado toda mensagem registra quem mandou.

Separe clientes, mono-repos e trabalho pessoal

A memória é arquivada por workspace e projeto. Um checkout com um remote git é arquivado por esse remote, então o mesmo repositório clonado duas vezes compartilha uma memória, e uma pasta sem remote usa o próprio nome. Um arquivo pequeno muda o resto.

Diagrama: três pastas, cada uma com um marcador .ai-memory.toml, mapeiam para workspaces separados dentro de um único servidor de memória. Um workspace guarda um mono-repo cujos diretórios compartilham um projeto. Ao lado ficam uma página de regras fixada, uma nota que expira na sexta e uma página com feedback.
Um servidor, prateleiras separadas. O arquivo marcador decide em qual prateleira um diretório cai.
  • Um workspace por cliente

    Coloque .ai-memory.toml em ~/work/client-a/ e todo repositório abaixo dele cai nesse workspace. Nada do cliente A aparece enquanto você trabalha para o cliente B.

  • Um mono-repo como um projeto só

    Um marcador que define o project fixa todos os subdiretórios nele, então os pacotes compartilham uma memória só. Sem o project, cada pacote fica com a sua.

  • Git worktrees

    Worktrees vinculados resolvem para o repositório principal, então um branch com checkout em outro lugar mantém a mesma memória.

  • Dois agentes em um projeto

    O ponteiro de projeto atual é isolado por chamador, então Claude Code e Codex podem rodar lado a lado no mesmo diretório sem confundir um ao outro.

  • Um laptop, dois empregadores

    Registre cada servidor com ai-memory server add e nomeie ele no marcador com server = "team-b". Hooks dessa árvore vão para lá e para lugar nenhum mais, e um nome que não resolve não manda nada.

  • Fixe uma identidade

    identity = "acme/platform" arquiva um checkout sob essa chave onde quer que ele esteja, mesmo sem remote.

.ai-memory.toml em ~/work/client-a/
# Todo repositório abaixo deste diretório cai no workspace client-a
workspace = "client-a"

O guia do arquivo marcador

Regras que chegam a toda sessão

Diga ao agente para lembrar de algo para sempre e isso vira uma página na wiki. As regras ficam arquivadas separadas dos fatos, e o briefing da sessão pode colocá-las na frente do agente antes do primeiro prompt.

  • Diga uma vez

    “Lembre: antes de mexer no código de pagamento, leia as notas de PCI.” O agente grava uma página durável. Peça como regra global e ela vale para todos os seus projetos.

  • O briefing leva as regras junto

    Com inject_on_session_start = true no arquivo marcador do projeto, as páginas fixadas, as regras e os slots entram no início do contexto de toda sessão nova.

  • O lint sugere promover

    Quando uma regra parece durável o bastante, o memory_lint sugere copiá-la para o CLAUDE.md ou o AGENTS.md. O ai-memory nunca edita esses arquivos por conta própria.

  • Os registros de decisão continuam seus

    O ai-memory nunca escreve no seu repositório. Mantenha um diretório de ADRs e liste ele em [capture] ignore_paths, para a wiki não guardar uma cópia desatualizada.

.ai-memory.toml
# Coloca páginas fixadas, regras e slots no início de toda sessão
[briefing]
inject_on_session_start = true

Notas que expiram, e feedback que reordena

  • Lembre disso até sexta

    Uma página gravada com expires_at some da busca depois dessa data. Ela continua lá para uma busca que peça páginas expiradas.

  • Essa página estava errada

    O memory_feedback registra útil, não útil, desatualizada ou errada em uma página. Desatualizada e errada rebaixam a página nos próximos rankings e aceleram o envelhecimento dela. Feedback nunca apaga nada.

  • Mova uma sessão

    Uma sessão capturada no projeto errado, depois de um cd para um diretório de rascunho, pode ser reanexada com ai-memory move-session. As observações e a página dela vão junto.

  • Recupere o que a compactação levou

    Quando o Claude Code ou o Codex compactam o contexto, um hook grava antes uma página de sessão nova, então o que foi compactado pode ser recuperado.

Leia no navegador, leve para onde quiser

  • Uma interface web somente leitura

    Suba o servidor com --enable-web e as páginas de todos os projetos ficam navegáveis, agrupadas em conceitos, decisões, gotchas e sessões, com uma API JSON em /api/v1.

  • Um formato aberto

    Cada projeto é um bundle Open Knowledge Format. O ai-memory export-okf empacota tudo para qualquer ferramenta que leia OKF, e os arquivos são markdown puro para todo o resto.

  • Skills para o seu agente

    O ai-memory install-mcp também instala um trecho curto de roteamento e Agent Skills gerenciadas, então o agente sabe qual ferramenta responde “a gente já discutiu isso?” e qual manda mensagem.

Tarefas que o launcher assume

ai-memory run abre o agente através do servidor de memória. Ele também mantém o binário atualizado, fecha as sessões e avisa antes de desativar qualquer coisa.

Diagrama: um terminal rodando ai-memory run no centro. Ao redor: um sandbox que o launcher oferece antes de desativar os prompts de permissão, um download com checksum para a autoatualização, uma página de sessão que fecha quando o agente sai, e um login pelo navegador para a interface web.
Um comando no meio. O resto acontece ao redor dele, sem precisar de uma segunda ferramenta.
  • Atualização em um comando só

    ai-memory upgrade baixa a release correspondente, confere o checksum, troca o binário e atualiza os hooks. Instalações via Docker, Homebrew, AUR e RPM mantêm o próprio caminho.

  • Um aviso antes de tirar as travas de segurança

    ai-memory run --yolo avisa o que está prestes a desativar e, no Linux e no macOS com o ai-jail disponível, oferece para rodar a sessão de novo dentro do sandbox, com um checklist do que o jail pode ver. --jail entra direto, com valores padrão sensatos.

    ai-jail no GitHub
  • Variáveis de ambiente para o harness

    --env KEY=VALUE e --env-file chegam tanto ao agente que é aberto quanto à própria busca de sessão do ai-memory, então um CLAUDE_CONFIG_DIR por conta não precisa de script wrapper.

  • Sessões fecham ao sair

    Agentes sem hook de fim de sessão (Command Code, Kiro CLI, Antigravity CLI) recebem o resumo e o handoff quando o launcher termina. finalize-session --reopen cobre uma conversa que continuou depois disso.

  • Login na interface web

    A wiki nativa tem páginas de login e de troca de senha para usuários com senha, e uma página só para o root aprovar ou rejeitar propostas pendentes do auto-improve entre projetos.

  • Stopwords no seu idioma

    [search.fts] stopwords lista as palavras funcionais do seu idioma, para que o ranking full-text de uma wiki em português não seja distorcido por de e que.

Perguntas e respostas

Um agente em um projeto consegue ler a memória de outro?

Não. A memória é arquivada por projeto, e as mensagens são a única travessia deliberada: um projeto só vê as mensagens endereçadas a ele ou enviadas por ele. O corpo da mensagem precisa ser autocontido porque quem lê não enxerga os arquivos de quem mandou.

Uma mensagem recebida é tratada como instrução?

Não. Uma mensagem retirada com pop vem cercada como entrada não confiável de outro projeto e traz um aviso dizendo isso. O agente avalia com você se aquilo é um pedido de tarefa, e o remetente aparece fora da cerca para você julgar a confiança antes.

O que acontece se duas sessões conferem a mesma inbox?

O primeiro pop assume a mensagem e o segundo não recebe nada. Uma mensagem é assumida exatamente uma vez, a mesma regra que os handoffs seguem.

Preciso configurar workspaces?

Não. Sem arquivo marcador, tudo cai em um workspace chamado default, com o remote git como projeto, ou o nome do diretório quando não existe um. Adicione o .ai-memory.toml só quando quiser separar clientes, tratar um mono-repo como um projeto só, manter a memória do trabalho separada da pessoal, ou usar um segundo servidor.

Dê memória aos seus agentes hoje.

Gratuito e open source sob a licença MIT. Sem conta e sem chave de API.