Linksee Memory

MCP de memoria entre agentes con prioridad local. Cerebro estructurado en 6 capas (objetivo/contexto/emoción/implementación/advertencia/aprendizaje) con caché de diferencias de archivos que ahorra tokens (86% de ahorro medido en relecturas)

Documentación

linksee-memory

Claude Code lo olvida todo cuando inicias una nueva sesión. Tu sucesor sabe aún menos.

Linksee Memory te permite entregar un proyecto — a tu próxima sesión, a Cursor o Codex, a la persona que te siga — con las razones adjuntas. Registra una decisión una vez (remember({ content, anchor: {} })) y vuelve antes de que el agente actúe sobre ella: se reinyecta al inicio de la sesión y antes de cada Edición / Escritura / Bash que la toque. Cambia de opinión sobre el registro y deja de insistir; déjalo y evita que el próximo agente repita el error de la semana pasada.

Por debajo: detección de deriva en todos los proyectos que ejecutas en paralelo — cuáles se alejaron silenciosamente de su objetivo (🔴), cuáles fueron verificados y se mantienen (🔵), cuáles nadie ha revisado aún (⚫). Un solo archivo SQLite local que Claude Code, Cursor, Windsurf, OpenAI Codex y Gemini CLI leen todos. Nada sale de tu máquina.

npx -y linksee-memory setup — un comando, activo en cada repositorio.

npm license mcp-registry glama-score

🌐 Página de inicio: linksee.app (incluye incorporación para no desarrolladores en Claude Desktop / Cursor / Claude Code / OpenAI Codex / Gemini CLI) 📖 Documentación: docs.linksee.app — referencia completa: el mapa del producto y la deriva, instalación y las 11 herramientas

Preguntas que esto responde

Estas son las preguntas que la gente realmente escribe — medidas, textualmente (2026-09-04). Si la tuya está aquí, esta es la respuesta.

Claude Code olvida todo cuando inicio una nueva sesión. ¿Cómo hago para que recuerde decisiones entre sesiones?
Ejecuta npx -y linksee-memory setup. Cada nueva sesión abre con recall() — un resumen de lo que necesita atención, dónde estás, qué está sin resolver — y tus decisiones bloqueadas se reinyectan antes de que el agente actúe. Nada que reexplicar.

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

¿Cuál es el mejor servidor MCP para memoria persistente entre agentes de codificación de IA?
Respuesta honesta: si "recordar entre sesiones" es todo lo que necesitas, un CLAUDE.md es suficiente — lo medimos. Linksee es para los tres momentos en que no lo es: justo antes de un error, cuando cambias de opinión, y cuando ejecutas muchos proyectos y necesitas ver cuál se desvió.

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

Quiero una memoria compartida entre Claude Code, Cursor y OpenAI Codex. ¿Qué herramientas existen para eso?
Un solo archivo SQLite. Claude Code, Cursor, Windsurf, OpenAI Codex y Gemini CLI leen y escriben la misma memoria — una decisión tomada en uno aparece en los otros.

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

Mi agente de IA sigue reimplementando cosas que ya decidimos no hacer. ¿Cómo puedo detectar que un código se ha desviado de decisiones pasadas?
Declara la decisión (remember({ content, anchor: { violation_signal: [...] } })). El guardián entonces advierte — o bloquea, si lo has endurecido — en el momento en que una edición la contradice, y drift_status muestra cada decisión que la realidad ha dejado silenciosamente.

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

¿Existe una alternativa local-first y autoalojada a Mem0 para la memoria de agentes?
Sí. Sin cuenta, sin clave API, sin nube — un archivo local, con licencia MIT. npx -y linksee-memory setup y está activo.

Mem0 vs Zep vs Letta para la memoria a largo plazo de un agente de codificación — ¿cuál debería elegir?
Los instalamos y ejecutamos un escenario en todos. Almacenar y recuperar una decisión: todos pasan. La diferencia aparece antes de un error y cuando cambias de opinión — Linksee está construido para esos dos momentos; los otros te los dejan a ti.

¿Cómo evito que Claude Code repita el mismo error que cometió la semana pasada?
Regístralo como una advertencia (remember({ content, layer: 'caveat' })). Las advertencias están protegidas contra el olvido y vuelven cuando se toca el mismo terreno de nuevo — y si lo anclas, el guardián detiene la repetición antes de que ocurra.

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

🪄 Tres hechizos para recordar

Di estoQué sucede
"use linksee"Recupera memorias relevantes antes de actuar
"linksee this"Guarda la decisión / lección ahora mismo
"what's drifting?"Reconciliar la realidad contra tus decisiones bloqueadas

Hazlo automático: añade "Use Linksee Memory" a tu prompt de sistema / CLAUDE.md.

🗺️ No solo memoria — un mapa del producto

La memoria es el punto de entrada. Conéctala a un map.yaml de cómo encaja tu producto, y el CLI linksee-memory map detecta la deriva con evidencia archivo:línea:

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

La demo de 30 segundos arriba: el README dice --export. El código no. Linksee lo detecta — y muestra qué más tocaría un cambio.

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

→ ver El Mapa para el flujo completo.

📣 Como se ha destacado en

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


🎬 Vélo en acción

Deriva, detectada. Las decisiones no sobreviven los límites de sesión — pero sus consecuencias sí. Pregunta a cualquier sesión:

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.

La memoria subyacente. La detección de deriva solo funciona porque el porqué sobrevive el límite de sesión:

Sin linksee-memory — Lunes por la mañana, nueva sesión de 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]

Con linksee-memory — Misma pregunta, diferente resultado:

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.

Esa única memoria caveat es lo que separa "almacenamiento plano de hechos" de "el agente realmente recuerda el PORQUÉ". linksee-memory la almacena en seis capas explícitas para que la recuperación sea explicable.


🔍 Detección de Deriva — "Intent Datadog"

La mayoría de los equipos toman decisiones y luego las olvidan. El agente de la semana pasada decidió "usaremos FTS5 en lugar de búsqueda vectorial" — pero esta semana una nueva sesión instala pgvector sin saber por qué fue rechazado. Eso es deriva. No es un error. No es malicia. Solo contexto olvidado.

Las herramientas de memoria recuerdan lo que hiciste. Nada nota cuando te desvías de lo que decidiste — esa es la capa que añade Linksee Memory. Piensa en "Datadog para decisiones de producto": las divergencias no contabilizadas aparecen como deriva, la evolución intencional (registrada como supersede/fix) permanece en silencio.

Cómo funciona

  1. Declara decisiones como anclas: declare_anchor({ kind: "decision", statement: "We use FTS5, not vector search", violation_signal: ["pgvector", "embedding"] })
  2. El motor detecta cuando la realidad del código comprometido diverge de estas anclas
  3. La derivación de estado clasifica cada ancla:
    • 🔴 Deriva — la realidad diverge sin resolución registrada
    • 🟡 Revisión — una señal suave espera tu decisión
    • ⚪ Mantenida — reconociste la brecha, la aparcaste con una fecha de revisión
    • 🔵 Alineada — la realidad coincide con la intención, o una resolución registrada explica el cambio
  4. Resuelve con fix, supersede, acknowledge o dismiss — más dos compuertas: harden (PreToolUse bloqueará) y soften (de vuelta a una advertencia)

