Pular para o conteúdo
claudemods

Mission Control: acompanhe ao vivo os subagentes do Claude Code e as ferramentas

Painel ao vivo do agente principal, dos subagentes e das ferramentas do Claude Code, mais um mapa dos arquivos.

Permissões

  • Lê arquivosPode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
  • Grava arquivosPode criar ou sobrescrever arquivos na sua máquina ($.fs.write).
  • Executa comandosPode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
  • Chama o modelo (usa sua cota)Pode enviar suas próprias requisições ao Claude, que contam no uso do seu plano ($.model.* / $.agent.spawn).
  • Intercepta chamadas de ferramentasVê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
  • Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
  • Adiciona comandos/ferramentasRegistra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
testado com
v2.1.296
último teste
requer
Claude Code ≥ 2.1.287
superfícies
painel, acima do prompt

Instale dentro do Claude Code:

/plugin install mission-control --marketplace hamzafer/claude-code-mods
Todas as opções de instalação ↓

O que este mod faz?

O Mission Control é um mod da comunidade criado por Hamza Zafar (hamzafer), parte da coleção claude-code-mods dele. Ele mostra em um só lugar o que o Claude Code está fazendo: o agente principal, os subagentes do Claude Code e cada chamada de ferramenta que eles fazem. Execute /mission e um painel se abre ao lado do chat com uma árvore. O loop principal fica no topo, cada subagente fica pendurado abaixo dele e as chamadas de ferramenta ficam sob o agente que as fez. Sequências da mesma ferramenta são agrupadas em uma linha, como read: README.md → src/login.js ×2, e cada linha mostra a sua duração.

Enquanto o Claude trabalha, e por 30 segundos depois, uma única linha acima do prompt resume tudo: ◈ mission: 2 tools, com a contagem de agentes e de arquivos alterados quando houver. Uma segunda visualização, /mission code, desenha um mapa dos arquivos que o Claude leu ou editou, com setas para os imports relativos entre eles, um brilho no arquivo que está sendo tocado no momento e uma nota de uma linha sobre cada alteração. O README do autor exige o Claude Code 2.1.287 ou mais recente para a coleção; nós testamos no 2.1.296.

Demonstração

A gravação inicia o Claude Code com o mod carregado no pequeno projeto de demonstração e pede ao Claude que leia o README.md e o src/login.js e diga em uma frase o que eles fazem. O Claude lê os dois arquivos e, enquanto trabalha, a linha da faixa acima do prompt conta as ferramentas. Depois da resposta, o clipe digita /mission. O painel se abre acima do prompt com os botões Who, Code e Close, o resumo 0 agents (0 running) · 2 tool calls, a linha principal verde com o texto do prompt e, abaixo dela, a linha agrupada read: demo-app/README.md → src/login.js ×2. O mapa de código não aparece no clipe.

Instalação

Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do próprio autor. Depois execute /mission em uma sessão. Se você instalar em uma sessão que já está aberta, execute /reload-plugins primeiro.

$ install mission-control

Requer Claude Code ≥ 2.1.287

Instala a partir do marketplace do autor: hamzafer/claude-code-mods

  1. 1.Uma linha, dentro do Claude Code

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

    Cole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.

  2. 2.Pelo seu shell

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

    Depois execute /reload-plugins em qualquer sessão que já esteja aberta.

  3. 3.Experimente sem instalar

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

    Carrega o mod só para uma sessão. Nada é adicionado às suas configurações.

Como funciona

O mod guarda a árvore, a lista de arquivos e a visualização em átomos $.state mantidos pelo host, então um hot reload preserva a imagem. Cada chamada de ferramenta é envolvida em um hook tool.call que adiciona um nó, deixa a chamada rodar e depois a marca como concluída ou com falha. 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 adiciona subagentes, turn.start reinicia a árvore e turn.complete fecha o que ainda estiver marcado como em execução. Chamadas a Agent e às ferramentas internas do próprio Claude Code (ToolSearch, TaskCreate e similares) ficam de fora. Um relógio de um segundo só atualiza a tela enquanto algo está rodando; a árvore tem limite de 300 nós. Para o mapa de código, hooks/map.ts monta um SVG: ele lê cada arquivo-fonte tocado via $.fs.read, encontra os imports relativos com uma regex e organiza os arquivos em colunas pela profundidade de import. O Chrome headless transforma o SVG em um PNG, que é exibido com o elemento Image do painel.

Personalize

Não há opções no /config. Os únicos controles são /mission, /mission who e /mission code, e as teclas do painel w, c e q. Para mudar o comportamento, edite as constantes no início do register.tsx: MAX_NODES (tamanho da árvore), MAX_FILES (arquivos no mapa), BAND_AFTER_MS (quanto tempo a faixa fica visível), INTERNAL (ferramentas que ficam fora da árvore) e CODE_FILE (tipos de arquivo que aparecem no mapa).

Permissões e segurança

