Cinco abas abertas. Telegram num canto, terminal no outro, Todoist minimizado, email largado. Você é o painel de controle — e está dando tilt.
A ironia é que você tem um agente disponível o dia todo. Mas ainda não parou para pedir que ele centralize tudo. O Mission Control resolve isso: um único lugar onde o agente reporta, você revisa e aprova, e as coisas acontecem.
| Componente | O que faz | Como criar |
|---|---|---|
| Mission Control | Dashboard (painel de controle) centralizado | Vibe-code com o agente |
| Fila de aprovação | Agente rascunha, você aprova | Endpoint + interface |
| Canal de alertas | Notificações por prioridade | Discord/Telegram com canais separados |
Vibe-coding o dashboard
A maioria das pessoas instala Grafana, Retool ou algum SaaS (serviço pronto na internet) e tenta dobrar as configurações para o próprio fluxo. Isso funciona até o momento em que você precisa de algo que o template não cobre — aí começa o ciclo de gambiarras.
A abordagem com o OpenClaw é diferente: você pede para o agente construir o dashboard (painel de controle) que você precisa. Ele já conhece o contexto — os canais que você usa, as tarefas recorrentes, o que é urgente para o seu projeto. O painel nasce calibrado.
Prompt reverso para começar:
Quero um Mission Control em HTML/CSS/JS puro (sem framework) que:
- Mostra uma fila de itens pendentes de aprovação
- Tem um feed de alertas ordenado por prioridade (crítico / aviso / info)
- Tem um painel de status com os últimos resultados de automações
- Funciona offline, sem dependência de servidor
- Tema escuro, layout de duas colunas
Me mostra o código completo numa resposta só.
HTML puro tem uma vantagem prática: você abre o arquivo diretamente no browser, sem servidor, sem deploy (colocar no ar), sem porta exposta. É o começo mais rápido possível.
Quando quiser evoluir — autenticação, dados persistentes, atualizações em tempo real — peça ao agente para migrar para Next.js ou Astro. A mesma lógica de “construa para mim” continua valendo.
A fila de aprovação
O agente rascunha. Você decide. Esse é o ritmo.
Sem uma fila, o fluxo fica assim: o agente publica diretamente, ou manda tudo no chat e você perde no histórico, ou você vira gargalo porque não consegue acompanhar o que foi aprovado ou não.
Com a fila:
agente rascunha
│
▼
fila de aprovação
│
├── você aprova ──→ agente publica/executa
│
└── você rejeita ──→ agente refaz com feedback
A implementação mais simples é um arquivo JSON (um formato de dados estruturado — como uma lista organizada que programas conseguem ler) que funciona como banco de dados temporário. O agente escreve nele cada item que precisa de aprovação. O dashboard lê o arquivo e renderiza os cards. Você clica em “aprovar” ou digita o feedback e clica em “refazer”.
// approval-queue.json — lista de itens aguardando sua aprovação
{
items: [
{
id: "tweet-2026-03-04-01", // identificador único do rascunho
type: "tweet", // tipo de conteúdo
content: "Por que times que automatizam rascunhos...",
created_at: "2026-03-04T09:15:00Z", // quando foi criado
status: "pending", // "pending" = aguardando aprovação
},
{
id: "email-reply-abc123",
type: "email_reply",
content: "Olá João, obrigado pelo contato...",
created_at: "2026-03-04T09:20:00Z",
status: "pending",
},
],
}
O prompt para o agente anotar itens na fila é direto:
Sempre que terminar um rascunho de tweet, email ou mensagem pública,
adiciona em approval-queue.json com status "pending".
Não publica nada diretamente — espera a aprovação no dashboard.
Quando você aprova, o status muda para approved e o agente recebe um evento para executar. Quando rejeita, você escreve o motivo e o agente refaz com esse contexto — sem precisar reexplicar tudo do zero.
Discord como hub operacional
O Discord tem uma estrutura que encaixa bem com operações de agente: servidores com canais separados, bots nativos, histórico pesquisável, e custo zero para o que a maioria dos projetos precisa.
A ideia é criar um servidor privado só para você (ou sua equipe) e dividir os canais por tipo de sinal:
#alertas— heartbeat (batimento — uma checagem periódica para saber se o sistema está vivo), erros críticos, falhas de CI#pesquisa— resultados de buscas e relatórios do agente#scripts— resultado de automações e tarefas agendadas#aprovacoes— rascunhos aguardando revisão
Cada canal tem um volume diferente. #alertas vai ser quase silencioso quando tudo funciona — você só vê mensagem quando tem problema. #aprovacoes é onde a maioria das interações acontece.
Configuração dos canais no OpenClaw:
{
integrations: {
discord: {
enabled: true,
botToken: "SEU_BOT_TOKEN", // token do seu bot do Discord
channels: {
alerts: "ID_DO_CANAL_ALERTAS", // ID numérico do canal no Discord
research: "ID_DO_CANAL_PESQUISA",
scripts: "ID_DO_CANAL_SCRIPTS",
approvals: "ID_DO_CANAL_APROVACOES",
},
},
},
agents: {
defaults: {
heartbeat: {
every: "30m", // faz checagens a cada 30 minutos
target: "discord",
channelKey: "alerts", // manda alertas para o canal #alertas
},
outputRouting: {
// cada tipo de resultado vai para um canal diferente
research: { target: "discord", channelKey: "research" },
automation: { target: "discord", channelKey: "scripts" },
draft: { target: "discord", channelKey: "approvals" },
},
},
},
}
O channelKey referencia as chaves definidas em channels — você muda o ID do canal sem precisar atualizar cada referência individual.
Para criar o bot: Discord Developer Portal → New Application → Bot → Enable bot, copie o token. No servidor: crie os canais, copie os IDs (ative o Developer Mode nas configurações do Discord), convide o bot com permissão de enviar mensagens.
Quando um agente não é suficiente
O Mission Control funciona bem com um agente. Mas conforme a operação cresce, faz sentido ter agentes especializados reportando para os mesmos canais.
agente de pesquisa ──→ #pesquisa
agente de monitoring ──→ #alertas
agente de conteúdo ──→ #aprovacoes
│ │
└────────────────────┘
│
Mission Control
Cada agente tem um contexto restrito — o de monitoring só olha métricas, o de conteúdo só rascunha posts. Eles não competem entre si porque têm domínios separados.
O dashboard vira o ponto de convergência: você vê tudo num lugar só, mas cada sinal veio de quem entende aquele assunto. Isso é o que o post sobre multi-model routing cobre com mais detalhe — a mesma lógica de separar responsabilidades se aplica quando você tem múltiplos agentes.
Troubleshooting
O dashboard ficou feio
Itere. Mande um print para o agente (ou descreva o problema) e peça melhorias específicas. “A fila de aprovação precisa de mais espaço vertical entre os cards” é mais eficiente do que “melhora o design”. O agente não tem gosto estético próprio — ele precisa de direção.
Quero usar Telegram em vez de Discord
Mesmo padrão, canais diferentes. No Telegram você vai usar grupos privados ou threads de um grupo (disponível em grupos com mais de 200 membros ou no Premium). Cada grupo/thread funciona como um “canal” — você configura um chat ID (identificador do seu chat) por tipo de sinal. A limitação é que threads no Telegram são menos acessíveis do que canais do Discord, especialmente no celular.
O agente não sabe fazer frontend
Use um modelo focado em código para essa tarefa. No OpenClaw você pode apontar uma tarefa específica para um modelo diferente do padrão — o post sobre multi-model routing (uso de modelos diferentes para tarefas diferentes) via OpenRouter explica como configurar isso. Para frontend simples (HTML/CSS), Claude Sonnet e GPT-4o costumam entregar bem. Para algo mais elaborado (React com estado complexo), vale um modelo de raciocínio mais pesado no primeiro rascunho.
Os canais estão recebendo mensagens misturadas
O outputRouting (roteamento de saída — qual mensagem vai para qual canal) depende do agente classificar corretamente o tipo de resultado. Se ele está mandando rascunhos para #alertas, provavelmente falta instrução explícita. Adicione ao SYSTEM.md do agente:
Ao completar uma tarefa:
- Rascunhos de publicação → canal de aprovações
- Resultados de pesquisa → canal de pesquisa
- Erros ou falhas → canal de alertas
- Output de script automatizado → canal de scripts
Nunca misture tipos de conteúdo no mesmo canal.
Próximo passo
O Mission Control é o módulo 7 da série Domine o OpenClaw. Os links abaixo cobrem os módulos que se conectam diretamente ao que você viu aqui.