Linksee Memory

MCP de memória entre agentes com prioridade local. Cérebro estruturado em 6 camadas (objetivo/contexto/emoção/implementação/ressalva/aprendizado) com cache de diff de arquivo que economiza tokens (86% de economia medida em releituras)

Documentação

linksee-memory

O Claude Code esquece tudo quando você inicia uma nova sessão. Seu sucessor sabe ainda menos.

O Linksee Memory permite que você entregue um projeto — para sua próxima sessão, para o Cursor ou Codex, para a pessoa depois de você — com os motivos anexados. Registre uma decisão uma vez (remember({ content, anchor: {} })) e ela volta antes de o agente agir: reinjetada no início da sessão e antes de cada Edição / Gravação / Bash que a toque. Mude de ideia sobre o registro e ele para de incomodar; deixe-o e ele impede que o próximo agente repita o erro da semana passada.

Por baixo: detecção de desvio em todos os projetos que você executa em paralelo — quais saíram silenciosamente do objetivo (🔴), quais foram verificados e se mantêm (🔵), quais ninguém olhou ainda (⚫). Um único arquivo SQLite local que Claude Code, Cursor, Windsurf, OpenAI Codex e Gemini CLI leem. Nada sai da sua máquina.

npx -y linksee-memory setup — um comando, ativado em todos os repositórios.

npm license mcp-registry glama-score

🌐 Página inicial: linksee.app (inclui onboarding para não desenvolvedores no Claude Desktop / Cursor / Claude Code / OpenAI Codex / Gemini CLI) 📖 Documentação: docs.linksee.app — referência completa: o mapa do produto e desvio, instalação e todas as 11 ferramentas

Perguntas que isto responde

Estas são as perguntas que as pessoas realmente digitam — medidas, verbatim (2026-09-04). Se a sua está aqui, esta é a resposta.

O Claude Code esquece tudo quando inicio uma nova sessão. Como faço para ele lembrar decisões entre sessões?
Execute npx -y linksee-memory setup. Toda nova sessão abre com recall() — um resumo do que precisa de atenção, onde você está, o que está não resolvido — e suas decisões bloqueadas são reinjetadas antes de o agente agir. Nada para reexplicar.

Claude Codeがセッションをまたぐと過去の経緯を忘れてしまいます。記憶を持たせる方法を教えてください。
npx -y linksee-memory setup の一回で入ります。新しいセッションは recall() の brief(注意すべきこと・いまどこか・未解決)から始まり、固定した決定は行動の直前に再注入されます。説明し直す必要はありません。

Qual é o melhor servidor MCP para memória persistente entre agentes de codificação de IA?
Resposta honesta: se "lembrar entre sessões" é tudo que você precisa, um CLAUDE.md é suficiente — nós medimos. O Linksee é para os três momentos em que não é: bem antes de um erro, quando você muda de ideia e quando você executa muitos projetos e precisa ver qual se desviou.

AIコーディングエージェント用の記憶MCPサーバーでおすすめはありますか?
正直に言うと、「セッションを跨いで覚える」だけなら CLAUDE.md で足ります(実測しました)。Linksee が要るのは、間違いかけたとき・方針を変えたとき・並行案件のどれが外れたかを知りたいとき、の3場面です。

Quero uma memória compartilhada entre Claude Code, Cursor e OpenAI Codex. Que ferramentas existem para isso?
Um arquivo SQLite. Claude Code, Cursor, Windsurf, OpenAI Codex e Gemini CLI leem e gravam a mesma memória — uma decisão tomada em um aparece nos outros.

Claude CodeとCursorとCodexで同じ記憶を共有したいのですが、どうすればいいですか?
SQLite ファイル1つを全員で読みます。Claude Code / Cursor / Windsurf / Codex / Gemini CLI のどこで決めた決定も、他のエージェントの行動の直前に出てきます。

Meu agente de IA continua reimplementando coisas que já decidimos contra. Como posso detectar que um código se desviou de decisões passadas?
Declare a decisão (remember({ content, anchor: { violation_signal: [...] } })). O guard então avisa — ou bloqueia, se você o endureceu — no momento em que uma edição a contradiz, e drift_status mostra cada decisão que a realidade deixou silenciosamente para trás.

過去に決めた設計方針とコードがずれていないかを検出できるツールはありますか?
決定を宣言しておくと(remember({ content, anchor: {...} }))、それに反する編集の直前に警告(hardened なら拒否)が出ます。drift_status は「宣言と現実がずれた決定」を証拠つきで一覧します。

Existe uma alternativa local-first e auto-hospedada ao Mem0 para memória de agente?
Sim. Sem conta, sem chave de API, sem nuvem — um arquivo local, licença MIT. npx -y linksee-memory setup e está ativo.

Mem0 vs Zep vs Letta para a memória de longo prazo de um agente de codificação — qual devo escolher?
Nós os instalamos e executamos um cenário em todos. Armazenar e recuperar uma decisão: todos passam. A diferença aparece antes de um erro e quando você muda de ideia — o Linksee é construído para esses dois momentos; os outros deixam isso para você.

Como faço para impedir o Claude Code de repetir o mesmo erro que cometeu na semana passada?
Registre-o como uma ressalva (remember({ content, layer: 'caveat' })). Ressalvas são protegidas contra esquecimento e voltam quando o mesmo terreno é tocado novamente — e se você a ancorar, o guard impede a repetição antes que ela aconteça.

開発の意思決定履歴をMCPサーバーで残しておく定番のやり方はありますか?
remember({ content, anchor: {} }) の1回で、記録と強制が同時に入ります。drift_status がその台帳で、各決定が いま守られているか(🔵)・ずれているか(🔴)・誰も確かめていないか(⚫)を示します。

🪄 Três feitiços para lembrar

Diga istoO que acontece
"use linksee"Recupera memórias relevantes antes de agir
"linksee this"Salva a decisão / lição agora
"what's drifting?"Reconcilia a realidade com suas decisões bloqueadas

Torne automático: adicione "Use Linksee Memory" ao seu prompt de sistema / CLAUDE.md.

🗺️ Não apenas memória — um mapa do produto

A memória é o ponto de entrada. Amarre-a a um map.yaml de como seu produto se encaixa, e o CLI linksee-memory map detecta desvios com evidência de arquivo:linha:

linksee-memory-map catching doc/code drift in 30 seconds

A demonstração de 30 segundos acima: o README diz --export. O código não. O Linksee detecta — e mostra o que mais uma mudança tocaria.

npx -y linksee-memory map where README.md   # this file belongs to the README node — and what it touches
npx -y linksee-memory map explain readme    # README promises --export; the code doesn't implement it — drift, with evidence
npx -y linksee-memory map affects readme    # changing the README also touches docs, the CLI help, and the npm listing

→ veja O Mapa para o fluxo completo.

📣 Como apresentado em

「Cordex/Cursor/Code/Gemini 全部につなげられるから、 横断的にできてる MCP ってところがこれのすごいところ」 — Hatena Bookmark, maio de 2026 (165+ usuários)


🎬 Veja em ação

Desvio, detectado. Decisões não sobrevivem aos limites de sessão — mas suas consequências sobrevivem. Pergunte a qualquer sessão:

You:    What's drifting right now?
Agent:  [calls drift_status]

        28 anchors: ⚪ 1 held · 🔵 27 aligned

        Needs attention:
        ⚪ HELD — "Focus on 4 areas: Recipe layer, agent-native API,
           Japanese market, Agent Insights"
           ↻ Reopens 2026-07-04

        Everything else is aligned — no unaccounted divergence.

A memória por baixo. A detecção de desvio só funciona porque o porquê sobrevive ao limite de sessão:

Sem linksee-memory — segunda-feira de manhã, nova sessão do Claude:

You:    We deployed last week but it crashed. How did we fix it?
Claude: I don't have access to previous sessions. Can you describe
        what happened and walk me through the problem?

