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
Tu agente lo olvida todo cuando termina una sesión. Peor aún: se desvía silenciosamente de lo que decidiste la semana pasada.
Linksee Memory detecta cuando tu proyecto se desvía de sus propias decisiones — la opción abandonada en una bifurcación, el pipeline que se detuvo silenciosamente, el código que contradice lo que acordaste — y un guardián de reinyección vuelve a sacar a la superficie la decisión bloqueada antes de que el agente actúe. Las reglas que has endurecido explícitamente quedan bloqueadas.
Debajo hay un MCP de memoria local-first y multi-LLM — un solo archivo SQLite del que Claude Code, Cursor, Windsurf, OpenAI Codex y Gemini CLI leen. No solo "qué pasó" sino POR QUÉ: memoria estructurada en 6 capas con recuperación de precisión y una caché de diff consciente de AST (50–99% de ahorro de tokens en relecturas).
npx -y linksee-memory setup— un comando, listo.
🌐 Página de aterrizaje: linksee-site.vercel.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
🪄 Tres hechizos para recordar
| Di esto | Qué sucede |
|---|---|
| "usa linksee" | Recupera recuerdos relevantes antes de actuar |
| "linksee esto" | Guarda la decisión / lección ahora mismo |
| "¿qué está derivando?" | Reconciliar la realidad con tus decisiones bloqueadas |
Hazlo automático: añade "Usa 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:

La demo de 30 segundos de 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 visto en
- Zenn: Tu Claude Code, en realidad olvida por completo la sesión anterior — 73 ♡ en Zenn, 165+ usuarios en Hatena Bookmark, recogido por blogs de tecnología + shorts de YouTube (mayo de 2026)
- Zenn: Tu servidor MCP, en realidad solo usa Tools (implementación completa de 5 bloques / v0.3.0) — el 1% de los servidores MCP que implementan los 5 bloques
- Zenn: Tu memoria de Claude, en realidad solo queda en Claude (método para cruzar 5 LLM) — patrón de memoria entre LLM (12 de mayo de 2026)
- Zenn: La historia de estar detenido 3 semanas en el listado de Glama (5 trampas y soluciones) — retrospectiva de despliegue en npm + Glama
「Cordex/Cursor/Code/Gemini 全部につなげられるから、 横断的にできてる MCP ってところがこれのすごいところ」 — Hatena Bookmark, mayo de 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 por qué sobrevive al 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, 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.
Esa única memoria caveat es lo que separa "almacenamiento plano de hechos" de "el agente realmente recuerda el POR QUÉ". linksee-memory lo almacena en seis capas explícitas para que la recuperación siga siendo explicable.
🔍 Detección de deriva — "Datadog de intenciones"
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é se rechazó eso. 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 salen a la superficie como deriva, la evolución intencional (registrada como supersede/fix) permanece en silencio.
Cómo funciona
- Declara decisiones como anclas:
declare_anchor({ kind: "decision", statement: "We use FTS5, not vector search", violation_signal: ["pgvector", "embedding"] }) - El motor detecta cuando la realidad del código comprometido diverge de estas anclas
- 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
- ⚪ En espera — reconociste la brecha, la aparcaste con una fecha de revisión
- 🔵 Alineado — la realidad coincide con la intención, o una resolución registrada explica el cambio
- Resuelve con
fix,supersede,acknowledgeodismiss— más dos compuertas:harden(PreToolUse bloqueará) ysoften(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 que el abandono silencioso se detecta.
Taxonomía de 4 especies
Las anclas se clasifican en cuatro especies con diferentes formatos de visualización:
| Especie | Icono | Formato de visualización | Ejemplo |
|---|---|---|---|
| Hipótesis | 🧪 | Tarjeta de decisión (formato diario) | "Lanzaremos primero en inglés en HN" |
| Restricción | 🔒 | Regla (lista de verificación pasa/falla) | "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 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 fecha de vencimiento (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).reconcileverifica elrealitydeclarado 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_itambién es una herramienta MCP, para que un agente de codificación pueda re-anclarse 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 — hacer cumplir las 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 y exasperante (anthropics/claude-code#15443): "Claude leyó la regla, la entendió y aun así usó cp." Tener la regla en el 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 hook | Se dispara en | Qué hace |
|---|---|---|
PreToolUse | Edit / Write / Bash | Verifica 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. |
SessionStart | startup / resume / compact | Reproduce tus decisiones bloqueadas + bifurcaciones abiertas en la sesión nueva — matando la amnesia de "día de la marmota" donde un nuevo agente repite la llamada de la semana pasada. |
Es fail-open por construcción: cualquier error de parseo / BD / lógica no saca nada a la superficie y deja pasar la acción. Lo único que alguna vez bloquea es una contradicción explícita hard en una decisión que tú declaraste.
Actívalo
npx -y linksee-memory setup ofrece conectarlo al .claude/settings.json de tu proyecto (Paso 4). Para hacerlo a mano, coloca este bloque en .claude/settings.json en la raíz de tu proyecto — apunta al binario linksee-memory-guard instalado globalmente, así 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 a nivel de proyecto — el guardián hace cumplir las decisiones de este repositorio, y optas por participar por proyecto en lugar de dejar que deniegue llamadas de herramientas en todas partes (el hook Stop de la configuración, por el contrario, es global de usuario). Declara lo que debe vigilar con declare_anchor(...); establece card_policy.gate_mode:'hard' en una ancla para que una contradicción bloquee en lugar de solo advertir (el valor suave por defecto solo reinyecta). Las anclas obsoletas (at_risk), superadas o deshabilitadas por tarjeta nunca bloquean.
¿Desarrollando linksee-memory en sí? El repositorio usa el guardián en modo dogfooding a través de 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 no confirmados. Los proyectos de usuarios finales deben usar la forma publicadanpx -y linksee-memory guardde arriba.
Qué hace
La mayoría de los servicios de "memoria de agente" (Mem0, Letta, Zep) guardan una lista plana de hechos. Luego el agente mira "archivo editado X 30 veces" y no tiene idea de por qué. Y ninguno de ellos nota cuando el trabajo de esta semana contradice la decisión de la semana pasada. linksee-memory mantiene el POR QUÉ — 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 / Zep | Memoria automática de Claude Code | linksee-memory | |
|---|---|---|---|
| Detección de deriva | ❌ | ❌ | ✅ seguimiento de divergencia intención ↔ realidad |
| Portabilidad entre agentes | △ (nube) | ❌ solo Claude | ✅ archivo SQLite único |
| Estructura de POR QUÉ en 6 capas | ❌ plana | ❌ markdown plano | ✅ objetivo / contexto / emoción / implementación / advertencia / aprendizaje |
| Caché de diff de archivos | ❌ | ❌ | ✅ consciente de AST, 50-99% de ahorro de tokens en relecturas |
| Olvido activo | △ | ❌ | ✅ curva de Ebbinghaus, capa de advertencia protegida |
| Local-first / privado | ❌ | ✅ | ✅ |
Cuatro pilares
- Detección de deriva — declara decisiones como anclas, luego el motor detecta automáticamente cuando la realidad comprometida diverge de la intención declarada. Piensa en "Datadog para decisiones de producto" — las divergencias no contabilizadas salen a la superficie como deriva, la evolución intencional (registrada como supersede/fix) permanece en silencio.
- Portabilidad entre agentes — archivo SQLite único en
~/.linksee-memory/memory.db. El mismo cerebro para Claude Code, Cursor, Windsurf, OpenAI Codex, Gemini CLI. - Memoria estructurada con POR QUÉ primero — seis capas explícitas (
goal/context/emotion/implementation/caveat/learning). Resuelve "la memoria plana de hechos es inútil sin objetivos". - Ahorro de tokens vía
read_smart— sha256 + fragmentación por AST/encabezados/indentación. Las relecturas devuelven solo diffs. Medido 86% ahorrado en una edición típica de archivo TS, 99% ahorrado 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 contra el 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 solo comando
npx -y linksee-memory setup
Esto hace todo:
- Registra el servidor MCP con Claude Code
- Instala la habilidad del agente (enseña al agente cuándo recordar/recordar)
- Configura la captura automática (cada sesión se guarda en tu cerebro local)
- Ofrece conectar el guardia de reinyección en este proyecto (aplicación de decisiones previas 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 nuevas tareas, ediciones de archivos, etc.
Configurar la captura automática (hook de Stop):
Añade a ~/.claude/settings.json:
{
"hooks": {
"Stop": [
{
"matcher": "",
"hooks": [
{ "type": "command", "command": "npx -y linksee-memory sync" }
]
}
]
}
}
Cada final de turno tarda ~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 evita 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.
Desinstalación
# 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 nunca de tu máquina, así que el paso 3 borra por completo todo lo que Linksee almacenó.
Novedades en v0.9
| Característica | Detalle |
|---|---|
| Guardia de reinyección | La 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. Abierto por diseño. Ver Guardia de reinyección. |
| Cableado de hooks listo para producción | linksee-memory-setup ahora ofrece fusionar los hooks de guardia 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, el cableado vivía solo en una configuración dogfood ignorada por git. |
Novedades en v0.8
| Característica | Detalle |
|---|---|
| 4 herramientas de detección de deriva | drift_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 del agente (las decisiones se olvidan entre sesiones) ahora está cerrada. |
| Motor de verdad | La 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 especies | Los anclajes se clasifican como hipótesis/restricción/compromiso/fuente_de_verdad con formatos de visualización apropiados para cada especie. |
| Prioridad de resolución | Cuando existen múltiples resoluciones para un anclaje, gana la más reciente (evita que un reconocimiento obsoleto eclipse una corrección más nueva). |
Novedades en v0.7
| Característica | Detalle |
|---|---|
| Superficie unificada de 3 herramientas | 8 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. |
| Consolidación automática | La 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 deprecación | Los 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 — mismo patrón de adopción que Context7. |
| Plugin de Claude Code | claude plugin add -- linksee-memory — incluye servidor MCP + habilidad de invocación automática en una sola instalación. |
Novedades en v0.4
| Característica | Detalle |
|---|---|
| Configuración con un comando | npx -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 v2 | Clasificació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ón | SKILL.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 MCP | Herramientas + Recursos + Prompts + Muestreo + Raíces + Elicitación. La mayoría de los servidores MCP exponen solo Herramientas; linksee-memory implementa los cinco primitivos. |
11 Herramientas
Herramientas de memoria
| Herramienta | Qué hace |
|---|---|
remember | Guardar / actualizar / eliminar memorias. Clasifica automáticamente en 6 capas. Modos: crear (predeterminado), actualizar (memory_id + campos), eliminar (forget: true + memory_id). |
recall | Búsqueda / historial de archivos / resumen. Modos: búsqueda (query), historial de archivos (path), resumen de entidad (sin parámetros). Clasificación FTS5 + calor × impulso con match_reasons. |
read_smart | Lector de archivos que ahorra tokens con caché de diff AST. Primera lectura = contenido completo. Relectura sin cambios = ~50 tokens. Relectura modificada = solo fragmentos cambiados. |
Herramientas de deriva (v0.8.0)
| Herramienta | Qué hace |
|---|---|
drift_status | "¿Qué está derivando ahora mismo?" Devuelve el mapa de verdad con clasificación de 4 especies (hipótesis/restricción/compromiso/fuente_de_verdad) y estado por nodo (🔴 deriva / 🟡 revisión / ⚪ mantenido / 🔵 alineado). |
check_decision | Inmersión profunda en una decisión específica. Devuelve el contexto completo: qué se decidió, por qué, qué dice la realidad, candidatos pendientes y bordes de deriva. |
declare_anchor | Registra una decisión como anclaje del mapa de verdad. El detector de deriva la compara con la realidad comprometida. Admite campos v9 (dominio, confianza, ciclo de vida, revisar_después). |
resolve_drift | Cierra el ciclo. Registra una resolución: fix (la realidad ahora coincide), supersede (la intención evolucionó), acknowledge (aparcado con fecha de revisión) o dismiss (falso positivo). |
where_am_i | "¿Dónde estoy en el Mapa y qué más toca esto?" Localiza el tema/archivo actual en el Mapa de Verdad Actual y devuelve su etapa de recorrido + radio de explosión (los dependientes de must-stay-consistent-with / should-align-with) + la decisión detrás. El re-anclaje por turno que evita que optimices un nodo mientras rompes silenciosamente sus vecinos. |
Herramientas de punto de bifurcación (v0.10)
| Herramienta | Qué hace |
|---|---|
flag_proposals | Registra propuestas huérfanas — opciones que presentaste y el usuario nunca abordó. Las conversaciones tienen forma de árbol pero se experimentan linealmente; las ramas con las que nadie interactuó se convierten en puntos de bifurcación no resueltos que tanto tú como el usuario pierden de vista. |
dream | Consolida propuestas huérfanas contra la Estrella del Norte. Devuelve la dirección/objetivos/ICP del proyecto junto con propuestas no resueltas; el agente evaluador decide por candidato: mostrar (bifurcación genuinamente importante) o descartar (obsoleta / irrelevante / resuelta implícitamente). |
resolve_proposal | Registra el veredicto para cada propuesta soñada: surface (mantener visible en el panel para decisión humana) o dismiss (eliminar del panel). |
Las versiones anteriores exponían 3 herramientas — v0.8.0 añadió 4 herramientas de deriva que permiten a los agentes consultar y actuar sobre la divergencia intención ↔ realidad a nivel de producto; v0.10 añadió el trío de puntos de bifurcación para el triaje de propuestas huérfanas; where_am_i añade el re-anclaje posicional por turno del Mapa de Verdad Actual. Las herramientas de memoria no han cambiado.
Utilidades CLI
| Comando | Propósito |
|---|---|
npx -y linksee-memory setup | Configuración con un comando: servidor MCP + habilidad + hook de Stop, luego ofrece conectar el guardia de reinyección en este proyecto. Idempotente — omite lo que ya está hecho. |
npx linksee-memory | Servidor MCP (stdio) |
npx -y linksee-memory sync | Punto de entrada del hook de Stop de Claude Code |
npx -y linksee-memory guard | Hook del guardia de reinyección: puerta PreToolUse (Edit/Write/Bash) + resumen de arranque SessionStart. Cableado por proyecto (ver Guardia de reinyección); abierto por diseño. |
npx -y linksee-memory import | Importa por lotes el historial JSONL de sesiones de Claude Code |
npx -y linksee-memory install-skill | Instala la habilidad de Claude Code que enseña al agente cuándo llamar a recordar/recordar/lectura_inteligente |
npx -y linksee-memory stats | Resumen de la base de datos local (recuento de entidades / desglose por capas / entidades principales / archivos más editados). Añade --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 de
caveatestán protegidas automáticamente contra el olvido (lecciones dolorosas, nunca se pierden). - Las memorias de
goalevitan la decadencia mientras el objetivo está activo. staterastrea el ciclo de vida:open→decided→in_progress→done/stalled/superseded.
Arquitectura
Un solo archivo SQLite (better-sqlite3 + tokenizador de trigramas 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 diff + 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 primero — tu historial de conversaciones es privado. Nada sale de tu máquina.
- Archivo único —
memory.dbes un artefacto portátil. Copia de seguridad = copia del archivo. - MCP stdio — funciona con cada agente que hable MCP, sin plugins por host.
- Reutiliza esquemas probados —
heat_score/momentum_scoreportados de un código base de inteligencia de ventas en producción. 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 + Sampling + Roots + Elicitation)
- ✅ Captura automática mediante stop-hook para Claude Code
- ✅ FTS5 de trigramas JP/EN
- ✅ Configuración con un solo 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-site.vercel.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 de 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 diff de archivos y el PORQUÉ de cada edición
Usa ambos.
Seguridad y privacidad
linksee-memory se ejecuta localmente y está diseñado para leer — y enviar — lo menos posible.
- Primero local. La memoria es un único archivo SQLite en
~/.linksee-memory/memory.db. Sin cuenta, sin nube, sin clave API. - La telemetría es opcional y está DESACTIVADA por defecto.
setuppregunta una vez; no se envía nada a menos que aceptes allí (o configuresLINKSEE_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 señala una verificación de realidad del mapa, la base de datos SQLite local y — cuando se activa el stop hook — la transcripción de tu sesión de Claude Code (localmente, para capturar lo sucedido). No rastrea tu repositorio, lee.env/secretos/node_modulesni toca tu directorio personal por su cuenta. - Transporte MCP limpio. El servidor escribe solo JSON-RPC en stdout; todos los registros van a stderr.
- Los hooks están documentados y se pueden eliminar.
setupañade un stop hook (captura de sesión) y un hook de guardia opcional. No hacen llamadas de red por defecto, tienen límite de tiempo, fallan de forma abierta (un error de hook nunca interrumpe tu sesión) y se enumeran en Desinstalación. - Sin superficie de inyección de shell. Los subcomandos se ejecutan mediante
spawncon argumentos de matriz yshell: false, desde una lista de permitidos fija;map.yamlse analiza con el analizador seguroyaml(sin ejecución de etiquetas arbitrarias). - Cadena de suministro. MIT, publicado desde un único propietario.
npx -y linksee-memoryejecuta el paquete publicado — fija una versión en CI si necesitas reproducibilidad.
¿Encontraste un problema de seguridad? Consulta 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 actives explícitamente. Sin contenido de conversaciones, sin contenido de archivos, sin nombres de entidades, sin rutas de proyectos — nunca.
Activar
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 stop hook envía un POST a https://linksee-site.vercel.app/api/telemetry/linksee que contiene solo estos campos:
| Campo | Ejemplo | Qué es |
|---|---|---|
anon_id | d7924ced-3879-… | UUID aleatorio generado localmente en la primera activación. Almacenado en ~/.linksee-memory/telemetry-id — elimina el archivo para restablecerlo. |
linksee_version | 0.0.3 | Versión del paquete |
session_turn_count | 120 | Cuántos turnos tuvo la sesión |
session_duration_sec | 3600 | Cuánto duró la sesión |
file_ops_edit/write/read | 12, 2, 40 | Solo recuentos |
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 tocadas |
read_smart_*, recall_* | recuentos | Contadores 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 la capa 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 de configurar 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 primero local y se ejecuta completamente en tu máquina. No hay ningún componente alojado por el que debas pagar. La base de datos SQLite vive en tu directorio personal; la copia de seguridad = copia del archivo.
Sin cuenta, sin tarjeta de crédito, sin clave API. Solo instala y usa.
Solución de problemas
La habilidad no se activa — Claude Code no llama a recall cuando pregunto sobre trabajo pasado.
- Verifica que la habilidad esté instalada:
Si está ausente, ejecutals ~/.claude/skills/linksee-memory/SKILL.mdnpx -y linksee-memory install-skill. - Reinicia Claude Code. Las habilidades se indexan al inicio de la sesión.
- Comprueba que el MCP esté registrado con el nombre
linksee(la habilidad espera nombres de herramientasmcp__linksee__*):
Si está registrado con otro nombre, vuelve a registrarlo o editaclaude mcp list | grep linksee~/.claude/skills/linksee-memory/SKILL.mdpara que coincida.
El stop hook no está grabando mis sesiones.
- Revisa el registro del hook:
cat ~/.linksee-memory/hook.log - Ejecuta una prueba manual:
echo '{"session_id":"test","transcript_path":"/path/to/some.jsonl"}' | npx -y linksee-memory sync - Asegúrate de que el hook
Stopen~/.claude/settings.jsonapunte anpx -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 de ejecución típico: unos minutos para cientos de sesiones. Espera una mejora drástica 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 frías antiguas en resúmenes comprimidos de la capa de aprendizaje. Las capas de advertencia y de objetivos activos siempre se conservan.
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/sustitució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 individuales que gestionan múltiples proyectos.
¿En qué se diferencia de Mem0 / Letta / Zep?
Tres ejes:
- Primero local: 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.
- 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. - Caché de diff de archivos: la herramienta
read_smartahorra 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 IDEs.
¿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 es el mismo principio de primero local pero:
- Funciona en Claude Code, Cursor, OpenAI Codex, Gemini CLI (SQLite compartido)
- El formato estructurado de 6 capas hace que el recall sea explicable
- La auto-consolidación comprime memorias frías al inicio; las advertencias están protegidas permanentemente
¿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:
- 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).
- En relecturas con mtime+sha256 sin cambios, devuelve
~50 tokensde confirmación de "sin cambios" en lugar de reenviar el archivo. - En ediciones reales, devuelve solo los fragmentos cambiados como contenido completo + 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%.
¿"Primero local" 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 entre múltiples máquinas, coloca ese directorio bajo Syncthing / iCloud Drive / Dropbox / Google Drive — es un solo archivo, así que cualquier herramienta de sincronización de archivos 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 de múltiples escritores pueden corromper.)
¿Qué sucede cuando la base de datos se vuelve enorme?
Dos mecanismos:
- Olvido de Ebbinghaus: los recuerdos fríos de baja importancia se decaen naturalmente, siendo elegibles para barridos de auto-olvido. La capa
caveaty los recuerdos conimportance ≥ 0.9están siempre protegidos. - Auto-consolidación: se ejecuta en cada inicio del servidor (umbral de 7 días). Comprime grupos de recuerdos fríos de baja importancia por entidad en un único resumen de capa
learning, y 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 intensivo. Una base de datos de un año que probé con 80K recuerdos 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: añádelo a
claude_desktop_config.json(ver onboarding en el LP) - Cursor: añádelo a la configuración de MCP en Cursor → Configuración → Funciones → Model Context Protocol
- OpenAI Codex:
codex mcp add linksee -- npx -y linksee-memory(o~/.codex/config.tomlcon bloque[mcp_servers.linksee]) - Gemini CLI: añádelo a la sección mcpServers de
~/.gemini/settings.json - ChatGPT (aplicación web/móvil): MCP stdio no es compatible con la aplicación de consumo — 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 de la carga útil está documentado en la sección de Telemetría y ves cada byte antes de optar por participar.
¿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 mediante 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 está presente, 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.dbno se puede leer, linksee lo preserva comomemory.db.corrupt-<timestamp>e inicia uno nuevo (con un mensaje claro) en lugar de fallar con un error SQLite crudo. Los recuerdos antiguos siguen siendo recuperables en la copia de seguridad. - La descripción de la herramienta
recallya 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)
statsfunciona en una base de datos nueva en lugar de fallar conno such table— asegura que el esquema exista primero (puede ser el primer comando que ejecute un usuario nuevo).map --helpimprime el 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(ymap,sync,guard,stats,import,install-skill). Un usuario nuevo no podía acceder a los binarios independientes (linksee-memory-setup, …) mediantenpx— npx resuelve nombres de paquetes, no nombres de binarios hermanos — por lo que la instalación de un solo comando daba 404. El binario principal ahora despacha subcomandos; los binarios independientes permanecen como alias. mapsale correctamente con un mensaje de siguiente paso cuando aún no haymap.yaml(antes era un stack trace crudo — el estado exacto de un usuario de primera vez).- serverInfo ahora informa la versión real del paquete (antes estaba fijado 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 desviación 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. Unmap.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: añade--lang ja. - Radio de impacto graduado (
must fix together/should align/fyi), veredictos declarado-vs-realidad, y un guardián anti-cementerio para la desviación contabilizada. - Claves por proyecto para que el Mapa maneje muchos proyectos a la vez.
v0.8.0 — Herramientas MCP de detección de desviación (2026-06-08)
3 herramientas → 7 herramientas. La mayor actualización desde el lanzamiento — los agentes ahora pueden detectar, consultar y resolver la desviación intención ↔ realidad.
Nuevas herramientas:
drift_status— devuelve el mapa de verdad con clasificación de 4 especies y estado de desviación por nodocheck_decision— inmersión profunda en una sola ancla: estado, bordes, candidatos pendientesdeclare_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 / superar / 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 desviación 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: nodos clasificados por
decision_modeen 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 recall + detección automática de bordes + precisión del clasificador (2026-05-30)
Pase de calidad sobre v0.7.0 / v0.7.1 — UX de agente diario más nítida y datos más limpios para el panel:
- Disciplina de tokens
recall: elimina elcontent_rawredundante de la respuesta (elcontentanalizado ya estaba allí — era un duplicado 2×), y realmente aplicamax_tokensmediante ensamblaje codicioso que mide el tamaño serializado real (antes era una estimación plana de ~100 tok/memoria). Añadeapprox_tokensa 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 de él. - Precisión de
recall: recuerdos casi duplicados — misma entidad + texto central casi idéntico, p. ej. el mismo mensaje capturado bajogoalylearning— se colapsan a uno en el conjunto de resultados. Los pesos compuestos se adaptan a la especificidad de la consulta: las consultas de múltiples términos ponderan la relevancia más alto para que los recuerdos fijados pero fuera de tema no abarroten recalls estrechos. - Deduplicación de captura (lado de escritura):
session-extractorahora produce COMO MÁXIMO un recuerdo por turno de usuario, con prioridadgoal[first_intent] > caveat > decision > context. Un mensaje de primera intención que contenga palabras de decisión (p. ej. "決めた" / "これで進めよう") ya no se guarda dos veces comogoalylearning. - Detección automática de
memory_edges: la tablamemory_edgespreviamente vacía ahora se puebla durante el barrido de consolidación en modo de suspensión.detectMemoryEdges()vincula un recuerdo DECISION posterior al recuerdo de 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 esextends— 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) producencontradicts; los marcadores de reemplazo explícitos (の代わり / replaces / deprecate) producensupersedes. Evita la desactivación silenciosa de decisiones aún válidas. - Precisión de
inferType/inferState: los acuses de charla trivial ("そうだね" / "ありがとう"), el contenido pegado de terminal/git/correo, y el meta-ruido ya no se clasifican comodecision— devuelvennote/openantes del coincidencia de patrones. El valor predeterminado de la capa de aprendizaje →decisionestá controlado por este guardián. Las decisiones reales (採用 / 決めた, incluso después de un abridor de acuse) 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
rememberahora incluye la sección "PARÁMETROS REQUERIDOS POR MODO" para que los LLM sepan exactamente qué campos se necesitan para crear vs actualizar vs 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 recall + consulta: cuando tanto
pathcomoqueryse proporcionan arecall, los resultados del historial de archivos y la búsqueda de memoria se fusionan en una sola respuesta. - P2 — Seguridad de auto-consolidación: verificación de existencia de tabla mediante
sqlite_masterantes de consultar la tablaconsolidations, 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 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 antigua | Equivalente nuevo |
|---|---|
forget | remember({ forget: true, memory_id: <id> }) |
update_memory | remember({ memory_id: <id>, content: "..." }) |
recall_file | recall({ path: "server.ts" }) |
list_entities | recall({}) (sin parámetros = vista general de entidad) |
consolidate | Se ejecuta automáticamente al inicio del 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:
- Auto-consolidación al inicio del servidor (
setTimeoutno bloqueante, umbral de 7 días, verificación de seguridadsqlite_master) - Paquete de plugin de Claude Code (
claude plugin add -- linksee-memory) - Los errores de obsolescencia incluyen ejemplos de migración específicos
Todas las funciones de manejo internas se conservan — esto es un cambio de superficie, no una reescritura de lógica.
v0.2.0 — Preparación para lanzamiento con inglés primero (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 de API.
SKILL.mdbilingüe (habilidad de invocación automática). La habilidad incluida quelinksee-memory-install-skillcopia en~/.claude/skills/linksee-memory/SKILL.mdestaba primero en japonés; ahora es principalmente en inglés con frases de activación en japonés preservadas en línea. Los hablantes de inglés ahora pueden activar la habilidad con frases naturales en inglés ("how did we solve this before?", "same error again", "remember this") además de los disparadores en japonés existentes.- La salida CLI de instalación de habilidades es bilingüe: las frases de prueba de ejemplo mostradas después de la instalación incluyen tanto inglés como japonés.
- Cobertura EN del extractor de sesiones (
linksee-memory-import): patrones de regex 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 incluyenlet'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 "lower importance below 0.9 first, then forget", lo cual era engañoso: las memorias de la capa de advertencias están permanentemente protegidas 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 añadió un escenario de antes/después "See it in action", diagrama ASCII de 6 capas, insignias del Registro Oficial MCP + puntuación de 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.
No hay cambios de código en la superficie del protocolo MCP; todos los clientes MCP existentes siguen 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.0a>= 0.9. Las memorias conimportance >= 0.9ahora están exentas del barrido de olvido automático y aparecenpinned: trueen las respuestas derecallyremember. Esto coincide con el modelo mental natural ("0.9 = alta importancia = debería sobrevivir a la limpieza") sin requerir1.0exacto. - Todas las memorias existentes con
importance >= 0.9(incluidas las más antiguas configuradas en0.9o0.95) se fijan automáticamente, sin necesidad de 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 conmemory_idpreservado. Resuelve el error "forget+remember breaks session_file_edits links".list_entities— primitiva rápida de "¿qué sé sobre?" para la inicialización de sesión. Admite filtroskind/min_memoriesy devuelve desglose por capas.npx -y linksee-memory stats— CLI de resumen de base de datos local.
Mejoras en recall
- Matriz
match_reasonsen cada memoria: p. ej.["content_match_fts", "heat:hot", "pinned"]. score_breakdowncon 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 demax_tokens). - Filtro
bandpara solicitar solo memorias calientes/templadas/frías/congeladas. mark_accessed=falsepara 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 en remember
- Control de calidad: rechaza salida de asistente pegada / registros de CI / trazas de pila a menos que
force=true. importance=1.0ahora 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.
- dry-run 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
metaantes de que existiera). - Actualizado a Node 20+ para uso de características de lenguaje estructurado.
Todos los cambios son retrocompatibles: las integraciones existentes siguen funcionando. El banner de versión de Server.ts ahora informa v0.1.0.
Versiones anteriores
Ver GitHub Releases.
Licencia
MIT — Synapse Arrows PTE. LTD.