Saltar al contenido
claudemods

Mission Control: sigue en vivo los subagentes de Claude Code y sus herramientas

Panel en vivo del agente principal, los subagentes y las herramientas de Claude Code, más un mapa de archivos.

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.
  • 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.
  • 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).
probado con
v2.1.296
última prueba
requiere
Claude Code ≥ 2.1.287
superficies
panel, sobre el prompt

Instalar dentro de Claude Code:

/plugin install mission-control --marketplace hamzafer/claude-code-mods
Todas las opciones de instalación ↓

¿Qué hace este mod?

Mission Control es un mod de la comunidad creado por Hamza Zafar (hamzafer), parte de su colección claude-code-mods. Muestra en un solo lugar lo que está haciendo Claude Code: el agente principal, los subagentes de Claude Code y cada llamada a herramienta que hacen. Ejecuta /mission y se abre un panel junto al chat con un árbol. El bucle principal está arriba, cada subagente cuelga debajo y las llamadas a herramientas quedan bajo el agente que las hizo. Las series de la misma herramienta se agrupan en una línea, como read: README.md → src/login.js ×2, y cada línea muestra su duración.

Mientras Claude trabaja, y durante 30 segundos después, una sola línea sobre el prompt lo resume: ◈ mission: 2 tools, con el número de agentes y de archivos cambiados cuando los hay. Una segunda vista, /mission code, dibuja un mapa de los archivos que Claude leyó o editó, con flechas para los imports relativos entre ellos, un brillo en el archivo que se está tocando en ese momento y una nota de una línea sobre cada cambio. El README del autor pide Claude Code 2.1.287 o posterior para la colección; lo probamos en 2.1.296.

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 src/login.js y diga en una frase qué hacen. Claude lee los dos archivos y, mientras trabaja, la línea de la franja sobre el prompt cuenta las herramientas. Después de la respuesta, el clip escribe /mission. El panel se abre sobre el prompt con los botones Who, Code y Close, el resumen 0 agents (0 running) · 2 tool calls, la línea principal verde con el texto del prompt y, debajo, la línea agrupada read: demo-app/README.md → src/login.js ×2. El mapa de código no aparece en el clip.

Instalación

Usa cualquiera de los métodos del bloque de instalación; instalan directamente desde el marketplace del propio autor. Luego ejecuta /mission en una sesión. Si lo instalas en una sesión que ya está abierta, ejecuta primero /reload-plugins.

$ install mission-control

Requiere Claude Code ≥ 2.1.287

Se instala desde el marketplace del autor: hamzafer/claude-code-mods

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

    /plugin install mission-control --marketplace hamzafer/claude-code-mods

    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 hamzafer/claude-code-mods
    claude plugin install mission-control@claude-code-mods

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

  3. 3.Pruébalo sin instalarlo

    git clone https://github.com/hamzafer/claude-code-mods
    claude --plugin-dir ./claude-code-mods/mods/mission-control

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

Cómo funciona

El mod guarda su árbol, la lista de archivos y la vista en átomos de $.state que mantiene el host, de modo que una recarga en caliente conserva la imagen. Cada llamada a herramienta se envuelve en un hook tool.call que añade un nodo, deja que la llamada se ejecute y luego la marca como terminada o fallida. De hooks/register.tsx:

let failed = true
let r: Awaited<ReturnType<typeof next>>
try {
  r = await next(e)
  failed = r.deny !== undefined || r.isError === true
} finally {
  await update($, nodes, list => list.map(n => (n.id === id ? { ...n, status: failed ? 'failed' : 'done', end: Date.now() } : n)))
}

agent.spawn añade subagentes, turn.start reinicia el árbol y turn.complete cierra lo que siga marcado como en ejecución. Las llamadas a Agent y a las herramientas internas de Claude Code (ToolSearch, TaskCreate y similares) quedan fuera. Un reloj de un segundo solo actualiza la pantalla mientras algo se está ejecutando; el árbol tiene un límite de 300 nodos. Para el mapa de código, hooks/map.ts construye un SVG: lee cada archivo fuente tocado mediante $.fs.read, encuentra los imports relativos con una regex y coloca los archivos en columnas según la profundidad de import. Chrome headless convierte el SVG en un PNG, que se muestra con el elemento Image del panel.

Personalízalo

No hay opciones en /config. Los únicos controles son /mission, /mission who y /mission code, y las teclas del panel w, c y q. Para cambiar el comportamiento, edita las constantes al principio de register.tsx: MAX_NODES (tamaño del árbol), MAX_FILES (archivos en el mapa), BAND_AFTER_MS (cuánto tiempo se mantiene la franja), INTERNAL (herramientas que quedan fuera del árbol) y CODE_FILE (tipos de archivo que aparecen en el mapa).

Permisos y seguridad