[30 minutes of log-spelunking and re-explanation]

Com linksee-memory — mesma pergunta, resultado diferente:

You:    We deployed last week but it crashed. How did we fix it?
Claude: Let me check my caveats...

        🧠 [caveat] NextAuth sessions invalidate when JWT_SECRET
           rotates — redeploy all affected projects in parallel.
           (from session 2026-04-13, importance: 0.9)

        Is this the deploy you're asking about? We hit it when
        we rotated secrets mid-flow.

You:    Yes, exactly. Let's not repeat that.

Essa única memória caveat é o que separa "armazenamento plano de fatos" de "o agente realmente lembra o PORQUÊ". O linksee-memory a armazena em seis camadas explícitas para que a recuperação permaneça explicável.


🔍 Detecção de Desvio — "Datadog de Intenção"

A maioria das equipes toma decisões e depois as esquece. O agente da semana passada decidiu "usaremos FTS5 em vez de busca vetorial" — mas esta semana uma nova sessão instala pgvector sem saber por que isso foi rejeitado. Isso é desvio. Não é um bug. Não é malícia. Apenas contexto esquecido.

Ferramentas de memória lembram o que você fez. Nada percebe quando você se desvia do que decidiu — essa é a camada que o Linksee Memory adiciona. Pense em "Datadog para decisões de produto": divergências não contabilizadas surgem como desvio, evolução intencional (registrada como supersede/fix) permanece silenciosa.

Como funciona

  1. Declare decisões como âncoras: declare_anchor({ kind: "decision", statement: "We use FTS5, not vector search", violation_signal: ["pgvector", "embedding"] })
  2. O mecanismo detecta quando a realidade do código commitado diverge dessas âncoras
  3. Derivação de estado classifica cada âncora:
    • 🔴 Desvio — a realidade diverge sem resolução registrada
    • 🟡 Revisão — um sinal suave aguarda sua decisão
    • ⚪ Mantido — você reconheceu a lacuna, estacionou-a com uma data de revisão
    • 🔵 Alinhado — a realidade corresponde à intenção, ou uma resolução registrada explica a mudança
  4. Resolva com fix, supersede, acknowledge ou dismiss — além de dois portões: harden (PreToolUse bloqueará) e soften (de volta a um aviso)

A regra decisiva: uma divergência contabilizada por uma resolução registrada (supersede/fix/acknowledge) NÃO é desvio. Apenas lacunas não contabilizadas são sinalizadas. Isso significa que a evolução intencional permanece silenciosa enquanto o abandono silencioso é detectado.

Taxonomia de 4 espécies

Âncoras são classificadas em quatro espécies com formatos de exibição diferentes:

EspécieÍconeFormato de ExibiçãoExemplo
Hipótese🧪Cartão de Decisão (formato de diário)"Lançaremos primeiro em inglês no HN"
Restrição🔒Regra (checklist passa/falha)"Todas as gravações passam por remember()"
Compromisso🔁Batimento cardíaco (vivo/morto)"Lançar uma nova versão toda semana"
Fonte de Verdade📍Referência (âncora estável)"Servidor MCP roda em stdio, SQLite único"

🗺️ O Mapa — linksee-memory map

A detecção de desvio (acima) verifica âncoras individuais. O Mapa eleva isso para o produto inteiro: um map.yaml descrevendo como o valor chega ao seu usuário (discover → understand → try → adopt → retain → monetize → expand), com dependências tipadas entre as peças — README, listagem npm, onboarding, o mecanismo que as alimenta. O reconciliador verifica esse mapa contra seu código real, e o CLI responde à pergunta que um engenheiro realmente tem:

Estou tocando neste arquivo — onde ele está no mapa e o que mais deve se mover?

1. Onde estou? — localize um arquivo (ou, sem argumento, infira de suas edições recentes):

$ npx -y linksee-memory map where README.md
"README.md" belongs to this Map node:

  readme  [understand]  convergence
    changes ripple to:
      must fix together (hard):  lp, docs-site
      should align (soft):       onboarding, client-configs
      fyi (may ripple):          telemetry-contract

O raio de impacto é classificado — must fix together vs should align vs fyi — para que uma ondulação ampla não seja ruído plano.

2. Por que está neste estado? — o diagnóstico, com evidência de arquivo:linha:

$ npx -y linksee-memory map explain readme

STATUS
  declared: healthy (active)
  reality:  implemented / matches
  verdict:  declared and reality agree (verified)

EVIDENCE
  ✓ README's Tools section lists where_am_i
      README.md:424 — found "where_am_i" in section "Tools"

O estado declarado e o veredito da realidade são mostrados separadamente — um suspect declarado manualmente que o scanner refuta é lido como "declarado suspeito, refutado pela realidade (→ convergência)", não uma mistura confusa.

3. Triagem do projeto inteiro: npx -y linksee-memory map status — uma % de saúde, o que é corrigível agora no código vs verificações externas, e qualquer adiamento sem expiração (para que "contabilizado" não possa se tornar silenciosamente um cemitério de desvios).

Como funciona

  • map.yaml (raiz do repositório) é a fonte de verdade do estado desejado: uma espinha de jornada × camadas de superfície/implementação × arestas tipadas (must-stay-consistent-with / should-align-with / realizes).
  • reconcile verifica o reality declarado de cada nó contra o código (signal / regex / section_contains / verificações de arquivo) e sobrepõe um veredito — a realidade substitui o que você declarou manualmente, com evidência.
  • where_am_i também é uma ferramenta MCP, para que um agente de codificação possa se reancorar no meio da tarefa.

Comandos: where · affects · explain · status · next · reconcile · inspect --json · blueprint. Adicione --lang ja para rótulos em japonês.


🛡 Guard de Reinjeção — aplique decisões antes da ação

A detecção de desvio (acima) é post-hoc — ela informa que a realidade divergiu depois que a mudança chega. O guard de reinjeção é a metade pré-ação: ele ressurgiu a decisão que você bloqueou antes de o agente executar a ferramenta que a quebraria.

Ele existe para um modo de falha específico e irritante (anthropics/claude-code#15443): "Claude leu a regra, entendeu e ainda usou cp." Ter a regra no contexto não é suficiente — então o guard roda fora da volição do agente, como um hook do Claude Code:

Evento de hookDispara emO que faz
PreToolUseEdit / Write / BashVerifica a ação pendente contra suas âncoras aceitas. Uma contradição gate_mode:'hard' é negada; uma correspondência mais suave reinjeta a decisão como lembrete; sem correspondência → nada acontece.
SessionStartstartup / resume / compactReproduz suas decisões bloqueadas + bifurcações abertas na nova sessão — matando a amnésia do "dia da marmota" em que um novo agente repete a decisão da semana passada.
É fail-open por construção: qualquer erro de parse / DB / lógica não retorna nada e deixa a ação passar. A única coisa que bloqueia é uma hard contradição explícita em uma decisão que você declarou.

Ativando

npx -y linksee-memory setup conecta isso ao ~/.claude/settings.json (Passo 4), então está ativo em todos os repositórios — o mesmo escopo onde sua memória já vive. Um único arquivo SQLite guarda as âncoras de todos os seus projetos; aplicar por repositório significaria declarar uma decisão uma vez e não aplicá-la em lugar nenhum.

  • --project-guard — apenas este repositório, o comportamento antigo
  • --no-guard — pular

Âncoras com globs affects disparam apenas em caminhos correspondentes; uma âncora sem escopo dispara em seu próprio detect_terms / violation_signal. Nada é bloqueado a menos que você explicitamente tenha endurecido (resolve_drift(action:'harden')) — todo o resto re-injeta a decisão como contexto.

Para conectar manualmente, adicione este bloco ao .claude/settings.json (raiz do projeto, ou ~/.claude/settings.json para todos os repositórios) — ele aponta para o binário linksee-memory-guard instalado globalmente, então nenhuma etapa de build é necessária:

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume|compact",
        "hooks": [
          { "type": "command", "command": "npx -y linksee-memory guard", "timeout": 15 }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Edit|Write|Bash",
        "hooks": [
          { "type": "command", "command": "npx -y linksee-memory guard", "timeout": 8 }
        ]
      }
    ]
  }
}