La regla decisiva: una divergencia contabilizada por una resolución registrada (supersede/fix/acknowledge) NO es deriva. Solo se marcan las brechas no contabilizadas. Esto significa que la evolución intencional permanece en silencio mientras el abandono silencioso se detecta.

Taxonomía de 4 especies

Las anclas se clasifican en cuatro especies con diferentes formatos de visualización:

EspecieIconoFormato de visualizaciónEjemplo
Hipótesis🧪Tarjeta de decisión (formato diario)"Lanzaremos primero en inglés en HN"
Restricción🔒Regla (lista de verificación aprobado/fallido)"Todas las escrituras pasan por remember()"
Compromiso🔁Latido (vivo/muerto)"Publicar una nueva versión cada semana"
Fuente de Verdad📍Referencia (ancla estable)"El servidor MCP se ejecuta en stdio, SQLite único"

🗺️ El Mapa — linksee-memory map

La detección de deriva (arriba) verifica anclas individuales. El Mapa lo eleva a todo el producto: un map.yaml que describe cómo el valor llega a tu usuario (discover → understand → try → adopt → retain → monetize → expand), con dependencias tipadas entre las piezas — README, listado npm, incorporación, el motor que las impulsa. El reconciliador verifica ese mapa contra tu código real, y el CLI responde la pregunta que un ingeniero realmente tiene:

Estoy tocando este archivo — ¿dónde está en el mapa y qué más debe moverse?

1. ¿Dónde estoy? — localiza un archivo (o, sin argumento, infiere de tus ediciones recientes):

$ 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

El radio de explosión está graduado — must fix together vs should align vs fyi — para que una onda amplia no sea ruido plano.

2. ¿Por qué está en este estado? — el diagnóstico, con evidencia archivo:línea:

$ 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"

El estado declarado y el veredicto de realidad se muestran por separado — un suspect declarado a mano que el escáner refuta se lee como "declarado sospechoso, refutado por la realidad (→ convergencia)", no como una mezcla confusa.

3. Triage de todo el proyecto: npx -y linksee-memory map status — un % de salud, qué es reparable ahora en código vs verificaciones externas, y cualquier aplazamiento sin caducidad (para que "contabilizado" no se convierta silenciosamente en un cementerio de deriva).

Cómo funciona

  • map.yaml (raíz del repositorio) es la fuente de verdad del estado deseado: una columna vertebral de viaje × capas de superficie/implementación × bordes tipados (must-stay-consistent-with / should-align-with / realizes).
  • reconcile verifica el reality declarado de cada nodo contra el código (signal / regex / section_contains / verificaciones de archivos) y superpone un veredicto — la realidad anula lo que declaraste a mano, con evidencia.
  • where_am_i es también una herramienta MCP, para que un agente de codificación pueda reanclarse a mitad de tarea.

Comandos: where · affects · explain · status · next · reconcile · inspect --json · blueprint. Añade --lang ja para etiquetas en japonés.


🛡 Guardián de Reinyección — aplica decisiones antes de la acción

La detección de deriva (arriba) es post-hoc — te dice que la realidad divergió después de que el cambio aterrice. El guardián de reinyección es la mitad pre-acción: vuelve a sacar a la superficie la decisión que bloqueaste antes de que el agente ejecute la herramienta que la rompería.

Existe para un modo de fallo específico e irritante (anthropics/claude-code#15443): "Claude leyó la regla, la entendió y aun así usó cp." Tener la regla en contexto no es suficiente — así que el guardián se ejecuta fuera de la voluntad del agente, como un hook de Claude Code:

Evento de hookSe dispara enQué hace
PreToolUseEdit / Write / BashVerifica la acción pendiente contra tus anclas aceptadas. Una contradicción gate_mode:'hard' es denegada; una coincidencia más suave reinyecta la decisión como recordatorio; sin coincidencia → no pasa nada.
SessionStartstartup / resume / compactReproduce tus decisiones bloqueadas + bifurcaciones abiertas en la nueva sesión — eliminando la amnesia de "día de la marmota" donde un nuevo agente repite la llamada de la semana pasada.
Es fail-open por diseño: cualquier error de parseo / BD / lógica no muestra nada y deja pasar la acción. Lo único que bloquea es una hard contradicción explícita sobre una decisión que tú declaraste.

Habilitarlo

npx -y linksee-memory setup conecta esto a ~/.claude/settings.json (Paso 4), por lo que está activo en cada repositorio — el mismo ámbito donde ya vive tu memoria. Un solo archivo SQLite contiene los anclajes de todos tus proyectos; aplicarlos por repositorio significaba declarar una decisión una vez y que no se aplicara en ningún lugar.

  • --project-guard — solo este repositorio, el comportamiento antiguo
  • --no-guard — omitirlo

Los anclajes con globs de affects se activan solo en rutas coincidentes; un anclaje sin ámbito se activa en su propio detect_terms / violation_signal. Nada se bloquea a menos que lo hayas endurecido explícitamente (resolve_drift(action:'harden')) — todo lo demás reinyecta la decisión como contexto.

Para conectarlo manualmente, coloca este bloque en .claude/settings.json (raíz del proyecto, o ~/.claude/settings.json para cada repositorio) — apunta al binario de linksee-memory-guard instalado globalmente, por lo que no se necesita paso de compilación:

{
  "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 }
        ]
      }
    ]
  }
}

Es deliberadamente de ámbito de proyecto — el guardián aplica las decisiones de este repositorio, y optas por participar por proyecto en lugar de permitir que deniegue llamadas de herramientas en todas partes (el hook Stop de la configuración, en contraste, es global de usuario). Declara lo que debe vigilar con declare_anchor(...); establece card_policy.gate_mode:'hard' en un anclaje para que una contradicción bloquee en lugar de solo advertir (el valor suave predeterminado solo reinyecta). Los anclajes obsoletos (at_risk), superados o deshabilitados por tarjeta nunca bloquean.

¿Desarrollando linksee-memory? El repositorio usa el guardián mediante un .claude/settings.json (ignorado por git) que apunta a la compilación local (node ${CLAUDE_PROJECT_DIR}/dist/bin/guard-hook.js) para que se ejecute contra tus cambios sin confirmar. Los proyectos de usuarios finales deben usar la forma publicada de npx -y linksee-memory guard anterior.


Qué hace

La mayoría de los servicios de "memoria de agente" (Mem0, Letta, Zep) guardan una lista plana de hechos. Luego el agente ve "archivo editado X 30 veces" y no tiene idea de por qué. Y ninguno nota cuando el trabajo de esta semana contradice la decisión de la semana pasada. linksee-memory conserva el PORQUÉ — y vigila la deriva.

Es un servidor de Model Context Protocol (MCP) con 11 herramientas que da a cualquier agente de IA memoria estructurada + detección de deriva:

Mem0 / Letta / ZepClaude Code auto-memorylinksee-memory
Detección de deriva❌❌✅ seguimiento de divergencia intención ↔ realidad
Portabilidad entre agentes△ (nube)❌ solo Claude✅ un solo archivo SQLite
Estructura de PORQUÉ en 6 capas❌ plana❌ markdown plano✅ objetivo / contexto / emoción / implementación / advertencia / aprendizaje
Caché de diff de archivos❌❌✅ consciente de AST, ahorro de 50-99% de tokens en relecturas
Olvido activo△❌✅ curva de Ebbinghaus, capa de advertencia protegida
Local-primero / privado❌✅✅

