🪟 ThinWindow [Plugin para Claude Code - Agent Skill - Hooks - Node.js - Medición]

Ivan Luna 25 Sep, 2026 05 min de lectura
🪟 ThinWindow [Plugin para Claude Code - Agent Skill - Hooks - Node.js - Medición]

ThinWindow mantiene delgada la ventana de contexto de Claude Code desde el primer prompt hasta la mañana siguiente. Recorta las lecturas y los logs desmedidos mientras trabajas, muestra lo que carga cada solicitud y, cuando vuelves a una sesión vencida, ofrece empezar de cero desde un resumen breve en lugar de pagar otra vez el contexto viejo. Se distribuye a la vez como plugin para Claude Code y como Agent Skill, y está listado en el directorio oficial de plugins de Claude Code. Sin dependencias, sin telemetría, MIT.

Ver en GitHub Documentación

Lo que se paga es el contexto:


Un agente de código paga más por lo que arrastra que por lo que escribe. Tres cosas mueven la factura:

  • Cada solicitud reenvía la sesión entera. Cada archivo que el agente lee, cada log que imprime y cada respuesta larga queda en la conversación, y se vuelve a pagar, desde la caché de prompts, en cada solicitud posterior.
  • Una sesión vencida se paga dos veces. Claude Code guarda la caché de prompts de una sesión hasta una hora. Si vuelves más tarde, el siguiente prompt escribe otra vez todo el contexto al precio de escritura de caché, muchas veces lo que cuesta leerlo desde la caché.
  • La configuración viaja en cada solicitud: el prompt de sistema, las definiciones de herramientas, los listados de skills y de agentes, las instrucciones de MCP y los archivos CLAUDE.md.

ThinWindow trabaja sobre las tres, en los cuatro momentos de una sesión.

Una ventana delgada para toda la sesión:


  • Al empezar: saber qué carga cada solicitud.
    • Una vez por semana y por proyecto, cuando la primera solicitud de una sesión es grande, un aviso de una línea muestra con cuánto arranca cada solicitud y sus partes más grandes.
    • Un perfil opcional, thinwindow-minimal, quita las herramientas integradas que una sesión de código enfocada casi nunca usa.
  • Mientras trabajas: mantener delgada la ventana.
    • Reglas breves le piden al agente ubicar antes de leer, leer solo el rango que necesita, acotar la salida de los comandos, y escribir y decir solo lo que la tarea necesita.
    • Los hooks aplican la parte cara sobre la propia llamada. Leer entero un archivo largo devuelve su inicio y un índice con números de línea. Las instalaciones, los builds y los tests pasan por thinwindow-run, que guarda el log completo en un archivo temporal y muestra el código de salida, el final y los errores.
  • Entre sesiones: retomar sin pagar dos veces.
    • En cada turno se mantiene un resumen de la sesión, sin llamar a un modelo.
    • Cuando vuelves a una sesión grande después de que venció su caché, tu primer prompt se retiene una vez. Al lado de empezar de cero, ves lo que reescribe seguir, en tokens y en US$ a precio de lista.
    • /clear y luego /thinwindow:resume retoma desde el resumen, y /thinwindow:brief le pide al agente una entrega más completa mientras la caché sigue caliente.
  • Después: ver adónde fue tu contexto. /thinwindow:report lee tus propias transcripciones en tu máquina y muestra cuánto contexto reenvía cada solicitud, qué reescribieron las sesiones vencidas, qué carga tu configuración y qué salida de herramientas se reenvía más. Solo números agregados, y no se envía nada a ningún lado.

Una skill y un plugin, y por qué tiene que ser las dos cosas:


Son dos capas de lo mismo, no dos productos.

  • La Agent Skill es la capa de instrucciones. Lleva las reglas, por debajo de 2.000 caracteres, y thinwindow-run. Es portable: cualquier agente compatible con Agent Skills la instala con npx skills add thinwindow/thinwindow, y los agentes que leen AGENTS.md pueden pegar las mismas reglas.
  • El plugin es la capa de aplicación, y trae esa misma skill. Sus hooks corren en los cuatro momentos de arriba: SessionStart para las reglas, PreToolUse para los controles, Stop para el resumen y el aviso de configuración, y UserPromptSubmit para el aviso de sesión vencida.