É escopado por projeto de propósito — o guard aplica as decisões deste repositório, e você opta por projeto em vez de deixá-lo negar chamadas de ferramentas em todo lugar (o hook Stop da configuração, por contraste, é global ao usuário). Declare o que ele deve observar com declare_anchor(...); defina card_policy.gate_mode:'hard' em uma âncora para fazer uma contradição bloquear em vez de apenas avisar (o padrão suave apenas re-injeta). Âncoras obsoletas (at_risk), substituídas ou desabilitadas por cartão nunca bloqueiam.

Desenvolvendo o linksee-memory em si? O repositório usa o guard via um .claude/settings.json (ignorado pelo git) que aponta para o build local (node ${CLAUDE_PROJECT_DIR}/dist/bin/guard-hook.js) para rodar contra suas mudanças não commitadas. Projetos de usuários finais devem usar a forma publicada npx -y linksee-memory guard acima.


O que ele faz

A maioria dos serviços de "memória de agente" (Mem0, Letta, Zep) salva uma lista plana de fatos. Então o agente olha para "arquivo X editado 30 vezes" e não tem ideia do porquê. E nenhum deles percebe quando o trabalho desta semana contradiz a decisão da semana passada. linksee-memory mantém o PORQUÊ — e observa o desvio.

É um servidor Model Context Protocol (MCP) com 11 ferramentas que dá a qualquer agente de IA memória estruturada + detecção de desvio:

Mem0 / Letta / ZepClaude Code auto-memorylinksee-memory
Detecção de desvio❌❌✅ rastreamento de divergência intenção ↔ realidade
Multi-agente△ (nuvem)❌ apenas Claude✅ arquivo SQLite único
Estrutura WHY de 6 camadas❌ plana❌ markdown plano✅ objetivo / contexto / emoção / implementação / ressalva / aprendizado
Cache de diff de arquivos❌❌✅ ciente de AST, economia de 50-99% de tokens em re-leituras
Esquecimento ativo△❌✅ curva de Ebbinghaus, camada de ressalva protegida
Local-first / privado❌✅✅

Quatro pilares

  1. Detecção de desvio — declare decisões como âncoras, e o motor detecta automaticamente quando a realidade commitada diverge da intenção declarada. Pense em "Datadog para decisões de produto" — divergências não explicadas aparecem como desvio, evolução intencional (registrada como supersede/fix) permanece silenciosa.
  2. Portabilidade multi-agente — arquivo SQLite único em ~/.linksee-memory/memory.db. Mesmo cérebro para Claude Code, Cursor, Windsurf, OpenAI Codex, Gemini CLI.
  3. Memória estruturada WHY-first — seis camadas explícitas (goal / context / emotion / implementation / caveat / learning). Resolve "memória plana de fatos é inútil sem objetivos".
  4. Economia de tokens via read_smart — sha256 + chunking por AST/cabeçalho/indentação. Re-leituras retornam apenas diffs. Medido 86% de economia em uma edição típica de arquivo TS, 99% de economia em re-leituras inalteradas.

🧠 A estrutura de 6 camadas

┌─────────────────────────────────────────────────────────────┐
│ 🎯 goal           ← what the user is working toward         │
├─────────────────────────────────────────────────────────────┤
│ 🧭 context        ← why this, why now — constraints, people │
├─────────────────────────────────────────────────────────────┤
│ 💗 emotion        ← user tone signals (frustration, etc.)   │
├─────────────────────────────────────────────────────────────┤
│ 🛠  implementation ← how it was done (+ what failed)         │
├─────────────────────────────────────────────────────────────┤
│ ⚠️  caveat         ← "never do this again" · auto-protected │
├─────────────────────────────────────────────────────────────┤
│ 🌱 learning       ← patterns distilled from cold memories   │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
           Ranked recall via relevance × heat × momentum × importance
                  Returns match_reasons explaining each hit

Cada memória é marcada com exatamente uma camada. Entradas da camada caveat são protegidas de auto-esquecimento. Memórias frias de baixa importância são auto-consolidadas em entradas learning na inicialização do servidor.


Início Rápido — Um Comando

npx -y linksee-memory setup

Isso faz tudo:

  1. Registra o servidor MCP com o Claude Code
  2. Instala a habilidade do agente (ensina o agente quando recordar/lembrar)
  3. Configura captura automática (cada sessão salva no seu cérebro local)
  4. Oferece conectar o guard de re-injeção neste projeto (aplicação de decisão pré-ação)

Reinicie o Claude Code e converse normalmente. Adicione "Use Linksee" a qualquer prompt para acionar a recordação de memória.

Configuração manual (se preferir passo a passo)

Clique para expandir instalação manual

Instalar e registrar:

claude mcp add -s user linksee -- npx -y linksee-memory

Ferramentas aparecem como mcp__linksee__remember, mcp__linksee__recall, mcp__linksee__read_smart.

Instalar a habilidade (auto-invocação):

npx -y linksee-memory install-skill

Copia SKILL.md para ~/.claude/skills/linksee-memory/. O agente dispara automaticamente em frases como "前に…", "また同じエラー", "覚えておいて", início de nova tarefa, edições de arquivo, etc.

Configurar captura automática (hook Stop):

Adicione ao ~/.claude/settings.json:

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          { "type": "command", "command": "npx -y linksee-memory sync" }
        ]
      }
    ]
  }
}

Cada fim de turno leva ~100 ms. Falhas são silenciosas. Logs em ~/.linksee-memory/hook.log.

Outros editores / CLIs

Linksee Memory é um servidor MCP padrão (stdio). Qualquer ferramenta que fale MCP pode conectar:

Cursor

Adicione ao ~/.cursor/mcp.json:

{
  "mcpServers": {
    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  }
}

Reinicie o Cursor. As ferramentas de memória aparecem no painel do agente.

Windsurf

Adicione ao ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  }
}
OpenAI Codex CLI
codex mcp add linksee -- npx -y linksee-memory

Ou adicione ao ~/.codex/config.toml:

[mcp_servers.linksee]
command = "npx"
args = ["-y", "linksee-memory"]
Gemini CLI

Adicione ao ~/.gemini/settings.json:

{
  "mcpServers": {
    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  }
}
Claude Desktop

Adicione o mesmo comando stdio ao claude_desktop_config.json:

{
  "mcpServers": {
    "linksee": {
      "command": "npx",
      "args": ["-y", "linksee-memory"]
    }
  }
}

Arquivo de configuração: macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\. Reinicie o Claude Desktop.

Todos os editores compartilham o mesmo ~/.linksee-memory/memory.db. Uma decisão tomada no Claude Code é recordada no Cursor. Uma ressalva registrada no Windsurf previne o mesmo erro no Codex.

Localização do banco de dados

Padrão: ~/.linksee-memory/memory.db. Substitua com a variável de ambiente LINKSEE_MEMORY_DIR.

Desinstalação

# 1. Remove the MCP server registration
claude mcp remove linksee

# 2. Remove the hooks from settings.json (edit the file, delete the linksee entries):
#    ~/.claude/settings.json          → the Stop hook running "npx -y linksee-memory sync"
#    <project>/.claude/settings.json  → the SessionStart/PreToolUse hooks running "npx -y linksee-memory guard"

# 3. Remove the installed skill and all local memory (optional)
rm -rf ~/.claude/skills/linksee-memory
rm -rf ~/.linksee-memory   # deletes all stored memory — nothing is kept anywhere else

