Saltar al contenido
claudemods

Compact Adviser: sabe cuándo usar /compact en Claude Code

Sugiere ejecutar /compact cuando tu sesión de Claude Code llega a un punto de control, según el modelo Jev de TypeSafe.

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).
  • RedPuede hacer peticiones HTTP o comunicarse con servidores MCP ($.http.fetch / $.mcp.*).
  • Lee tus promptsPuede ver lo que escribes y la transcripción de la conversación (prompt.* / session.append / session.messages).
  • Modifica la interfazDibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
  • Añade comandos/herramientasRegistra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
  • Guarda datosConserva datos entre sesiones en el almacén privado del plugin ($.store.*).
probado con
v2.1.291
última prueba
requiere
Claude Code ≥ 2.1.287
superficies
estado, panel, aviso

Instalar dentro de Claude Code:

/plugin install compact-adviser --marketplace kunchenguid/compact-adviser
Todas las opciones de instalación ↓

¿Qué hace este mod?

Compact Adviser responde a una pregunta: ¿debería ejecutar /compact ahora? Lo ha escrito Kun Chen (kunchenguid) y se publica para Claude Code, Pi, Codex CLI y Grok desde un mismo repositorio. Esta página trata del mod para Claude Code que está en packages/claude-mod.

Compactar demasiado pronto tira contexto que todavía necesitas; compactar demasiado tarde hace que cada turno arrastre un historial largo. Después de cada turno terminado, el mod comprueba unas cuantas condiciones locales baratas y, si se cumplen, hace al modelo Jev de TypeSafe dos preguntas breves sobre la conversación: ¿está terminada la última unidad de trabajo del asistente?, ¿hizo el asistente el trabajo él mismo o se limitó sobre todo a coordinar? Las dos respuestas se combinan en una puntuación. Si la puntuación supera un umbral, aparece una línea de estado: "work appears completed or recorded. Run /compact to save tokens."

El umbral es estricto (0,90) mientras el contexto está casi vacío y se relaja hacia 0,50 a medida que el contexto se acerca al punto de autocompactación de Claude Code, porque un aviso equivocado sale más caro cuando todavía queda espacio. Si eliges el modo automático, el mod ejecuta él mismo la compactación en ese punto de control en lugar de limitarse a avisar.

Necesita una clave de API de TypeSafe, que aportas tú.

Demo

Un aviso real necesita más de 40.000 tokens de contexto y una clave de TypeSafe, algo que no cabe en un clip corto. La grabación inicia Claude Code con el mod cargado, ejecuta /compact-adviser status (modo, mínimo, presupuesto y estado de la clave), luego abre el panel de configuración de /compact-adviser y baja hasta la fila de la clave de API de TypeSafe, que muestra missing.

Instalación

Usa cualquiera de los métodos del bloque de instalación; ambos instalan directamente desde el marketplace del autor. El mod no hace absolutamente nada a menos que Claude Code arranque con CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1, así que inícialo con esa variable y después ejecuta /compact-adviser para añadir tu clave de TypeSafe.

$ install compact-adviser

Requiere Claude Code ≥ 2.1.287

Se instala desde el marketplace del autor: kunchenguid/compact-adviser

  1. 1.Una línea, dentro de Claude Code

    /plugin install compact-adviser --marketplace kunchenguid/compact-adviser

    Pégala en una sesión abierta (v2.1.275+). Claude Code te pedirá primero añadir el marketplace.

  2. 2.Desde tu shell

    claude plugin marketplace add kunchenguid/compact-adviser
    claude plugin install compact-adviser@compact-adviser

    Después ejecuta /reload-plugins en cualquier sesión que ya esté abierta.

  3. 3.Pruébalo sin instalarlo

    git clone https://github.com/kunchenguid/compact-adviser
    claude --plugin-dir ./compact-adviser/packages/claude-mod

    Carga el mod solo para una sesión. No se añade nada a tu configuración.

Cómo funciona

Todo empieza en el hook de turn.complete de hooks/register.ts:

on("turn.complete", async ($, e, next) => {
  const result = await next(e);
  if (!(await isActivated($)) || !interactive) return result;
  if (e.agentId !== undefined || e.reason !== "answer" || e.isAborted || !e.answer.trim()) {
    return result;
  }
  try {
    await settle($);
  } catch {
    notice($, "Compact adviser could not inspect this checkpoint; context left unchanged.");
  }
  return result;
});

Solo cuenta un turno del bucle principal que terminó con una respuesta real; los turnos de subagentes y los abortados se omiten. settle cuenta el intercambio y aplica los filtros baratos: modo distinto de off, una clave presente, contexto igual o superior a minContextTokens y ningún periodo de espera ni aplazamiento. Si se cumplen, programa judgeCheckpoint con $.clock.after(0, …) para no retrasar el turno.

judgeCheckpoint construye una instantánea acotada a partir de $.session.messages() (consulta lib/snapshot.ts), omite la petición si la conversación tiene menos de 20.000 tokens o si ese mismo punto de control ya se evaluó, y la envía a https://api.typesafe.ai/v1/systemone con $.http.fetch. La petición caduca a los 2 segundos, y un error, un tiempo agotado o una respuesta mal formada nunca cuentan como un sí: el mod espera más antes de reintentar y muestra un toast. Cuando la puntuación es suficiente, el modo de aviso llama a $.ui.status con el aviso, y el modo automático llama a $.session.compact con instrucciones para conservar con exactitud el trabajo actual, las tareas pendientes y el siguiente paso.

