2 puntos por nave94 2026-05-03 | 9 comentarios | Compartir por WhatsApp

Claude Code pierde todo el contexto cuando se cierra la sesión. CTX resuelve este problema con hooks de Claude Code.

Cómo funciona: en el evento UserPromptSubmit, inyecta automáticamente 3 tipos de contexto en menos de 1 ms.

  • G1: línea de tiempo de decisiones basada en git log (por qué se tomó esa decisión ayer)
  • G2: búsqueda BM25 en código/documentación (inyección automática de archivos relacionados)
  • CM: bóveda de conversaciones pasadas (SQLite FTS5 + vectores opcionales)

Métricas medidas:

  • Precisión de recuperación de memoria: 0.880 [0.762, 0.944] (MAB N=50, Wilson CI)
  • Línea base (sin esto): 0.00
  • Tasa de uso en condiciones reales sobre 10,000+ turnos: 39.6%

Sin llamadas a LLM. Sin nube. Totalmente local.

Instalación:
pip install ctx-retriever && ctx-install
o dentro de Claude Code: /plugin install ctx@jaytoone

9 comentarios

 
zihado 26 일 전

Si lo instalo con /plugin, aparece así: ⎿ Marketplace "jaytoone" not found

 
kurthong 2026-05-04

Me pareció muy interesante el enfoque. La idea de enrutar mediante clasificación por triggers me parece muy buena.

Una duda: creo que el tokenizador de la capa BM25 no está especificado en el README; ¿cómo piensan manejar el coreano? Si se usa el tokenizador básico por espacios, "buscar"/"buscando" quedarían como tokens separados, así que el recall bajaría bastante en búsquedas de comentarios y docstrings en coreano.
Aunque existe el fallback de multilingual-e5-small, me da curiosidad cuál es el plan para el manejo de coreano en la propia capa BM25 (incluyendo CJK). (Yo también tuve problemas con búsquedas CJK al crear una app de wiki LLM llamada seCall, y lo resolví integrando Lindera ko-dic + Kiwi-rs; como CTX tiene una estructura de enrutamiento por triggers, pensé que quizá sería posible otro enfoque.)

 
nave94 2026-05-09

Lo señaló con mucha precisión. Actualmente, tokenize() en la capa BM25 separa por espacios y puntuación, y luego descompone adicionalmente los caracteres coreanos/CJK en unidades de caracteres individuales. '검색하다'['검','색','하','다'] + el token completo '검색하다'. Sí permite coincidencias parciales, pero es cierto que se pierde la unidad semántica morfológica.

Estamos considerando la integración con Kiwi/Lindera como candidato para la siguiente etapa. Como CTX detecta el idioma de la consulta antes del enrutamiento por trigger, parece que se podría incorporar de forma relativamente limpia una rama de análisis morfológico cuando detecte coreano.

Es interesante saber que en seCall lo resolvieron con la combinación de Lindera ko-dic + Kiwi-rs. ¿Podrían compartir cómo manejaron el procesamiento de texto CJK mixto (coreano + comentarios de código en inglés)?

 
nave94 2026-05-09

Actualización v0.3.19 — envío automático al cerrar la sesión:

El cambio más importante: ahora, después de ctx-install, incluso si solo lo usas normalmente sin ejecutar ningún comando, las estadísticas se envían automáticamente a Turso al cerrar la sesión.

Campos agregados en el esquema v1.7:

  • project_type_id: huella del stack tecnológico (python_ml/nextjs_react, etc.) — clave para las mejoras entre usuarios
  • ctx_version: seguimiento de mejoras por versión
  • utility_by_qtype: mide a nivel de sesión la diferencia entre KEYWORD 16% y SEMANTIC 42%

Opción de exclusión: si creas el archivo ~/.claude/ctx-telemetry-revoke, se detiene el envío

 
nave94 2026-05-09

Actualización v0.3.16 y demo en vivo agregados:

Panel en vivo (HF Space): https://be2jay-ctx-dashboard-demo.hf.space

  • estadísticas de sesiones en tiempo real, gráfico de utility_rate, visualización del knowledge graph

Cambios principales (v0.3.16):

  • Estado: Alpha → Beta
  • Activación del pipeline de subida de Stage 2 (subida de session_aggregate con k-anonimato)
  • Se agregó una guía de opt-in al ejecutar ctx-install
  • Se agregó una nota sobre el tokenizador BM25 CJK (previsto para reflejarse en el README)

Medición real de tasa de uso (n=1054 sesiones):

  • promedio general de utility_rate: 39.6%
  • bloque CM: 52.6% (el más alto)
  • consultas SEMANTIC: 42.0% vs KEYWORD: 16.0% (diferencia de 42 pp)
 
nave94 2026-05-04

Aviso de actualización (v0.3.13):

Prioridad del método de instalación:

[Recomendado] Plugin de Claude Code (paso 1):
/plugin install ctx@jaytoone

[Alternativa] pip:
pip install ctx-retriever && ctx-install

Cambios en v0.3.13: venv aislado para vec-daemon (evita conflictos de numpy/ABI), reranker BGE opcional mediante opt-in (CTX_BGE_ENABLE=1)

 
nave94 2026-05-03

Video del funcionamiento del panel (39 segundos): https://drive.google.com/file/d/…

Detalles: https://dev.to/jaewon_jang_d63fddcf69ac2/…

 
nave94 26 일 전

Actualización v0.3.28 (2026-05-20): alcanzó 6 ⭐ en GitHub y 2,726 descargas mensuales en PyPI. En este lanzamiento se reforzó la transparencia de privacidad: se agregó PRIVACY.md (prueba de que no es posible revertir el hash, fundamentos de GDPR/CCPA/PIPA), aviso único de telemetría en la primera ejecución y los comandos ctx-telemetry disable/enable. Para quienes usan versiones anteriores (v0.3.25 o inferiores), se recomienda pip install --upgrade ctx-retriever.

 
nave94 28 일 전

Actualización v0.3.27: ahora el hook de Claude Code se conecta automáticamente con una sola línea de pip install ctx-retriever (ya no hace falta ejecutar ctx-install por separado). Internamente, un archivo .pth en site-packages instala el hook automáticamente en la primera ejecución de Python, y se añadieron el hook SessionStart y una cola de reintentos, lo que mejoró la estabilidad de la recolección de datos de ~70% a ~93%. Ya se puede instalar directamente la v0.3.27 desde PyPI.