Nada nunca sai da sua máquina, então o passo 3 apaga completamente tudo que o Linksee armazenou.

O que há de novo na v0.9

RecursoDetalhe
Guard de re-injeçãoA metade pré-ação da detecção de desvio. Um hook PreToolUse do Claude Code re-superficializa (ou, em uma contradição hard, bloqueia) uma decisão aceita antes de o agente rodar Edit/Write/Bash; um resumo de boot SessionStart reproduz suas decisões bloqueadas em cada nova sessão. Fail-open por design. Veja Guard de Re-injeção.
Conexão de hook shippablelinksee-memory-setup agora oferece mesclar os hooks do guard no .claude/settings.json do seu projeto (apontando para o binário publicado linksee-memory-guard), e o bloco é documentado para copy-paste. Anteriormente, a conexão vivia apenas em um config dogfood ignorado pelo git.

O que há de novo na v0.8

RecursoDetalhe
4 ferramentas de detecção de desviodrift_status, check_decision, declare_anchor, resolve_drift — agentes agora podem consultar e agir sobre divergência intenção ↔ realidade. A maior lacuna na memória de agentes (decisões esquecidas entre sessões) agora está fechada.
Motor de verdadeA lógica de derivação de estado (desvio/revisão/retido/alinhado) agora vive no motor MCP, não apenas no dashboard. Qualquer cliente MCP pode consultar o status de desvio.
Taxonomia de 4 espéciesÂncoras classificadas como hipótese/restrição/compromisso/fonte_de_verdade com formatos de exibição apropriados à espécie.
Prioridade de resoluçãoQuando múltiplas resoluções existem para uma âncora, a mais recente vence (previne acknowledge obsoleto de obscurecer um fix mais novo).
O que há de novo na v0.7
RecursoDetalhe
Superfície unificada de 3 ferramentas8 ferramentas → 3: remember (criar + atualizar + deletar), recall (buscar + histórico de arquivo + visão geral), read_smart (leituras que economizam tokens). Menos ferramentas = melhor consistência entre LLMs. Segue o padrão comprovado do Context7.
Auto-consolidaçãoA consolidação roda automaticamente na inicialização do servidor (não bloqueante, limite de 7 dias). Sem chamadas manuais consolidate() necessárias.
Orientação de depreciaçãoNomes antigos de ferramentas (forget, recall_file, etc.) retornam exemplos específicos de migração em vez de falhas silenciosas.
Gatilho "Use Linksee Memory"Adicione "Use Linksee Memory" a qualquer prompt para forçar recordação de memória — mesmo padrão de adoção do Context7.
Plugin Claude Codeclaude plugin add -- linksee-memory — entrega servidor MCP + habilidade de auto-invocação em uma única instalação.
O que há de novo na v0.4
RecursoDetalhe
Configuração de um comandonpx -y linksee-memory setup — registra servidor MCP, instala habilidade, configura hook de captura automática. Um comando em vez de três.
Memória estruturada v2Classificação de 3 eixos (altitude × tipo × estado) para cada memória. Extração automática de sessões produz JSON escaneável por máquina, não despejos de chat brutos.
Guia de recordação de precisãoSKILL.md agora ensina agentes COMO escrever consultas eficazes, QUANDO recordar vs pular, e QUANDO superfícializar proativamente ressalvas antes de ações arriscadas.
Cinco Blocos MCPFerramentas + Recursos + Prompts + Amostragem + Raízes + Elicitação. A maioria dos servidores MCP expõe apenas Ferramentas; linksee-memory implementa todos os cinco primitivos.

6 Ferramentas

Dois pilares, uma superfície. Memória e desvio cada um recebe o mínimo; nada mais é exposto. Onze ferramentas sangravam comportamento dependente de modelo entre Claude / GPT / Cursor / Codex / Gemini — seis é o que um agente consegue segurar sem um manual.

FerramentaO que ela faz
recallComece aqui. Sem argumentos → o brief da sessão: o que precisa de atenção, onde você está no Mapa, loops abertos, principais entidades. query → busca; path → histórico de edições de um arquivo com a intenção do usuário por trás de cada edição; where: "<topic>" → sua posição no Mapa de Verdade Atual + raio de explosão; dream: true → a sessão de triagem (Estrela do Norte, propostas órfãs, fila de destilação, atrito).
rememberSalvar / atualizar / deletar. content é o único campo obrigatório — entidade e camada padrão para o projeto em que você está. Adicione anchor: {} para registrar uma decisão e aplicá-la em uma chamada (re-injetada antes de Edit/Write/Bash e no início da sessão).
read_smartLeitor de arquivo que economiza tokens com cache de diff AST. Re-leitura inalterada = ~50 tokens; modificada = apenas chunks alterados.
drift_status"O que está desviando agora?" O mapa de verdade: 🔴 desvio / 🟡 revisão / ⚪ retido / 🔵 verificado / ⚫ não verificado, com a evidência para cada um. anchor_id → mergulho profundo em uma decisão.
declare_anchorRegistrar uma afirmação normativa — decision / prohibition / constraint que o detector verifica contra a realidade, ou proposal: uma opção que você apresentou e o usuário nunca abordou, estacionada como item de revisão.
resolve_driftFechar o ciclo. fix · supersede · acknowledge · dismiss (com hit_term, e o gate para de disparar nele) · harden / soften. Com candidate_id: surface ou dismiss uma proposta órfã.
Os cinco nomes anteriores — where_am_i, check_decision, flag_proposals, dream,
resolve_proposal — estão incorporados aos seis acima. Eles ficam ocultos do tools/list, mas **ainda
respondem se chamados**, então uma skill ou agente escrito para uma versão mais antiga continua funcionando.
O LINKSEE_LEGACY_TOOLS=1 os lista.

Utilitários de CLI

ComandoFinalidade
npx -y linksee-memory setupConfiguração em um comando: servidor MCP + skill + hook de Stop + a proteção contra reinjeção para cada repositório (--project-guard apenas para este repositório, --no-guard para pular). Idempotente — ignora o que já foi feito.
npx linksee-memoryServidor MCP (stdio)
npx -y linksee-memory syncPonto de entrada do hook de Stop do Claude Code
npx -y linksee-memory guardHook de proteção contra reinjeção: gate PreToolUse (Edit/Write/Bash) + digest de boot SessionStart. Conectado pelo setup para cada repositório (veja Proteção contra Reinjeção); fail-open.
npx -y linksee-memory importImportação em lote do histórico JSONL de sessões do Claude Code
npx -y linksee-memory install-skillInstala a Skill do Claude Code que ensina o agente quando chamar recall/remember/read_smart
npx -y linksee-memory statsResumo do banco de dados local (contagem de entidades / detalhamento por camada / principais entidades / principais arquivos editados). Adicione --json para saída legível por máquina.

As 6 camadas de memória

Cada entidade (pessoa / empresa / projeto / arquivo / conceito) pode ter memórias em seis camadas. Desde a v0.4, cada memória usa o formato estruturado de 3 eixos (altitude × tipo × estado):

{
  "title": "freee OAuth token expires in 24h",
  "altitude": "implementation",
  "type": "outcome",
  "state": "done",
  "what": "freee OAuth token expires in 24 hours. Must refresh proactively.",
  "why": "freee uses short-lived tokens unlike most SaaS (usually 30-90 day expiry)",
  "affects": ["src/integrations/freee/auth.ts"],
  "next_action": null
}
  • Memórias caveat são automaticamente protegidas contra esquecimento (lições dolorosas, nunca perdidas).
  • Memórias goal ignoram a decadência enquanto a meta estiver ativa.
  • state rastreia o ciclo de vida: open → decided → in_progress → done / stalled / superseded.

Arquitetura

