# zhutov-qmd-grep-dead-claude-code-memory-recall-2026-03-01

## Veille

QMD, motor de búsqueda local para bóvedas de Obsidian, skill /recall para memoria persistente en Claude Code, búsqueda BM25 + semántica + híbrida frente a grep

## Titre Article

Grep Is Dead: How I Made Claude Code Actually Remember Things

## Date

2026-03-01

## URL

https://github.com/tobi/qmd

## Keywords

QMD, motor de búsqueda local, memoria persistente, BM25, búsqueda semántica, búsqueda híbrida, Obsidian, Claude Code, skill recall, indexación de bóveda, context engineering, grep, embeddings, base de conocimiento, sesiones, reconstrucción de contexto, Tobias Lütke, Shopify

## Authors

Artem Zhutov (article/vidéo démonstration), Tobias Lütke (créateur QMD)

## Ton

**Perfil**: Perspectiva de practicante-demostrador, registro accesible y entusiasta, nivel intermedio a avanzado

**Descripción**: Artem Zhutov adopta el tono de un adoptante temprano apasionado que comparte sus descubrimientos en tiempo real. El estilo es el de una programación en vivo narrada — exclamaciones espontáneas ("¡Esto es asombroso!", "Esto es lo que me sorprendió"), comparaciones antes/después (grep 3 minutos frente a QMD instantáneo), y métricas concretas (700 sesiones, 39 sesiones en un solo día). El autor se mueve entre el tutorial técnico (comandos CLI, arquitectura) y la narrativa personal (doctorado, patrones de felicidad, ideas olvidadas). Demostrar la búsqueda semántica sobre sus propias notas personales (sueño, frustración, ideas no realizadas) hace que el argumento sea visceral y creíble. El público objetivo son usuarios intensivos de Claude Code y Obsidian que sienten el problema del "arranque en frío" en cada sesión.

## Pense-betes

- **Problema central**: cada conversación con Claude Code empieza de cero. 700 sesiones en 3 semanas, incapacidad de recuperar contexto, pérdida de decisiones durante la compactación al 60% del contexto. El grep nativo de Claude Code (a través de un subagente Haiku) tarda 3 minutos, devuelve 300 archivos de ruido y consume muchos tokens.
- **QMD**: motor de búsqueda local creado por Tobias Lütke (CEO de Shopify). Indexa archivos markdown en colecciones. 11.482 estrellas en GitHub. Licencia MIT. Tres modos de búsqueda:
- **BM25** (`qmd search`): búsqueda de texto completo determinista. Como grep pero con puntuación TF-IDF — un archivo corto que menciona "sleep" 5 veces puntúa más alto que un archivo de 10.000 palabras con una sola mención. Sin IA, sin embeddings, solo matemáticas. Resultados en 2 segundos.
- **Semántica** (`qmd vsearch`): usa embeddings para encontrar significado incluso sin palabras clave exactas. "insomnio" no devuelve nada en BM25 pero "no pude dormir, mala noche" recupera notas sobre disciplina a la hora de acostarse. 4 de cada 5 resultados no contienen las palabras buscadas.
- **Híbrida** (`qmd query`): combina BM25 + semántica + expansión de consulta + reordenamiento por LLM. Mejor ranking pero ~30 segundos. Usa Reciprocal Rank Fusion.
- **Modelos locales**: todo se ejecuta en la máquina, sin API externa. Tres modelos GGUF: embedding Gemma 300M, reranker Qwen3 0.6B, expansión de consulta 1.7B. ~2 GB en total.
- **Integración con agentes**: servidor MCP integrado, plugin en el marketplace de Claude Code (`claude marketplace add tobi/qmd`), salida JSON/CSV/MD/XML optimizada para LLM.
- **Skill /recall**: un skill de Claude Code construido sobre QMD. Tres modos:
- **Temporal** (`/recall yesterday`): reconstruye la línea de tiempo de las sesiones por fecha. 39 sesiones en un solo día con hora, número de mensajes, resumen.
- **Por tema** (`/recall topic graph`): búsqueda BM25 entre colecciones, recupera todos los archivos relacionados con un asunto en menos de un minuto.
- **De grafo** (`/recall graph last week`): visualización HTML interactiva — sesiones como blobs coloreados, archivos agrupados por tipo, conexiones rastreables.
- **Pipeline de sesiones**: al cerrar la terminal, un hook exporta e indexa automáticamente la sesión de Claude Code en QMD. Analiza markdown plano (mensajes del usuario), filtra usos de herramientas y prompts de sistema. El índice está siempre actualizado.
- **Benchmark grep vs QMD**: búsqueda de "sleep" → grep devuelve 200 archivos incluyendo `sleep()` (comando del sistema), BM25 devuelve reflexiones relevantes sobre la calidad del sueño, semántica recupera notas relacionadas sin las palabras clave, híbrida produce el mejor ranking.
- **Idea sorprendente**: búsqueda de "encuentra las ideas sobre las que nunca actué" → Claude adapta la consulta en múltiples búsquedas semánticas y recupera ideas olvidadas durante meses (panel de doctorado, grabación de pantalla de Obsidian). Búsqueda "días en los que fui feliz" → patrón: los días más felices = envío de trabajo + buena recuperación (sauna, 9 horas de sueño).
- **Recomendación práctica**: empezar con BM25 (80% de las búsquedas, rápido, estructurado). Añadir búsqueda semántica para transcripciones y volcados de pensamiento (texto libre, sin palabras clave precisas).
- **Filosofía**: "Las herramientas cambian. Tu contexto permanece." — las herramientas evolucionan (Claude Code, Codex, Gemini CLI) pero el contexto personal persiste. Las notas dejan de ser pasivas — se vuelven accionables.
- **Fuerte conexión con cobertura previa**: aborda directamente el problema del "arranque en frío" identificado por Debois ("cada sesión es un nuevo empleado") y Vasilopoulos (arquitectura de 3 niveles). QMD es una implementación concreta del Nivel 3 (Memoria Fría) con el skill /recall como mecanismo de carga. El pipeline automático de sesiones implementa el Context Flywheel de Debois.

