1 pontos por shakystar 4 시간 전 | 1 comentários | Compartilhar no WhatsApp

Tudo começou com um problema que eu enfrentava todos os dias desenvolvendo sozinho. Os vendors lançam modelos melhores o tempo todo, e cada vez que eu trocava para continuar o desenvolvimento com outro modelo (tipo de Opus 4.7 para GPT 5.5), a memória de trabalho do projeto não vinha junto. Enquanto cada agente acumulava seu próprio silo de memória, eu tinha que reconstruir manualmente o contexto perdido toda vez. Os recursos iniciais de memória dos agentes eram fracos demais, então o contexto morria quando a sessão acabava, e como tudo ficava preso a uma única máquina, o trabalho que eu fazia no desktop não continuava no notebook.

Projetos precisam de memória de projeto. Então eu criei isto: um open source local-first em que o próprio projeto passa a ter memória.

Pontos técnicos dos quais tenho confiança

  • Memória em duas camadas, inspirada no sistema de aprendizagem complementar do cérebro (CLS) — durante o trabalho, captura observações de forma barata sem LLM (hipocampo), e nas fronteiras da sessão faz consolidação em background (neocórtex). O esquecimento não acontece por exclusão, mas apenas por competição de pontuação no momento da recuperação (importância × recência com meia-vida de 14 dias × relevância para a tarefa), e nenhuma memória é apagada.

  • Zero chaves de API — não precisa de um LLM separado para consolidação. Ele simplesmente inicia o claude -p / codex exec já autenticado. A estrutura faz o agente usar a si mesmo para organizar sua própria memória, e a recursão infinita que isso geraria (consolidação → disparo de hook → consolidação → ...) é interrompida com uma proteção por variável de ambiente.

  • Consolidação sem perda — o watermark só avança depois que o evento é persistido, então se houver timeout do LLM ou falha de parsing, a próxima fronteira tenta novamente o mesmo trecho. Mesmo que o próprio watermark se perca, o dedup baseado na origem impede consolidações duplicadas.

  • Convergência entre máquinas sem servidor — ao sincronizar um log de eventos append-only, todas as máquinas convergem para o mesmo estado usando apenas regras determinísticas baseadas em conteúdo, sem sincronização de relógio. Mesmo que duas máquinas consolidem o mesmo trecho ao mesmo tempo, todas as réplicas escolhem o mesmo vencedor.

  • Não confiar em embeddings para detectar contradições — similaridade por cosseno é cega a negações ("faça merge" e "não faça merge" geram vetores quase iguais). Por isso, a similaridade é usada só até a recuperação de candidatos, e a decisão final fica com o LLM. Memórias derrotadas não são apagadas; seu período de validade é encerrado, de modo que seja possível restaurar que "naquela época isso era verdade".

  • Compartilhamento em tempo real entre sessões paralelas — sessões rodando no mesmo projeto conseguem ver o trabalho umas das outras, e se mexerem no mesmo arquivo aparece um alerta de conflito.

  • Evolução de schema guiada por medição, não por teoria — a decisão de mudar ou não o sistema de classificação das memórias é tomada com dados, reunindo por algumas semanas os campos de duração voltados apenas à observação que acompanham cada memória e a telemetria de comportamento (quando foi injetada, quando foi invalidada). Todo esse debate está aberto nas Discussions do repositório.

Por que abrir agora

Sinceramente, eu queria lançar isso de forma mais madura. Mas ver a OpenAI lançando recursos de memória como dreaming me fez mudar de ideia — se um grande vendor começou a atacar o mesmo problema, isso significa que a direção está certa, e eu achei importante que exista uma alternativa vendor-neutral antes que memória presa a vendor vire padrão. Por isso estou abrindo agora.

Até onde quero levar isso