Lemos todos os arquivos que o plugin pode executar antes de rodá-lo: .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.tsx, hooks/map.ts, hooks/tree.ts, as declarações de tipos e os testes. Não há package.json, script de instalação, binário nem código empacotado, e não encontramos Unicode oculto, eval nem código remoto.

  • Rede: nenhuma própria. Sem fetch, sockets ou hosts.
  • Chamada ao modelo: explain() no register.tsx chama $.model.complete com model: 'haiku' depois de um turno principal que editou ou gravou arquivos. O prompt contém até 300 caracteres de cada old_string e new_string (400 de um arquivo gravado), e a resposta vira uma nota de no máximo 80 caracteres no mapa. A resposta é interpretada como JSON, cortada e escapada antes de entrar no SVG. Ela usa a cota da sua sessão.
  • Processos: um script sh -c via $.process.run que inicia o Chrome headless com um perfil descartável, espera a captura de tela e depois encerra esse Chrome. Nomes de arquivos e pastas são passados como argumentos, não inseridos na string do shell. O Chrome só é iniciado enquanto o painel está aberto na visualização de código.
  • Gravação de arquivos: apenas $TMPDIR/mission-control/: map.svg, dois arquivos map-N.png e uma pasta de perfil do Chrome. Nada em ~/.claude, configurações, arquivos de shell ou LaunchAgents. O mod lê os arquivos que o Claude toca, para encontrar imports, e mantém trechos das edições na memória.
  • Daemons: nenhum. O relógio de um segundo para junto com a sessão, e o Chrome é encerrado depois de cada captura.
  • Segredos e ambiente: ele lê apenas TMPDIR.
  • Telemetria: nenhuma.
  • Influência no prompt: ele não adiciona additionalContext e não reescreve prompts nem resultados de ferramentas.
  • Hooks de controle: tool.call e agent.spawn são envolvidos, e o claude plugin validate os lista como hooks de controle sem .catch. Eles só observam; tool.call devolve o resultado da ferramenta sem alterações e não muda os argumentos.
  • Requisito externo: o mapa de código precisa do Google Chrome em /Applications/Google Chrome.app (caminho do macOS); a visualização Who não.
  • Licença: MIT, com um arquivo LICENSE.

O claude plugin validate não relatou erros nem avisos, e os 7 testes do autor passaram no Claude Code 2.1.296.

Lê arquivos
Pode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
Grava arquivos
Pode criar ou sobrescrever arquivos na sua máquina ($.fs.write).
Executa comandos
Pode executar programas de shell na sua máquina ($.process.run / spawn). Confira no código-fonte exatamente quais.
Chama o modelo (usa sua cota)
Pode enviar suas próprias requisições ao Claude, que contam no uso do seu plano ($.model.* / $.agent.spawn).
Intercepta chamadas de ferramentas
Vê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
Altera a interface
Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
Adiciona comandos/ferramentas
Registra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).

Compatibilidade e solução de problemas

Verificado com o Claude Code 2.1.296 no macOS (validate, testes e a gravação). Se algo estiver errado:

  • /mission é um comando desconhecido. Confira no /plugin se o plugin está carregado e execute /reload-plugins depois de uma instalação nova.
  • O mapa de código diz que precisa do Google Chrome. Instale o Chrome em /Applications/Google Chrome.app. O mod procura apenas nesse caminho.
  • "Nothing yet". A árvore se preenche enquanto um turno roda. Comece uma tarefa e as linhas aparecem.
  • Sem mapa fora do terminal. Em outras superfícies, o painel avisa que o mapa de código é desenhado no terminal.
  • Linha da faixa faltando. Ela só aparece enquanto o Claude trabalha e por 30 segundos depois, e não enquanto uma pesquisa estiver aberta.

Perguntas frequentes

O Mission Control altera ou bloqueia as minhas chamadas de ferramenta?
Não. O hook tool.call dele registra a chamada, deixa ela rodar com next(e) e devolve o resultado sem alterações. Ele nunca nega, reescreve nem atrasa uma chamada além do registro.
Ele chama o modelo ou a rede?
Ele não faz nenhuma requisição de rede própria. Depois de um turno que editou arquivos, ele pede ao Claude Code que rode uma pequena completion com haiku que escreve uma nota de uma linha para cada arquivo alterado. O prompt contém até algumas centenas de caracteres de cada edição, então esse texto vai para o provedor de modelos que você já usa.
Preciso do Google Chrome?
Só para o mapa de código. A árvore Who não precisa de nada extra. O mapa de código renderiza um SVG com o Chrome headless em /Applications/Google Chrome.app e mostra uma mensagem se o Chrome não estiver lá.
Como abro e fecho o painel?
Execute /mission, ou /mission code para o mapa de código. Dentro do painel, w mostra a árvore, c o mapa de código e q fecha.
Qual a diferença para o Agent Radar?
O Agent Radar é outro mod da comunidade para acompanhar agentes. O Mission Control também lista cada chamada de ferramenta sob o agente dela, agrupa sequências da mesma ferramenta e desenha um mapa dos arquivos tocados com os imports entre eles.
Agent Radar em execução no Claude CodeDestaque

Agent Radar

Uma linha ao vivo acima do prompt por subagente em execução: tempo, ferramentas e ação atual, mais um painel /radar.

  • acima do prompt
  • painel
  • notificação
  • Intercepta chamadas de ferramentas
  • Lê seus prompts
  • Altera a interface
  • Adiciona comandos/ferramentas

testado com v2.1.291

Contador de chamadas de ferramentas em execução no Claude CodeDestaque

Contador de chamadas de ferramentas

Conta as chamadas de ferramentas do Claude por turno e por sessão, mostra o total junto ao spinner e adiciona /tally.

  • spinner
  • transcrição
  • status
  • Intercepta chamadas de ferramentas
  • Altera a interface
  • Adiciona comandos/ferramentas

testado com v2.1.310

Mais em Painéis e dashboards, Timers, tarefas e standups.