Cuatro pilares

  1. Detección de deriva — declara decisiones como anclajes, luego el motor detecta automáticamente cuando la realidad confirmada diverge de la intención declarada. Piensa en "Datadog para decisiones de producto" — las divergencias no contabilizadas aparecen como deriva, la evolución intencional (registrada como superar/corregir) permanece silenciosa.
  2. Portabilidad entre agentes — un solo archivo SQLite en ~/.linksee-memory/memory.db. El mismo cerebro para Claude Code, Cursor, Windsurf, OpenAI Codex, Gemini CLI.
  3. Memoria estructurada PORQUÉ-primero — seis capas explícitas (goal / context / emotion / implementation / caveat / learning). Resuelve "la memoria plana de hechos es inútil sin objetivos".
  4. Ahorro de tokens mediante read_smart — sha256 + fragmentación por AST/encabezados/sangría. Las relecturas devuelven solo diffs. Se midió un 86% de ahorro en una edición típica de archivo TS, 99% de ahorro en relecturas sin cambios.

🧠 La estructura de 6 capas

┌─────────────────────────────────────────────────────────────┐
│ 🎯 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 memoria está etiquetada con exactamente una capa. Las entradas de la capa caveat están protegidas del olvido automático. Las memorias frías de baja importancia se consolidan automáticamente en entradas de learning al iniciar el servidor.


Inicio rápido — Un comando

npx -y linksee-memory setup

Esto hace todo:

  1. Registra el servidor MCP con Claude Code
  2. Instala la habilidad del agente (enseña al agente cuándo recordar/recordar)
  3. Configura la captura automática (cada sesión guardada en tu cerebro local)
  4. Ofrece conectar el guardián de reinyección a este proyecto (aplicación de decisiones previa a la acción)

Reinicia Claude Code y luego simplemente chatea con normalidad. Añade "Usa Linksee" a cualquier mensaje para activar el recuerdo de memoria.

Configuración manual (si prefieres paso a paso)

Haz clic para expandir la instalación manual

Instalar y registrar:

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

Las herramientas aparecen como mcp__linksee__remember, mcp__linksee__recall, mcp__linksee__read_smart.

Instalar la habilidad (invocación automática):

npx -y linksee-memory install-skill

Copia SKILL.md a ~/.claude/skills/linksee-memory/. El agente se activa automáticamente con frases como "前に…", "また同じエラー", "覚えておいて", inicio de nueva tarea, ediciones de archivos, etc.

Configurar captura automática (hook Stop):

Añade a ~/.claude/settings.json:

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

Cada fin de turno toma ~100 ms. Los fallos son silenciosos. Registros en ~/.linksee-memory/hook.log.

Otros editores / CLIs

Linksee Memory es un servidor MCP estándar (stdio). Cualquier herramienta que hable MCP puede conectarse:

Cursor

Añade a ~/.cursor/mcp.json:

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

Reinicia Cursor. Las herramientas de memoria aparecen en el panel del agente.

Windsurf

Añade a ~/.codeium/windsurf/mcp_config.json:

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

O añade a ~/.codex/config.toml:

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

Añade a ~/.gemini/settings.json:

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

Añade el mismo comando stdio a claude_desktop_config.json:

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

Archivo de configuración: macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\. Reinicia Claude Desktop.

Todos los editores comparten el mismo ~/.linksee-memory/memory.db. Una decisión tomada en Claude Code se recuerda en Cursor. Una advertencia registrada en Windsurf previene el mismo error en Codex.

Ubicación de la base de datos

Predeterminado: ~/.linksee-memory/memory.db. Sobrescribe con la variable de entorno LINKSEE_MEMORY_DIR.

Desinstalar

# 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 sale jamás de tu máquina, por lo que el paso 3 borra por completo todo lo que Linksee almacenó.

Novedades en v0.9

CaracterísticaDetalle
Guardián de reinyecciónLa mitad previa a la acción de la detección de deriva. Un hook de PreToolUse de Claude Code vuelve a mostrar (o, en una contradicción de hard, bloquea) una decisión aceptada antes de que el agente ejecute Edit/Write/Bash; un resumen de arranque de SessionStart reproduce tus decisiones bloqueadas en cada sesión nueva. Fail-open por diseño. Ver Guardián de reinyección.
Conexión de hooks lista para enviarlinksee-memory-setup ahora ofrece fusionar los hooks del guardián en el .claude/settings.json de tu proyecto (apuntando al binario publicado de linksee-memory-guard), y el bloque está documentado para copiar y pegar. Anteriormente la conexión vivía solo en una configuración dogfood ignorada por git.

Novedades en v0.8

CaracterísticaDetalle
4 herramientas de detección de derivadrift_status, check_decision, declare_anchor, resolve_drift — los agentes ahora pueden consultar y actuar sobre la divergencia intención ↔ realidad. La mayor brecha en la memoria de agentes (las decisiones se olvidan entre sesiones) ahora está cerrada.
Motor de verdadLa lógica de derivación de estado (deriva/revisión/mantenido/alineado) ahora vive en el motor MCP, no solo en el panel. Cualquier cliente MCP puede consultar el estado de deriva.
Taxonomía de 4 especiesLos anclajes se clasifican como hipótesis/restricción/compromiso/fuente_de_verdad con formatos de visualización apropiados para cada especie.
Prioridad de resoluciónCuando existen múltiples resoluciones para un anclaje, la más reciente gana (evita que un reconocimiento obsoleto oculte una corrección más nueva).
Novedades en v0.7
CaracterísticaDetalle
Superficie unificada de 3 herramientas8 herramientas → 3: remember (crear + actualizar + eliminar), recall (búsqueda + historial de archivos + resumen), read_smart (lecturas que ahorran tokens). Menos herramientas = mejor consistencia entre LLMs. Sigue el patrón probado de Context7.
Auto-consolidaciónLa consolidación se ejecuta automáticamente al iniciar el servidor (no bloqueante, umbral de 7 días). No se necesitan llamadas manuales a consolidate().
Guía de obsolescenciaLos nombres antiguos de herramientas (forget, recall_file, etc.) devuelven ejemplos específicos de migración en lugar de fallos silenciosos.
Disparador "Usa Linksee Memory"Añade "Usa Linksee Memory" a cualquier mensaje para forzar el recuerdo de memoria — el mismo patrón de adopción que Context7.
Plugin de Claude Codeclaude plugin add -- linksee-memory — incluye servidor MCP + habilidad de invocación automática en una sola instalación.
Novedades en v0.4
CaracterísticaDetalle
Configuración de un comandonpx -y linksee-memory setup — registra el servidor MCP, instala la habilidad, configura el hook de captura automática. Un comando en lugar de tres.
Memoria estructurada v2Clasificación de 3 ejes (altitud × tipo × estado) para cada memoria. La extracción automática de sesiones produce JSON escaneable por máquina, no volcados de chat en bruto.
Guía de recuerdo de precisiónSKILL.md ahora enseña a los agentes CÓMO escribir consultas efectivas, CUÁNDO recordar vs. omitir, y CUÁNDO mostrar proactivamente advertencias antes de acciones arriesgadas.
Cinco bloques MCPHerramientas + Recursos + Prompts + Muestreo + Raíces + Elicitación. La mayoría de los servidores MCP exponen solo Herramientas; linksee-memory implementa las cinco primitivas.