## RésuméDe400mots

Artem Zhutov presenta una solución a un problema fundamental del desarrollo asistido por agentes de IA: **la pérdida de contexto entre sesiones**. Con 700 sesiones de Claude Code en 3 semanas, observa que cada conversación empieza de cero, que la compactación al 60% del contexto pierde decisiones, y que el grep nativo (a través de un subagente Haiku) tarda 3 minutos en devolver 300 archivos de ruido.

La solución se basa en **QMD**, un motor de búsqueda local creado por Tobias Lütke (CEO de Shopify), que indexa archivos markdown en colecciones consultables. QMD ofrece tres modos de búsqueda. **BM25** realiza búsqueda de texto completo con puntuación de relevancia — a diferencia de grep, que devuelve toda coincidencia de cadena (incluido `sleep()` en una búsqueda sobre sleep), BM25 pondera por frecuencia y rareza del término, entregando resultados relevantes en 2 segundos. La **búsqueda semántica** usa embeddings locales para encontrar significado más allá de las palabras clave: una búsqueda de "no pude dormir, mala noche" recupera una nota sobre disciplina a la hora de acostarse aunque ningún término coincida. La **búsqueda híbrida** combina ambas con expansión de consulta y reordenamiento por LLM para obtener el mejor ranking posible.

Todo se ejecuta localmente mediante tres modelos GGUF (~2 GB): embeddings Gemma 300M, un reranker Qwen3 0.6B, y un modelo de expansión de consulta de 1.7B. QMD se integra con agentes mediante un servidor MCP o un plugin de Claude Code.

Sobre QMD, Zhutov construyó el **skill /recall**, un skill de Claude Code que carga automáticamente el contexto relevante antes de cada sesión. Tres modos de acceso: **temporal** (reconstruyendo la línea de tiempo de las sesiones por fecha), **por tema** (búsqueda BM25 entre colecciones sobre un asunto) y **de grafo** (visualización HTML interactiva de sesiones y archivos). Un hook al cerrar la terminal exporta e indexa automáticamente cada sesión en QMD, manteniendo el índice siempre actualizado.

Las demostraciones revelan usos inesperados. Una búsqueda semántica de "encuentra las ideas sobre las que nunca actué" saca a la luz proyectos olvidados durante meses. "Días en los que fui feliz" revela un patrón: los mejores días correlacionan el envío de trabajo con la recuperación física. La búsqueda semántica convierte una bóveda pasiva en **memoria activa** capaz de sacar a la luz conexiones invisibles para las palabras clave.

La filosofía subyacente resuena con context engineering: las herramientas cambian, el contexto permanece. Una bóveda bien indexada sobrevive a los cambios de modelo y de herramienta. Zhutov demuestra de forma concreta lo que Debois teoriza con el Context Flywheel: documentar el contexto → mejor resultado → enriquecer el contexto → acelerar.

## GrapheDeConnaissance

- Tobias Lütke —a_créé→ QMD (TECHNOLOGIE, 0.98)
- Artem Zhutov —a_créé→ skill /recall (TECHNOLOGIE, 0.97)
- QMD —utilise→ BM25 (CONCEPT, 0.98)
- QMD —utilise→ recherche sémantique par embeddings (CONCEPT, 0.98)
- QMD —utilise→ Reciprocal Rank Fusion (CONCEPT, 0.95)
- QMD —remplace→ grep pour recherche vault (TECHNOLOGIE, 0.92)
- QMD —utilise→ Model Context Protocol (TECHNOLOGIE, 0.97)
- skill /recall —est_basé_sur→ QMD (TECHNOLOGIE, 0.98)
- skill /recall —améliore→ reconstruction contexte Claude Code (CONCEPT, 0.95)
- Artem Zhutov —affirme_que→ grep ne passe pas à l'échelle pour agents IA (AFFIRMATION, 0.93)
- recherche sémantique —permet→ transformation du vault passif en mémoire active (CONCEPT, 0.9)
- Tobias Lütke —dirige→ Shopify (ORGANISATION, 0.99)
- QMD —fait_partie_de→ architecture mémoire agents IA (CONCEPT, 0.88)

---
Canonical: https://www.thekb.eu/es/fiches/zhutov-qmd-grep-dead-claude-code-memory-recall-2026-03-01/
