BookinglyTech News
Software

Un plugin para Claude Code que sustituye el resumen de contexto por recortes de Jev

El plugin fast-jev-compaction, en TypeScript, suma 3.212 estrellas en GitHub en dos días. Sustituye la compactación de Claude Code por decisiones de Jev sobre qué llamadas y resultados conservar.

3 min de lecturaGitHub en alza0 vistas

El repositorio tamaratran/fast-jev-compaction ha pasado de cero a 3.212 estrellas en dos días, un ritmo medio de 1.816 al día. Es un plugin para Claude Code, escrito en TypeScript, que sustituye la compactación por defecto. En lugar de pedir a un modelo que resuma los turnos antiguos, llama a Jev para que decida qué llamadas a herramientas y qué resultados sobran. Lo que se queda, se queda literal.

El README explica el motivo: un resumen tiene pérdidas. Una ruta de archivo, un error exacto, una restricción o un comando pueden desaparecer justo cuando hacen falta más tarde. Esta biblioteca no reescribe nada. Solo elimina llamadas y resultados que Jev marca como innecesarios, y para decidirlo le enseña la conversación completa. El texto del usuario y del asistente permanece sin tocar y en orden. El repositorio sirve como paquete npm en src/ y como plugin de Claude Code con hooks/ y .claude-plugin/.

Cómo decide

Cada tool_use se empareja con su tool_result por tool_use_id. Las llamadas del primer mensaje o de los últimos preserveRecentMessages mensajes quedan fijadas y no se tocan. El estado que recibe Jev es toda la conversación hasta ese punto, de la más antigua a la más reciente, pero cada resultado de herramienta se sustituye por una nota corta del tipo ok, 4213 chars (omitted). Las entradas de las herramientas y los textos van incluidos, nada se resume.

Ese estado debe caber en maxStateTokens (25.000 por defecto). El ajuste va por etapas y solo pasa a la siguiente si la anterior no basta: truncar entradas de herramientas a 1.000, 200 y 60 caracteres; abreviar textos largos a cabeza y cola; colapsar mensajes antiguos; reducir llamadas a una línea; omitir mensajes sin llamadas; y plegar secuencias de llamadas. Si no cabe, lanza un error. Los tokens se estiman sin tokenizador, con un margen sobre las cuentas de Jev.

Jev recibe dos preguntas por llamada no fijada, que el README llama noul: si la llamada debe seguir y si el resultado debe conservarse literal. Las preguntas se reparten en peticiones para no pasar maxRequestTokens (30.000, bajo el límite de 32.000 de Jev). El estado completo se reenvía en cada una; van en paralelo y las respuestas se fusionan.

Cada llamada se compara con keepThreshold. Si keepResult alcanza el umbral, se conservan llamada y resultado. Si no, pero keepCall sí, se mantiene la llamada y se trunca el resultado a truncateHeadChars más una nota. Si ninguna llega, se eliminan ambos. Después se reconstruye la lista: mensajes sin contenido se borran, los intactos se devuelven como los mismos objetos y ningún resultado queda sin llamada. Fallos de Jev, respuestas malformadas o una historia que no cabe lanzan; el hook decide a qué recurrir.

La instalación añade el repositorio como marketplace de plugins, desde la shell o dentro de una sesión. El instalador pregunta por clave de API, umbrales y truncateHeadChars; por defecto usa TYPESAFE_API_KEY del entorno. Después hay que reiniciar Claude Code o ejecutar /reload-plugins.

Lo llamativo es el crecimiento: 3.212 estrellas en dos días para una política de recorte de contexto, no un modelo. El README no incluye comparativas de latencia ni de coste por petición.