6 herramientas

Dos pilares, una superficie. Memoria y deriva reciben cada una el mínimo; nada más se expone. Once herramientas filtraban comportamiento dependiente del modelo entre Claude / GPT / Cursor / Codex / Gemini — seis es lo que un agente puede sostener sin un manual.

HerramientaQué hace
recallEmpieza aquí. Sin argumentos → el resumen de sesión: qué necesita atención, dónde estás en el Mapa, bucles abiertos, entidades principales. query → búsqueda; path → historial de ediciones de un archivo con la intención del usuario detrás de cada edición; where: "<topic>" → tu posición en el Mapa de Verdad Actual + radio de explosión; dream: true → la sesión de triaje (Estrella del Norte, propuestas huérfanas, cola de destilación, fricción).
rememberGuardar / actualizar / eliminar. content es el único campo requerido — entidad y capa se predeterminan al proyecto en el que estás. Añade anchor: {} para registrar una decisión y aplicarla en una sola llamada (reinyectada antes de Editar/Escribir/Bash y al inicio de sesión).
read_smartLector de archivos que ahorra tokens con caché de diff AST. Releer sin cambios = ~50 tokens; modificado = solo fragmentos cambiados.
drift_status"¿Qué está derivando ahora?" El mapa de verdad: 🔴 deriva / 🟡 revisión / ⚪ mantenido / 🔵 verificado / ⚫ no verificado, con la evidencia para cada uno. anchor_id → inmersión profunda en una decisión.
declare_anchorRegistrar una afirmación normativa — decision / prohibition / constraint que el detector verifica contra la realidad, o proposal: una opción que presentaste y el usuario nunca abordó, aparcada como elemento de revisión.
resolve_driftCerrar el bucle. fix · supersede · acknowledge · dismiss (con hit_term, y la puerta deja de activarse en él) · harden / soften. Con candidate_id: surface o dismiss una propuesta huérfana.
Los cinco nombres anteriores — where_am_i, check_decision, flag_proposals, dream,
resolve_proposal — se pliegan en los seis anteriores. Están ocultos de tools/list pero **aún
responden si se les llama**, por lo que una skill o agente escrito contra una versión anterior sigue funcionando.
LINKSEE_LEGACY_TOOLS=1 los lista.

Utilidades CLI

ComandoPropósito
npx -y linksee-memory setupConfiguración en un comando: servidor MCP + skill + hook de Stop + el guardián de reinyección para cada repositorio (--project-guard solo para este repositorio, --no-guard para omitir). Idempotente — omite lo que ya está hecho.
npx linksee-memoryServidor MCP (stdio)
npx -y linksee-memory syncPunto de entrada del hook de Stop de Claude Code
npx -y linksee-memory guardHook guardián de reinyección: compuerta PreToolUse (Edit/Write/Bash) + digest de arranque SessionStart. Conectado por setup para cada repositorio (ver Guardián de Reinyección); falla abierta.
npx -y linksee-memory importImportación por lotes del historial JSONL de sesiones de Claude Code
npx -y linksee-memory install-skillInstala la Skill de Claude Code que enseña al agente cuándo llamar a recall/remember/read_smart
npx -y linksee-memory statsResumen de la base de datos local (conteo de entidades / desglose por capas / entidades principales / archivos más editados). Agrega --json para salida legible por máquina.

Las 6 capas de memoria

Cada entidad (persona / empresa / proyecto / archivo / concepto) puede tener memorias en seis capas. Desde v0.4, cada memoria usa el formato estructurado de 3 ejes (altitud × 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
}
  • Las memorias caveat están protegidas automáticamente contra el olvido (lecciones dolorosas, nunca se pierden).
  • Las memorias goal evitan la decadencia mientras el objetivo está activo.
  • state rastrea el ciclo de vida: open → decided → in_progress → done / stalled / superseded.

Arquitectura

Un único archivo SQLite (better-sqlite3 + tokenizador trigrama FTS5 para JP/EN) contiene cinco capas:

  • Capa 1 — entities (hechos: personas / empresas / proyectos / conceptos / archivos)
  • Capa 2 — edges (asociaciones, adyacencia de grafo)
  • Capa 3 — memories (significados estructurados de 6 capas por entidad)
  • Capa 4 — events (registro de series temporales para cálculo de calor / impulso)
  • Capa 5 — file_snapshots + session_file_edits (caché de diferencias + vinculación conversación↔archivo)

La vinculación conversación↔archivo es la clave. Cada edición de archivo capturada por el hook de Stop se almacena junto con el mensaje del usuario que impulsó la edición. Así, recall({ path: "server.ts" }) devuelve "este archivo fue editado 30 veces en 3 días, y aquí están las instrucciones reales del usuario que motivaron cada cambio".

Por qué estas decisiones de diseño

  • Local-first — tu historial de conversaciones es privado. Nada sale de tu máquina.
  • Archivo único — memory.db es un artefacto portátil. Respaldo = copia de archivo.
  • MCP stdio — funciona con cada agente que hable MCP, sin plugins por host.
  • Reutiliza esquemas probados — heat_score / momentum_score portados de un código base de producción de inteligencia de ventas. Basado en reglas, sin dependencia de LLM en la ruta crítica.

Hoja de ruta

  • ✅ Superficie unificada de 3 herramientas (remember / recall / read_smart) — v0.7.0
  • ✅ Auto-consolidación al iniciar el servidor — v0.7.0
  • ✅ Plugin de Claude Code (claude plugin add -- linksee-memory)
  • ✅ Cinco bloques MCP (Herramientas + Recursos + Prompts + Muestreo + Raíces + Elicitación)
  • ✅ Captura automática mediante hook de Stop para Claude Code
  • ✅ FTS5 trigrama JP/EN
  • ✅ Configuración en un comando (npx -y linksee-memory setup)
  • ✅ Memoria estructurada v2 (clasificación de 3 ejes: altitud × tipo × estado)
  • ✅ Multi-LLM: Claude Code, Cursor, Windsurf, OpenAI Codex, Gemini CLI
  • ✅ Página de aterrizaje (linksee.app)
  • ✅ Motor de detección de deriva + 4 herramientas MCP de deriva — v0.8.0
  • ✅ Mapa de verdad de 4 especies (hipótesis/restricción/compromiso/fuente_de_verdad) — v0.8.0
  • ✅ Panel con visualización del Registro de Decisiones
  • 🔮 Plugin de Obsidian (leer mapa de verdad en tu bóveda)
  • 🔮 Búsqueda vectorial mediante sqlite-vec (ya en dependencias, backend de incrustación pendiente)
  • 🔮 Sincronización en la nube entre dispositivos (nivel Pro)

Comparación con la auto-memoria de Claude Code