Cualquier compactación, tuya o de Claude Code, reinicia el periodo de espera de la sesión a través del hook de session.compact.

Personalízalo

Ejecuta /compact-adviser para abrir el panel de configuración, o usa sus subcomandos: auto, hint y off cambian el modo; threshold 60000 fija el contexto mínimo; budget 450000 fija un presupuesto de contexto contra el que se mide el umbral en lugar del punto de autocompactación; snooze omite los tres siguientes intercambios; dismiss borra el aviso actual; status imprime el estado actual. El modo, el mínimo, el presupuesto y el registro de peticiones también son filas de /config. Un perfil de evaluación (JSON en el ajuste profile) puede cambiar las preguntas, el peso de la puntuación o el calendario del umbral.

Permisos y seguridad

Leímos register.ts, todos los archivos de lib/, plugin.json, hooks.json, package.json y los helpers de los tests antes de ejecutar nada.

  • Red: el mod envía una petición por cada punto de control que cumple los requisitos a https://api.typesafe.ai/v1/systemone, un servicio de terceros, con tu clave en la cabecera Authorization. El cuerpo es una instantánea de la conversación reciente, con un máximo de 32.000 bytes, tras ocultar en lo posible los patrones de claves y los archivos .env, auth.json, id_rsa/id_ed25519, .pem y .key. TYPESAFE_BASE puede apuntarlo a otra base https, o a una http de loopback. Instalar el plugin se considera consentimiento para enviar esto cuando hay una clave disponible, así que pon el modo en off para el trabajo que no deba salir de tu máquina.
  • Archivos: lee .env en la carpeta de la sesión para buscar TYPESAFE_API_KEY. Solo escribe cuando activas el registro de peticiones: ~/.claude/compact-adviser-requests-<session-id>.jsonl, que nunca contiene la clave.
  • Configuración: guardar desde el panel escribe las filas de userConfig propias del plugin mediante $.config.set. La clave guardada no se muestra en /config.
  • Compactación: solo en modo automático, tras un diálogo de confirmación que aparece una sola vez.

No hay scripts de instalación, ni código empaquetado o minificado, ni telemetría más allá de la propia petición a TypeSafe.

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).
Red
Puede hacer peticiones HTTP o comunicarse con servidores MCP ($.http.fetch / $.mcp.*).
Lee tus prompts
Puede ver lo que escribes y la transcripción de la conversación (prompt.* / session.append / session.messages).
Modifica la interfaz
Dibuja en la interfaz de Claude Code: bandas, paneles, texto de estado, avisos (ui.render / $.ui.*).
Añade comandos/herramientas
Registra nuevos comandos de barra o herramientas invocables por ti o por Claude ($.command.register / $.tool.register).
Guarda datos
Conserva datos entre sesiones en el almacén privado del plugin ($.store.*).

Compatibilidad y solución de problemas

Validado con Claude Code 2.1.291: claude plugin validate pasa sin avisos y claude plugin test ejecuta 114 tests, todos correctos. El autor indica Claude Code 2.1.274 o posterior. Si no pasa nada, comprueba lo siguiente en este orden:

  • Falta /compact-adviser: CLAUDE_CODE_ENABLE_FUNCTION_HOOKS no vale exactamente 1, o COMPACT_ADVISER_DISABLE está definida.
  • /compact-adviser status dice Key: missing: añade una clave en el panel, en el entorno o en ./.env.
  • El comando funciona pero no aparece ningún aviso: el contexto está por debajo del mínimo, o el último turno no terminó con una respuesta cerrada.
  • Un toast menciona "nonessential network traffic": CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC bloquea la petición a TypeSafe.
  • Las sesiones de claude -p siempre están inactivas por diseño.

Preguntas frecuentes

¿Necesito una clave de API para Compact Adviser?
Sí. Las evaluaciones van a la API Jev de TypeSafe con tu propia clave. Define TYPESAFE_API_KEY en el entorno, ponla en un archivo .env en la carpeta de la sesión o guárdala en el panel de /compact-adviser. Sin clave, el mod no da consejos.
¿Qué se envía a TypeSafe?
Una instantánea acotada de la conversación reciente, con un máximo de 32.000 bytes. Contiene las restricciones del usuario, hasta los últimos 64 mensajes con los resultados de herramientas recortados, un resumen existente y los nombres de los archivos que se guardaron. Los patrones de claves conocidos y los archivos sensibles, como .env y las claves privadas, se ocultan en la medida de lo posible.
¿Compactará mi sesión sin preguntar?
No por defecto. El modo predeterminado solo muestra un aviso. El modo automático hay que elegirlo con /compact-adviser auto y confirmarlo en un diálogo, y aun así solo actúa en un punto de control que supera la misma evaluación.
¿Por qué no aparece el comando /compact-adviser?
El mod solo se activa cuando CLAUDE_CODE_ENABLE_FUNCTION_HOOKS vale exactamente 1 y COMPACT_ADVISER_DISABLE no tiene un valor verdadero. También permanece inactivo en sesiones no interactivas como claude -p.
¿Por qué nunca veo un aviso?
El contexto debe tener al menos 40.000 tokens (el mínimo predeterminado) y el último turno debe terminar con una respuesta cerrada. También se aplican periodos de espera y aplazamientos, y un aviso necesita que la puntuación de la evaluación supere un umbral entre 0,90 y 0,50 que se relaja a medida que se llena el contexto.
Medidor de contexto funcionando en Claude CodeDestacado

Medidor 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

Más en Temporizadores, tareas y standups, Contexto, cuota y coste.