Um único arquivo SQLite (better-sqlite3 + tokenizador trigrama FTS5 para JP/EN) contém cinco camadas:

  • Camada 1 — entities (fatos: pessoas / empresas / projetos / conceitos / arquivos)
  • Camada 2 — edges (associações, adjacência de grafo)
  • Camada 3 — memories (significados estruturados de 6 camadas por entidade)
  • Camada 4 — events (log de séries temporais para cálculo de calor / momentum)
  • Camada 5 — file_snapshots + session_file_edits (cache de diff + vinculação conversa↔arquivo)

A vinculação conversa↔arquivo é a chave. Cada edição de arquivo capturada pelo hook de Stop é armazenada junto com a mensagem do usuário que motivou a edição. Assim, o recall({ path: "server.ts" }) retorna "este arquivo foi editado 30 vezes ao longo de 3 dias, e aqui estão as instruções reais do usuário que motivaram cada mudança".

Por que essas escolhas de design

  • Local-first — seu histórico de conversas é privado. Nada sai da sua máquina.
  • Arquivo único — memory.db é um artefato portátil. Backup = cópia do arquivo.
  • MCP stdio — funciona com qualquer agente que fale MCP, sem plugins por host.
  • Reutiliza esquemas comprovados — heat_score / momentum_score portados de uma base de código de inteligência de vendas em produção. Baseado em regras, sem dependência de LLM no caminho crítico.

Roadmap

  • ✅ Superfície unificada de 3 ferramentas (remember / recall / read_smart) — v0.7.0
  • ✅ Consolidação automática na inicialização do servidor — v0.7.0
  • ✅ Plugin do Claude Code (claude plugin add -- linksee-memory)
  • ✅ Cinco Blocos MCP (Ferramentas + Recursos + Prompts + Amostragem + Raízes + Elicitação)
  • ✅ Captura automática via hook de Stop para o Claude Code
  • ✅ FTS5 trigrama JP/EN
  • ✅ Configuração em um comando (npx -y linksee-memory setup)
  • ✅ Memória estruturada v2 (classificação de 3 eixos: altitude × tipo × estado)
  • ✅ Multi-LLM: Claude Code, Cursor, Windsurf, OpenAI Codex, Gemini CLI
  • ✅ Página de destino (linksee.app)
  • ✅ Mecanismo de detecção de drift + 4 ferramentas MCP de drift — v0.8.0
  • ✅ Mapa de verdade de 4 espécies (hipótese/restrição/compromisso/fonte_de_verdade) — v0.8.0
  • ✅ Painel com visualização do Registro de Decisões
  • 🔮 Plugin Obsidian (ler mapa de verdade no seu cofre)
  • 🔮 Busca vetorial via sqlite-vec (já nas dependências, backend de embeddings pendente)
  • 🔮 Sincronização em nuvem entre dispositivos (nível Pro)

Comparação com a memória automática do Claude Code