Leemos todos los archivos que el plugin puede ejecutar antes de ponerlo en marcha: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.tsx, hooks/map.ts, hooks/tree.ts, las declaraciones de tipos y los tests. No hay package.json, script de instalación, binario ni código empaquetado, y no encontramos Unicode oculto, eval ni código remoto.

  • Red: ninguna propia. Sin fetch, sockets ni hosts.
  • Llamada al modelo: explain() en register.tsx llama a $.model.complete con model: 'haiku' después de un turno principal que editó o escribió archivos. El prompt contiene hasta 300 caracteres de cada old_string y new_string (400 de un archivo escrito), y la respuesta se convierte en una nota de 80 caracteres como máximo en el mapa. La respuesta se analiza como JSON, se recorta y se escapa antes de entrar en el SVG. Usa la cuota de tu sesión.
  • Procesos: un script sh -c mediante $.process.run que inicia Chrome headless con un perfil desechable, espera la captura y luego cierra ese Chrome. Los nombres de archivos y carpetas se pasan como argumentos, no se insertan en la cadena de shell. Chrome solo se inicia mientras el panel está abierto en la vista de código.
  • Escritura de archivos: solo $TMPDIR/mission-control/: map.svg, dos archivos map-N.png y una carpeta de perfil de Chrome. Nada en ~/.claude, la configuración, archivos de shell ni LaunchAgents. El mod lee los archivos que toca Claude, para encontrar imports, y guarda fragmentos de las ediciones en memoria.
  • Daemons: ninguno. El reloj de un segundo se detiene con la sesión, y Chrome se cierra después de cada captura.
  • Secretos y entorno: solo lee TMPDIR.
  • Telemetría: ninguna.
  • Influencia en el prompt: no añade additionalContext ni reescribe prompts ni resultados de herramientas.
  • Hooks de control: tool.call y agent.spawn están envueltos, y claude plugin validate los lista como hooks de control sin .catch. Solo observan; tool.call devuelve el resultado de la herramienta sin cambios y no modifica los argumentos.
  • Requisito externo: el mapa de código necesita Google Chrome en /Applications/Google Chrome.app (ruta de macOS); la vista Who no.
  • Licencia: MIT, con un archivo LICENSE.

claude plugin validate no informó de errores ni avisos, y los 7 tests del autor pasaron en 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.
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.
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).

Compatibilidad y solución de problemas

Comprobado con Claude Code 2.1.296 en macOS (validate, tests y la grabación). Si algo no va bien:

  • /mission es un comando desconocido. Comprueba en /plugin que el plugin está cargado y ejecuta /reload-plugins después de una instalación nueva.
  • El mapa de código dice que necesita Google Chrome. Instala Chrome en /Applications/Google Chrome.app. El mod solo busca en esa ruta.
  • "Nothing yet". El árbol se llena mientras se ejecuta un turno. Empieza una tarea y aparecerán las líneas.
  • No hay mapa fuera de la terminal. En otras superficies, el panel indica que el mapa de código se dibuja en la terminal.
  • Falta la línea de la franja. Solo aparece mientras Claude trabaja y durante 30 segundos después, y no mientras hay una encuesta abierta.

Preguntas frecuentes

¿Mission Control cambia o bloquea mis llamadas a herramientas?
No. Su hook tool.call registra la llamada, la deja ejecutarse con next(e) y devuelve el resultado sin cambios. Nunca deniega, reescribe ni retrasa una llamada más allá del registro.
¿Llama al modelo o a la red?
No hace ninguna petición de red propia. Después de un turno que editó archivos, pide a Claude Code que ejecute una pequeña completion con haiku que escribe una nota de una línea por cada archivo cambiado. El prompt contiene hasta unos cientos de caracteres de cada edición, así que ese texto va al proveedor de modelos que ya usas.
¿Necesito Google Chrome?
Solo para el mapa de código. El árbol Who no necesita nada más. El mapa de código renderiza un SVG con Chrome headless en /Applications/Google Chrome.app y muestra un mensaje si Chrome no está ahí.
¿Cómo lo abro y lo cierro?
Ejecuta /mission, o /mission code para el mapa de código. Dentro del panel, w muestra el árbol, c el mapa de código y q lo cierra.
¿En qué se diferencia de Agent Radar?
Agent Radar es otro mod de la comunidad para observar agentes. Mission Control además lista cada llamada a herramienta bajo su agente, agrupa las series de la misma herramienta y dibuja un mapa de los archivos tocados con los imports entre ellos.
Agent Radar funcionando en Claude CodeDestacado

Agent Radar

Una línea en vivo sobre el prompt por subagente en ejecución: tiempo, herramientas y acción actual, más un panel /radar.

  • sobre el prompt
  • panel
  • aviso
  • Intercepta llamadas a herramientas
  • Lee tus prompts
  • Modifica la interfaz
  • Añade comandos/herramientas

probado con v2.1.291

Contador de llamadas a herramientas funcionando en Claude CodeDestacado

Contador de llamadas a herramientas

Cuenta las llamadas a herramientas por turno y sesión, muestra el total junto al spinner y añade /tally con un desglose.

  • spinner
  • transcripción
  • estado
  • Intercepta llamadas a herramientas
  • Modifica la interfaz
  • Añade comandos/herramientas

probado con v2.1.310

Más en Paneles y dashboards, Temporizadores, tareas y standups.