Tu Agente de Código Tiene Amnesia. Este CLI en Rust lo Arregla con Un Solo Comando

Hace tres semanas te pasaste cuarenta minutos con Claude Code averiguando por qué una migración de base de datos seguía fallando. Encontraste la causa raíz, la arreglaste, seguiste adelante. Ayer, en otra sesión, tu agente se chocó exactamente con el mismo problema. No tenía idea de que ya lo había resuelto — porque el transcript de esa primera sesión de debugging está guardado en una carpeta de tu máquina, en un formato que nada puede buscar.

Ese es el problema que ctx vino a resolver, y es de los buenos.

La pila que nadie busca

Todo coding agent serio anota absolutamente todo lo que hace. Claude Code, Cursor, Codex, Gemini CLI, GitHub Copilot CLI — cada uno guarda transcripts locales detallados de cada conversación, cada comando ejecutado, cada intento fallido antes del fix que sí funcionó. Ninguno de esos logs se habla entre sí. Ninguno es barato de buscar. Si querés que tu agente chequee “esto ya lo resolví antes” antes de arrancar de cero, hoy la única opción real es tirarle transcripts crudos como contexto — y eso puede quemar decenas de miles de tokens antes de que el agente haga algo útil.

ctx (GitHub - ctxrs/ctx: Search the coding agent history already on your machine · GitHub), lanzado el 4 de julio (boreal) por un equipo chico que trabaja bajo el nombre ctxrs, va directo al grano: junta todo ese historial disperso en una sola base SQLite local, estructurada lo suficiente como para buscarla en milisegundos en vez de cargarla entera.

Poniéndolo a andar

Es un solo binario en Rust — sin daemon, sin servicio en background, sin API keys.

# Descubre e importa todos los session logs de agentes que ctx encuentre
ctx setup

# Buscá en todo eso con lenguaje natural
ctx search "failed migration"

# O afiná con varios términos
ctx search --term "failed migration" --term rollback --term "cursor rename"

Al correr setup, escanea tu máquina buscando session logs locales de cualquier harness soportado y los importa. Al momento de escribir esto, ctx soporta Claude Code, Codex, Cursor, Pi, OpenCode, Gemini CLI (vía Antigravity), Factory AI Droid, y GitHub Copilot CLI.

Una búsqueda te devuelve sessions y events que matchean, cada uno con su propio ID:

ctx show event <ctx-event-id> --window 3
ctx show session <ctx-session-id>

Le pasás esos IDs a tu agente actual y puede traer exactamente el pedazo de una sesión pasada que necesita — no el transcript entero.

Qué pasa por debajo

ctx normaliza el formato crudo de transcript de cada harness a un schema común de sessions y events, guardado en un archivo SQLite plano. Eso es todo — sin embeddings, sin llamadas a modelos, sin ida y vuelta a la nube en la versión local. Incluso podés consultar el índice directamente:

ctx sql "SELECT provider, COUNT(*) AS sessions FROM ctx_sessions GROUP BY provider"

El proyecto es Apache 2.0, y al momento de escribir esto tiene 180 stars, 15 forks y 68 commits — escrito principalmente en Rust, con bindings de SDK en TypeScript, Python, Go, JVM, Swift y .NET para quien quiera llamar a ctx search desde su propio tooling en vez de la CLI.

El número de tokens, con su salvedad

El benchmark del propio proyecto afirma que una búsqueda real que cuesta 45.734 tokens vía transcript crudo baja a 917 tokens usando ctx — más o menos una reducción de 50x. Vale aclarar que esta es una cifra autorreportada por el proyecto, no un benchmark verificado de forma independiente. Dicho esto, el mecanismo detrás es lo suficientemente directo — búsqueda estructurada versus cargar texto crudo — como para que la dirección del claim se sostenga aunque no tengamos un número independiente que confirme el multiplicador exacto.

Algo para vigilar: el beta en la nube

Hay una versión cloud en beta privado para equipos que quieran sincronizar historial entre máquinas o compartirlo internamente. Vale la pena marcarlo: el creador fue directo en el thread de Show HN sobre que los límites de privacidad acá todavía no están resueltos — los transcripts pueden traer detalles personales mezclados con decisiones técnicas, y no hay una línea clara de qué debería compartirse y qué no. La versión local que repasamos acá no toca la red para nada: ningún prompt, transcript o historial sale de tu máquina, y no hay API keys de por medio.

Cómo reaccionó la comunidad

El post de Show HN juntó 64 puntos y 37 comentarios en pocas horas — bastante por encima del promedio para el lanzamiento de una dev tool. Lo que se destacó en el thread no fue escepticismo; varios engineers comentaron que ya habían construido alguna versión de esto puertas adentro, y alguien planteó que la amnesia de contexto en los agentes se está convirtiendo en uno de esos problemas a los que todos llegan de forma independiente una vez que usan estas herramientas el tiempo suficiente. Es una señal bastante buena: el hueco que ctx viene a tapar es uno que mucha gente ya había notado por su cuenta.

¿Vale la pena instalarlo?

Si corrés más de un coding agent, o corrés el mismo el tiempo suficiente como para acumular meses de sesiones, esto es prácticamente gratis de probar. No te cambia el workflow — se sienta debajo, y solo se usa cuando vos o tu agente buscan algo explícitamente. La instalación es un binario, un comando setup, y nada que configurar.

¿Ya tenés meses de transcripts acumulados sin poder buscarlos, o este es un problema que ni sabías que tenías hasta ahora?