Context Mode
Arquitectura de Context Mode: relevancia y cronología siguen rutas distintas
Sigue ContentStore, SessionDB y memoria automática en searchAllSources, con fallos parciales, fechas de respaldo y filtros de proyecto.
Qué aprenderás
- Relevancia y cronología consultan combinaciones diferentes.
- Orden ascendente más límite no significa últimos N eventos.
- Fechas de respaldo y resultados parciales requieren interpretación.
Antes de empezar
- JSON y conceptos MCP básicos
- Cliente aislado y datos inventados
Explica el límite real de la implementación y verifícalo con una muestra de evidencia explícita.
Conclusiones clave
- Relevancia y cronología consultan combinaciones diferentes.
- Orden ascendente más límite no significa últimos N eventos.
- Fechas de respaldo y resultados parciales requieren interpretación.
Empezar por la entrada real de búsqueda
src/search/unified.ts expone searchAllSources, que siempre intenta consultar ContentStore. Con el orden relevance predeterminado, esa es la fuente consultada por esta función; no consulta además SessionDB y memoria automática. Con timeline intenta también esas dos fuentes y combina resultados. La diferencia explica por qué una decisión histórica puede faltar en una búsqueda por relevancia.
Dentro de ContentStore, los índices de texto completo de SQLite proporcionan coincidencia léxica y clasificación. No es lo mismo que recuperar similitud semántica mediante embeddings. La base de sesiones y la búsqueda de memoria adaptada al cliente son fuentes adicionales, no nombres de una misma tabla. El diagrama debe mantener visibles sus ramas, fallos y políticas de retención.
Entender el orden antes de llamarlo historial
En timeline, la función normaliza fechas de estilo SQLite a cadenas con forma ISO, ordena ascendentemente y luego aplica el límite. Por tanto, esta cronología acotada no equivale automáticamente a los N eventos más recientes. Si existen muchos candidatos fechados, los anteriores pueden ocupar la ventana devuelta. Comprueba el orden antes de interpretar el primer resultado como el último evento.
Los elementos de ContentStore sin fecha reciben el instante capturado al comenzar esta llamada de búsqueda. Aunque la variable se llama sessionStartTime, se asigna con la hora actual dentro de la función. No demuestra cuándo ocurrió el evento o la indexación. Una interfaz de auditoría debe distinguir fechas reales y valores de respaldo, sin presentar cada fila como historia fechada con precisión.
Interpretar resultados parciales y alcance de proyecto
Cada fuente dispone de su propio manejo de errores, de modo que un fallo permite devolver resultados de las demás. Mejora la disponibilidad, pero una respuesta plausible todavía puede estar incompleta. El código revisado solo escribe esos errores capturados en stderr cuando se activa su indicador de depuración. La evaluación debe provocar un fallo y buscar señales de incompletitud, no solo una lista no vacía.
Con projectScope de tipo cadena y SessionDB, la función resuelve un conjunto de sesiones permitidas para filtrar ContentStore. El almacén conserva deliberadamente bloques antiguos sin identificador de sesión; si falla resolver el conjunto, la variable queda undefined. Son motivos para comprobar aislamiento estricto en otras capas: este auxiliar no garantiza seguridad entre usuarios ni describe todas las protecciones de sus llamadores.
Pasos de implementación
- 1
Sigue relevance y timeline por separado.
- 2
Crea muestras fechadas y compara el orden limitado.
- 3
Simula una fuente inaccesible e inspecciona el diagnóstico.
- 4
Comprueba límites con bloques atribuidos y antiguos.
Ejemplo para copiar
relevance -> ContentStore -> resultados clasificados
timeline -> ContentStore + SessionDB + memoria automática
-> normalizar fechas -> orden ascendente -> límite
Una fuente ausente puede dejar resultados parciales.Preguntas frecuentes
¿Relevancia siempre examina sesiones históricas?
No en searchAllSources revisado: las llamadas a SessionDB y memoria automática están dentro de la rama timeline.
¿Todas las fechas sirven para auditoría?
No. Un resultado de ContentStore sin fecha recibe la hora de la llamada actual como respaldo.
Fuentes
- README.mdFuente verificada 2026-09-07
- package.jsonFuente verificada 2026-09-07
- LICENSEFuente verificada 2026-09-07
- src/store.tsFuente verificada 2026-09-07
- src/search/unified.tsFuente verificada 2026-09-07
- src/server.tsFuente verificada 2026-09-07
- src/executor.tsFuente verificada 2026-09-07
- src/security.tsFuente verificada 2026-09-07
- src/session/purge.tsFuente verificada 2026-09-07
- tests/store-bytecap.test.tsFuente verificada 2026-09-07