Vibe codificar aplicativos SwiftUI é muito divertido
Vibe codificar aplicativos SwiftUI é muito divertido
27 de março de 2026
Eu tenho um novo laptop – um MacBook Pro M5 de 128 GB, que as primeiras impressões mostram ser muito capaz de executar bons LLMs locais. Fiquei frustrado com o Activity Monitor e decidi codificar algumas ferramentas alternativas para monitorar o desempenho e estou muito feliz com os resultados.
Esta é minha segunda experiência com aplicativos macOS de codificação de vibração – a primeira foi este aplicativo de apresentação há algumas semanas.
Acontece que Claude Opus 4.6 e GPT-5.4 são muito competentes em SwiftUI – e um aplicativo SwiftUI completo pode caber em um único arquivo de texto, o que significa que posso usá-los para criar algo sem nem mesmo abrir o Xcode.
Eu desenvolvi dois aplicativos até agora: Bandwidther mostra quais aplicativos estão usando largura de banda da rede e Gpuer para me mostrar o que está acontecendo com a GPU. Por sugestão de Claude, ambos são agora ícones da barra de menu que abrem um painel cheio de informações.
Largura de banda
Criei este aplicativo primeiro porque queria ver o que o Dropbox estava fazendo. Parece assim:

Compartilhei a transcrição completa que usei para construir a primeira versão do aplicativo. Minhas solicitações foram mínimas:
Mostre-me quanta largura de banda de rede está em uso desta máquina para a Internet, em oposição à LAN local
(Minha curiosidade inicial era ver se o Dropbox estava transferindo arquivos via LAN do meu computador antigo ou baixando da internet.)
mkdir /tmp/bandwidther e escreva um aplicativo Swift UI nativo que me mostre esses detalhes continuamente ao vivo
Isso me rendeu a primeira versão, o que me provou que valia a pena prosseguir.
git init e git commit o que você tem até agora
Já que eu estava prestes a começar a adicionar novos recursos.
Agora sugira recursos que poderíamos adicionar a esse aplicativo, o objetivo é fornecer o máximo de detalhes possível sobre o uso da rede, inclusive por diferentes aplicativos
O bom de ter Claude sugerindo recursos é que ele tem uma ideia muito melhor do que é possível do que eu.
Tivemos algumas idas e vindas para corrigir alguns bugs, então enviei mais alguns prompts para chegar ao layout de duas colunas mostrado acima:
adicione largura de banda por processo, reinicie o aplicativo assim que terminar
agora adicione o recurso DNS reverso, mas certifique-se de que os endereços IP originais também estejam visíveis, embora em letras menores
redesenhe o aplicativo para que fique mais largo, quero duas colunas – a por processo à esquerda e o restante à direita
OK, faça disso um ícone da barra de tarefas, quando clico no ícone quero que o aplicativo apareça, o ícone em si deve ser uma coisinha mínima e elegante
O código-fonte e as instruções de construção estão disponíveis em simonw/bandwidther.
GPU
Enquanto eu estava construindo o Bandwidther em uma sessão, tive outra sessão em execução para construir uma ferramenta semelhante para ver o que a GPU estava fazendo. Aqui está o que acabei:

Aqui está a transcrição. Este demorou ainda menos porque eu poderia usar o Bandwidther em andamento como exemplo:
Quero saber quanta RAM e GPU este computador está usando, o que é difícil porque as coisas na GPU e na RAM parecem não aparecer no Activity Monitor
Essas informações coletadas usando system_profiler e memory_pressure e me deu uma resposta – mais importante ainda, me mostrou que isso era possível, então eu disse:
Veja /tmp/bandwidther e crie um aplicativo semelhante em /tmp/gpuer que mostre as informações acima continuamente, ou talvez seja melhor
Depois de mais algumas alterações no aplicativo Bandwidther, eu disse para ele se atualizar:
Agora dê uma olhada nas mudanças recentes em /tmp/bandwidther – esse aplicativo agora usa um ícone na bandeja do sistema, imite isso
Este continua sendo um dos meus truques favoritos para usar agentes de codificação: fazer com que eles recombinem elementos de outros projetos.
O código para Gpuer pode ser encontrado em simonw/gpuer no GitHub.
Você não deve confiar nesses aplicativos
Esses dois aplicativos são códigos de vibração clássicos: não conheço Swift e mal olhei para o código que eles estavam escrevendo.
Mais importante ainda, tenho muito pouca experiência com os componentes internos do macOS, como os valores que essas ferramentas medem. Não estou totalmente qualificado para avaliar se os números e gráficos divulgados por essas ferramentas são confiáveis ou precisos!
Adicionei avisos a ambos os repositórios GitHub para esse efeito.
Esta manhã peguei o Gpuer relatando que eu tinha apenas 5 GB de memória sobrando, quando esse claramente não era o caso (de acordo com o Activity Monitor). Colei uma captura de tela no Claude Code e ele ajustou os cálculos e os novos números olhar certo, mas ainda não estou confiante de que esteja relatando as coisas corretamente.
Só os compartilhei no GitHub porque acho que são interessantes como um exemplo do que Claude pode fazer com o SwiftUI.
Apesar da minha falta de confiança nos próprios aplicativos, aprendi algumas coisas úteis com esses projetos:
- Um aplicativo SwiftUI pode fazer muita coisa com um único arquivo de código – aqui está GpuerApp.swift (880 linhas) e BandwidtherApp.swift (1063 linhas).
- É fácil agrupar vários comandos de terminal em uma interface de usuário elegante com Swift.
- Claude tem um gosto de design surpreendentemente bom quando se trata de aplicativos SwiftUI.
- Transformar um aplicativo em um aplicativo de barra de menu também requer apenas algumas linhas de código extra.
- Você não precisa abrir o Xcode para construir esse tipo de aplicativo!
Esses dois aplicativos levaram muito pouco tempo para serem criados e me convenceram de que criar aplicativos macOS no SwiftUI é um novo recurso que devo considerar em projetos futuros.
