Project Sentinel: traspaso de contexto de Claude Code y control de la ejecución
Barra de estado, traspaso de contexto, seguimiento de la caché de prompts y reglas de permisos para sesiones largas.
Permisos
- Lee archivosPuede leer archivos y listar directorios en tu equipo ($.fs.read / list / stat / exists).
- Ejecuta comandosPuede ejecutar programas de shell en tu equipo ($.process.run / spawn). Revisa el código fuente para ver exactamente cuáles.
- Llama al modelo (usa tu cuota)Puede enviar sus propias peticiones a Claude, que cuentan para el uso de tu plan ($.model.* / $.agent.spawn).
- Intercepta llamadas a herramientasVe cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
- 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.296
- última prueba
- requiere
- Claude Code ≥ 2.1.287
- superficies
- sobre el prompt, panel, spinner, estado, aviso
- código fuente
- Project Sentinel contributors (Arjun0014) (MIT)
Instalar dentro de Claude Code:
/plugin install project-sentinel --marketplace Arjun0014/project-sentinel¿Qué hace este mod?
Project Sentinel es un mod de la comunidad creado por los colaboradores de Project Sentinel (Arjun0014). Está pensado para sesiones largas de Claude Code, y su función más conocida es el traspaso de contexto de Claude Code: cuando la ventana de contexto se llena, Context Autopilot pide a Claude que termine la unidad de trabajo actual y escriba un archivo de notas, y después vacía el contexto y empieza uno nuevo que lee esas notas. El mod se llamó Control Room hasta la versión 1.4.0, por eso el panel y la barra de estado siguen llevando ese nombre.
Alrededor de eso añade mucho más. Una barra de estado sobre el prompt muestra el uso del contexto, la caché de prompts y el coste de la ejecución. Cache Guardian controla cuánto tiempo sigue caliente la caché de prompts y pregunta antes de un cambio de modelo que volvería a enviar 100k tokens o más. Las categorías de permisos te permiten configurar las instalaciones de paquetes, los pushes, los despliegues y acciones similares para que pidan confirmación o se denieguen. Otras partes incluyen una Mission Queue y una Decision Inbox, límites de subagentes, un enrutador de modelos, un regulador de carga de la máquina y un compañero pixelado opcional. El README del autor las enumera todas; esta página cubre lo que comprobamos en el código.
Demo
La grabación inicia Claude Code con el mod cargado en el pequeño proyecto de demostración y pide a Claude que lea README.md y describa el proyecto en una frase. Antes del prompt, la barra sobre la entrada dice "Ready" con una insignia de Control Room y RUN $0.00. Mientras se ejecuta el turno cambia a "Thinking" y después muestra el medidor de contexto llenándose hasta el 4%. Cuando el turno termina muestra "Read 1 file", la barra de contexto, CACHE 1h left y el coste de la ejecución, de menos de un céntimo.
Instalación
Usa cualquiera de los métodos del bloque de instalación; instalan directamente desde el marketplace del propio autor, llamado control-room. La barra aparece en el siguiente inicio de sesión. Ejecuta /control-room o /cr para abrir el panel.
$ install project-sentinel
Requiere Claude Code ≥ 2.1.287
Se instala desde el marketplace del autor: Arjun0014/project-sentinel
1.Una línea, dentro de Claude Code
/plugin install project-sentinel --marketplace Arjun0014/project-sentinelPé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 Arjun0014/project-sentinel claude plugin install project-sentinel@control-roomDespués ejecuta /reload-plugins en cualquier sesión que ya esté abierta.
3.Pruébalo sin instalarlo
git clone https://github.com/Arjun0014/project-sentinel claude --plugin-dir ./project-sentinel/plugins/project-sentinelCarga el mod solo para una sesión. No se añade nada a tu configuración.
Cómo funciona
El plugin tiene un único módulo de hooks, hooks/register.tsx, que construye un solo adaptador de host para todas las llamadas al motor y registra cada hook como unas pocas líneas que llaman a un objeto de runtime. Cada hook de control tiene un .catch que recurre al comportamiento propio de Claude Code. Este es el hook de llamadas a herramientas, de hooks/register.tsx:
on('tool.call', async ($, e, next) => {
if (rt.isStandby) return next(e)
if (rt.host === null) rt.bind(hostOf($))
const tool = String(e.tool)
const input: Record<string, unknown> = isRecord(e) ? { ...e } : {}
const refusal = await rt.beforeTool(tool, input, e.tool_use_id, e.agentId)
if (refusal !== null) return { deny: refusal }
// ... then next(e), with afterTool in a finally block
})beforeTool divide en tokens los comandos de shell, clasifica cada segmento en una categoría de permisos y aplica el ajuste más estricto. Si esa comprobación falla, el .catch sigue rechazando los comandos claramente peligrosos. El estado se guarda en el $.store del plugin (ajustes, registros de ejecución, memoria de la caché) y en átomos de $.state que leen los hooks de renderizado.
Personalízalo
Todo se configura desde el panel (/cr) o con el comando /cr: perfiles, umbral de Autopilot (70% de la ventana por defecto, o un número de tokens), el nombre del archivo de traspaso, el estado de los permisos por categoría, el estilo de respuesta, la estrategia del enrutador, el modo y el límite de subagentes, los topes de recursos, Keep warm y el compañero. /cr reset confirm restaura los valores por defecto. El docs/CONFIGURATION.md del autor enumera todas las opciones.
Permisos y seguridad
Leímos el manifiesto, hooks/hooks.json, hooks/register.tsx, el adaptador de host, core/settings.ts, features/prompts.ts, features/permissions/decide.ts, app/formerStore.ts y el SECURITY.md del autor. El plugin tiene unos 60 archivos TypeScript (unas 7.800 líneas en los cuatro más grandes). No leímos cada línea de la interfaz, del panel ni del módulo del compañero de 3.000 líneas (kit.client.tsx); para esos y el resto buscamos en todos los archivos llamadas de red, eval, importaciones dinámicas, llamadas a procesos, escrituras de archivos, secretos y Unicode oculto, y no encontramos nada más allá de lo que se indica aquí. No hay package.json en el plugin, ni script de instalación, ni binarios, ni código minificado.
Resultados:
- Red: ninguna. No hay
fetch, sockets ni hosts. Las peticiones al modelo pasan por el propio cliente de Claude Code (la comprobación opcional del guardián y Keep warm, que está desactivado por defecto y vuelve a enviar la última petición con un mensaje corto "reply ok"). - Procesos:
top -l 0 -s 2 -n 0(un muestreador de CPU y memoria de larga duración que se ejecuta mientras "Live CPU and memory" está activado, que es lo predeterminado) ysysctl -n kern.memorystatus_levelen macOS;typeperfysysteminfoen Windows;git status --porcelain=v1 --branchen repositorios git. Todos usan argumentos fijos y ninguna shell. El muestreador se detiene cuando termina la sesión. - Escritura de archivos: ninguna por parte del propio plugin, salvo su propio archivo de
$.store. El archivo de notas del traspaso (NEXT_SESSION_PROMPT.mdpor defecto) lo escribe Claude con sus herramientas normales, sujetas a permisos. Lee una vez el antiguo archivo de almacén de Control Room en~/.claude/plugins/store/para trasladar los ajustes; ese archivo nunca se modifica. - Daemons: ninguno. Los temporizadores de los vigilantes viven en el proceso de Claude Code.
- Entorno: lee
HOME,USERPROFILEyCLAUDE_CONFIG_DIR(para encontrar el almacén antiguo) y los ajustes de la caché de promptsCLAUDE_CODE_PROMPT_CACHE_TTL,ENABLE_PROMPT_CACHING_1HyFORCE_PROMPT_CACHING_5M. El resumen del SECURITY.md del autor dice que nunca lee variables de entorno, pero su propia tabla incluye esta lectura. No se envía nada a ningún sitio. - Telemetría: ninguna.
- Influencia en el modelo: añade una sección de directrices al prompt del sistema cuando están activadas funciones como Autopilot o Frontier Max, añade notas breves a los resultados de las herramientas, ofrece dos herramientas (
milestonesydecision_request) y envía sus propios prompts (traspaso, continuación, trabajo en cola). El texto está enfeatures/prompts.ts. Frontier Max (desactivado por defecto) le dice a Claude que la sesión "is being evaluated for frontier-level autonomous capability" y que evite detenerse antes de tiempo. No encontramos texto oculto ni de ancho cero, ni instrucciones dirigidas a un revisor. - Hooks de control: puede rechazar llamadas a herramientas (por defecto: force push, resets y comandos peligrosos denegados; instalaciones, descargas, pushes, despliegues, borrados y ediciones fuera del proyecto piden confirmación), preguntar antes de un cambio de modelo o de reanudar un contexto grande con la caché fría, ocultar o rechazar subagentes y continuar un turno que se detuvo antes de tiempo (guardián, desactivado por defecto). Nunca responde a una comprobación de permisos y nunca relaja una denegación. Esto coincide con el README.
- Requisitos externos: ninguno más allá de Claude Code 2.1.287 o posterior.
topysysctlvienen con macOS. - Licencia: MIT, con un archivo LICENSE en el repositorio y en la carpeta del plugin.
claude plugin validate no informó de errores ni avisos. El comando claude plugin test no encontró archivos *.test.ts en la carpeta del plugin, porque el autor guarda el entorno de tests en una carpeta tools/test aparte del repositorio, así que no pudimos ejecutar los tests del autor. Trata el mod como amplio e invasivo: puede reescribir prompts, denegar herramientas y vaciar tu contexto cuando activas esas funciones.
- Lee archivos
- Puede leer archivos y listar directorios en tu equipo ($.fs.read / list / stat / exists).
- Ejecuta comandos
- Puede ejecutar programas de shell en tu equipo ($.process.run / spawn). Revisa el código fuente para ver exactamente cuáles.
- Llama al modelo (usa tu cuota)
- Puede enviar sus propias peticiones a Claude, que cuentan para el uso de tu plan ($.model.* / $.agent.spawn).
- Intercepta llamadas a herramientas
- Ve cada llamada a herramienta que hace Claude (tool.call / tool.check) y podría bloquearla o modificarla.
- 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
Comprobado con Claude Code 2.1.296 en macOS (validate y una sesión grabada). Si algo no parece ir bien:
- Ejecuta
/crpara ver el panel y los ajustes actuales. - Si falta la barra, revisa el estilo de la barra en Setup; se puede desactivar.
- Si Claude rechaza un comando, mira en Guardrails: los estados de permisos por defecto deniegan los force push y los comandos peligrosos.
- Si también tienes cargado el antiguo plugin
control-room, Project Sentinel queda en espera y lo avisa una vez. - En Windows, los contadores de CPU y memoria necesitan un Windows en inglés.
Preguntas frecuentes
- ¿Project Sentinel hace algo si no lo activo?
- Dibuja la barra de estado, las filas compactas de herramientas y el panel Control Room, ejecuta un muestreador de CPU y memoria para la barra y aplica las reglas de permisos por defecto (las instalaciones, descargas, pushes y despliegues piden confirmación; los force push y los comandos peligrosos se deniegan). Context Autopilot, Frontier Max, el enrutador, Keep warm y el compañero están desactivados hasta que los actives.
- ¿Envía datos a algún sitio?
- No hace ninguna petición de red propia y no tiene telemetría. Dos funciones piden a Claude Code que envíe peticiones al modelo que puedes ver en el panel: la comprobación inteligente opcional del guardián y Keep warm (desactivado por defecto).
- ¿Puede vaciar mi contexto por su cuenta?
- Solo con Context Autopilot activado o cuando pides un traspaso. Primero pide a Claude que escriba un archivo de notas, comprueba que el archivo se acaba de escribir y después ejecuta /clear y envía un prompt de continuación.
- ¿En qué se diferencia de Context Bar o Compact Adviser?
- Esos muestran el uso del contexto o dan consejos sobre él. Project Sentinel es un conjunto más grande: además del contexto cubre la caché de prompts, las categorías de permisos, los límites de subagentes, el trabajo en cola y los vigilantes, y puede actuar sobre la sesión.
- ¿Cómo abro el panel?
- Ejecuta /control-room, o /cr para abreviar. El panel tiene pestañas de actividad, contexto, caché, salvaguardas, comportamiento y configuración.
# Mods relacionados
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
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
Más en Temporizadores, tareas y standups, Protecciones de seguridad, Contexto, cuota y coste.