Com a chegada de modelos nível Fable 5, os agentes já chegaram a um ponto em que conseguem colaborar entre si, mas não existe infraestrutura compartilhada para essa colaboração. No longo prazo, eu quero criar uma plataforma de interesse público que faça pela memória e colaboração dos agentes o que o Git fez pelo código. Eu não tinha dinheiro para começar por servidores — e essa limitação acabou levando a um design local-first que converge mesmo sem servidor. Agora, a primeira peça disso, "compartilhar memória de projeto localmente", já funciona por completo. Na prática, grande parte da discussão de design, da implementação e até do deploy de madrugada de hoje deste projeto foi feita junto com agentes — exatamente no estilo de colaboração que essa ferramenta quer viabilizar.

Ajuda específica de que preciso

  1. Testar e reportar pontos de quebra — com instalação em uma linha e issue. Só na validação antes do lançamento de hoje já encontramos 2 bugs no script de instalação (aspas no PowerShell 5.1, Linux EACCES), e certamente há mais.
  2. Adaptadores para outros agentes — pessoas que conheçam a estrutura de hooks de Cursor, Gemini CLI e Windsurf.
  3. Participar do debate sobre o sistema de classificação de memórias — há Discussions abertas para decidir com dados "o que são os tipos de memória".

A instalação é em uma linha (no Windows, veja o comando PowerShell no README):

curl -fsSL https://raw.githubusercontent.com/shakystar/memorize/… | sh

Ou uma linha em uma sessão Claude/Codex: "Set up memorize in this project. Follow
https://github.com/shakystar/memorize/…;

Repositório: https://github.com/shakystar/memorize · README em coreano
(https://github.com/shakystar/memorize/blob/main/docs/i18n/README.ko.md) · Documento de arquitetura
(https://github.com/shakystar/memorize/blob/main/docs/ARCHITECTURE.md)

AGPL, tudo armazenado localmente, sem telemetria. Qualquer feedback é bem-vindo.

1 comentários

 
shakystar 4 시간 전

Sou a pessoa que criou isso.

O dia imediatamente anterior ao lançamento deste projeto foi exatamente o tipo de colaboração que esta ferramenta busca viabilizar. Tive discussões de design com o agente sobre coisas como “será que tags fazem sentido para classificar memórias, se o cérebro não tem tags”, o consenso ficou registrado de forma permanente em GitHub Discussions e issues, o PR de implementação foi mesclado, confirmei até o dogfooding em que o agente usou a si mesmo (claude -p) como extrator para integrar registros reais de trabalho à memória de longo prazo, e então apertei o botão de deploy. Todas as discussões de design desse processo estão publicamente visíveis nas Discussions do repositório.

Uma pergunta que acho que vou receber com frequência e que não escrevi no texto principal é “isso não fica lento ou caro?”, então já respondo: durante o trabalho, o LLM simplesmente não participa. A captura usa filtro por regras, então a latência percebida é zero, e o LLM só roda uma única vez na integração no limite da sessão; mesmo isso acontece em um processo de background separado, então não bloqueia o agente nem por 1 segundo. Até essa chamada usa a assinatura do claude/codex que você já utiliza, então não há cobrança adicional de API. No dogfooding de hoje, 44 observações de uma sessão foram consolidadas em 1 chamada em background (cerca de 30 segundos), e a injeção no início da sessão também é só texto dentro de um orçamento de 4.000 caracteres, então a carga de tokens é quase nula. A meta era algo que você instala e esquece.

Compartilhando só um dos problemas que peguei na validação em máquina real antes do lançamento: no README, o comando de verificação estava como npx memorize, mas o memorize sem escopo no npm era o pacote de outra pessoa. Acho que ainda pode haver mais pontos desse tipo, “que só aparecem em máquina real”, então relatos desse tipo realmente têm muito valor.

Um pedido: validei diretamente em máquinas reais no Windows e no WSL/Linux, mas não tenho um Mac físico. No CI, toda a suíte de testes de macOS passa, mas não consegui rodar em máquina real o ciclo completo de instalação em uma linha → hook → injeção no início da sessão. Se alguém que usa macOS puder instalar e me dizer por comentário ou issue se funciona ou quebra, isso ajudaria muito.

Perguntas de design também são bem-vindas (por que embeddings não são usados na decisão, por que não há exclusão, como a convergência entre máquinas funciona sem relógio) — vou responder todas.