Claude Code incluye una función de memoria integrada en ~/.claude/projects/<path>/memory/*.md — notas markdown planas para preferencias del usuario. linksee-memory lo complementa:

  • auto-memoria = tu álbum de recortes de "recuerda que prefiero X"
  • linksee-memory = cerebro estructurado entre agentes con caché de diferencias de archivos y POR QUÉ por edición

Usa ambos.

Seguridad y privacidad

linksee-memory se ejecuta localmente y está diseñado para leer — y enviar — lo menos posible.

  • Local-first. La memoria es un archivo SQLite en ~/.linksee-memory/memory.db. Sin cuenta, sin nube, sin clave API.
  • La telemetría es opcional y DESACTIVADA por defecto. setup pregunta una vez; no se envía nada a menos que aceptes allí (o establezcas LINKSEE_TELEMETRY=basic). Incluso entonces nunca envía tu código fuente, contenido de archivos, prompts, conversaciones, nombres de entidades/proyectos, ni la base de datos de memoria — solo contadores anónimos (detalles).
  • Sin rastreo automático de repositorios. linksee lee: memoria que guardas explícitamente, tu map.yaml, los archivos específicos que una verificación de realidad del mapa señala, la base de datos SQLite local y — cuando el hook de Stop se activa — la transcripción de tu sesión de Claude Code (localmente, para capturar lo que sucedió). No rastrea tu repositorio, lee .env/secretos/node_modules, ni toca tu directorio de inicio por su cuenta.
  • Transporte MCP limpio. El servidor escribe solo JSON-RPC a stdout; todos los registros van a stderr.
  • Los hooks están documentados y son removibles. setup agrega un hook de Stop (captura de sesión) y un hook guardián opcional. No hacen llamadas de red por defecto, están limitados en tiempo, fallan abiertamente (un error de hook nunca rompe tu sesión) y se listan en Desinstalación.
  • Sin superficie de inyección de shell. Los subcomandos se ejecutan mediante spawn con argumentos de matriz y shell: false, desde una lista de permitidos fija; map.yaml se analiza con el analizador seguro yaml (sin ejecución de etiquetas arbitrarias).
  • Cadena de suministro. MIT, publicado desde un único propietario. npx -y linksee-memory ejecuta el paquete publicado — fija una versión en CI si necesitas reproducibilidad.

¿Encontraste un problema de seguridad? Ver SECURITY.md.

Telemetría (opcional, desactivada por defecto)

linksee-memory incluye telemetría anónima opcional que nos ayuda a entender qué servidores MCP y flujos de trabajo funcionan realmente en el mundo real. No se envía nada a menos que lo habilites explícitamente. Sin contenido de conversaciones, sin contenido de archivos, sin nombres de entidades, sin rutas de proyectos — nunca.

Habilitar

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).

Exactamente qué se envía (contrato de Nivel 1)

Después de que cada sesión de Claude Code termina, el hook de Stop envía un POST a https://linksee-site.vercel.app/api/telemetry/linksee que contiene solo estos campos:

CampoEjemploQué es
anon_idd7924ced-3879-…UUID aleatorio generado localmente en la primera aceptación. Almacenado en ~/.linksee-memory/telemetry-id — elimina el archivo para restablecer.
linksee_version0.0.3Versión del paquete
session_turn_count120Cuántos turnos tuvo la sesión
session_duration_sec3600Cuánto duró la sesión
file_ops_edit/write/read12, 2, 40Solo conteos
mcp_servers["kansei-link","freee","slack"]Nombres de servidores MCP configurados (de ~/.claude.json). Solo nombres — nunca rutas de comandos.
file_extensions{".ts":60,".md":30}Distribución porcentual de extensiones de archivos tocados
read_smart_*, recall_*conteosContadores de uso de herramientas

Lo que NUNCA se envía:

  • ❌ Mensajes de conversación (usuario o asistente)
  • ❌ Contenido de archivos
  • ❌ Nombres de entidades, nombres de proyectos, rutas de archivos, URLs
  • ❌ Texto de capas de memoria (objetivo / contexto / emoción / implementación / advertencia / aprendizaje)
  • ❌ Tokens de autenticación, claves API, secretos
  • ❌ Tu dirección IP (solo un hash unidireccional para detección de abuso)

Por qué preguntamos

Los datos agregados de uso de MCP ayudan al proyecto KanseiLink a clasificar qué integraciones de agentes funcionan realmente para desarrolladores reales. Si estás dispuesto a contribuir, LINKSEE_TELEMETRY=basic toma 1 segundo y ayuda a que todo el ecosistema MCP mejore.

El esquema completo del payload y la lógica de validación son de código abierto — lee src/lib/telemetry.ts si quieres verificar exactamente qué sale de tu máquina.

Precios

Gratis para siempre.

linksee-memory es local-first y se ejecuta completamente en tu máquina. No hay componente alojado por el que debas pagar. La base de datos SQLite vive en tu directorio de inicio; respaldo = copia de archivo.

Sin cuenta, sin tarjeta de crédito, sin clave API. Solo instala y usa.

Solución de problemas

La skill no se activa — Claude Code no llama a recall cuando pregunto sobre trabajo pasado.
  1. Verifica que la skill esté instalada:
    ls ~/.claude/skills/linksee-memory/SKILL.md
    
    Si está ausente, ejecuta npx -y linksee-memory install-skill.
  2. Reinicia Claude Code. Las skills se indexan al inicio de la sesión.
  3. Verifica que el MCP esté registrado bajo el nombre linksee (la skill espera nombres de herramientas mcp__linksee__*):
    claude mcp list | grep linksee
    
    Si está registrado con otro nombre, vuelve a registrarlo o edita ~/.claude/skills/linksee-memory/SKILL.md para que coincida.
El hook de Stop no está grabando mis sesiones.
  1. Revisa el registro del hook: cat ~/.linksee-memory/hook.log
  2. Ejecuta una prueba manual:
    echo '{"session_id":"test","transcript_path":"/path/to/some.jsonl"}' | npx -y linksee-memory sync
    
  3. Asegúrate de que el hook Stop en ~/.claude/settings.json apunte a npx -y linksee-memory sync (no al antiguo -import).
Actualizando desde v0.0.5 o anterior — mis recalls están mayormente etiquetados como "Card_Navi" o con el nombre de mi directorio de proyecto.

v0.0.6+ corrigió el error de detección de entidades que colapsaba todas las memorias en el cwd inicial de la sesión. Para reindexar el historial existente con la atribución de proyecto correcta, ejecuta:

npx -y linksee-memory import --all

El importador es idempotente (borra los datos de sesión existentes antes de reinsertar). Tiempo típico de ejecución: unos minutos para cientos de sesiones. Espera una mejora dramática en la precisión de recall después.

recall devuelve demasiado — la ventana de contexto se llena rápido.

Reduce max_tokens:

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

O acota con entity_name y layer:

recall({ query: "...", entity_name: "my-project", layer: "caveat" })
¿Cómo restablezco / elimino toda la memoria?
rm -rf ~/.linksee-memory   # nuke everything; next run creates a fresh DB

O elimina memorias individuales mediante remember({ forget: true, memory_id: <id> }).

La base de datos está creciendo (>100 MB). ¿Cómo la recorto?

La consolidación se ejecuta automáticamente al iniciar el servidor (umbral de 7 días). Agrupa memorias antiguas y frías en resúmenes comprimidos de la capa de aprendizaje. Las capas de advertencia y objetivo activo siempre se preservan.

Si quieres forzar una consolidación manual, reinicia el servidor MCP — la auto-consolidación se activa en cada inicio.

Preguntas frecuentes

¿Qué es la detección de deriva y por qué la necesito?

Deriva = cuando la realidad de tu código se desvía silenciosamente de lo que decidiste. Ejemplo: La semana pasada decidiste "FTS5, no búsqueda vectorial" pero esta semana una nueva sesión de agente instala pgvector sin conocer el historial.

Linksee Memory rastrea esto permitiéndote declarar decisiones como "anclas" y luego verifica automáticamente el código confirmado contra ellas. La regla decisiva: la evolución intencional (registrada como corrección/superación) permanece silenciosa, mientras que las brechas no contabilizadas se marcan. Es como Datadog pero para decisiones de producto en lugar de métricas de servidor.

No necesitas usar la detección de deriva para beneficiarte de linksee-memory — las 3 herramientas de memoria (remember/recall/read_smart) funcionan de forma independiente. Las herramientas de deriva son una capa adicional para equipos y desarrolladores solitarios que gestionan múltiples proyectos.

¿En qué se diferencia de Mem0 / Letta / Zep?

Tres ejes:

  1. Local-first: esas herramientas requieren cuentas en la nube y envían tus datos a sus servidores. linksee-memory se ejecuta completamente en tu máquina: un solo archivo SQLite, sin llamadas de red por defecto.
  2. Capas de PORQUÉ: almacenan hechos planos o nodos de grafo de conocimiento. linksee-memory tiene 6 capas explícitas (goal/context/emotion/implementation/caveat/learning) para que la recuperación devuelva razonamiento estructurado, no solo datos.
  3. Caché de diff de archivos: la herramienta read_smart ahorra 86–99% de tokens en relecturas de archivos mediante fragmentación consciente de AST. Ninguno de los servicios de memoria hace esto: es una función que normalmente se incluye en los IDE.
¿Por qué no usar simplemente la auto-memoria integrada de Claude?

La auto-memoria de Claude Code es solo para Claude (no ayuda si cambias a Cursor, OpenAI Codex o Gemini CLI) y almacena markdown plano sin estructura. linksee-memory sigue el mismo principio local-first pero:

  • Funciona en Claude Code, Cursor, OpenAI Codex, Gemini CLI (SQLite compartido)
  • El formato estructurado de 6 capas hace que el recuerdo sea explicable
  • La auto-consolidación comprime memorias frías al inicio; las advertencias están permanentemente protegidas
¿El ahorro del 86% de tokens es real? ¿De dónde viene?

Sí — consulta tools/bench-read-smart.ts en el repositorio. La herramienta read_smart:

  1. Calcula el hash del contenido del archivo en la primera lectura, devuelve el contenido completo + metadatos de fragmentos (límites de AST/encabezado/sangría).
  2. En relecturas con mtime+sha256 sin cambios, devuelve ~50 tokens de confirmación de "sin cambios" en lugar de reenviar el archivo.
  3. En ediciones reales, devuelve solo los fragmentos modificados como contenido completo + los fragmentos sin cambios como referencias solo de metadatos.

Para una edición típica de archivo TypeScript en un bucle agéntico, esto reduce los costos de tokens de ida y vuelta en ~86%. En relecturas puras (usuario navegando de vuelta a un archivo ya leído), el ahorro supera el 99%.

¿"Local-first" significa que no hay forma de sincronizar entre mis máquinas?

El valor predeterminado es sin sincronización: el archivo SQLite vive en ~/.linksee-memory/memory.db y permanece allí. Si quieres sincronización multi-máquina, coloca ese directorio bajo Syncthing / iCloud Drive / Dropbox / Google Drive: es un solo archivo, así que cualquier herramienta de sincronización funciona. (Evita ediciones simultáneas desde dos máquinas mientras el servidor MCP se ejecuta en ambas; el modo WAL de SQLite maneja bien un solo escritor, pero los conflictos multi-escritor pueden corromper.)

¿Qué pasa cuando la base de datos se vuelve enorme?

Dos mecanismos:

  1. Olvido de Ebbinghaus: las memorias frías de baja importancia decaen naturalmente, elegibles para barridos de auto-olvido. La capa caveat y las memorias con importance ≥ 0.9 siempre están protegidas.
  2. Auto-consolidación: se ejecuta en cada inicio del servidor (umbral de 7 días). Comprime clústeres de memorias frías de baja importancia por entidad en un único resumen de capa learning, luego elimina los originales. No se necesita programación manual.

En la práctica, un desarrollador en solitario alcanza ~100MB después de 6 meses de uso intenso. Una base de datos de un año que probé con 80K memorias aún recuerda en <10ms.

¿Puedo usar esto sin Claude Code?

Sí — cualquier cliente compatible con MCP funciona:

  • Claude Code: claude mcp add -s user linksee -- npx -y linksee-memory
  • Claude Desktop: agrégalo a claude_desktop_config.json (consulta onboarding en el LP)
  • Cursor: agrégalo a la configuración de MCP en Cursor → Configuración → Funciones → Protocolo de Contexto de Modelo
  • OpenAI Codex: codex mcp add linksee -- npx -y linksee-memory (o ~/.codex/config.toml con bloque [mcp_servers.linksee])
  • Gemini CLI: agrégalo a la sección mcpServers de ~/.gemini/settings.json
  • ChatGPT (aplicación web/móvil): el cliente de consumo no admite stdio MCP — requiere un servidor MCP remoto sobre HTTPS (aún no disponible).
  • Agente personalizado: el protocolo MCP stdio está documentado en modelcontextprotocol.io
¿Qué telemetría envía?

Por defecto: cero llamadas de red, cero telemetría. Hay un modo de telemetría opcional de Nivel 1 que puedes habilitar y que envía métricas agregadas anonimizadas (conteos de llamadas a herramientas, tasas de error, percentiles de latencia — nunca contenido de memoria, nunca rutas de archivos, nunca consultas). El esquema exacto del payload está documentado en la sección de Telemetría y ves cada byte antes de aceptar.

¿Cómo verifico que realmente funciona?

Después de la instalación, en una nueva sesión de Claude pregunta: "¿Puedes recordar que prefiero TypeScript sobre JavaScript? Usa Linksee Memory." Claude debería confirmar que llamó a mcp__linksee__remember y almacenó esto. Luego, en una sesión diferente pregunta: "¿Qué lenguajes prefiero? Usa Linksee Memory." Debería recordar vía mcp__linksee__recall y devolver la preferencia con match_reasons mostrando el porqué.

Soporte

  • Problemas e informes de errores: github.com/michielinksee/linksee-memory/issues
  • Solicitudes de funciones: abre un issue con la etiqueta enhancement
  • Preocupaciones de seguridad: consulta SECURITY.md si existe, o presenta un aviso privado en GitHub
  • Empresa: Synapse Arrows PTE. LTD. (Singapur)

Registro de cambios

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

  • Recuperación de base de datos corrupta: si ~/.linksee-memory/memory.db no se puede leer, linksee lo preserva como memory.db.corrupt-<timestamp> y comienza uno nuevo (con un mensaje claro) en lugar de fallar con un error SQLite crudo. Las memorias antiguas siguen siendo recuperables en la copia de seguridad.
  • La descripción de la herramienta recall ya no sugiere editar tu prompt del sistema — mejor ciudadanía de MCP.

v0.11.2 — Más endurecimiento de arranque en frío (2026-06-16)

  • stats funciona en una base de datos nueva en lugar de fallar con no such table — asegura que el esquema exista primero (puede ser el primer comando que ejecute un usuario nuevo).
  • map --help imprime uso en lugar de intentar importar un mapa.

v0.11.1 — Correcciones de arranque en frío (2026-06-16)

  • Ejecuta cualquier CLI a través del nombre del paquete: npx -y linksee-memory setup (y map, sync, guard, stats, import, install-skill). Un usuario nuevo no podía acceder a los binarios independientes (linksee-memory-setup, …) vía npx — npx resuelve nombres de paquetes, no nombres de binarios hermanos — así que la instalación de un solo comando daba 404. El binario principal ahora despacha subcomandos; los binarios independientes permanecen como alias.
  • map sale correctamente con un mensaje de siguiente paso cuando aún no hay map.yaml (era un stack trace crudo — el estado exacto de un usuario primerizo).
  • serverInfo ahora informa la versión real del paquete (estaba fijada a una cadena antigua).

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

La memoria es el punto de entrada; el mapa del producto es la nueva superficie. La detección de deriva crece desde anclas individuales hasta un mapa de producto completo que navegas desde la CLI.

  • where_am_i (11.ª herramienta MCP) — localiza el tema/archivo actual en el Mapa de Verdad Actual y obtén su radio de impacto. Llámala sin argumentos para auto-localizar desde tus ediciones recientes.
  • CLI linksee-memory map — where · affects · explain · status · next · reconcile · inspect --json · blueprint. Un map.yaml (fuente de verdad de git) describe cómo el valor llega a tu usuario; el reconciliador lo verifica contra tu código con evidencia archivo:línea. Bilingüe: agrega --lang ja.
  • Radio de impacto graduado (must fix together / should align / fyi), veredictos declarado-vs-realidad y un guardián anti-cementerio para la deriva contabilizada.
  • Claves por proyecto para que el Mapa maneje muchos proyectos a la vez.

v0.8.0 — Herramientas MCP de detección de deriva (2026-06-08)

3 herramientas → 7 herramientas. La actualización más grande desde el lanzamiento — los agentes ahora pueden detectar, consultar y resolver la deriva intención ↔ realidad.

Nuevas herramientas:

  • drift_status — devuelve el mapa de verdad con clasificación de 4 especies y estado de deriva por nodo
  • check_decision — inmersión profunda en una sola ancla: estado, bordes, candidatos pendientes
  • declare_anchor — registra una decisión/restricción/prohibición como nodo del mapa de verdad (con campos v9 de ProjectCoreNode)
  • resolve_drift — cierra el bucle de retroalimentación: corregir / reemplazar / reconocer / descartar

Nuevo módulo de motor:

  • truth-engine.ts — lógica de derivación de estado migrada del panel al motor MCP. Cualquier cliente MCP ahora puede consultar el estado de deriva sin un panel.
  • Corrección de prioridad de resolución: cuando múltiples resoluciones referencian la misma ancla, la más reciente gana (por marca de tiempo resolved_at). Evita que un reconocimiento obsoleto eclipse una corrección más nueva.
  • Clasificación de 4 especies: los nodos se clasifican por decision_mode en hipótesis / restricción / compromiso / fuente_de_verdad con guía de formato de visualización.

Sin cambios disruptivos en las herramientas de memoria existentes. Las 3 herramientas de memoria (remember, recall, read_smart) no cambian.

v0.7.2 — Ergonomía de recuerdo + detección automática de bordes + precisión del clasificador (2026-05-30)

Pase de calidad sobre v0.7.0 / v0.7.1 — UX diaria de agente más nítida y datos más limpios para el panel:

  • Disciplina de tokens de recall: elimina el content_raw redundante de la respuesta (el content analizado ya estaba allí — era un duplicado 2×), y realmente aplica max_tokens mediante ensamblaje codicioso que mide el tamaño serializado real (era una estimación plana de ~100 tok/memoria). Agrega approx_tokens a la respuesta para que el agente pueda ver su uso de presupuesto. La misma consulta que antes devolvía ~15,800 tokens para un presupuesto de 1200 ahora se mantiene dentro.
  • Precisión de recall: memorias casi duplicadas — misma entidad + texto central casi idéntico, p. ej., el mismo mensaje capturado bajo goal y learning — se colapsan a una en el conjunto de resultados. Los pesos compuestos se adaptan a la especificidad de la consulta: las consultas de múltiples términos ponderan más la relevancia para que las memorias fijadas fuera de tema no abarroten recuerdos estrechos.
  • Deduplicación de captura (lado de escritura): session-extractor ahora produce COMO MÁXIMO una memoria por turno de usuario, con prioridad goal[first_intent] > caveat > decision > context. Un mensaje de primera intención que contiene palabras de decisión (p. ej., "決めた" / "これで進めよう") ya no se guarda dos veces como goal y learning.
  • Detección automática de memory_edges: la tabla memory_edges previamente vacía ahora se puebla durante el barrido de consolidación en modo de suspensión. detectMemoryEdges() vincula una memoria de DECISIÓN posterior a la decisión anterior más reciente del mismo tema dentro de una entidad (cadena, no camarilla) para que el panel pueda renderizar Cadenas de Pivote. La relación predeterminada es extends — una decisión posterior del mismo tema se basa en la anterior, pero NO la desactiva. Los marcadores de reversión explícitos (やめる / revert / instead of) producen contradicts; los marcadores de reemplazo explícitos (の代わり / replaces / deprecate) producen supersedes. Evita la desactivación silenciosa de decisiones aún válidas.
  • Precisión de inferType / inferState: los reconocimientos de charla ("そうだね" / "ありがとう"), el contenido pegado de terminal/git/email y el ruido meta ya no se clasifican como decision — devuelven note / open antes del coincidencia de patrones. El valor predeterminado de la capa de aprendizaje → decision está controlado por este guardián. Las decisiones reales (採用 / 決めた, incluso después de un reconocimiento de apertura) sobreviven.

Sin migración de esquema, sin cambios disruptivos de API. Las filas existentes conservan su contenido almacenado; las mejoras del clasificador se aplican a nuevas capturas en adelante.

v0.7.1 — Correcciones de revisión (2026-05-29)

Basado en la revisión de diseño de Opus 4.7 de v0.7.0:

  • P0 — Guía de parámetros requeridos: la descripción de la herramienta remember ahora incluye una sección "PARÁMETROS REQUERIDOS POR MODO" para que los LLM sepan exactamente qué campos se necesitan para crear, actualizar o eliminar.
  • P0 — Guía de migración: los nombres de herramientas obsoletos (forget, recall_file, etc.) ahora devuelven ejemplos de migración específicos en lugar de errores genéricos.
  • P1 — Fusión de ruta de recuerdo y consulta: cuando se proporcionan tanto path como query a recall, los resultados del historial de archivos y la búsqueda de memoria se fusionan en una sola respuesta.
  • P2 — Seguridad de consolidación automática: verificación de existencia de tabla mediante sqlite_master antes de consultar la tabla consolidations, evitando errores en bases de datos nuevas.

v0.7.0 — Superficie unificada de 3 herramientas (2026-05-29)

8 herramientas → 3 herramientas. Siguiendo el patrón probado de Context7 de que menos herramientas = mejor consistencia entre LLMs.

Cambio disruptivo: las siguientes herramientas se eliminan de la superficie MCP. Llamarlas devuelve una guía de migración:

Herramienta antiguaEquivalente nuevo
forgetremember({ forget: true, memory_id: <id> })
update_memoryremember({ memory_id: <id>, content: "..." })
recall_filerecall({ path: "server.ts" })
list_entitiesrecall({}) (sin parámetros = vista general de entidad)
consolidateSe ejecuta automáticamente al iniciar el servidor (umbral de 7 días)

Nuevas herramientas unificadas:

  • remember — crear + actualizar + eliminar en una sola herramienta. El modo se infiere de los parámetros.
  • recall — búsqueda + historial de archivos + vista general en una sola herramienta. El modo se infiere de los parámetros.
  • read_smart — sin cambios.

Otros cambios:

  • Consolidación automática al iniciar el servidor (setTimeout no bloqueante, umbral de 7 días, verificación de seguridad sqlite_master)
  • Paquete de plugin para Claude Code (claude plugin add -- linksee-memory)
  • Los errores de obsolescencia incluyen ejemplos de migración específicos

Todas las funciones internas del manejador se conservan: este es un cambio de superficie, no una reescritura de lógica.

v0.2.0 — Preparación para lanzamiento en inglés (2026-04-20)

Prepara el paquete para una audiencia más amplia (principalmente angloparlante) en Reddit, Hacker News y Discord de Anthropic. Sin cambios disruptivos en la API.

  • SKILL.md bilingüe (habilidad de invocación automática). La habilidad incluida que linksee-memory-install-skill copia en ~/.claude/skills/linksee-memory/SKILL.md estaba primero en japonés; ahora es principalmente en inglés con frases de activación en japonés conservadas en línea. Los angloparlantes ahora obtienen la habilidad activada con frases naturales en inglés ("¿cómo resolvimos esto antes?", "el mismo error otra vez", "recuerda esto") además de los activadores existentes en japonés.
  • La salida CLI de instalación de habilidad es bilingüe: las frases de prueba de ejemplo que se muestran después de la instalación incluyen tanto inglés como japonés.
  • Cobertura EN del extractor de sesiones (linksee-memory-import): patrones de expresión regular ampliados para decisiones, fallos y advertencias, de modo que los registros de sesión de Claude Code en inglés se etiqueten automáticamente correctamente. Las adiciones incluyen let's go, pivot, switch to, settled on, approved, doesn't work, stuck, same error again, hit an error, debug, broke, revert.
  • Sugerencia de error de olvido de advertencias más clara: el mensaje anterior decía "baje la importancia por debajo de 0.9 primero, luego olvide", lo cual era engañoso: las memorias de la capa de advertencias están protegidas permanentemente independientemente de la importancia. La sugerencia ahora distingue correctamente la protección por capa de la protección por fijación.
  • Reelaboración del README para preparación de lanzamiento: se agregó un escenario de antes/después "Véalo en acción", diagrama ASCII de 6 capas, insignias de puntuación del Registro Oficial MCP + Glama, enlace a la página de destino y un FAQ de 8 elementos que cubre preguntas que surgen durante lanzamientos públicos.
  • Interno: SKILL.md ahora documenta el emparejamiento con la habilidad KanseiLink como ejemplo de flujo de trabajo en inglés.

Sin cambios de código en la superficie del protocolo MCP; todos los clientes MCP existentes continúan funcionando sin cambios.

v0.1.1 — Ajuste del umbral de fijación (2026-04-19)

Basado en comentarios del mundo real de que las memorias importance=0.95 no se trataban como fijadas a pesar de la intención.

  • Umbral de fijación reducido de >= 1.0 a >= 0.9. Las memorias con importance >= 0.9 ahora están exentas del barrido de olvido automático y aparecen pinned: true en las respuestas de recall y remember. Esto coincide con el modelo mental natural ("0.9 = importancia alta = debería sobrevivir a la limpieza") sin requerir 1.0 exacto.
  • Todas las memorias existentes con importance >= 0.9 (incluidas las más antiguas configuradas en 0.9 o 0.95) se fijan automáticamente: no se necesita migración.
  • Descripciones de herramientas y mensajes de error actualizados para reflejar el nuevo umbral.

v0.1.0 — Actualización importante de UX (2026-04-18)

Basado en una semana de uso interno, esto es lo que cambió:

Nuevas herramientas

  • update_memory — edición atómica con memory_id conservado. Resuelve el error "olvidar+recordar rompe los enlaces de session_file_edits".
  • list_entities — primitiva rápida de "¿qué sé sobre?" para la inicialización de sesión. Admite filtros kind/min_memories y devuelve desglose por capas.
  • npx -y linksee-memory stats — CLI de resumen de base de datos local.

Mejoras de recall

  • Matriz match_reasons en cada memoria: p. ej., ["content_match_fts", "heat:hot", "pinned"].
  • score_breakdown con puntuaciones por dimensión (relevancia / calor / impulso / importancia).
  • Paginación mediante offset / has_more / stopped_by.
  • Parámetro limit (límite máximo, complementa el presupuesto max_tokens).
  • Filtro band para solicitar solo memorias calientes/tibias/frías/congeladas.
  • mark_accessed=false para consultas de vista previa que no deben aumentar el calor.
  • Alias de capas: decisions → learning, warnings → caveat, how → implementation, etc.
  • Corrección: actualización oportunista de puntuaciones de impulso de entidades obsoletas. Las entidades recordadas más de 1 h después del último remember() ya no devuelven impulso obsoleto.

Mejoras de remember

  • Verificación de calidad: rechaza salida de asistente pegada / registros de CI / seguimientos de pila a menos que force=true.
  • importance=1.0 ahora fija implícitamente la memoria (sobrevive al olvido automático).
  • Se aceptan alias de capas.

Cambios en forget

  • Las memorias fijadas (importancia=1.0) ahora se conservan junto con las memorias de la capa de advertencias.
  • Respuesta de error clara al intentar eliminar una memoria protegida o inexistente.
  • La ejecución en seco ahora incluye sample_ids_to_drop.

Cambios en consolidate

  • Modo de vista previa dry_run: true: informa el número de clústeres y candidatos sin escribir.

Infraestructura

  • Corregido el error de migración de base de datos nueva (consultaba la tabla meta antes de que existiera).
  • Actualizado a Node 20+ para uso de características de lenguaje estructurado.

Todos los cambios son retrocompatibles: las integraciones existentes continúan funcionando. El banner de versión de Server.ts ahora informa v0.1.0.

Versiones anteriores

Consulte Lanzamientos de GitHub.

Licencia

MIT — Synapse Arrows PTE. LTD.