Cache Clock: vigila cuándo caduca la caché de prompt de Claude Code
Una línea de caché de prompt bajo la barra de estado: tiempo restante, aciertos y tokens que se recachean en frío.
Permisos
- Lee archivosPuede leer archivos y listar directorios en tu equipo ($.fs.read / list / stat / exists).
- Escribe archivosPuede crear o sobrescribir archivos en tu equipo ($.fs.write).
- Ejecuta comandosPuede ejecutar programas de shell en tu equipo ($.process.run / spawn). Revisa el código fuente para ver exactamente cuáles.
- Añade comandos/herramientasRegistra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
- probado con
- v2.1.296
- última prueba
- requiere
- Claude Code ≥ 2.1.287
- superficies
- estado
- código fuente
- Hamza Zafar (hamzafer) (MIT)
Instalar dentro de Claude Code:
/plugin install cache-clock --marketplace hamzafer/claude-code-mods¿Qué hace este mod?
Cache Clock es un mod de la comunidad de Hamza Zafar (hamzafer), parte de su colección claude-code-mods. Muestra el estado de la caché de prompt de Claude Code en una línea bajo la barra de estado. Mientras la caché está caliente, la línea es verde y se lee así: cache ● 1h ██████████ 59m left · hit 48% · misses 0. Son la duración de la caché (5m o 1h), una barra de diez celdas con lo que queda, el tiempo restante, la tasa de aciertos y el número de fallos.
Cuando queda menos del 20 % de la duración, la línea se vuelve amarilla. Cuando la caché ha caducado, pasa a rojo: cache ○ cold · next message re-caches 82k tokens, con la causa del último fallo si Claude Code la informa. La idea es ver, antes de enviar un mensaje, si se servirá desde la caché o si tendrá que pagar por reconstruir todo el prefijo.
Las cifras no las calcula el mod. Claude Code envía un objeto prompt_cache al comando de la barra de estado (desde la 2.1.251) y el mod solo le da formato. Los plugins no pueden registrar una barra de estado, así que el mod añade el comando /cache-clock: setup hace que statusLine apunte al script del mod y remove lo deja todo como estaba. Si ya tienes una barra de estado, se mantiene y la línea de caché va debajo.
Demo
La grabación inicia Claude Code con el mod cargado en el pequeño proyecto de demostración, con la barra de estado ya apuntada al script del mod; omitimos a propósito el paso /cache-clock setup para que la demo no escriba en el ~/.claude de quien graba. Se le pide a Claude que lea README.md y describa el proyecto en una frase. Mientras corre el turno, bajo el prompt aparece una línea verde cache ● 1h con la barra llena, 59m left y hit 0% · misses 0. Cuando el turno termina, la misma línea pasa a hit 48% · misses 0.
Instalación
Usa cualquiera de los métodos del bloque de instalación; instalan directamente desde el marketplace del propio autor. Después ejecuta /cache-clock setup en una sesión. La línea aparece tras la siguiente respuesta de Claude, y /cache-clock a secas te dice si está activa.
$ install cache-clock
Requiere Claude Code ≥ 2.1.287
Se instala desde el marketplace del autor: hamzafer/claude-code-mods
1.Una línea, dentro de Claude Code
/plugin install cache-clock --marketplace hamzafer/claude-code-modsPégala en una sesión abierta (v2.1.275+). Claude Code te pedirá primero añadir el marketplace.
2.Desde tu shell
claude plugin marketplace add hamzafer/claude-code-mods claude plugin install cache-clock@claude-code-modsDespués ejecuta /reload-plugins en cualquier sesión que ya esté abierta.
3.Pruébalo sin instalarlo
git clone https://github.com/hamzafer/claude-code-mods claude --plugin-dir ./claude-code-mods/mods/cache-clockCarga el mod solo para una sesión. No se añade nada a tu configuración.
Cómo funciona
hooks/register.ts registra el comando y hace la configuración. El statusline/cache-clock.mjs incluido es lo que Claude Code ejecuta en cada actualización de la barra de estado. Lee el JSON de stdin, ejecuta tu comando original si se guardó uno e imprime la línea de caché. El formateador puro está en statusline/render.mjs:
export function render(input, nowSeconds) {
const cache = input?.prompt_cache
if (!cache || typeof cache !== 'object') return ''
if (cache.caching_observed === false) return ''
const left = typeof cache.expires_at === 'number' ? cache.expires_at - nowSeconds : null
const isWarm = cache.warm !== false && left !== null && left > 0
return isWarm ? warmLine(cache, left) : coldLine(cache)
}La línea cuenta como fría en cuanto pasa expires_at, aunque la entrada dijera caliente cuando se construyó. setup escribe los dos scripts en <config dir>/cache-clock/ en lugar de la carpeta del plugin, porque esa carpeta cambia con cada versión. En el siguiente inicio de sesión, refreshScripts sobrescribe las copias con las versiones nuevas si la barra de estado es la del mod. setup fija refreshInterval en 30 segundos, salvo que el tuyo ya sea menor, para que la cuenta atrás avance entre respuestas.
Personalízalo
No hay opciones. /cache-clock setup y /cache-clock remove son los únicos interruptores. Para cambiar el aspecto, edita render.mjs: BAR_CELLS para el ancho de la barra, WARN_SHARE para el punto en que la línea se vuelve amarilla (20 % por defecto) y los códigos de escape de color al principio. Edita la copia de <config dir>/cache-clock/; mientras esté configurado, el mod la sobrescribe con la versión incluida en el siguiente inicio de sesión.
Permisos y seguridad
Antes de ejecutarlo leímos todos los archivos que el plugin ejecuta: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.ts, los dos scripts de la barra de estado y las pruebas. No hay package.json, script de instalación, código empaquetado o minificado ni binarios. El repositorio tiene un LICENSE MIT.
- Cambia ajustes solo si lo pides. Al instalar o iniciar sesión no se escribe nada, salvo refrescar sus propios scripts.
/cache-clock setupescribesettings.jsonen tu carpeta de configuración de Claude (oCLAUDE_CONFIG_DIR), o<project>/.claude/settings.local.jsoncuando la barra de estado viene de los ajustes del proyecto. También escribe los scripts y una copia de seguridadsetup-<hash>.jsonen<config dir>/cache-clock/./cache-clock removerestaura lastatusLineanterior, salvo que la hayas cambiado desde entonces. No toca barras de estado gestionadas (policy) ni las de--settings, y deja intacto un JSON de ajustes no válido. - Ejecuta un comando en cada actualización. Tras el setup, Claude Code ejecuta
node "<config dir>/cache-clock/cache-clock.mjs". Ese script ejecuta tu comando de barra de estado anterior mediante un shell (spawnSync(..., { shell: true }), 5 s de límite) con la misma entrada. El propiosetupejecutanode --versionpara comprobar que Node existe. - Sin red, sin telemetría, sin llamadas al modelo, sin demonios. Lee
HOMEyCLAUDE_CONFIG_DIRsolo para encontrar la carpeta de configuración. No lee tokens ni credenciales. - Sin inyección de prompts ni hooks que bloqueen. Solo registra
session.starty su propio comando, y no añade nada a los prompts ni a los resultados de herramientas. - Requisitos: Node en el PATH y Claude Code 2.1.251 o posterior.
claude plugin validate no informó de errores ni avisos, y las 25 pruebas del autor pasaron con Claude Code 2.1.296.
- Lee archivos
- Puede leer archivos y listar directorios en tu equipo ($.fs.read / list / stat / exists).
- Escribe archivos
- Puede crear o sobrescribir archivos en tu equipo ($.fs.write).
- Ejecuta comandos
- Puede ejecutar programas de shell en tu equipo ($.process.run / spawn). Revisa el código fuente para ver exactamente cuáles.
- Añade comandos/herramientas
- Registra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
Compatibilidad y solución de problemas
Comprobado con Claude Code 2.1.296 en macOS (validate, pruebas y demo). Si la línea no aparece:
- Ejecuta
/cache-clock. Debería decir “cache-clock is on”. - Envía primero un mensaje. La línea está vacía hasta que llega
prompt_cache, y también cuando el proveedor informa de que no hay caché. claude --versiones 2.1.251 o posterior ynode --versionfunciona en el mismo terminal.- Tu barra de estado no viene de ajustes gestionados ni de
--settings; el setup no los cambia. - Tras hacer el setup en una sesión ya abierta, espera a la siguiente respuesta o a la actualización de 30 segundos.
Preguntas frecuentes
- ¿Cache Clock llama a la API o gasta tokens?
- No. Solo da formato a las cifras de prompt_cache que Claude Code ya pasa al comando de la barra de estado. Los scripts no hacen peticiones de red ni llaman al modelo.
- ¿Qué cambia /cache-clock setup en mi equipo?
- Copia dos scripts en tu carpeta de configuración de Claude, dentro de cache-clock/, guarda allí tu barra de estado anterior y edita un archivo de ajustes para que statusLine apunte al script. La barra de estado compartida de un proyecto no se edita: recibe una anulación local. /cache-clock remove restaura el original guardado.
- ¿Qué pasa con mi barra de estado actual?
- Sigue funcionando. El script del mod ejecuta primero tu comando original con la misma entrada, imprime su salida y añade debajo la línea de caché. El comando original se ejecuta mediante un shell con un límite de 5 segundos.
- ¿Qué dice la línea cuando la caché está fría?
- Muestra un “cache ○ cold” en rojo, cuántos tokens recachea el siguiente mensaje (por ejemplo 82k) y la causa del último fallo cuando Claude Code la informa, como tools changed.
- ¿Qué versión de Claude Code necesito?
- La 2.1.251 o posterior, la primera que envía prompt_cache a la barra de estado. En versiones anteriores la línea queda vacía. Node debe estar en el PATH.
# Mods relacionados
DestacadoMedidor de contexto
Contexto ocupado, uso del plan en 5 h y 7 días y coste de la sesión en la barra de estado, con aviso cerca del límite.
- estado
- aviso
- Modifica la interfaz
probado con v2.1.310
DestacadoContext Bar
La ventana de contexto de Claude Code como una barra apilada sobre el prompt, un color por categoría, con tokens.
- sobre el prompt
- Modifica la interfaz
- Añade comandos/herramientas
- Guarda datos
probado con v2.1.291
DestacadoCompact Adviser
Sugiere ejecutar /compact cuando tu sesión de Claude Code llega a un punto de control, según el modelo Jev de TypeSafe.
- estado
- panel
- aviso
- Lee archivos
- Escribe archivos
- Red
- Lee tus prompts
- Modifica la interfaz
- Añade comandos/herramientas
- Guarda datos
probado con v2.1.291
Más en Barra de estado y barra del prompt, Contexto, cuota y coste.