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.
🌐 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 isto | O 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:

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
- Zenn: あなたの Claude Code、 実は前回のセッションを完全に忘れている — 73 ♡ no Zenn, 165+ usuários no Hatena Bookmark, repercutido por blogs de tecnologia + YouTube shorts (maio de 2026)
- Zenn: あなたの MCP server、 実は Tools しか使ってない (5 blocks 全実装 / v0.3.0) — o 1% dos servidores MCP que implementam todos os 5 blocos
- Zenn: あなたの Claude memory、 実は Claude にしか残らない (5 LLM 横断する方法) — padrão de memória entre LLMs (12 de maio de 2026)
- Zenn: Glama listing で 3 週間止まった話 (5 つの罠と解決策) — retrospectiva de implantação npm + Glama
「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
- Declare decisões como âncoras:
declare_anchor({ kind: "decision", statement: "We use FTS5, not vector search", violation_signal: ["pgvector", "embedding"] }) - O mecanismo detecta quando a realidade do código commitado diverge dessas âncoras
- 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
- Resolva com
fix,supersede,acknowledgeoudismiss— além de dois portões:harden(PreToolUse bloqueará) esoften(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 | Ícone | Formato de Exibição | Exemplo |
|---|---|---|---|
| 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).reconcileverifica orealitydeclarado 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_itambé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 hook | Dispara em | O que faz |
|---|---|---|
PreToolUse | Edit / Write / Bash | Verifica 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. |
SessionStart | startup / resume / compact | Reproduz 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 publicadanpx -y linksee-memory guardacima.
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 / Zep | Claude Code auto-memory | linksee-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
- 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.
- Portabilidade multi-agente — arquivo SQLite único em
~/.linksee-memory/memory.db. Mesmo cérebro para Claude Code, Cursor, Windsurf, OpenAI Codex, Gemini CLI. - 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". - 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:
- Registra o servidor MCP com o Claude Code
- Instala a habilidade do agente (ensina o agente quando recordar/lembrar)
- Configura captura automática (cada sessão salva no seu cérebro local)
- 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
| Recurso | Detalhe |
|---|---|
| Guard de re-injeção | A 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 shippable | linksee-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
| Recurso | Detalhe |
|---|---|
| 4 ferramentas de detecção de desvio | drift_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 verdade | A 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ção | Quando 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
| Recurso | Detalhe |
|---|---|
| Superfície unificada de 3 ferramentas | 8 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ção | A 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ção | Nomes 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 Code | claude 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
| Recurso | Detalhe |
|---|---|
| Configuração de um comando | npx -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 v2 | Classificaçã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ão | SKILL.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 MCP | Ferramentas + 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.
| Ferramenta | O que ela faz |
|---|---|
recall | Comece 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). |
remember | Salvar / 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_smart | Leitor 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_anchor | Registrar 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_drift | Fechar 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
| Comando | Finalidade |
|---|---|
npx -y linksee-memory setup | Configuraçã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-memory | Servidor MCP (stdio) |
npx -y linksee-memory sync | Ponto de entrada do hook de Stop do Claude Code |
npx -y linksee-memory guard | Hook 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 import | Importação em lote do histórico JSONL de sessões do Claude Code |
npx -y linksee-memory install-skill | Instala a Skill do Claude Code que ensina o agente quando chamar recall/remember/read_smart |
npx -y linksee-memory stats | Resumo 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
caveatsão automaticamente protegidas contra esquecimento (lições dolorosas, nunca perdidas). - Memórias
goalignoram a decadência enquanto a meta estiver ativa. staterastreia 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_scoreportados 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
setuppergunta uma vez; nada é enviado a menos que você concorde lá (ou definaLINKSEE_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_modulese 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
setupadiciona 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
spawncom argumentos em array eshell: false, a partir de uma allowlist fixa;map.yamlé analisado com o parser seguroyaml(sem execução arbitrária de tags). - Cadeia de suprimentos. MIT, publicado por um único proprietário. O
npx -y linksee-memoryexecuta 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:
| Campo | Exemplo | O que é |
|---|---|---|
anon_id | d7924ced-3879-… | UUID aleatório gerado localmente no primeiro aceite. Armazenado em ~/.linksee-memory/telemetry-id — exclua o arquivo para redefinir. |
linksee_version | 0.0.3 | Versão do pacote |
session_turn_count | 120 | Quantas rodadas a sessão teve |
session_duration_sec | 3600 | Quanto tempo a sessão durou |
file_ops_edit/write/read | 12, 2, 40 | Apenas 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_* | contagens | Contadores 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.
- Verifique se a skill foi instalada:
Se ausente, executels ~/.claude/skills/linksee-memory/SKILL.mdnpx -y linksee-memory install-skill. - Reinicie o Claude Code. As skills são indexadas no início da sessão.
- Verifique se o MCP está registrado sob o nome
linksee(a skill espera nomes de ferramentasmcp__linksee__*):
Se estiver registrado com outro nome, re-registre ou editeclaude mcp list | grep linksee~/.claude/skills/linksee-memory/SKILL.mdpara corresponder.
O hook de Stop não está gravando minhas sessões.
- Verifique o log do hook:
cat ~/.linksee-memory/hook.log - Execute um teste manual:
echo '{"session_id":"test","transcript_path":"/path/to/some.jsonl"}' | npx -y linksee-memory sync - Certifique-se de que o hook
Stopem~/.claude/settings.jsonaponte paranpx -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:
- 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.
- 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. - Cache de diff de arquivos: a ferramenta
read_smarteconomiza 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:
- 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).
- Na releitura com mtime+sha256 inalterados, retorna
~50 tokensde confirmação de "inalterado" em vez de reenviar o arquivo. - 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:
- Esquecimento de Ebbinghaus: memórias frias de baixa importância decaem naturalmente, elegíveis para varreduras de esquecimento automático. A camada
caveate memórias comimportance ≥ 0.9são sempre protegidas. - 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.tomlcom 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.dbnão puder ser lido, o linksee o preserva comomemory.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
recallnão sugere mais editar seu prompt de sistema — cidadania MCP mais limpa.
v0.11.2 — Mais endurecimento de cold start (2026-06-16)
statsfunciona em um banco de dados novo em vez de travar comno such table— ele garante que o esquema exista primeiro (pode ser o primeiro comando que um novo usuário executa).map --helpimprime 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(emap,sync,guard,stats,import,install-skill). Um novo usuário não conseguia acessar os bins independentes (linksee-memory-setup, …) vianpx— 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. mapencerra 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. Ummap.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 pendentesdeclare_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_modeem 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 ocontent_rawredundante da resposta (ocontentanalisado já estava lá — era uma duplicação 2×), e realmente aplicamax_tokenspor montagem gulosa que mede o tamanho serializado real (era uma estimativa plana de ~100 tok/memória). Adicionaapprox_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 sobgoalelearning— 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-extractoragora produz NO MÁXIMO uma memória por turno do usuário, com prioridadegoal[first_intent] > caveat > decision > context. Uma mensagem de primeira intenção contendo palavras de decisão (ex. "決めた" / "これで進めよう") não é mais salva duas vezes comogoalelearning. - Detecção automática de
memory_edges: a tabelamemory_edgesanteriormente 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) produzemcontradicts; marcadores explícitos de substituição (の代わり / replaces / deprecate) produzemsupersedes. 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 comodecision— eles retornamnote/openantes 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
rememberagora 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
pathequerysão fornecidos aorecall, 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_masterantes de consultar a tabelaconsolidations, 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 antiga | Equivalente novo |
|---|---|
forget | remember({ forget: true, memory_id: <id> }) |
update_memory | remember({ memory_id: <id>, content: "..." }) |
recall_file | recall({ path: "server.ts" }) |
list_entities | recall({}) (sem parâmetros = visão geral da entidade) |
consolidate | Executa 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 (
setTimeoutnão bloqueante, limite de 7 dias, verificação de segurançasqlite_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.mdbilíngue (habilidade de invocação automática). A habilidade incluída quelinksee-memory-install-skillcopia para~/.claude/skills/linksee-memory/SKILL.mdera 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 incluemlet'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.0para>= 0.9. Memórias comimportance >= 0.9agora estão isentas da varredura de esquecimento automático e aparecempinned: truenas respostas derecalleremember. Isso corresponde ao modelo mental natural ("0.9 = alta importância = deve sobreviver à limpeza") sem exigir1.0exato. - Todas as memórias existentes com
importance >= 0.9(incluindo as mais antigas definidas como0.9ou0.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 commemory_idpreservado. 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 filtroskind/min_memoriese retorna detalhamento por camada.npx -y linksee-memory stats— CLI de resumo do banco de dados local.
Melhorias em recall
- Array
match_reasonsem cada memória: ex.["content_match_fts", "heat:hot", "pinned"]. score_breakdowncom 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çamentomax_tokens). - Filtro
bandpara solicitar apenas memórias quentes/mornas/frias/congeladas. mark_accessed=falsepara 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.0agora 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
metaantes 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.