Produto
Seus hábitos seguem você para o próximo projeto
Cada projeto guarda a própria memória, então você troca de agente sem explicar tudo de novo. O perfil leva a outra metade: como você costuma trabalhar, aprendido nos seus projetos e entregue a cada projeto novo no início da sessão.
Dois movimentos, uma memória
Para o lado, de um agente para outro, a memória do projeto fica. Para a frente, de um projeto para o próximo, o perfil vai com você.

O que uma sessão nova ouve primeiro
A sessão começa com um bloco curto delimitado, antes do handoff e do resumo do projeto: uma linha por entrada, cada uma indicando a página de origem, filtrada pela stack que o projeto usa. Ele fica idêntico byte a byte entre sessões, então cabe no prompt em cache do harness.
> 🧭 ai-memory: your usual choices (cross-project profile)
> Your usual choices from other projects. Use them as defaults when this
> project's rules and the user say nothing; say which default you applied.
- [javascript] Use pnpm, not npm. (profile/tools/pnpm.md)
- Keep integration tests in tests/suite. (profile/testing/layout.md)
Primeiro as regras, a memória como reserva
- Suas instruções na conversa
- O arquivo de regras do repositório: AGENTS.md, CLAUDE.md ou o próprio do harness
- A memória do projeto: páginas, regras e decisões
- O perfil: o que você costuma fazer entre projetos
Quando o arquivo de regras diz npm, um perfil que diz pnpm não vale. Quando nada diz, o agente usa o perfil em vez de perguntar de novo, e informa qual padrão aplicou.
Como ele aprende, sem LLM
Uma passada do servidor roda depois do fim de cada sessão e uma vez por hora. Ela lê só o que é novo.

Suas próprias palavras
Prompts que soam como preferência: sempre, nunca, prefiro X a Y, a partir de agora, por padrão, e as formas equivalentes em inglês. Perguntas, blocos de código e qualquer coisa que uma ferramenta imprimiu nunca são lidos.
Páginas curadas e a stack
Regras, decisões, gotchas e procedimentos curados do projeto também contam, e suas linguagens viram entradas de stack. Páginas aprovadas automaticamente pelo agendador são ignoradas; as aprovadas por uma pessoa continuam contando.
Dois projetos, ou uma afirmação geral
Uma escolha entra no perfil quando aparece em pelo menos dois projetos, ou quando você mesmo o estende além do projeto, como em “em todos os meus projetos”. A decisão mais recente vence, e a antiga fica no histórico da página.
Evidência em cada entrada
Cada entrada registra os projetos e as datas de onde veio, as suas palavras, quantos projetos a sustentam e a confiança. Com um LLM configurado, a passada classifica e reescreve as entradas por chamadas validadas por schema e volta às listas de palavras em qualquer erro.
Um projeto novo já começa à frente
Um repositório sem memória ainda recebe uma base maior, e um comando transforma suas escolhas de sempre em regras que todos veem.
ai-memory profile apply escreve as entradas que servem ao repositório em um bloco gerenciado do arquivo de regras, entre dois marcadores, e não toca em nada fora deles. Rode de novo e só o bloco muda. É o único comando que escreve no seu repositório, e só roda quando você o executa.
# ver o bloco e o arquivo para onde ele iria
ai-memory profile apply --dry-run
# escrever o bloco
ai-memory profile apply
# tirar o bloco de novo
ai-memory profile apply --remove
Você fica no controle
As entradas são páginas de wiki comuns: markdown no git, versionadas a cada mudança.
Esqueceu, fica esquecido
ai-memory profile forgetremove uma entrada, e a passada não a recria a partir da mesma evidência. Ela só volta se você disser de novo.Suas edições valem
Uma entrada que você edita à mão passa a ser sua. A passada nunca reescreve uma página que não escreveu, nem uma que mudou depois.
Trabalho de cliente e NDA fica de fora
O marcador de um projeto pode definir
contribute = falsepara que nada seja aprendido dele, econsume = falsepara que ele nunca receba o resumo.Revisar e reconstruir
profile reviewmostra cada entrada com a evidência e os hábitos que ainda não chegaram ao limite.profile rebuildrelê todos os projetos desde o início, nunca remove uma entrada e deixa em paz o que você editou ou removeu.
# este projeto não ensina nem recebe o perfil
[profile]
contribute = false
consume = false
Uma pessoa, um perfil. Um time, com consentimento.
Em um servidor de um só operador, o perfil fica ligado e é compartilhado por todos os workspaces. Em um servidor multiusuário, fica desligado até você habilitar.
Privado por operador
Habilitado em um servidor compartilhado, cada pessoa recebe um perfil restrito que só ela e o root podem ler. Nada que os agentes de uma pessoa aprendem chega aos de outra.
Um perfil de time pede duas vozes
share = "global"ou"workspace"cria um perfil que todos recebem. Um hábito só entra nele com evidência de pelo menos dois operadores, e o resumo recebe o cabeçalho de padrões do time, para o agente saber que são compartilhados.Trabalho e vida pessoal separados
share = "workspace"mantém um perfil por workspace, para dois clientes ou para trabalho e casa.
# servidor compartilhado: um perfil privado por operador
[profile]
enabled = true
share = "auto"
min_projects = 2
Perguntas e respostas
O perfil sobrescreve as regras do meu projeto?
Não. Suas instruções vêm primeiro, depois o arquivo de regras do repositório, depois a memória do projeto. O perfil é a última reserva, usado só quando nada mais específico fala, e o agente informa qual padrão aplicou.
Precisa de LLM?
Não. Coletar e convergir funcionam com listas de palavras e a afirmação mais recente. Com um provedor configurado, a passada o usa para classificar e reescrever entradas por chamadas validadas por schema, e volta ao caminho sem LLM em qualquer erro. Defina llm = false para manter tudo offline.
Ele pode aprender algo do código de um cliente?
Ele lê os seus prompts e as páginas curadas do projeto, nunca a saída de ferramentas, então um texto que o agente só viu não vira preferência. Um projeto com contribute = false no marcador fica totalmente de fora, inclusive a evidência colhida antes.
O que acontece em um servidor compartilhado?
O perfil fica desligado até um operador habilitar. Depois, cada pessoa recebe um perfil privado que só ela e o root podem ler. Um perfil de time é outra escolha, e só admite um hábito com evidência de dois operadores.
Dá para desligar?
Dá. enabled = false ou share = "off" na config do servidor remove o perfil por completo. inject_on_session_start = false tira o resumo do início da sessão, e o perfil continua respondendo a consultas.
Dê memória aos seus agentes hoje.
Gratuito e open source sob a licença MIT. Sem conta e sem chave de API.