Las reglas se aplican con hooks en lugar de confiarlas al modelo, porque una regla que el agente puede olvidar bajo presión no es una regla. Y como los hooks actúan sobre la llamada en lugar de corregir al agente después, aplicarlas no cuesta un turno.

Todos los hooks fallan abiertos: cualquier error dentro de ThinWindow deja pasar la llamada, y repetir una llamada rechazada también la deja pasar, así que un agente nunca puede quedar atascado. THINWINDOW=off lo apaga todo.

Dónde funciona:


  • Claude Code (terminal, IDE, la pestaña Code de la app de escritorio): todo.
  • Cowork:
    • funcionan las reglas, el control de lectura y /thinwindow:brief;
    • el reporte cubre solo la tarea actual;
    • los resúmenes no pasan de una tarea a otra;
    • ninguno de los dos avisos se muestra.
  • Chat (claude.ai y las apps): la Agent Skill, que Claude carga cuando una tarea la necesita, y /thinwindow:brief.

Instalación:


# Desde el directorio de plugins
# (app de escritorio de Claude: Customize → Plugins → Discover → ThinWindow)
claude plugin install thinwindow@anthropic-plugin-directory

# Claude Code, desde el repositorio
/plugin marketplace add thinwindow/thinwindow
/plugin install thinwindow@thinwindow

# Cualquier agente con Agent Skills (Codex, Cursor, Copilot, Gemini CLI, OpenCode)
npx skills add thinwindow/thinwindow

Comprobado, no supuesto:


ThinWindow se comprueba con un método pensado para seguir siendo barato a medida que cambian los modelos.

  • Tests unitarios para cada mecanismo, en CI sobre macOS, Linux y Windows.
  • Repeticiones de sesiones grabadas, sin costo de modelo, antes de construir nada.
  • Unas pocas corridas de agente dirigidas, con los criterios de aprobación escritos antes de la primera corrida.
  • Una validación por versión contra Claude Code sin el plugin.

Antes de publicar 0.4.0, su método y sus reglas de aprobación se publicaron antes de la primera corrida. Todas las tareas del benchmark y todas las cadenas de retomada se completaron con ThinWindow, igual que sin él. Empezar de cero después de que venció la caché de prompts costó menos por cadena completada que seguir. Las filas crudas y las transcripciones depuradas de los agentes son públicas en el repositorio.

Stack técnico:


  • Runtime: Node.js 18+, ESM, sin dependencias de ejecución. Los hooks son scripts locales que leen una llamada a una herramienta, un prompt o el final de un turno, y devuelven una decisión.
  • Integración con Claude Code:
    • cuatro eventos de hooks;
    • skills que invoca el usuario y que no agregan nada al listado de skills;
    • lecturas acotadas e incrementales de la transcripción de la sesión;
    • un perfil que cada usuario activa por su cuenta.
  • Distribución: el directorio de plugins, un marketplace de plugins de Claude Code, el estándar Agent Skills y un adaptador AGENTS.md.
  • Arnés de medición:
    • repositorios fijados y verificación oculta;
    • un entorno registrado por suite;
    • orden de corridas con semilla e intervalos jerárquicos;
    • cadenas de retomada y transcripciones depuradas.
  • Privacidad:
    • nada de código de red: ni analíticas, ni reportes de fallos, ni chequeos de actualizaciones;
    • el reporte imprime solo números agregados, y un test lo comprueba.

Conclusión:


ThinWindow empezó como una herramienta personal para abaratar mis propias sesiones con agentes. En 0.4.0 sigue el costo a lo largo de toda la sesión en lugar de una sola llamada. El proyecto demuestra:

  • Construir sobre el modelo de costo real de una sesión de agente: contexto reenviado en cada solicitud, reescrito cuando vence la caché, y una configuración que se paga en cada turno.
  • Usar la API de hooks de Claude Code en cuatro momentos de una sesión, con un diseño que falla abierto y nunca bloquea una llamada ni un prompt.
  • Distribuir una sola base de código como plugin para Claude Code y como Agent Skill portable, para que las reglas sobrevivan a cualquier entorno.
  • Medir con disciplina: validación registrada de antemano, datos crudos publicados, fallos incluidos y afirmaciones limitadas a lo que los datos respaldan.
  • Respetar la privacidad desde el diseño: todo local, salida agregada y datos públicos depurados.


Etiquetas

Compartir


Proyectos relacionados

Todos los proyectos