O Claude Code inclui um recurso de memória integrado em ~/.claude/projects/<path>/memory/*.md — notas markdown simples para preferências do usuário. O linksee-memory complementa isso:

  • memória automática = seu scrapbook de "lembre-se de que prefiro X"
  • linksee-memory = cérebro estruturado entre agentes com cache de diff de arquivos e o PORQUÊ de cada edição

Use ambos.

Segurança e privacidade

O linksee-memory roda localmente e foi feito para ler — e enviar — o mínimo possível.

  • Local-first. A memória é um único arquivo SQLite em ~/.linksee-memory/memory.db. Sem conta, sem nuvem, sem chave de API.
  • Telemetria é opcional e DESATIVADA por padrão. O setup pergunta uma vez; nada é enviado a menos que você concorde lá (ou defina LINKSEE_TELEMETRY=basic). Mesmo assim, nunca envia seu código-fonte, conteúdo de arquivos, prompts, conversas, nomes de entidades/projetos ou o banco de memória — apenas contadores anônimos (detalhes).
  • Sem rastreamento automático de repositórios. O linksee lê: memórias que você salva explicitamente, seu map.yaml, os arquivos específicos apontados por uma verificação de realidade do mapa, o banco SQLite local e — quando o hook de Stop dispara — a transcrição da sua sessão do Claude Code (localmente, para capturar o que aconteceu). Ele não rastreia seu repositório, não lê .env/segredos/node_modules e não toca no seu diretório pessoal por conta própria.
  • Transporte MCP limpo. O servidor escreve apenas JSON-RPC na saída padrão; todos os logs vão para a saída de erro.
  • Hooks documentados e removíveis. O setup adiciona um hook de Stop (captura de sessão) e um hook de proteção opcional. Eles não fazem chamadas de rede por padrão, são limitados no tempo, fail-open (um erro de hook nunca interrompe sua sessão) e estão listados em Desinstalação.
  • Sem superfície de injeção de shell. Subcomandos são executados via spawn com argumentos em array e shell: false, a partir de uma allowlist fixa; map.yaml é analisado com o parser seguro yaml (sem execução arbitrária de tags).
  • Cadeia de suprimentos. MIT, publicado por um único proprietário. O npx -y linksee-memory executa o pacote publicado — fixe uma versão no CI se precisar de reprodutibilidade.

Encontrou um problema de segurança? Veja SECURITY.md.

Telemetria (opcional, desativada por padrão)

O linksee-memory inclui telemetria anônima opcional que nos ajuda a entender quais servidores MCP e fluxos de trabalho realmente funcionam no mundo real. Nada é enviado a menos que você ative explicitamente. Sem conteúdo de conversa, sem conteúdo de arquivo, sem nomes de entidades, sem caminhos de projeto — nunca.

Ativar

export LINKSEE_TELEMETRY=basic     # opt in
export LINKSEE_TELEMETRY=off       # opt out (or just unset the variable)
# `linksee-memory setup` also asks once and records your choice in
# ~/.linksee-memory/telemetry-consent (delete that file to be asked again).

Exatamente o que é enviado (contrato de Nível 1)

Após cada sessão do Claude Code terminar, o hook de Stop envia um POST para https://linksee-site.vercel.app/api/telemetry/linksee contendo apenas estes campos:

CampoExemploO que é
anon_idd7924ced-3879-…UUID aleatório gerado localmente no primeiro aceite. Armazenado em ~/.linksee-memory/telemetry-id — exclua o arquivo para redefinir.
linksee_version0.0.3Versão do pacote
session_turn_count120Quantas rodadas a sessão teve
session_duration_sec3600Quanto tempo a sessão durou
file_ops_edit/write/read12, 2, 40Apenas contagens
mcp_servers["kansei-link","freee","slack"]Nomes dos servidores MCP configurados (de ~/.claude.json). Apenas nomes — nunca caminhos de comando.
file_extensions{".ts":60,".md":30}Distribuição percentual das extensões de arquivo tocadas
read_smart_*, recall_*contagensContadores de uso de ferramentas

O que NUNCA é enviado:

  • ❌ Mensagens de conversa (usuário ou assistente)
  • ❌ Conteúdo de arquivos
  • ❌ Nomes de entidades, nomes de projetos, caminhos de arquivos, URLs
  • ❌ Texto de camadas de memória (meta / contexto / emoção / impl / ressalva / aprendizado)
  • ❌ Tokens de autenticação, chaves de API, segredos
  • ❌ Seu endereço IP (apenas um hash unidirecional para detecção de abuso)

Por que pedimos

Dados agregados de uso de MCP ajudam o projeto KanseiLink a classificar quais integrações de agentes realmente funcionam para desenvolvedores reais. Se você quiser contribuir, o LINKSEE_TELEMETRY=basic leva 1 segundo para configurar e ajuda todo o ecossistema MCP a melhorar.

O esquema completo do payload e a lógica de validação são open-source — leia src/lib/telemetry.ts se quiser verificar exatamente o que sai da sua máquina.

Preços

Grátis para sempre.

O linksee-memory é local-first e roda inteiramente na sua máquina. Não há componente hospedado pelo qual você precise pagar. O banco SQLite fica no seu diretório pessoal; backup = cópia do arquivo.

Sem conta, sem cartão de crédito, sem chave de API. Basta instalar e usar.

Solução de problemas

A skill não está disparando — o Claude Code não chama recall quando pergunto sobre trabalhos passados.
  1. Verifique se a skill foi instalada:
    ls ~/.claude/skills/linksee-memory/SKILL.md
    
    Se ausente, execute npx -y linksee-memory install-skill.
  2. Reinicie o Claude Code. As skills são indexadas no início da sessão.
  3. Verifique se o MCP está registrado sob o nome linksee (a skill espera nomes de ferramentas mcp__linksee__*):
    claude mcp list | grep linksee
    
    Se estiver registrado com outro nome, re-registre ou edite ~/.claude/skills/linksee-memory/SKILL.md para corresponder.
O hook de Stop não está gravando minhas sessões.
  1. Verifique o log do hook: cat ~/.linksee-memory/hook.log
  2. Execute um teste manual:
    echo '{"session_id":"test","transcript_path":"/path/to/some.jsonl"}' | npx -y linksee-memory sync
    
  3. Certifique-se de que o hook Stop em ~/.claude/settings.json aponte para npx -y linksee-memory sync (não o antigo -import).
Atualizando da v0.0.5 ou anterior — meus recalls estão quase todos marcados como "Card_Navi" ou com o nome do meu diretório de projeto.

A v0.0.6+ corrigiu o bug de detecção de entidades que colapsava todas as memórias no cwd inicial da sessão. Para reindexar o histórico existente com a atribuição correta de projeto, execute:

npx -y linksee-memory import --all

O importador é idempotente (apaga os dados de sessão existentes antes de reinserir). Tempo típico de execução: alguns minutos para centenas de sessões. Espere uma melhora drástica na precisão do recall depois.

recall retorna demais — a janela de contexto enche rápido.

Reduza o max_tokens:

recall({ query: "...", max_tokens: 800 })   // default is 2000

Ou restrinja com entity_name e layer:

recall({ query: "...", entity_name: "my-project", layer: "caveat" })
Como redefino / excluo toda a memória?
rm -rf ~/.linksee-memory   # nuke everything; next run creates a fresh DB

Ou exclua memórias individuais via remember({ forget: true, memory_id: <id> }).

O banco está ficando grande (>100 MB). Como reduzo?

A consolidação roda automaticamente na inicialização do servidor (limite de 7 dias). Ela agrupa memórias antigas e frias em resumos compactados da camada de aprendizado. As camadas de ressalva e meta ativa são sempre preservadas.

Se quiser forçar uma consolidação manual, reinicie o servidor MCP — a autoconsolidação dispara em toda inicialização.

FAQ

O que é detecção de drift e por que preciso dela?

Drift = quando a realidade do seu código diverge silenciosamente do que você decidiu. Exemplo: na semana passada você decidiu "FTS5, não busca vetorial", mas esta semana uma nova sessão de agente instala pgvector sem saber o histórico.

O Linksee Memory rastreia isso permitindo que você declare decisões como "âncoras" e depois verifique automaticamente o código commitado contra elas. A regra decisiva: evolução intencional (registrada como correção/substituição) permanece silenciosa, enquanto lacunas não contabilizadas são sinalizadas. É como o Datadog, mas para decisões de produto em vez de métricas de servidor.

Você não precisa usar a detecção de drift para se beneficiar do linksee-memory — as 3 ferramentas de memória (remember/recall/read_smart) funcionam de forma independente. As ferramentas de drift são uma camada adicional para equipes e devs solo que gerenciam vários projetos.

Como isso é diferente do Mem0 / Letta / Zep?

Três eixos:

  1. Local-first: essas ferramentas exigem contas em nuvem e enviam seus dados para os servidores delas. O linksee-memory roda inteiramente na sua máquina — um único arquivo SQLite, sem chamadas de rede por padrão.
  2. Camadas de PORQUÊ: elas armazenam fatos planos ou nós de grafo de conhecimento. O linksee-memory tem 6 camadas explícitas (goal/context/emotion/implementation/caveat/learning) para que a recuperação retorne raciocínio estruturado, não apenas dados.
  3. Cache de diff de arquivos: a ferramenta read_smart economiza 86–99% dos tokens em releituras de arquivos via chunking ciente de AST. Nenhum dos serviços de memória faz isso — é um recurso normalmente presente em IDEs.
Por que não usar apenas a memória automática integrada do Claude?

A memória automática do Claude Code é exclusiva do Claude (não ajuda se você mudar para Cursor, OpenAI Codex ou Gemini CLI) e armazena markdown plano sem estrutura. O linksee-memory segue o mesmo princípio local-first, mas:

  • Funciona em Claude Code, Cursor, OpenAI Codex, Gemini CLI (SQLite compartilhado)
  • O formato estruturado de 6 camadas torna a recuperação explicável
  • A consolidação automática compacta memórias frias na inicialização; ressalvas são permanentemente protegidas
A economia de 86% em tokens é real? De onde ela vem?

Sim — veja tools/bench-read-smart.ts no repositório. A ferramenta read_smart:

  1. Gera hash do conteúdo do arquivo na primeira leitura, retorna o conteúdo completo + metadados de chunk (limites de AST/cabeçalho/indentação).
  2. Na releitura com mtime+sha256 inalterados, retorna ~50 tokens de confirmação de "inalterado" em vez de reenviar o arquivo.
  3. Em edições reais, retorna apenas os chunks alterados como conteúdo completo + chunks inalterados como referências apenas de metadados.

Para uma edição típica de arquivo TypeScript em um loop agêntico, isso reduz os custos de tokens por ida e volta em ~86%. Em releituras puras (usuário navegando de volta para um arquivo já lido), a economia excede 99%.

"Local-first" significa que não há como sincronizar entre minhas máquinas?

O padrão é não sincronizar — o arquivo SQLite fica em ~/.linksee-memory/memory.db e permanece lá. Se você quiser sincronização entre várias máquinas, coloque esse diretório sob Syncthing / iCloud Drive / Dropbox / Google Drive — é um único arquivo, então qualquer ferramenta de sincronização de arquivos funciona. (Evite edições simultâneas de duas máquinas enquanto o servidor MCP estiver rodando em ambas; o modo WAL do SQLite lida bem com um único escritor, mas conflitos de múltiplos escritores podem corromper.)

O que acontece quando o banco de dados fica enorme?

Dois mecanismos:

  1. Esquecimento de Ebbinghaus: memórias frias de baixa importância decaem naturalmente, elegíveis para varreduras de esquecimento automático. A camada caveat e memórias com importance ≥ 0.9 são sempre protegidas.
  2. Consolidação automática: roda a cada inicialização do servidor (limiar de 7 dias). Comprime clusters de memórias frias de baixa importância por entidade em um único resumo da camada learning, depois exclui os originais. Nenhum agendamento manual é necessário.

Na prática, um desenvolvedor solo atinge ~100MB após 6 meses de uso intenso. Um banco de dados de um ano que testei com 80 mil memórias ainda recupera em <10ms.

Posso usar isso sem o Claude Code?

Sim — qualquer cliente compatível com MCP funciona:

  • Claude Code: claude mcp add -s user linksee -- npx -y linksee-memory
  • Claude Desktop: adicione em claude_desktop_config.json (veja onboarding na LP)
  • Cursor: adicione nas configurações de MCP em Cursor → Configurações → Recursos → Model Context Protocol
  • OpenAI Codex: codex mcp add linksee -- npx -y linksee-memory (ou ~/.codex/config.toml com bloco [mcp_servers.linksee])
  • Gemini CLI: adicione na seção mcpServers de ~/.gemini/settings.json
  • ChatGPT (app web/mobile): stdio MCP não é suportado pelo aplicativo de consumo — requer servidor MCP remoto via HTTPS (ainda não disponível).
  • Agente personalizado: o protocolo MCP stdio está documentado em modelcontextprotocol.io
Qual telemetria ele envia?

Por padrão: zero chamadas de rede, zero telemetria. Existe um modo opcional de telemetria Nível 1 que você pode ativar e que envia métricas agregadas anonimizadas (contagens de chamadas de ferramentas, taxas de erro, percentis de latência — nunca conteúdo de memória, nunca caminhos de arquivos, nunca consultas). O esquema exato do payload está documentado na seção Telemetria e você vê cada byte antes de optar por participar.

Como verifico se está realmente funcionando?

Após a instalação, em uma nova sessão do Claude pergunte: "Você pode lembrar que eu prefiro TypeScript em vez de JavaScript? Use Linksee Memory." O Claude deve confirmar que chamou mcp__linksee__remember e armazenou isso. Depois, em uma sessão diferente pergunte: "Quais linguagens eu prefiro? Use Linksee Memory." Ele deve recuperar via mcp__linksee__recall e retornar a preferência com match_reasons mostrando o porquê.

Suporte

  • Problemas e relatórios de bugs: github.com/michielinksee/linksee-memory/issues
  • Solicitações de recursos: abra uma issue com o rótulo enhancement
  • Preocupações de segurança: veja SECURITY.md se presente, ou registre um advisory privado no GitHub
  • Empresa: Synapse Arrows PTE. LTD. (Singapura)

Changelog

v0.11.3 — Robustez + higiene de MCP (2026-06-16)

  • Recuperação de banco de dados corrompido: se ~/.linksee-memory/memory.db não puder ser lido, o linksee o preserva como memory.db.corrupt-<timestamp> e inicia um novo (com uma mensagem clara) em vez de travar com um erro bruto do SQLite. Memórias antigas permanecem recuperáveis no backup.
  • A descrição da ferramenta recall não sugere mais editar seu prompt de sistema — cidadania MCP mais limpa.

v0.11.2 — Mais endurecimento de cold start (2026-06-16)

  • stats funciona em um banco de dados novo em vez de travar com no such table — ele garante que o esquema exista primeiro (pode ser o primeiro comando que um novo usuário executa).
  • map --help imprime o uso em vez de tentar importar um mapa.

v0.11.1 — Correções de cold start (2026-06-16)

  • Execute qualquer CLI pelo nome do pacote: npx -y linksee-memory setup (e map, sync, guard, stats, import, install-skill). Um novo usuário não conseguia acessar os bins independentes (linksee-memory-setup, …) via npx — o npx resolve nomes de pacotes, não nomes de bins irmãos — então a instalação de um comando falhava com 404. O bin principal agora despacha subcomandos; os bins independentes permanecem como aliases.
  • map encerra graciosamente com uma mensagem de próximo passo quando ainda não há map.yaml (era um stack trace bruto — o estado exato de um usuário de primeira viagem).
  • serverInfo agora reporta a versão real do pacote (estava fixada em uma string antiga).

v0.11.0 — O Mapa: where_am_i + linksee-memory map (2026-06-15)

A memória é o ponto de entrada; o mapa do produto é a nova superfície. A detecção de deriva evolui de âncoras individuais para um mapa do produto inteiro que você navega pelo CLI.

  • where_am_i (11ª ferramenta MCP) — localiza o tópico/arquivo atual no Mapa da Verdade Atual e obtém seu raio de impacto. Chame sem argumentos para localizar automaticamente a partir de suas edições recentes.
  • CLI linksee-memory map — where · affects · explain · status · next · reconcile · inspect --json · blueprint. Um map.yaml (fonte de verdade do git) descreve como o valor chega ao seu usuário; o reconciliador o verifica contra seu código com evidência de arquivo:linha. Bilíngue: adicione --lang ja.
  • Raio de impacto graduado (must fix together / should align / fyi), vereditos de declarado-vs-realidade e uma proteção anti-cemiterio para deriva contabilizada.
  • Chaves por projeto para que o Mapa lide com muitos projetos ao mesmo tempo.

v0.8.0 — Ferramentas MCP de Detecção de Deriva (2026-06-08)

3 ferramentas → 7 ferramentas. A maior atualização desde o lançamento — agentes agora podem detectar, consultar e resolver deriva entre intenção ↔ realidade.

Novas ferramentas:

  • drift_status — retorna o mapa da verdade com classificação de 4 espécies e estado de deriva por nó
  • check_decision — mergulho profundo em uma única âncora: estado, arestas, candidatos pendentes
  • declare_anchor — registra uma decisão/restrição/proibição como um nó do mapa da verdade (com campos v9 ProjectCoreNode)
  • resolve_drift — fecha o ciclo de feedback: corrigir / substituir / reconhecer / dispensar

Novo módulo de engine:

  • truth-engine.ts — lógica de derivação de estado migrada do dashboard para o engine MCP. Qualquer cliente MCP agora pode consultar o status de deriva sem um dashboard.
  • Correção de prioridade de resolução: quando múltiplas resoluções referenciam a mesma âncora, a mais recente vence (pelo timestamp resolved_at). Impede que um reconhecimento obsoleto ofusque uma correção mais nova.
  • Classificação de 4 espécies: nós classificados por decision_mode em hipótese / restrição / compromisso / fonte_de_verdade com orientação de formato de exibição.

Sem mudanças que quebrem as ferramentas de memória existentes. Todas as 3 ferramentas de memória (remember, recall, read_smart) permanecem inalteradas.

v0.7.2 — Ergonomia de recall + detecção automática de arestas + precisão do classificador (2026-05-30)

Passada de qualidade no v0.7.0 / v0.7.1 — UX diária mais nítida para agentes e dados mais limpos para o dashboard:

  • Disciplina de tokens do recall: remove o content_raw redundante da resposta (o content analisado já estava lá — era uma duplicação 2×), e realmente aplica max_tokens por montagem gulosa que mede o tamanho serializado real (era uma estimativa plana de ~100 tok/memória). Adiciona approx_tokens à resposta para que o agente veja seu uso de orçamento. A mesma consulta que antes retornava ~15.800 tokens para um orçamento de 1200 agora permanece dentro dele.
  • Precisão do recall: memórias quase duplicadas — mesma entidade + texto central quase idêntico, ex. a mesma mensagem capturada sob goal e learning — colapsam em uma no conjunto de resultados. Pesos compostos se adaptam à especificidade da consulta: consultas de múltiplos termos ponderam relevância mais alta para que memórias fixadas fora do tópico não lotem recalls estreitos.
  • Deduplicação de captura (lado de escrita): session-extractor agora produz NO MÁXIMO uma memória por turno do usuário, com prioridade goal[first_intent] > caveat > decision > context. Uma mensagem de primeira intenção contendo palavras de decisão (ex. "決めた" / "これで進めよう") não é mais salva duas vezes como goal e learning.
  • Detecção automática de memory_edges: a tabela memory_edges anteriormente vazia agora é populada durante a varredura de consolidação em modo de suspensão. detectMemoryEdges() vincula uma memória DECISION posterior à decisão anterior mais recente do mesmo tópico dentro de uma entidade (cadeia, não clique) para que o dashboard possa renderizar Cadeias de Pivô. A relação padrão é extends — uma decisão posterior do mesmo tópico se baseia na anterior, mas NÃO a desativa. Marcadores explícitos de reversão (やめる / revert / instead of) produzem contradicts; marcadores explícitos de substituição (の代わり / replaces / deprecate) produzem supersedes. Impede a desativação silenciosa de decisões ainda válidas.
  • Precisão de inferType / inferState: reconhecimentos de conversa fiada ("そうだね" / "ありがとう"), conteúdo colado de terminal/git/email e meta-ruído não são mais classificados como decision — eles retornam note / open antes da correspondência de padrões. O padrão da camada de aprendizado → decision é controlado por essa proteção. Decisões reais (採用 / 決めた, mesmo após um reconhecimento de abertura) sobrevivem.

Sem migração de esquema, sem mudanças de API que quebrem. Linhas existentes mantêm seu conteúdo armazenado; as melhorias do classificador se aplicam a novas capturas daqui em diante.

v0.7.1 — Correções de revisão (2026-05-29)

Baseado na revisão de design do Opus 4.7 da v0.7.0:

  • P0 — Orientação de parâmetros obrigatórios: a descrição da ferramenta remember agora inclui a seção "PARÂMETROS OBRIGATÓRIOS POR MODO" para que os LLMs saibam exatamente quais campos são necessários para criar vs. atualizar vs. excluir.
  • P0 — Orientação de migração: nomes de ferramentas obsoletos (forget, recall_file, etc.) agora retornam exemplos específicos de migração em vez de erros genéricos.
  • P1 — Mesclagem de caminho de recall + consulta: quando path e query são fornecidos ao recall, os resultados do histórico de arquivos e da pesquisa de memória são mesclados em uma única resposta.
  • P2 — Segurança de consolidação automática: verificação de existência da tabela via sqlite_master antes de consultar a tabela consolidations, evitando erros em bancos de dados novos.

v0.7.0 — Superfície unificada de 3 ferramentas (2026-05-29)

8 ferramentas → 3 ferramentas. Seguindo o padrão comprovado da Context7 de menos ferramentas = melhor consistência entre LLMs.

Mudança significativa: as seguintes ferramentas são removidas da superfície MCP. Chamá-las retorna um guia de migração:

Ferramenta antigaEquivalente novo
forgetremember({ forget: true, memory_id: <id> })
update_memoryremember({ memory_id: <id>, content: "..." })
recall_filerecall({ path: "server.ts" })
list_entitiesrecall({}) (sem parâmetros = visão geral da entidade)
consolidateExecuta automaticamente na inicialização do servidor (limite de 7 dias)

Novas ferramentas unificadas:

  • remember — criar + atualizar + excluir em uma única ferramenta. O modo é inferido a partir dos parâmetros.
  • recall — pesquisa + histórico de arquivos + visão geral em uma única ferramenta. O modo é inferido a partir dos parâmetros.
  • read_smart — inalterada.

Outras mudanças:

  • Consolidação automática na inicialização do servidor (setTimeout não bloqueante, limite de 7 dias, verificação de segurança sqlite_master)
  • Pacote de plugin para Claude Code (claude plugin add -- linksee-memory)
  • Erros de depreciação incluem exemplos específicos de migração

Todas as funções internas de manipulação são preservadas — esta é uma mudança de superfície, não uma reescrita de lógica.

v0.2.0 — Prontidão para lançamento com foco em inglês (2026-04-20)

Prepara o pacote para um público mais amplo (principalmente falante de inglês) no Reddit, Hacker News e Discord da Anthropic. Sem mudanças significativas na API.

  • SKILL.md bilíngue (habilidade de invocação automática). A habilidade incluída que linksee-memory-install-skill copia para ~/.claude/skills/linksee-memory/SKILL.md era prioritariamente em japonês; agora é prioritariamente em inglês, com frases de gatilho em japonês preservadas inline. Falantes de inglês agora veem a habilidade ativada por frases naturais em inglês ("how did we solve this before?", "same error again", "remember this") além dos gatilhos existentes em japonês.
  • Saída CLI de instalação da habilidade é bilíngue: frases de teste de exemplo mostradas após a instalação incluem inglês e japonês.
  • Cobertura em inglês do extrator de sessão (linksee-memory-import): padrões regex expandidos para decisões, falhas e ressalvas, para que logs de sessão do Claude Code em inglês sejam marcados automaticamente corretamente. As adições incluem let's go, pivot, switch to, settled on, approved, doesn't work, stuck, same error again, hit an error, debug, broke, revert.
  • Dica de erro de esquecimento de ressalva mais clara: a mensagem anterior dizia "lower importance below 0.9 first, then forget", o que era enganoso — memórias da camada de ressalva são permanentemente protegidas independentemente da importância. A dica agora distingue corretamente proteção de camada de proteção de fixação.
  • Reformulação do README para prontidão de lançamento: adicionada seção "See it in action" com cenário antes/depois, diagrama ASCII de 6 camadas, selos de pontuação do MCP Official Registry + Glama, link de página de destino e FAQ de 8 itens cobrindo perguntas que surgem durante lançamentos públicos.
  • Interno: SKILL.md agora documenta o pareamento com a habilidade KanseiLink como exemplo de fluxo de trabalho em inglês.

Sem mudanças de código na superfície do protocolo MCP; todos os clientes MCP existentes continuam funcionando inalterados.

v0.1.1 — Ajuste do limite de fixação (2026-04-19)

Com base em feedback do mundo real de que memórias importance=0.95 não estavam sendo tratadas como fixadas apesar da intenção.

  • Limite de fixação reduzido de >= 1.0 para >= 0.9. Memórias com importance >= 0.9 agora estão isentas da varredura de esquecimento automático e aparecem pinned: true nas respostas de recall e remember. Isso corresponde ao modelo mental natural ("0.9 = alta importância = deve sobreviver à limpeza") sem exigir 1.0 exato.
  • Todas as memórias existentes com importance >= 0.9 (incluindo as mais antigas definidas como 0.9 ou 0.95) tornam-se fixadas automaticamente — sem necessidade de migração.
  • Descrições de ferramentas e mensagens de erro atualizadas para refletir o novo limite.

v0.1.0 — Grande atualização de UX (2026-04-18)

Com base em uma semana de uso interno, aqui está o que mudou:

Novas ferramentas

  • update_memory — edição atômica com memory_id preservado. Resolve o bug "forget+remember quebra links de session_file_edits".
  • list_entities — primitiva rápida de "o que eu sei sobre?" para inicialização de sessão. Suporta filtros kind/min_memories e retorna detalhamento por camada.
  • npx -y linksee-memory stats — CLI de resumo do banco de dados local.

Melhorias em recall

  • Array match_reasons em cada memória: ex. ["content_match_fts", "heat:hot", "pinned"].
  • score_breakdown com pontuações por dimensão (relevância / calor / momentum / importância).
  • Paginação via offset / has_more / stopped_by.
  • Parâmetro limit (limite rígido, complementa o orçamento max_tokens).
  • Filtro band para solicitar apenas memórias quentes/mornas/frias/congeladas.
  • mark_accessed=false para consultas de pré-visualização que não devem aumentar o calor.
  • Aliases de camada: decisions → learning, warnings → caveat, how → implementation, etc.
  • Correção: atualização oportunista de pontuações de momentum de entidades desatualizadas. Entidades recuperadas >1 h após o último remember() não retornam mais momentum desatualizado.

Melhorias em remember

  • Verificação de qualidade: rejeita saída de assistente colada / logs de CI / stack traces, a menos que force=true.
  • importance=1.0 agora fixa implicitamente a memória (sobrevive ao esquecimento automático).
  • Aliases de camada aceitos.

Mudanças em forget

  • Memórias fixadas (importância=1.0) agora preservadas junto com memórias da camada de ressalva.
  • Resposta de erro clara ao tentar excluir uma memória protegida ou inexistente.
  • dry-run agora inclui sample_ids_to_drop.

Mudanças em consolidate

  • Modo de pré-visualização dry_run: true — relata contagem de clusters e candidatos sem gravar.

Infraestrutura

  • Corrigido bug de migração em banco novo (estava consultando a tabela meta antes de ela existir).
  • Atualizado para Node 20+ para uso de recursos de linguagem estruturada.

Todas as mudanças são retrocompatíveis — integrações existentes continuam funcionando. O banner de versão do Server.ts agora reporta v0.1.0.

Versões anteriores

Veja GitHub Releases.

Licença

MIT — Synapse Arrows PTE. LTD.