Neuroplastic Memory

Memória inspirada biologicamente para Claude. Plasticidade hebbiana, ciclos de sonho e decaimento temporal para síntese persistente de conhecimento.

Documentação

claude-brain

CI License: MIT Python 3.11+

Um sistema de memória persistente inspirado na biologia para LLMs, modelado com base em neuroplasticidade, consolidação e sono.

Mind extrai conceitos de conversas, conecta-os em um grafo de conhecimento persistente e executa ciclos de sonho que consolidam memórias importantes, descobrem associações novas e sinalizam contradições — da mesma forma que o sono NREM e REM molda a memória humana.

[!NOTE] Este é um projeto de fim de semana, vibe-coded com Claude. É um protótipo funcional e um playground para ideias na interseção entre neurociência e memória de LLMs. Não é software de produção. Espere arestas a aparar. Contribuições são bem-vindas.

Arquitetura

flowchart TB
    Input(["Conversation Text"]) --> Consolidation

    subgraph Consolidation["Consolidation Pipeline"]
        direction LR
        Extract["LLM Extraction
        + Affect Signals"] --> Embed["Sentence
        Embedding"] --> Dedup["Deduplication
        + Temporal Decay"]
    end

    Consolidation --> Appraisal
    Goals(["Goals"]) -.-> Appraisal

    subgraph Appraisal["Appraisal System"]
        direction LR
        S["Engagement
        Questions
        Personal Stake
        Arousal"] --> Score["Consolidation
        Score"]
        N["Novelty"] --> Score
        F["Frequency"] --> Score
        G["Goal
        Relevance"] --> Score
    end

    Appraisal --> KG

    subgraph KG["Knowledge Graph"]
        Nodes["Concept Nodes"] <--> Edges["Relationship Edges"]
    end

    KG <--> Dream

    subgraph Dream["Dream Engine"]
        direction LR
        NREM["NREM
        Replay"] --> REM["REM
        Walks"] --> Wake["Waking
        Gate"] --> Threat["Threat
        Simulation"]
    end

    Query(["Query"]) --> KG
    KG --> Results(["Ranked Results"])

    style Consolidation fill:#d4f0da,stroke:#44cc66,color:#000
    style Appraisal fill:#d4e4ff,stroke:#4488ff,color:#000
    style KG fill:#e8e8e8,stroke:#888,color:#000
    style Dream fill:#ecd4f4,stroke:#aa55dd,color:#000

    style Input fill:#4488ff,stroke:#4488ff,color:#fff
    style Query fill:#ff8833,stroke:#ff8833,color:#fff
    style Results fill:#ff8833,stroke:#ff8833,color:#fff
    style Goals fill:#66aa66,stroke:#66aa66,color:#fff

Início Rápido

# Install
git clone https://github.com/gammon-bio/claude-brain && cd claude-brain
uv sync

# Set your Anthropic API key
echo "ANTHROPIC_API_KEY=sk-ant-..." > .env

Adicione o servidor MCP à sua configuração do Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "neuroplastic-memory": {
      "command": "/absolute/path/to/mind/.venv/bin/python",
      "args": ["-m", "mind"],
      "cwd": "/absolute/path/to/mind",
      "env": {
        "PYTHONPATH": "/absolute/path/to/mind/src"
      }
    }
  }
}

Depois, no Claude Desktop:

You:    "Store this: [paste conversation or research notes]"
Claude: → calls memory_store → extracts concepts, builds graph

You:    "Run a dream cycle"
Claude: → calls memory_dream → NREM consolidation, REM exploration, threat scan

You:    "What do you remember about X?"
Claude: → calls memory_retrieve → ranked results with connection context

Usando Memória em Todas as Conversas

O grafo de memória persiste globalmente em ~/.neuroplastic-memory/, então funciona em qualquer chat ou projeto. Para que o Claude o use automaticamente, vá em Configurações → Geral e adicione o seguinte às suas Preferências Pessoais:

I use a neuroplastic memory system via MCP tools.
For every conversation:
1. At the START, call memory_retrieve with my first
   message to check for relevant prior context.
2. When I share substantive information — research
   findings, technical decisions, strategic insights,
   project updates — call memory_store with the key
   content. Do not use built-in memory. Use the MCP
   tool memory_store.
3. I may ask you to run memory_dream or
   memory_dream_report at any time.

Isso dá a você uma memória compartilhada única em todas as conversas. Para manter a memória isolada em um projeto específico, adicione as mesmas instruções às Instruções do Projeto desse projeto, em vez das suas preferências globais.

Subsistemas

1. Pipeline de Consolidação

Transforma texto bruto em conhecimento de grafo. Um LLM extrai conceitos e relacionamentos (com sinais de afeto — o quanto o usuário enfatizou cada ideia). Cada conceito é incorporado em um vetor denso, verificado contra nós existentes para deduplicação e integrado ao grafo. Um decaimento temporal exponencial é aplicado a cada aresta: conexões ativadas recentemente sobrevivem, as obsoletas são podadas. Isso é plasticidade hebbiana — conexões que disparam juntas se fortalecem, e conexões que não disparam são esquecidas.

2. Sistema de Avaliação

Cada novo conceito é pontuado em quatro canais antes de entrar no grafo:

CanalSinalMecanismo
SalênciaDensidade de engajamento, frequência de perguntas, marcadores de primeira pessoa ("Eu acredito", "Eu preciso"), excitação (exclamação, maiúsculas, palavras fortes), ênfase do usuário vinda do LLMPontuação comportamental — o que o usuário se importa, não apenas o que ele disse
NovidadeDistância de cosseno para os nós existentes mais próximosDistância no espaço de embeddings — ideias genuinamente novas pontuam mais alto
Relevância para objetivosSimilaridade de cosseno com embeddings de objetivos ativosConceitos alinhados com objetivos declarados são priorizados
FrequênciaContagem de acesso em escala logarítmica relativa ao nó mais acessadoConceitos recuperados com frequência são tratados como mais importantes

Esses fatores se combinam em um único score de consolidação (soma ponderada, configurável) que determina a aptidão de sobrevivência de um nó — a probabilidade de ser reproduzido durante o NREM e de resistir ao decaimento.

Impulso de conflito: Se um conceito cair perto de arestas contradicts existentes, a salência recebe um impulso aditivo de +0.3 que pode elevar o score para 1.0 independentemente de outros sinais. Isso modela uma sobreposição semelhante à adrenalina — informações contraditórias disparam alerta imediato, garantindo que não se percam pelo decaimento antes que a fase de simulação de ameaças possa sinalizá-las.

3. Motor de Sonhos

Processamento offline modelado na neurociência do sono. Quatro fases são executadas em sequência:

NREM (reprodução de ondas lentas): Nós de alta salência são reproduzidos e os pesos de suas arestas são fortalecidos, imitando a reprodução hipocampal-cortical observada no sono de ondas lentas. Arestas abaixo do limiar de poda são removidas.

REM (exploração criativa): Caminhadas aleatórias enviesadas a partir de nós-semente percorrem o grafo. A cada passo, o caminhante pode saltar para um nó semanticamente semelhante, mas topologicamente distante — teletransporte criativo. Quando dois nós em uma caminhada são semelhantes em embedding, mas não compartilham aresta, uma conexão provisória é proposta.

Avaliação em vigília: Arestas provisórias são reavaliadas com um limiar mais rigoroso. Apenas conexões que sobrevivem a essa barreira são promovidas a arestas dream_connection reais no grafo. Isso evita que associações alucinadas poluam a base de conhecimento.

Simulação de ameaças: Examina nós de alta confiança em busca de arestas contradicts próximas e as sinaliza. Esses alertas de contradição trazem à tona informações conflitantes que podem precisar de resolução.

4. Sistema de Objetivos

Usuários podem declarar objetivos ("entender X", "investigar Y"). Cada objetivo é incorporado e persistido. Durante a consolidação, cada novo conceito é pontuado quanto à relevância em relação aos objetivos ativos — conceitos alinhados com o que você está tentando aprender são priorizados para consolidação e sobrevivência. Os objetivos são gerenciados pela ferramenta MCP memory_goals e armazenados em goals.json junto ao grafo.

5. Grafo de Conhecimento

Um grafo direcionado baseado em NetworkX com arestas tipadas (causes, contradicts, part_of, dream_connection, goal_linked, related_to). Cada nó carrega seu embedding, scores de avaliação, contagem de acesso, timestamps e metadados. O grafo persiste em JSON e suporta busca por similaridade via distância de cosseno sobre embeddings.

Ferramentas MCP

FerramentaDescrição
memory_storeIngerir texto de conversa — extrai conceitos e relacionamentos via Claude
memory_retrieveConsultar o grafo — retorna contexto formatado com conexões inline
memory_dreamExecutar um ciclo de sonho completo (NREM + REM + vigília + ameaça)
memory_dream_reportNarrativa legível por humanos do último ciclo de sonho
memory_goalsGerenciar objetivos de pesquisa — adicionar, listar ou remover
memory_statusEstatísticas do grafo (contagens de nós/arestas, distribuições de scores)
memory_stats_detailedDetalhamento de avaliação por nó, principais arestas, contradições, arestas de sonho
memory_tuneAjustar parâmetros em tempo de execução (ex.: dream.rem_jump_probability)

Visualização 3D

python3 viz/serve.py [port] [graph_path]
# Defaults: port 8080, graph ~/.neuroplastic-memory/graph.json

Abra http://localhost:8080 para um grafo 3D interativo com direcionamento por força.

Nós são dimensionados pelo score de consolidação.

Cor do nóOrigem
Azulconversation — extraído de texto ingerido
Roxodream — criado durante ciclos de sonho
Verdeconsolidation — criado durante a consolidação
Laranjaquery — registrado a partir de consultas de recuperação

Arestas são mais espessas para pesos maiores. Partículas animadas aparecem em arestas com peso > 0.5.

Cor da arestaTipo de relacionamento
Cinzarelated_to
Azulcauses
Douradodream_connection
Vermelhocontradicts
Cinza escuropart_of
Verde suavegoal_linked

Controles: Atualizar, Atualização automática (30s), Reproduzir Sonho (reproduz caminhos de caminhada com marcadores de salto), Controle deslizante de velocidade. Passe o mouse sobre qualquer nó para ver seu rótulo, origem e scores.

Configuração

Todos os parâmetros são ajustáveis em tempo de execução via memory_tune ou em src/mind/schemas/config.py:

Pesos de avaliação: alpha/beta/gamma/delta (0.25 cada) — equilibram salência, novidade, relevância para objetivos e frequência de recuperação no score de consolidação.

Sub-pesos de salência: salience_engagement_weight (0.2), salience_question_weight (0.2), salience_personal_weight (0.3), salience_arousal_weight (0.3) — controlam quais sinais comportamentais impulsionam a salência.

Parâmetros de sonho: rem_jump_probability (0.3), rem_walk_steps (10), rem_seed_count (5), waking_threshold (0.35), nrem_salience_threshold (0.3)

Consolidação: decay_constant (0.01), novelty_threshold (0.7)

Persistência

ArquivoLocalização
Grafo de conhecimento~/.neuroplastic-memory/graph.json
Relatórios de sonho~/.neuroplastic-memory/last_dream_report.json
Objetivos~/.neuroplastic-memory/goals.json

Testes

PYTHONPATH=src uv run pytest tests/ -v

161 testes cobrindo pontuação de avaliação, pipeline de consolidação, fases de sonho, operações de grafo, persistência de objetivos, metadados de afeto, ferramentas MCP e integração.